From 03452480e402d8c3c6410e2315374559bd4a8872 Mon Sep 17 00:00:00 2001 From: "Ernest W. Durbin III" Date: Thu, 12 Nov 2020 08:03:50 -0500 Subject: [PATCH 001/256] Check package only benefits as well (#1670) (#1671) A package only benefit's checkbox is rendered in the HTML with the disabled attribute. Because of that, the click event wasn't being triggered by the browser. This fix turn off and on this attribute so the click event can happen. Co-authored-by: Bernardo Fontes --- static/js/sponsors/applicationForm.js | 14 ++++++++++++-- templates/sponsors/sponsorship_benefits_form.html | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/static/js/sponsors/applicationForm.js b/static/js/sponsors/applicationForm.js index 558afb142..56189e374 100644 --- a/static/js/sponsors/applicationForm.js +++ b/static/js/sponsors/applicationForm.js @@ -17,12 +17,17 @@ $(document).ready(function(){ checkboxesContainer.find(':checkbox').each(function(){ $(this).prop('checked', false); + let packageOnlyBenefit = $(this).attr("package_only"); + if (packageOnlyBenefit) $(this).attr("disabled", true); }); let packageInfo = $("#package_benefits_" + package); packageInfo.children().each(function(){ let benefit = $(this).html() - checkboxesContainer.find(`[value=${benefit}]`).trigger("click"); + let benefitInput = checkboxesContainer.find(`[value=${benefit}]`); + let packageOnlyBenefit = benefitInput.attr("package_only"); + benefitInput.removeAttr("disabled"); + benefitInput.trigger("click"); }); let url = $("#cost_container").attr("calculate_cost_url"); @@ -38,7 +43,12 @@ $(document).ready(function(){ if (costLabel.html() != "Updating cost...") costLabel.html("Submit your application and we'll get in touch..."); let active = checkboxesContainer.find(`[value=${benefit}]`).prop("checked"); - if (!active) return; + if (!active) { + let packageOnlyBenefit = $(this).attr("package_only"); + if (packageOnlyBenefit) $(this).attr("disabled", true); + return; + } + $(`#conflicts_with_${benefit}`).children().each(function(){ let conflictId = $(this).html(); diff --git a/templates/sponsors/sponsorship_benefits_form.html b/templates/sponsors/sponsorship_benefits_form.html index f91e62351..27a85ad73 100644 --- a/templates/sponsors/sponsorship_benefits_form.html +++ b/templates/sponsors/sponsorship_benefits_form.html @@ -48,7 +48,7 @@

{{ field.label }}

{% for benefit in field.field.queryset %}
  • Submit your contact information

  • - +
    @@ -246,14 +247,26 @@

    PSF staff will reach out to confirm and finalize

    {% endfor %} + {% else %} +
    + {% box 'sponsorship-application-closed' %} +
    + {% endflag %} {% endblock content %} {% block footer %} + {% flag "sponsorship-applications-open" %}
    If you would like us to walk you through the new program, email sponsors@python.org.

    Thank you for making a difference in the Python ecosystem!

    + {% else %} +
    + If you need to submit sooner, or have any questions, email sponsors@python.org. +

    Thank you for your interest in making a difference in the Python ecosystem!

    +
    + {% endflag %} {{ block.super }} {% endblock %} From 662ac4c111acfbd06f3e73b6b2703dcf720ea25c Mon Sep 17 00:00:00 2001 From: berin Date: Mon, 25 Jul 2022 20:23:09 +0200 Subject: [PATCH 004/256] Change sponsorship admin list view to exclude rejected ones by default (#2083) --- sponsors/admin.py | 23 ++++++++++++- sponsors/tests/test_admin.py | 65 ++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 sponsors/tests/test_admin.py diff --git a/sponsors/admin.py b/sponsors/admin.py index 9af126d39..5b91baf47 100644 --- a/sponsors/admin.py +++ b/sponsors/admin.py @@ -263,6 +263,27 @@ def queryset(self, request, queryset): return queryset.filter(id__in=Subquery(qs)) +class SponsorshipStatusListFilter(admin.SimpleListFilter): + title = "status" + parameter_name = "status" + + def lookups(self, request, model_admin): + return Sponsorship.STATUS_CHOICES + + def queryset(self, request, queryset): + status = self.value() + # exclude rejected ones by default + if not status: + return queryset.exclude(status=Sponsorship.REJECTED) + return queryset.filter(status=status) + + def choices(self, changelist): + choices = list(super().choices(changelist)) + # replaces django default "All" text by a custom text + choices[0]['display'] = "Applied / Approved / Finalized" + return choices + + @admin.register(Sponsorship) class SponsorshipAdmin(admin.ModelAdmin): change_form_template = "sponsors/admin/sponsorship_change_form.html" @@ -278,7 +299,7 @@ class SponsorshipAdmin(admin.ModelAdmin): "start_date", "end_date", ] - list_filter = ["status", "package", TargetableEmailBenefitsFilter] + list_filter = [SponsorshipStatusListFilter, "package", TargetableEmailBenefitsFilter] actions = ["send_notifications"] fieldsets = [ ( diff --git a/sponsors/tests/test_admin.py b/sponsors/tests/test_admin.py new file mode 100644 index 000000000..1e94fa6df --- /dev/null +++ b/sponsors/tests/test_admin.py @@ -0,0 +1,65 @@ +from unittest.mock import Mock + +from django.contrib.admin.views.main import ChangeList +from model_bakery import baker + +from django.test import TestCase, RequestFactory + +from sponsors.admin import SponsorshipStatusListFilter, SponsorshipAdmin +from sponsors.models import Sponsorship + +class TestCustomSponsorshipStatusListFilter(TestCase): + + def setUp(self): + self.request = RequestFactory().get("/") + self.model_admin = SponsorshipAdmin + self.filter = SponsorshipStatusListFilter( + request=self.request, + params={}, + model=Sponsorship, + model_admin=self.model_admin + ) + + def test_basic_configuration(self): + self.assertEqual("status", self.filter.title) + self.assertEqual("status", self.filter.parameter_name) + self.assertIn(SponsorshipStatusListFilter, SponsorshipAdmin.list_filter) + + def test_lookups(self): + expected = [ + ("applied", "Applied"), + ("rejected", "Rejected"), + ("approved", "Approved"), + ("finalized", "Finalized"), + ] + self.assertEqual(expected, self.filter.lookups(self.request, self.model_admin)) + + def test_filter_queryset(self): + sponsor = baker.make("sponsors.Sponsor") + sponsorships = [ + baker.make(Sponsorship, status=Sponsorship.REJECTED, sponsor=sponsor), + baker.make(Sponsorship, status=Sponsorship.APPLIED, sponsor=sponsor), + baker.make(Sponsorship, status=Sponsorship.APPROVED, sponsor=sponsor), + baker.make(Sponsorship, status=Sponsorship.FINALIZED, sponsor=sponsor), + ] + + # filter by applied, approved and finalized status by default + qs = self.filter.queryset(self.request, Sponsorship.objects.all()) + self.assertEqual(3, qs.count()) + self.assertNotIn(sponsorships[0], qs) + + for sp in sponsorships: + self.filter.used_parameters[self.filter.parameter_name] = sp.status + qs = self.filter.queryset(self.request, Sponsorship.objects.all()) + self.assertEqual(1, qs.count()) + self.assertIn(sp, qs) + + def test_choices_with_custom_text_for_all(self): + lookups = self.filter.lookups(self.request, self.model_admin) + changelist = Mock(ChangeList, autospec=True) + choices = self.filter.choices(changelist) + + self.assertEqual(len(choices), len(lookups) + 1) + self.assertEqual(choices[0]["display"], "Applied / Approved / Finalized") + for i, choice in enumerate(choices[1:]): + self.assertEqual(choice["display"], lookups[i][1]) From 723539e3d4050bf128941ea80b20060e3e72d90b Mon Sep 17 00:00:00 2001 From: berin Date: Fri, 5 Aug 2022 14:41:12 +0200 Subject: [PATCH 005/256] Keep track of current sponsorship year (#2087) * Add missing migration to the existing models (managers and meta info) * New model to keep track of current sponsorship year * Make sure the singleton object is populated by default via data migration * Make sure the singleton logic is implemented at DB-level * Make sure singleton object cannot be deleted * Add singleton to admin with disabled permissions for adding or deleting * Add django-extensions as a requirement to be able to use shell_plus * Add application year field to sponsorship model * Display new field and enable filter on sponsorship admin * Populate application year when creating it * Rename field to be just "year" * Enable to filter contract by sponsorship year * Refactoring to centralize year validators * Add year field to configure sponsorship benefits and packages * Initialize values for existing sponsorship benefits and packages with current year * Year field should be required when creating/editing configured benefits * Add filter by year to configured benefits and packages * Refactor configured benefits and packages to build custom manager from queryset * New manager methods to filter configured packages and benefits from current year * Sponsorship application form now only lists pkg, benefits, add-ons and a la carte benefits from the current year * Fix requirements organization * Improve form unit tests to make sure we're filtering packages and benefits by the current year * Refactor to encapsulate logic to get the current year within a class method * Add cache to avoid querying the DB every time the system needs the current year * Add db index to year fields so querying by them gets faster * Add migration command to CI to check if it's running them * Move fields definition to init so query for current year happens as execution time instead of interpretation's one * Revert "Add migration command to CI to check if it's running them" This reverts commit 17f7bed613d4b7ec21c10dce898bb54f8191da5e. * add necessary fixtures * Introduce clone method to benefit and related objects * Add clone method to be able to copy a benefit configuration to a new benefit * Make sure Tiered Quantity config can be copy using the same year's package * Make sure required assets configurations can be cloned without violating db constraints and with valid due dates * Add unit test to make sure the remaining configuration can be cloned * Make sure benefit features configurations get cloned as well * Upgrade model-bakery version to the most up to date with Django 2.2 support * Implement use case to generate clone an sponsorship year configuration to a * Introduce helper function to build admin base url name * Create admin view to clone sponsorship configuration from one year to another * Add form validation to enforce relations between from and target years * Add workflow to django admin to enable staff users to clone configurations by year * Reverse order so most recent years appear first * Refactoring to introduce more generic function to create django log entries * Update use case to add django admin log entries for new cloned packages and benefits * Add parameter to be able to display form for a specific year * Enable staff user to preview how the application form from a specific year will look like * Display link to preview non active years sponsorship form in admin * Only display links to already configured years if they exist * Also display links to list configured year's packages and benefits from active year list * Add column with links for the active year * Disable submit button if preview for custom year * update style for admin warning on application preview to be extra scary Co-authored-by: Ee Durbin --- base-requirements.txt | 1 + dev-requirements.txt | 2 +- fixtures/boxes.json | 1149 ++++--- fixtures/flags.json | 42 + fixtures/sponsors.json | 2985 ++++++++++++++++- fixtures/users.json | 74 + pydotorg/settings/base.py | 1 + pydotorg/settings/local.py | 3 +- sponsors/admin.py | 124 +- sponsors/forms.py | 78 +- .../migrations/0076_auto_20220728_1550.py | 64 + .../migrations/0077_sponsorshipcurrentyear.py | 21 + .../0078_init_current_year_singleton.py | 19 + .../0079_index_to_force_singleton.py | 31 + .../migrations/0080_auto_20220728_1644.py | 23 + .../0081_sponsorship_application_year.py | 19 + .../migrations/0082_auto_20220729_1613.py | 18 + .../migrations/0083_auto_20220729_1624.py | 24 + .../0084_init_configured_objs_year.py | 33 + .../migrations/0085_auto_20220730_0945.py | 29 + sponsors/models/__init__.py | 3 +- sponsors/models/benefits.py | 40 +- sponsors/models/contract.py | 8 + sponsors/models/managers.py | 29 +- sponsors/models/sponsorship.py | 106 +- sponsors/notifications.py | 93 +- sponsors/tests/test_forms.py | 133 +- sponsors/tests/test_managers.py | 25 +- sponsors/tests/test_models.py | 254 +- sponsors/tests/test_notifications.py | 28 + sponsors/tests/test_use_cases.py | 43 +- sponsors/tests/test_views.py | 66 +- sponsors/tests/test_views_admin.py | 62 +- sponsors/use_cases.py | 38 +- sponsors/views.py | 17 +- sponsors/views_admin.py | 33 +- .../admin/clone_application_config_form.html | 61 + ...ors_sponsorshipcurrentyear_changelist.html | 9 + .../sponsors/sponsorship_benefits_form.html | 12 +- 39 files changed, 5248 insertions(+), 552 deletions(-) create mode 100644 fixtures/flags.json create mode 100644 fixtures/users.json create mode 100644 sponsors/migrations/0076_auto_20220728_1550.py create mode 100644 sponsors/migrations/0077_sponsorshipcurrentyear.py create mode 100644 sponsors/migrations/0078_init_current_year_singleton.py create mode 100644 sponsors/migrations/0079_index_to_force_singleton.py create mode 100644 sponsors/migrations/0080_auto_20220728_1644.py create mode 100644 sponsors/migrations/0081_sponsorship_application_year.py create mode 100644 sponsors/migrations/0082_auto_20220729_1613.py create mode 100644 sponsors/migrations/0083_auto_20220729_1624.py create mode 100644 sponsors/migrations/0084_init_configured_objs_year.py create mode 100644 sponsors/migrations/0085_auto_20220730_0945.py create mode 100644 templates/sponsors/admin/clone_application_config_form.html create mode 100644 templates/sponsors/admin/sponsors_sponsorshipcurrentyear_changelist.html diff --git a/base-requirements.txt b/base-requirements.txt index 566263126..e0a18cda6 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -48,3 +48,4 @@ django-polymorphic==3.0.0 sorl-thumbnail==12.7.0 docxtpl==0.12.0 reportlab==3.6.6 +django-extensions==3.1.4 diff --git a/dev-requirements.txt b/dev-requirements.txt index 182beea18..9b5e0938f 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -12,4 +12,4 @@ responses==0.13.3 django-debug-toolbar==3.2.1 coverage ddt -model-bakery==1.3.2 +model-bakery==1.4.0 diff --git a/fixtures/boxes.json b/fixtures/boxes.json index 9f0aceedb..267bd95a1 100644 --- a/fixtures/boxes.json +++ b/fixtures/boxes.json @@ -1,395 +1,758 @@ [ - -{ - "fields": { - "label": "supernav-python-about", - "content": "\r\n
  • \r\n

    Python is a programming language that lets you work more quickly and integrate your systems more effectively.

    \r\n

    You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs. Learn more about Python..\r\n

  • ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "supernav-python-events", - "content": "
  • Find events from the Python Community around the world!
  • ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "supernav-python-blog", - "content": "
  • \n

    Tuesday, July 12, 2016

    \n

    Python 3.6.0 alpha 3 preview release is now available

    \n

    \n Python 3.6.0a3 has been released.  3.6.0a3 is the third of four planned alpha pre-releases of Python 3.6, the next major release of Python.  During the alpha phase, Python 3.6 remains under heavy development: additional features will be added and existing features may ...Read more\n

    \n
  • ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "supernav-python-community", - "content": "
  • \r\n

    The Python Community

    \r\n

    Great software is supported by great people. Our user base is enthusiastic, dedicated to encouraging use of the language, and committed to being diverse and friendly.

    \r\n\r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "aboutpython-banner", - "content": "

    \r\n Python is powerful... and fast;
    \r\n plays well with others;
    \r\n runs everywhere;
    \r\n is friendly & easy to learn;
    \r\n is Open.\r\n

    \r\n

    These are some of the reasons people who use Python would rather not use anything else.

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "usermessage-helplink", - "content": "

    Can’t find what you’re looking for? Try our comprehensive Help section

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "supernav-python-documentation", - "content": "
  • \r\n

    Python’s standard documentation: download, browse or watch a tutorial.

    \r\n

    Get started below, or visit the Documentation page to browse by version.

    \r\n

    \r\n Python 3.x Docs \r\n

  • ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "feedbacks-complete", - "content": "Thanks for submitting your feedback!", - "content_markup_type": "markdown" - } -}, -{ - "fields": { - "label": "homepage-get-started", - "content": "

    Get Started

    \r\n

    Whether you're new to programming or an experienced developer, it's easy to learn and use Python.

    \r\n

    Start with our Beginner’s Guide

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "homepage-documentation", - "content": "

    Docs

    \r\n

    Documentation for Python's standard library, along with tutorials and guides, are available online.

    \r\n

    docs.python.org

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "homepage-jobs", - "content": "

    Jobs

    \r\n

    Looking for work or have a Python related position that you're trying to hire for? Our relaunched community-run job board is the place to go.

    \r\n

    jobs.python.org

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "homepage-introduction", - "content": "

    Python is a programming language that lets you work quickly and integrate systems more effectively. Learn More

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "widget-about-psf", - "content": "

    \r\n >>> Python Software Foundation\r\n

    \r\n

    The mission of the Python Software Foundation 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. Learn more

    \r\n

    \r\n Become a Member\r\n Donate to the PSF\r\n

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "widget-use-python-for", - "content": "

    Use Python for…

    \r\n

    More

    \r\n\r\n\r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "aboutpython-opensource", - "content": "

    Open-source

    \r\n

    Python is developed under an OSI-approved open source license, making it freely usable and distributable, even for commercial use. Python's license is administered by the Python Software Foundation.

    \r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "aboutpython-applications", - "content": "

    Applications

    \r\n

    The Python Package Index (PyPI) hosts thousands of third-party modules for Python. Both Python's standard library and the community-contributed modules allow for endless possibilities.

    \r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "aboutpython-easytolearn", - "content": "

    Friendly & Easy to Learn

    \r\n

    The community hosts conferences and meetups, collaborates on code, and much more. Python's documentation will help you along the way, and the mailing lists will keep you in touch.

    \r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "aboutpython-getstarted", - "content": "

    Getting Started

    \r\n

    Python can be easy to pick up whether you're a first time programmer or you're experienced with other languages. The following pages are a useful first step to get on your way writing programs with Python!

    \r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "community-irc-channels", - "content": "

    Internet Relay Chat

    \r\n

    Libera.chat hosts several channels. Select an IRC client, register your nickname with Libera.chat, and you can be off and running!

    \r\n

    Libera.chat IRC General Channels

    \r\n
      \r\n
    • #python for general questions
    • \r\n
    • #python-dev for CPython developers
    • \r\n
    • #distutils for Python packaging discussion
    • \r\n
    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "community-widget1", - "content": "

    Getting Started

    \r\n

    New to the community? Here are some great places to get started:

    \r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "community-banner", - "content": "

    \r\n Python’s community is vast;
    \r\n diverse & aims to grow;
    \r\n Python is Open.\r\n

    \r\n

    Great software is supported by great people, and Python is no exception. Our user base is enthusiastic and dedicated to spreading use of the language far and wide. Our community can help support the beginner, the expert, and adds to the ever-increasing open-source knowledgebase.

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "widget-weneedyou", - "content": "

    >>> Python Needs You

    \r\n

    Open source software is made better when users can easily contribute code and documentation to fix bugs and add features. Python strongly encourages community involvement in improving the software. Learn more about how to make Python better for everyone.

    \r\n

    \r\n Contribute to Python\r\n Bug Tracker\r\n

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "documentation-general", - "content": "

    General

    \r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "documentation-advanced", - "content": "

    Advanced

    \r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "documentation-moderate", - "content": "

    Moderate

    \r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "documentation-beginners", - "content": "

    Beginner

    \r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "documentation-banner", - "content": "

    Browse the docs online or download a copy of your own. Python's documentation, tutorials, and guides are constantly evolving.

    \r\n

    Get started here, or scroll down for documentation broken out by type and subject.

    \r\n

    \r\n Python 3.x Docs \r\n

    \r\n

    See also Documentation Releases by Version\r\n

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "usermessage-releaseschedule", - "content": "

    Looking for the release schedule? Check the Google Calendar.

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "download-widget4", - "content": "

    History

    \r\n

    Python was created in the early 1990s by Guido van Rossum at Stichting Mathematisch Centrum in the Netherlands as a successor of a language called ABC. Guido remains Python\u2019s principal author, although it includes many contributions from others.

    \r\n

    Read more

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "download-widget3", - "content": "

    Alternative Implementations

    \r\n

    This site hosts the \"traditional\" implementation of Python (nicknamed CPython). A number of alternative implementations are available as well.

    \r\n

    Read more

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "download-widget1", - "content": "

    Licenses

    \r\n

    All Python releases are Open Source. Historically, most, but not all, Python releases have also been GPL-compatible. The Licenses page details GPL-compatibility and Terms and Conditions.

    \r\n

    Read more

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "events-subscriptions", - "content": "

    Python Events Calendars

    \r\n\r\n
    \r\n\r\n

    For Python events near you, please have a look at the Python events map.

    \r\n\r\n

    The Python events calendars are maintained by the events calendar team.

    \r\n\r\n

    Please see the events calendar project page for details on how to submit events, subscribe to the calendars, get Twitter feeds or embed them.

    \r\n\r\n

    Thank you.

    \r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "blogs-copyright", - "content": "

    Copyright

    \r\n

    Python Insider by the Python Core Developers is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. Based on a work at blog.python.org.

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "blogs-subscriptions", - "content": "

    Python Insider Subscriptions

    \r\n

    Subscribe to Python Insider via:

    \r\n\r\n

    Also check out the Python-Dev mailing list

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "jobs-subscribe", - "content": "

    Stay up-to-date

    \r\n

    Subscribe via RSS

    \r\n

    Follow The PSF via Twitter

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "jobs-getfeatured", - "content": "

    Want your jobs to be featured? Find out more.

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "widget-sidebar-aboutpsf", - "content": "

    The PSF

    \r\n

    The Python Software Foundation is the organization behind Python. Become a member of the PSF and help advance the software and our mission.

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "psf-news", - "content": "\r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "psf-grants", - "content": "

    PSF Grants Program

    \r\n

    The Python Software Foundation welcomes grant proposals for projects related to the development of Python, Python-related technology, and educational resources.

    \r\n

    Proposal Guidelines, FAQ and Examples

    \r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "psf-widget4", - "content": "

    Sponsors

    \r\n

    Without our sponsors we wouldn't be able to help the Python community grow and prosper.

    \r\n

    Sponsorship Possibilities

    \r\n

    PSF Sponsors

    \r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "psf-widget3", - "content": "

    Volunteer

    \r\n

    Learn how you can help the PSF and the greater Python community!

    \r\n

    How to Volunteer

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "psf-widget2", - "content": "

    Donate

    \r\n

    Assist the foundation's goals with a donation. The PSF is a recognized 501(c)(3) non-profit organization.

    \r\n

    How to Contribute

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "psf-widget1", - "content": "

    Become a Member

    \r\n

    Help the PSF promote, protect, and advance the Python programming language and community!

    \r\n

    Membership FAQ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "psf-banner", - "content": "

    The Python Software Foundation is an organization devoted to advancing open source technology related to the Python programming language.

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "successstory-submityours", - "content": "

    Submit Yours!

    \r\n

    Python users want to know more about Python in the wild. Tell us your story

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "psf-codeofconduct", - "content": "\r\n

    The Python Software Foundation has adopted the following Code of Conduct for all of its members:

    \r\n \r\n

    The Python community is made up of members from around the globe with a diverse set of skills, personalities, and experiences. It is through these differences that our community experiences great successes and continued growth. When you\u2019re working with members of the community, we encourage you to follow these guidelines which help steer our interactions and strive to keep Python a positive, successful, and growing community.

    \r\n \r\n

    A member of the Python community is:

    \r\n \r\n
    \r\n

    Open

    \r\n

    Members of the community are open to collaboration, whether it’s on PEPs, patches, problems, or otherwise. We’re receptive to constructive comment and criticism, as the experiences and skill sets of other members contribute to the whole of our efforts. We’re accepting of all who wish to take part in our activities, fostering an environment where anyone can participate and everyone can make a difference.

    \r\n \r\n

    Considerate

    \r\n

    Members of the community are considerate of their peers — other Python users. We’re thoughtful when addressing the efforts of others, keeping in mind that often times the labor was completed simply for the good of the community. We’re attentive in our communications, whether in person or online, and we’re tactful when approaching differing views.

    \r\n \r\n

    Respectful

    \r\n

    Members of the community are respectful. We’re respectful of others, their positions, their skills, their commitments, and their efforts. We’re respectful of the volunteer efforts that permeate the Python community. We’re respectful of the processes set forth in the community, and we work within them. When we disagree, we are courteous in raising our issues.

    \r\n
    \r\n \r\n

    Overall, we’re good to each other. We contribute to this community not because we have to, but because we want to. If we remember that, these guidelines will come naturally.

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "download-otherreleases", - "content": "

    View older releases

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "download-banner", - "content": "

    Looking for Python with a different OS? Python for Windows, Linux/UNIX, macOS, Other

    \r\n

    Want to help test development versions of Python? Pre-releases

    \r\n

    Looking for Python 2.7? See below for specific releases

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "download-dev", - "content": "

    Information about specific ports, and developer info

    \r\n\r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "download-pgp", - "content": "

    OpenPGP Public Keys

    \r\n

    \r\nSource and binary executables are signed by the release manager using their\r\nOpenPGP key. The release managers and binary builders since Python 2.3 have\r\nbeen:\r\n

    \r\n\r\n
    \r\n

    Note: Barry's key id A74B06BF is used to sign the Python 2.6.8 and 2.6.9\r\nreleases. His key id EA5BBD71 was used to sign all other Python 2.6 and 3.0\r\nreleases. His key id ED9D77D5 is a v3 key and was used to sign older\r\nreleases.

    \r\n
    \r\n

    You can import the release manager public keys by either downloading\r\nthe public key file from here and then\r\nrunning

    \r\n\r\n
    \r\ngpg --import pubkeys.txt\r\n
    \r\n\r\n

    or by grabbing the individual keys directly from the keyserver network\r\nby running this command:

    \r\n\r\n
    \r\ngpg --recv-keys 6A45C816 36580288 7D9DC8D2 18ADD4FF A4135B38 A74B06BF EA5BBD71 ED9D77D5 E6DF025C AA65421D 6F5E1540 F73C700D 487034E5\r\n
    \r\n\r\n

    On the version-specific download pages, you should see a link to both the\r\ndownloadable file and a detached signature file. To verify the authenticity\r\nof the download, grab both files and then run this command:

    \r\n\r\n
    \r\ngpg --verify Python-3.4.2.tgz.asc\r\n
    \r\n\r\n

    Note that you must use the name of the signature file, and you should use the\r\none that's appropriate to the download you're verifying.

    \r\n\r\n
      \r\n
    • (These instructions are geared to\r\nGnuPG and Unix command-line users.\r\nContributions of instructions for other platforms and OpenPGP\r\napplications are welcome.)
    • \r\n
    \r\n\r\n\r\n

    Other Useful Items

    \r\n
      \r\n
    • Looking for 3rd party Python modules? The\r\nPackage Index has many of them.
    • \r\n
    • You can view the standard documentation\r\nonline, or you can download it\r\nin HTML, PostScript, PDF and other formats. See the main\r\nDocumentation page.
    • \r\n
    • Information on tools for unpacking archive files\r\nprovided on python.org is available.
    • \r\n
    • Tip: even if you download a ready-made binary for your\r\nplatform, it makes sense to also download the source.\r\nThis lets you browse the standard library (the subdirectory Lib)\r\nand the standard collections of demos (Demo) and tools\r\n(Tools) that come with it. There's a lot you can learn from the\r\nsource!
    • \r\n
    • There is also a collection of Emacs packages\r\nthat the Emacsing Pythoneer might find useful. This includes major\r\nmodes for editing Python, C, C++, Java, etc., Python debugger\r\ninterfaces and more. Most packages are compatible with Emacs and\r\nXEmacs.
    • \r\n
    \r\n\r\n

    Want to contribute?

    \r\n\r\n

    Want to contribute? See the Python Developer's Guide\r\nto learn about how Python development is managed.

    \r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "community-widget2", - "content": "

    Success Stories

    \r\n
    \r\n My experience with the Python community has been awesome. I have met some fantastic people through local meetups and gotten great support. \r\n \r\n
    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "community-widget3", - "content": "

    Python Weekly

    \r\n

    Python Weekly is a free weekly email newsletter featuring curated news, articles, new releases, jobs, and more. Curated by Rahul Chaudhary every Thursday.

    \r\n

    Go to pythonweekly.com to sign up.

    \r\n\r\n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "supernav-python-success-stories", - "content": "\n
  • \n \n
    \n Python and Zope speed development of devIS EZ Reusable Objects (EZRO), a flexible content management system used in the eGovernment sector\n
    \n

    Development InfoStructure (devIS), devIS

    \n\n
  • ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "supernav-python-downloads", - "content": "\n
  • \n \n
    \n \n

    Download for macOS

    \n \n

    \n Python 3.5.2\n Python 2.7.12\n

    \n \n

    Not the OS you are looking for? Python can be used on many operating systems and environments. View the full list of downloads.

    \n
    \n \n
    \n \n

    Python Source

    \n \n

    \n Python 3.5.2\n Python 2.7.12\n

    \n \n

    Not the OS you are looking for? Python can be used on many operating systems and environments. View the full list of downloads.

    \n
    \n \n
    \n \n

    Download for Windows

    \n \n

    \n Python 3.5.2\n Python 2.7.12\n

    \n

    Note that Python 3.5+ cannot be used on Windows XP or earlier.

    \n

    Not the OS you are looking for? Python can be used on many operating systems and environments. View the full list of downloads.

    \n
    \n \n
    \n

    Download Python for Any OS

    \n

    Python can be used on many operating systems and environments.

    \n

    \n View the full list of downloads\n

    \n
    \n
  • \n", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "download-sources", - "content": "

    Sources

    \n

    For most Unix systems, you must download and compile the source code. The same source code archive can also be used to build the Windows and Mac versions, and is the starting point for ports to all other platforms.

    \n\n

    Download the latest Python 3 and Python 2 source.

    \n\n

    Read more

    ", - "content_markup_type": "html" - } -}, -{ - "fields": { - "label": "homepage-downloads", - "content": "

    Download

    \n

    Python source code and installers are available for download for all versions!.

    \n

    Latest: Python 3.5.2

    ", - "content_markup_type": "html" - } -} + { + "model": "boxes.box", + "pk": 1, + "fields": { + "created": "2013-03-11T22:38:14.817Z", + "updated": "2014-06-25T19:01:06.268Z", + "label": "supernav-python-about", + "content": "\r\n
  • \r\n

    Python is a programming language that lets you work more quickly and integrate your systems more effectively.

    \r\n

    You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs. Learn more about Python..\r\n

  • ", + "content_markup_type": "html", + "_content_rendered": "\r\n
  • \r\n

    Python is a programming language that lets you work more quickly and integrate your systems more effectively.

    \r\n

    You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs. Learn more about Python..\r\n

  • " + } + }, + { + "model": "boxes.box", + "pk": 2, + "fields": { + "created": "2013-03-11T22:38:48.876Z", + "updated": "2014-02-20T15:51:58.760Z", + "label": "supernav-python-events", + "content": "
  • Find events from the Python Community around the world!
  • ", + "content_markup_type": "html", + "_content_rendered": "
  • Find events from the Python Community around the world!
  • " + } + }, + { + "model": "boxes.box", + "pk": 3, + "fields": { + "created": "2013-03-11T22:39:05.720Z", + "updated": "2019-05-14T15:11:02.819Z", + "label": "supernav-python-blog", + "content": "
  • \n

    Wednesday, May 8, 2019

    \n

    Farewell, Python 3.4

    \n

    \n
    \n

    \n
    \n
    \n\n It's with a note of sadness that I announce the final retirement\n of Python 3.4.  The final release was back in March, but I didn't\n get around to actually closing and deleting the 3.4 branch until\n this morning.
    \n
    \n\n Python 3.4 introduced many features we ...
    Read more\n

    \n
  • ", + "content_markup_type": "html", + "_content_rendered": "
  • \n

    Wednesday, May 8, 2019

    \n

    Farewell, Python 3.4

    \n

    \n
    \n

    \n
    \n
    \n\n It's with a note of sadness that I announce the final retirement\n of Python 3.4.  The final release was back in March, but I didn't\n get around to actually closing and deleting the 3.4 branch until\n this morning.
    \n
    \n\n Python 3.4 introduced many features we ...
    Read more\n

    \n
  • " + } + }, + { + "model": "boxes.box", + "pk": 4, + "fields": { + "created": "2013-03-11T22:39:23.767Z", + "updated": "2021-05-13T20:08:12.414Z", + "label": "supernav-python-success-stories", + "content": "\n
  • \n \n
    \n “We feel much better equipped now to handle the challenges. And if we run into an issue, we’ll come to Caktus to hammer it out," said Stephen Johnston, VP of Engineering, at Force Therapeutics.\n
    \n

    Caktus Group, Caktus Group

    \n\n
  • ", + "content_markup_type": "html", + "_content_rendered": "\n
  • \n \n
    \n “We feel much better equipped now to handle the challenges. And if we run into an issue, we’ll come to Caktus to hammer it out," said Stephen Johnston, VP of Engineering, at Force Therapeutics.\n
    \n

    Caktus Group, Caktus Group

    \n\n
  • " + } + }, + { + "model": "boxes.box", + "pk": 5, + "fields": { + "created": "2013-03-11T22:39:38.479Z", + "updated": "2014-02-20T21:41:07.958Z", + "label": "supernav-python-community", + "content": "
  • \r\n

    The Python Community

    \r\n

    Great software is supported by great people. Our user base is enthusiastic, dedicated to encouraging use of the language, and committed to being diverse and friendly.

    \r\n\r\n", + "content_markup_type": "html", + "_content_rendered": "
  • \r\n

    The Python Community

    \r\n

    Great software is supported by great people. Our user base is enthusiastic, dedicated to encouraging use of the language, and committed to being diverse and friendly.

    \r\n\r\n" + } + }, + { + "model": "boxes.box", + "pk": 6, + "fields": { + "created": "2013-03-11T22:39:54.391Z", + "updated": "2020-06-04T16:52:02.042Z", + "label": "supernav-python-documentation", + "content": "
  • \r\n

    Python’s standard documentation: download, browse or watch a tutorial.

    \r\n

    Get started below, or visit the Documentation page to browse by version.

    \r\n
    \r\n

    \r\n Python Docs \r\n

    \r\n
  • ", + "content_markup_type": "html", + "_content_rendered": "
  • \r\n

    Python’s standard documentation: download, browse or watch a tutorial.

    \r\n

    Get started below, or visit the Documentation page to browse by version.

    \r\n
    \r\n

    \r\n Python Docs \r\n

    \r\n
  • " + } + }, + { + "model": "boxes.box", + "pk": 7, + "fields": { + "created": "2013-03-11T22:40:10.148Z", + "updated": "2022-07-26T11:28:55.053Z", + "label": "supernav-python-downloads", + "content": "\n
  • \n \n
    \n \n

    Download for macOS

    \n \n

    \n Python 3.10.5\n

    \n \n

    Not the OS you are looking for? Python can be used on many operating systems and environments. View the full list of downloads.

    \n
    \n \n
    \n \n

    Python Source

    \n \n

    \n Python 3.10.5\n

    \n \n

    Not the OS you are looking for? Python can be used on many operating systems and environments. View the full list of downloads.

    \n
    \n \n
    \n \n

    Download for Windows

    \n \n

    \n Python 3.10.5\n

    \n

    Note that Python 3.9+ cannot be used on Windows 7 or earlier.

    \n

    Not the OS you are looking for? Python can be used on many operating systems and environments. View the full list of downloads.

    \n
    \n \n
    \n

    Download Python for Any OS

    \n

    Python can be used on many operating systems and environments.

    \n

    \n View the full list of downloads\n

    \n
    \n
  • \n", + "content_markup_type": "html", + "_content_rendered": "\n
  • \n \n
    \n \n

    Download for macOS

    \n \n

    \n Python 3.10.5\n

    \n \n

    Not the OS you are looking for? Python can be used on many operating systems and environments. View the full list of downloads.

    \n
    \n \n
    \n \n

    Python Source

    \n \n

    \n Python 3.10.5\n

    \n \n

    Not the OS you are looking for? Python can be used on many operating systems and environments. View the full list of downloads.

    \n
    \n \n
    \n \n

    Download for Windows

    \n \n

    \n Python 3.10.5\n

    \n

    Note that Python 3.9+ cannot be used on Windows 7 or earlier.

    \n

    Not the OS you are looking for? Python can be used on many operating systems and environments. View the full list of downloads.

    \n
    \n \n
    \n

    Download Python for Any OS

    \n

    Python can be used on many operating systems and environments.

    \n

    \n View the full list of downloads\n

    \n
    \n
  • \n" + } + }, + { + "model": "boxes.box", + "pk": 8, + "fields": { + "created": "2013-03-12T19:25:48.729Z", + "updated": "2013-03-12T19:25:48.746Z", + "label": "feedbacks-complete", + "content": "Thanks for submitting your feedback!", + "content_markup_type": "markdown", + "_content_rendered": "

    Thanks for submitting your feedback!

    " + } + }, + { + "model": "boxes.box", + "pk": 9, + "fields": { + "created": "2013-10-10T21:29:28.488Z", + "updated": "2014-02-16T19:57:34.272Z", + "label": "homepage-get-started", + "content": "

    Get Started

    \r\n

    Whether you're new to programming or an experienced developer, it's easy to learn and use Python.

    \r\n

    Start with our Beginner’s Guide

    ", + "content_markup_type": "html", + "_content_rendered": "

    Get Started

    \r\n

    Whether you're new to programming or an experienced developer, it's easy to learn and use Python.

    \r\n

    Start with our Beginner’s Guide

    " + } + }, + { + "model": "boxes.box", + "pk": 10, + "fields": { + "created": "2013-10-11T20:11:12.339Z", + "updated": "2022-07-26T11:28:55.089Z", + "label": "homepage-downloads", + "content": "

    Download

    \n

    Python source code and installers are available for download for all versions!

    \n

    Latest: Python 3.10.5

    ", + "content_markup_type": "html", + "_content_rendered": "

    Download

    \n

    Python source code and installers are available for download for all versions!

    \n

    Latest: Python 3.10.5

    " + } + }, + { + "model": "boxes.box", + "pk": 11, + "fields": { + "created": "2013-10-11T20:11:55.471Z", + "updated": "2015-02-16T18:20:47.422Z", + "label": "homepage-documentation", + "content": "

    Docs

    \r\n

    Documentation for Python's standard library, along with tutorials and guides, are available online.

    \r\n

    docs.python.org

    ", + "content_markup_type": "html", + "_content_rendered": "

    Docs

    \r\n

    Documentation for Python's standard library, along with tutorials and guides, are available online.

    \r\n

    docs.python.org

    " + } + }, + { + "model": "boxes.box", + "pk": 12, + "fields": { + "created": "2013-10-11T20:12:26.784Z", + "updated": "2015-03-24T14:25:32.715Z", + "label": "homepage-jobs", + "content": "

    Jobs

    \r\n

    Looking for work or have a Python related position that you're trying to hire for? Our relaunched community-run job board is the place to go.

    \r\n

    jobs.python.org

    ", + "content_markup_type": "html", + "_content_rendered": "

    Jobs

    \r\n

    Looking for work or have a Python related position that you're trying to hire for? Our relaunched community-run job board is the place to go.

    \r\n

    jobs.python.org

    " + } + }, + { + "model": "boxes.box", + "pk": 13, + "fields": { + "created": "2013-10-11T20:12:43.795Z", + "updated": "2014-03-20T14:57:38.791Z", + "label": "homepage-introduction", + "content": "

    Python is a programming language that lets you work quickly and integrate systems more effectively. Learn More

    ", + "content_markup_type": "html", + "_content_rendered": "

    Python is a programming language that lets you work quickly and integrate systems more effectively. Learn More

    " + } + }, + { + "model": "boxes.box", + "pk": 14, + "fields": { + "created": "2013-10-11T20:13:00.938Z", + "updated": "2014-02-15T00:01:49.402Z", + "label": "widget-about-psf", + "content": "

    \r\n >>> Python Software Foundation\r\n

    \r\n

    The mission of the Python Software Foundation 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. Learn more

    \r\n

    \r\n Become a Member\r\n Donate to the PSF\r\n

    ", + "content_markup_type": "html", + "_content_rendered": "

    \r\n >>> Python Software Foundation\r\n

    \r\n

    The mission of the Python Software Foundation 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. Learn more

    \r\n

    \r\n Become a Member\r\n Donate to the PSF\r\n

    " + } + }, + { + "model": "boxes.box", + "pk": 15, + "fields": { + "created": "2013-10-28T19:27:20.963Z", + "updated": "2022-01-05T15:42:59.645Z", + "label": "widget-use-python-for", + "content": "

    Use Python for…

    \r\n

    More

    \r\n\r\n", + "content_markup_type": "html", + "_content_rendered": "

    Use Python for…

    \r\n

    More

    \r\n\r\n" + } + }, + { + "model": "boxes.box", + "pk": 16, + "fields": { + "created": "2014-02-13T16:47:22.118Z", + "updated": "2015-07-02T04:23:14.877Z", + "label": "aboutpython-opensource", + "content": "

    Open-source

    \r\n

    Python is developed under an OSI-approved open source license, making it freely usable and distributable, even for commercial use. Python's license is administered by the Python Software Foundation.

    \r\n", + "content_markup_type": "html", + "_content_rendered": "

    Open-source

    \r\n

    Python is developed under an OSI-approved open source license, making it freely usable and distributable, even for commercial use. Python's license is administered by the Python Software Foundation.

    \r\n" + } + }, + { + "model": "boxes.box", + "pk": 17, + "fields": { + "created": "2014-02-13T16:47:32.459Z", + "updated": "2014-02-16T03:31:28.875Z", + "label": "aboutpython-applications", + "content": "

    Applications

    \r\n

    The Python Package Index (PyPI) hosts thousands of third-party modules for Python. Both Python's standard library and the community-contributed modules allow for endless possibilities.

    \r\n", + "content_markup_type": "html", + "_content_rendered": "

    Applications

    \r\n

    The Python Package Index (PyPI) hosts thousands of third-party modules for Python. Both Python's standard library and the community-contributed modules allow for endless possibilities.

    \r\n" + } + }, + { + "model": "boxes.box", + "pk": 18, + "fields": { + "created": "2014-02-13T16:47:44.654Z", + "updated": "2014-02-16T03:23:32.375Z", + "label": "aboutpython-easytolearn", + "content": "

    Friendly & Easy to Learn

    \r\n

    The community hosts conferences and meetups, collaborates on code, and much more. Python's documentation will help you along the way, and the mailing lists will keep you in touch.

    \r\n", + "content_markup_type": "html", + "_content_rendered": "

    Friendly & Easy to Learn

    \r\n

    The community hosts conferences and meetups, collaborates on code, and much more. Python's documentation will help you along the way, and the mailing lists will keep you in touch.

    \r\n" + } + }, + { + "model": "boxes.box", + "pk": 19, + "fields": { + "created": "2014-02-13T16:47:54.924Z", + "updated": "2014-02-16T00:44:16.332Z", + "label": "aboutpython-getstarted", + "content": "

    Getting Started

    \r\n

    Python can be easy to pick up whether you're a first time programmer or you're experienced with other languages. The following pages are a useful first step to get on your way writing programs with Python!

    \r\n", + "content_markup_type": "html", + "_content_rendered": "

    Getting Started

    \r\n

    Python can be easy to pick up whether you're a first time programmer or you're experienced with other languages. The following pages are a useful first step to get on your way writing programs with Python!

    \r\n" + } + }, + { + "model": "boxes.box", + "pk": 20, + "fields": { + "created": "2014-02-13T16:48:12.216Z", + "updated": "2014-02-20T16:09:48.845Z", + "label": "aboutpython-banner", + "content": "

    \r\n Python is powerful... and fast;
    \r\n plays well with others;
    \r\n runs everywhere;
    \r\n is friendly & easy to learn;
    \r\n is Open.\r\n

    \r\n

    These are some of the reasons people who use Python would rather not use anything else.

    ", + "content_markup_type": "html", + "_content_rendered": "

    \r\n Python is powerful... and fast;
    \r\n plays well with others;
    \r\n runs everywhere;
    \r\n is friendly & easy to learn;
    \r\n is Open.\r\n

    \r\n

    These are some of the reasons people who use Python would rather not use anything else.

    " + } + }, + { + "model": "boxes.box", + "pk": 21, + "fields": { + "created": "2014-02-13T16:55:22.749Z", + "updated": "2014-02-16T22:58:00.104Z", + "label": "usermessage-helplink", + "content": "

    Can’t find what you’re looking for? Try our comprehensive Help section

    ", + "content_markup_type": "html", + "_content_rendered": "

    Can’t find what you’re looking for? Try our comprehensive Help section

    " + } + }, + { + "model": "boxes.box", + "pk": 22, + "fields": { + "created": "2014-02-13T17:18:49.352Z", + "updated": "2022-03-16T08:47:36.263Z", + "label": "community-irc-channels", + "content": "

    Python Developers Community – LinkedIn

    \r\n

    This is the place where Python Engineers level up their knowledge, skills and network. Exchange technical publications, coding tutorials and other learning resources.

    \r\n

    Go to the Python Developers Community on LinkedIn.

    \r\n
    \r\n\r\n

    Internet Relay Chat

    \r\n

    Libera.Chat hosts several channels. Select an IRC client, register your nickname with Libera.Chat, and you can be off and running!

    \r\n

    Libera.Chat IRC General Channels

    \r\n
      \r\n
    • #python for general questions
    • \r\n
    • #python-dev for CPython developers
    • \r\n
    ", + "content_markup_type": "html", + "_content_rendered": "

    Python Developers Community – LinkedIn

    \r\n

    This is the place where Python Engineers level up their knowledge, skills and network. Exchange technical publications, coding tutorials and other learning resources.

    \r\n

    Go to the Python Developers Community on LinkedIn.

    \r\n
    \r\n\r\n

    Internet Relay Chat

    \r\n

    Libera.Chat hosts several channels. Select an IRC client, register your nickname with Libera.Chat, and you can be off and running!

    \r\n

    Libera.Chat IRC General Channels

    \r\n
      \r\n
    • #python for general questions
    • \r\n
    • #python-dev for CPython developers
    • \r\n
    " + } + }, + { + "model": "boxes.box", + "pk": 23, + "fields": { + "created": "2014-02-13T17:19:09.500Z", + "updated": "2022-01-20T18:52:45.235Z", + "label": "community-widget3", + "content": "

    Python Weekly

    \r\n

    Python Weekly is a free weekly email newsletter featuring curated news, articles, new releases, jobs, and more. Curated by Rahul Chaudhary every Thursday.

    \r\n

    Go to pythonweekly.com to sign up.

    \r\n
    \r\n\r\n

    PySlackers

    \r\n

    PySlackers is a community of Python enthusiasts centered around an open Slack team.

    \r\n

    Go to pyslackers.com for more information and to join.

    \r\n
    \r\n\r\n

    Python Discord

    \r\n

    Python Discord is a large community focused around the Python programming language.

    \r\n

    Go to pythondiscord.com for more information and to join.

    \r\n
    ", + "content_markup_type": "html", + "_content_rendered": "

    Python Weekly

    \r\n

    Python Weekly is a free weekly email newsletter featuring curated news, articles, new releases, jobs, and more. Curated by Rahul Chaudhary every Thursday.

    \r\n

    Go to pythonweekly.com to sign up.

    \r\n
    \r\n\r\n

    PySlackers

    \r\n

    PySlackers is a community of Python enthusiasts centered around an open Slack team.

    \r\n

    Go to pyslackers.com for more information and to join.

    \r\n
    \r\n\r\n

    Python Discord

    \r\n

    Python Discord is a large community focused around the Python programming language.

    \r\n

    Go to pythondiscord.com for more information and to join.

    \r\n
    " + } + }, + { + "model": "boxes.box", + "pk": 24, + "fields": { + "created": "2014-02-13T17:19:36.659Z", + "updated": "2016-09-15T07:30:02.791Z", + "label": "community-widget2", + "content": "

    Success Stories

    \r\n
    \r\n My experience with the Python community has been awesome. I have met some fantastic people through local meetups and gotten great support. \r\n \r\n
    ", + "content_markup_type": "html", + "_content_rendered": "

    Success Stories

    \r\n
    \r\n My experience with the Python community has been awesome. I have met some fantastic people through local meetups and gotten great support. \r\n \r\n
    " + } + }, + { + "model": "boxes.box", + "pk": 25, + "fields": { + "created": "2014-02-13T17:19:53.852Z", + "updated": "2018-09-17T19:54:01.835Z", + "label": "community-widget1", + "content": "

    Getting Started

    \r\n

    New to the community? Here are some great places to get started:

    \r\n\r\n\r\n

    Community Survey

    \r\n

    We want to be open about how we can improve transparency, provide the community with opportunities to interact with us, and be responsive to raised suggestions.

    \r\n

    Contribute by filling out the Python Software Foundation Community Survey here.", + "content_markup_type": "html", + "_content_rendered": "

    Getting Started

    \r\n

    New to the community? Here are some great places to get started:

    \r\n\r\n\r\n

    Community Survey

    \r\n

    We want to be open about how we can improve transparency, provide the community with opportunities to interact with us, and be responsive to raised suggestions.

    \r\n

    Contribute by filling out the Python Software Foundation Community Survey here." + } + }, + { + "model": "boxes.box", + "pk": 26, + "fields": { + "created": "2014-02-13T17:20:10.286Z", + "updated": "2014-02-13T17:20:10.289Z", + "label": "community-banner", + "content": "

    \r\n Python’s community is vast;
    \r\n diverse & aims to grow;
    \r\n Python is Open.\r\n

    \r\n

    Great software is supported by great people, and Python is no exception. Our user base is enthusiastic and dedicated to spreading use of the language far and wide. Our community can help support the beginner, the expert, and adds to the ever-increasing open-source knowledgebase.

    ", + "content_markup_type": "html", + "_content_rendered": "

    \r\n Python’s community is vast;
    \r\n diverse & aims to grow;
    \r\n Python is Open.\r\n

    \r\n

    Great software is supported by great people, and Python is no exception. Our user base is enthusiastic and dedicated to spreading use of the language far and wide. Our community can help support the beginner, the expert, and adds to the ever-increasing open-source knowledgebase.

    " + } + }, + { + "model": "boxes.box", + "pk": 27, + "fields": { + "created": "2014-02-13T17:37:50.862Z", + "updated": "2014-02-16T23:01:04.762Z", + "label": "widget-weneedyou", + "content": "

    >>> Python Needs You

    \r\n

    Open source software is made better when users can easily contribute code and documentation to fix bugs and add features. Python strongly encourages community involvement in improving the software. Learn more about how to make Python better for everyone.

    \r\n

    \r\n Contribute to Python\r\n Bug Tracker\r\n

    ", + "content_markup_type": "html", + "_content_rendered": "

    >>> Python Needs You

    \r\n

    Open source software is made better when users can easily contribute code and documentation to fix bugs and add features. Python strongly encourages community involvement in improving the software. Learn more about how to make Python better for everyone.

    \r\n

    \r\n Contribute to Python\r\n Bug Tracker\r\n

    " + } + }, + { + "model": "boxes.box", + "pk": 28, + "fields": { + "created": "2014-02-13T17:38:16.003Z", + "updated": "2014-02-20T21:46:35.748Z", + "label": "documentation-general", + "content": "

    General

    \r\n", + "content_markup_type": "html", + "_content_rendered": "

    General

    \r\n" + } + }, + { + "model": "boxes.box", + "pk": 29, + "fields": { + "created": "2014-02-13T17:38:33.747Z", + "updated": "2014-03-09T16:31:49.195Z", + "label": "documentation-advanced", + "content": "

    Advanced

    \r\n", + "content_markup_type": "html", + "_content_rendered": "

    Advanced

    \r\n" + } + }, + { + "model": "boxes.box", + "pk": 30, + "fields": { + "created": "2014-02-13T17:38:53.151Z", + "updated": "2014-03-10T08:19:17.006Z", + "label": "documentation-moderate", + "content": "

    Moderate

    \r\n", + "content_markup_type": "html", + "_content_rendered": "

    Moderate

    \r\n" + } + }, + { + "model": "boxes.box", + "pk": 31, + "fields": { + "created": "2014-02-13T17:39:12.105Z", + "updated": "2020-06-04T16:52:41.955Z", + "label": "documentation-beginners", + "content": "

    Beginner

    \r\n", + "content_markup_type": "html", + "_content_rendered": "

    Beginner

    \r\n" + } + }, + { + "model": "boxes.box", + "pk": 32, + "fields": { + "created": "2014-02-13T17:39:31.284Z", + "updated": "2020-06-04T16:53:30.985Z", + "label": "documentation-banner", + "content": "

    Browse the docs online or download a copy of your own.

    \r\n

    Python's documentation, tutorials, and guides are constantly evolving.

    \r\n

    Get started here, or scroll down for documentation broken out by type and subject.

    \r\n
    \r\n

    \r\n Python Docs \r\n

    \r\n

    See also Documentation Releases by Version

    ", + "content_markup_type": "html", + "_content_rendered": "

    Browse the docs online or download a copy of your own.

    \r\n

    Python's documentation, tutorials, and guides are constantly evolving.

    \r\n

    Get started here, or scroll down for documentation broken out by type and subject.

    \r\n
    \r\n

    \r\n Python Docs \r\n

    \r\n

    See also Documentation Releases by Version

    " + } + }, + { + "model": "boxes.box", + "pk": 33, + "fields": { + "created": "2014-02-13T17:54:35.443Z", + "updated": "2020-04-19T16:04:34.492Z", + "label": "usermessage-releaseschedule", + "content": "

    Release Schedules

    \r\n\r\n\r\n\r\n", + "content_markup_type": "html", + "_content_rendered": "

    Release Schedules

    \r\n\r\n\r\n\r\n" + } + }, + { + "model": "boxes.box", + "pk": 34, + "fields": { + "created": "2014-02-13T17:54:51.220Z", + "updated": "2014-02-24T16:58:14.303Z", + "label": "download-widget4", + "content": "

    History

    \r\n

    Python was created in the early 1990s by Guido van Rossum at Stichting Mathematisch Centrum in the Netherlands as a successor of a language called ABC. Guido remains Python’s principal author, although it includes many contributions from others.

    \r\n

    Read more

    ", + "content_markup_type": "html", + "_content_rendered": "

    History

    \r\n

    Python was created in the early 1990s by Guido van Rossum at Stichting Mathematisch Centrum in the Netherlands as a successor of a language called ABC. Guido remains Python’s principal author, although it includes many contributions from others.

    \r\n

    Read more

    " + } + }, + { + "model": "boxes.box", + "pk": 35, + "fields": { + "created": "2014-02-13T17:55:07.226Z", + "updated": "2014-02-24T16:46:45.021Z", + "label": "download-widget3", + "content": "

    Alternative Implementations

    \r\n

    This site hosts the \"traditional\" implementation of Python (nicknamed CPython). A number of alternative implementations are available as well.

    \r\n

    Read more

    ", + "content_markup_type": "html", + "_content_rendered": "

    Alternative Implementations

    \r\n

    This site hosts the \"traditional\" implementation of Python (nicknamed CPython). A number of alternative implementations are available as well.

    \r\n

    Read more

    " + } + }, + { + "model": "boxes.box", + "pk": 36, + "fields": { + "created": "2014-02-13T17:55:21.991Z", + "updated": "2022-07-26T11:28:55.075Z", + "label": "download-sources", + "content": "

    Sources

    \n

    For most Unix systems, you must download and compile the source code. The same source code archive can also be used to build the Windows and Mac versions, and is the starting point for ports to all other platforms.

    \n\n

    Download the latest Python 3 and Python 2 source.

    \n\n

    Read more

    ", + "content_markup_type": "html", + "_content_rendered": "

    Sources

    \n

    For most Unix systems, you must download and compile the source code. The same source code archive can also be used to build the Windows and Mac versions, and is the starting point for ports to all other platforms.

    \n\n

    Download the latest Python 3 and Python 2 source.

    \n\n

    Read more

    " + } + }, + { + "model": "boxes.box", + "pk": 37, + "fields": { + "created": "2014-02-13T17:55:37.386Z", + "updated": "2014-02-24T16:56:24.438Z", + "label": "download-widget1", + "content": "

    Licenses

    \r\n

    All Python releases are Open Source. Historically, most, but not all, Python releases have also been GPL-compatible. The Licenses page details GPL-compatibility and Terms and Conditions.

    \r\n

    Read more

    ", + "content_markup_type": "html", + "_content_rendered": "

    Licenses

    \r\n

    All Python releases are Open Source. Historically, most, but not all, Python releases have also been GPL-compatible. The Licenses page details GPL-compatibility and Terms and Conditions.

    \r\n

    Read more

    " + } + }, + { + "model": "boxes.box", + "pk": 38, + "fields": { + "created": "2014-02-13T18:08:39.278Z", + "updated": "2015-01-23T11:22:04.916Z", + "label": "events-subscriptions", + "content": "

    Python Events Calendars

    \r\n\r\n
    \r\n\r\n

    For Python events near you, please have a look at the Python events map.

    \r\n\r\n

    The Python events calendars are maintained by the events calendar team.

    \r\n\r\n

    Please see the events calendar project page for details on how to submit events,subscribe to the calendars,get Twitter feeds or embed them.

    \r\n\r\n

    Thank you.

    \r\n", + "content_markup_type": "html", + "_content_rendered": "

    Python Events Calendars

    \r\n\r\n
    \r\n\r\n

    For Python events near you, please have a look at the Python events map.

    \r\n\r\n

    The Python events calendars are maintained by the events calendar team.

    \r\n\r\n

    Please see the events calendar project page for details on how to submit events, subscribe to the calendars, get Twitter feeds or embed them.

    \r\n\r\n

    Thank you.

    \r\n" + } + }, + { + "model": "boxes.box", + "pk": 39, + "fields": { + "created": "2014-02-13T18:27:05.680Z", + "updated": "2014-07-20T16:51:28.177Z", + "label": "blogs-copyright", + "content": "

    Copyright

    \r\n

    Python Insider by the Python Core Developers is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. Based on a work at blog.python.org.

    ", + "content_markup_type": "html", + "_content_rendered": "

    Copyright

    \r\n

    Python Insider by the Python Core Developers is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. Based on a work at blog.python.org.

    " + } + }, + { + "model": "boxes.box", + "pk": 40, + "fields": { + "created": "2014-02-13T18:27:24.143Z", + "updated": "2014-07-20T16:52:47.929Z", + "label": "blogs-subscriptions", + "content": "

    Python Insider Subscriptions

    \r\n

    Subscribe to Python Insider via:

    \r\n\r\n

    Also check out the Python-Dev mailing list

    ", + "content_markup_type": "html", + "_content_rendered": "

    Python Insider Subscriptions

    \r\n

    Subscribe to Python Insider via:

    \r\n\r\n

    Also check out the Python-Dev mailing list

    " + } + }, + { + "model": "boxes.box", + "pk": 41, + "fields": { + "created": "2014-02-13T18:41:25.050Z", + "updated": "2015-03-19T10:30:14.287Z", + "label": "jobs-subscribe", + "content": "

    Stay up-to-date

    \r\n

    Subscribe via RSS

    \r\n

    Follow The PSF via Twitter

    ", + "content_markup_type": "html", + "_content_rendered": "

    Stay up-to-date

    \r\n

    Subscribe via RSS

    \r\n

    Follow The PSF via Twitter

    " + } + }, + { + "model": "boxes.box", + "pk": 43, + "fields": { + "created": "2014-02-13T18:44:13.165Z", + "updated": "2014-02-13T18:44:13.168Z", + "label": "jobs-getfeatured", + "content": "

    Want your jobs to be featured? Find out more.

    ", + "content_markup_type": "html", + "_content_rendered": "

    Want your jobs to be featured? Find out more.

    " + } + }, + { + "model": "boxes.box", + "pk": 44, + "fields": { + "created": "2014-02-13T18:57:30.769Z", + "updated": "2014-02-13T18:57:30.772Z", + "label": "widget-sidebar-aboutpsf", + "content": "

    The PSF

    \r\n

    The Python Software Foundation is the organization behind Python. Become a member of the PSF and help advance the software and our mission.

    ", + "content_markup_type": "html", + "_content_rendered": "

    The PSF

    \r\n

    The Python Software Foundation is the organization behind Python. Become a member of the PSF and help advance the software and our mission.

    " + } + }, + { + "model": "boxes.box", + "pk": 45, + "fields": { + "created": "2014-02-13T19:09:05.060Z", + "updated": "2014-11-20T15:45:43.883Z", + "label": "psf-news", + "content": "\r\n", + "content_markup_type": "html", + "_content_rendered": "\r\n" + } + }, + { + "model": "boxes.box", + "pk": 46, + "fields": { + "created": "2014-02-13T19:09:19.889Z", + "updated": "2014-02-24T09:45:38.441Z", + "label": "psf-grants", + "content": "

    PSF Grants Program

    \r\n

    The Python Software Foundation welcomes grant proposals for projects related to the development of Python, Python-related technology, and educational resources.

    \r\n

    Proposal Guidelines, FAQ and Examples

    \r\n", + "content_markup_type": "html", + "_content_rendered": "

    PSF Grants Program

    \r\n

    The Python Software Foundation welcomes grant proposals for projects related to the development of Python, Python-related technology, and educational resources.

    \r\n

    Proposal Guidelines, FAQ and Examples

    \r\n" + } + }, + { + "model": "boxes.box", + "pk": 47, + "fields": { + "created": "2014-02-13T19:09:36.096Z", + "updated": "2020-12-01T13:38:00.410Z", + "label": "psf-widget4", + "content": "

    Sponsors

    \r\n

    Without our sponsors we wouldn't be able to help the Python community grow and prosper.

    \r\n

    Sponsorship Possibilities

    ", + "content_markup_type": "html", + "_content_rendered": "

    Sponsors

    \r\n

    Without our sponsors we wouldn't be able to help the Python community grow and prosper.

    \r\n

    Sponsorship Possibilities

    " + } + }, + { + "model": "boxes.box", + "pk": 48, + "fields": { + "created": "2014-02-13T19:09:58.699Z", + "updated": "2020-12-01T13:35:29.884Z", + "label": "psf-widget3", + "content": "

    Volunteer

    \r\n

    Learn how you can help the PSF and the greater Python community!

    \r\n

    How to Volunteer

    ", + "content_markup_type": "html", + "_content_rendered": "

    Volunteer

    \r\n

    Learn how you can help the PSF and the greater Python community!

    \r\n

    How to Volunteer

    " + } + }, + { + "model": "boxes.box", + "pk": 49, + "fields": { + "created": "2014-02-13T19:10:13.763Z", + "updated": "2020-12-01T13:35:06.563Z", + "label": "psf-widget2", + "content": "

    Donate

    \r\n

    Assist the foundation's goals with a donation. The PSF is a recognized 501(c)(3) non-profit organization.

    \r\n

    How to Contribute

    ", + "content_markup_type": "html", + "_content_rendered": "

    Donate

    \r\n

    Assist the foundation's goals with a donation. The PSF is a recognized 501(c)(3) non-profit organization.

    \r\n

    How to Contribute

    " + } + }, + { + "model": "boxes.box", + "pk": 50, + "fields": { + "created": "2014-02-13T19:10:29.028Z", + "updated": "2020-12-01T13:34:41.057Z", + "label": "psf-widget1", + "content": "

    Become a Member

    \r\n

    Help the PSF promote, protect, and advance the Python programming language and community!

    \r\n

    Membership FAQ", + "content_markup_type": "html", + "_content_rendered": "

    Become a Member

    \r\n

    Help the PSF promote, protect, and advance the Python programming language and community!

    \r\n

    Membership FAQ" + } + }, + { + "model": "boxes.box", + "pk": 51, + "fields": { + "created": "2014-02-13T19:11:18.416Z", + "updated": "2014-02-13T19:11:18.419Z", + "label": "psf-banner", + "content": "

    The Python Software Foundation is an organization devoted to advancing open source technology related to the Python programming language.

    ", + "content_markup_type": "html", + "_content_rendered": "

    The Python Software Foundation is an organization devoted to advancing open source technology related to the Python programming language.

    " + } + }, + { + "model": "boxes.box", + "pk": 52, + "fields": { + "created": "2014-02-13T19:25:37.550Z", + "updated": "2014-07-23T15:04:45.401Z", + "label": "successstory-submityours", + "content": "

    Submit Yours!

    \r\n

    Python users want to know more about Python in the wild. Tell us your story

    ", + "content_markup_type": "html", + "_content_rendered": "

    Submit Yours!

    \r\n

    Python users want to know more about Python in the wild. Tell us your story

    " + } + }, + { + "model": "boxes.box", + "pk": 53, + "fields": { + "created": "2014-02-13T20:48:27.303Z", + "updated": "2014-02-13T20:48:27.306Z", + "label": "psf-codeofconduct", + "content": "\r\n

    The Python Software Foundation has adopted the following Code of Conduct for all of its members:

    \r\n \r\n

    The Python community is made up of members from around the globe with a diverse set of skills, personalities, and experiences. It is through these differences that our community experiences great successes and continued growth. When you’re working with members of the community, we encourage you to follow these guidelines which help steer our interactions and strive to keep Python a positive, successful, and growing community.

    \r\n \r\n

    A member of the Python community is:

    \r\n \r\n
    \r\n

    Open

    \r\n

    Members of the community are open to collaboration, whether it’s on PEPs, patches, problems, or otherwise. We’re receptive to constructive comment and criticism, as the experiences and skill sets of other members contribute to the whole of our efforts. We’re accepting of all who wish to take part in our activities, fostering an environment where anyone can participate and everyone can make a difference.

    \r\n \r\n

    Considerate

    \r\n

    Members of the community are considerate of their peers — other Python users. We’re thoughtful when addressing the efforts of others, keeping in mind that often times the labor was completed simply for the good of the community. We’re attentive in our communications, whether in person or online, and we’re tactful when approaching differing views.

    \r\n \r\n

    Respectful

    \r\n

    Members of the community are respectful. We’re respectful of others, their positions, their skills, their commitments, and their efforts. We’re respectful of the volunteer efforts that permeate the Python community. We’re respectful of the processes set forth in the community, and we work within them. When we disagree, we are courteous in raising our issues.

    \r\n
    \r\n \r\n

    Overall, we’re good to each other. We contribute to this community not because we have to, but because we want to. If we remember that, these guidelines will come naturally.

    ", + "content_markup_type": "html", + "_content_rendered": "\r\n

    The Python Software Foundation has adopted the following Code of Conduct for all of its members:

    \r\n \r\n

    The Python community is made up of members from around the globe with a diverse set of skills, personalities, and experiences. It is through these differences that our community experiences great successes and continued growth. When you’re working with members of the community, we encourage you to follow these guidelines which help steer our interactions and strive to keep Python a positive, successful, and growing community.

    \r\n \r\n

    A member of the Python community is:

    \r\n \r\n
    \r\n

    Open

    \r\n

    Members of the community are open to collaboration, whether it’s on PEPs, patches, problems, or otherwise. We’re receptive to constructive comment and criticism, as the experiences and skill sets of other members contribute to the whole of our efforts. We’re accepting of all who wish to take part in our activities, fostering an environment where anyone can participate and everyone can make a difference.

    \r\n \r\n

    Considerate

    \r\n

    Members of the community are considerate of their peers — other Python users. We’re thoughtful when addressing the efforts of others, keeping in mind that often times the labor was completed simply for the good of the community. We’re attentive in our communications, whether in person or online, and we’re tactful when approaching differing views.

    \r\n \r\n

    Respectful

    \r\n

    Members of the community are respectful. We’re respectful of others, their positions, their skills, their commitments, and their efforts. We’re respectful of the volunteer efforts that permeate the Python community. We’re respectful of the processes set forth in the community, and we work within them. When we disagree, we are courteous in raising our issues.

    \r\n
    \r\n \r\n

    Overall, we’re good to each other. We contribute to this community not because we have to, but because we want to. If we remember that, these guidelines will come naturally.

    " + } + }, + { + "model": "boxes.box", + "pk": 54, + "fields": { + "created": "2014-02-13T21:06:39.795Z", + "updated": "2014-02-21T15:36:15.218Z", + "label": "download-otherreleases", + "content": "

    View older releases

    ", + "content_markup_type": "html", + "_content_rendered": "

    View older releases

    " + } + }, + { + "model": "boxes.box", + "pk": 55, + "fields": { + "created": "2014-02-13T21:06:57.376Z", + "updated": "2021-07-29T21:39:50.973Z", + "label": "download-banner", + "content": "

    \r\n Looking for Python with a different OS? Python for\r\n Windows,\r\n Linux/UNIX,\r\n macOS,\r\n Other\r\n

    \r\n\r\n

    \r\n Want to help test development versions of Python?\r\n Prereleases,\r\n Docker images \r\n

    \r\n\r\n

    \r\n Looking for Python 2.7? See below for specific releases\r\n

    ", + "content_markup_type": "html", + "_content_rendered": "

    \r\n Looking for Python with a different OS? Python for\r\n Windows,\r\n Linux/UNIX,\r\n macOS,\r\n Other\r\n

    \r\n\r\n

    \r\n Want to help test development versions of Python?\r\n Prereleases,\r\n Docker images \r\n

    \r\n\r\n

    \r\n Looking for Python 2.7? See below for specific releases\r\n

    " + } + }, + { + "model": "boxes.box", + "pk": 56, + "fields": { + "created": "2014-11-13T21:49:22.048Z", + "updated": "2021-07-29T21:40:21.030Z", + "label": "download-dev", + "content": "

    Information about specific ports, and developer info

    \r\n\r\n", + "content_markup_type": "html", + "_content_rendered": "

    Information about specific ports, and developer info

    \r\n\r\n" + } + }, + { + "model": "boxes.box", + "pk": 57, + "fields": { + "created": "2014-11-13T21:55:42.961Z", + "updated": "2020-10-07T14:37:41.002Z", + "label": "download-pgp", + "content": "

    OpenPGP Public Keys

    \r\n

    \r\nSource and binary executables are signed by the release manager or binary builder using their\r\nOpenPGP key. Release files for currently supported releases are signed by the following:\r\n

    \r\n\r\n
    \r\n

    \r\nRelease files for older releases which have now reached end-of-life may have been signed by one of the following:\r\n

    \r\n\r\n
    \r\n

    You can import a person's public keys from a public keyserver network server\r\nyou trust by running a command like:

    \r\n\r\n
    \r\ngpg --recv-keys [key id]\r\n
    \r\n\r\n

    \r\nor, in many cases, public keys can also be found\r\nat keybase.io.\r\nOn the version-specific download pages, you should see a link to both the\r\ndownloadable file and a detached signature file. To verify the authenticity\r\nof the download, grab both files and then run this command:

    \r\n\r\n
    \r\ngpg --verify Python-3.6.2.tgz.asc\r\n
    \r\n\r\n

    Note that you must use the name of the signature file, and you should use the\r\none that's appropriate to the download you're verifying.

    \r\n\r\n
      \r\n
    • (These instructions are geared to\r\nGnuPG and Unix command-line users.)\r\n
    • \r\n
    \r\n\r\n\r\n

    Other Useful Items

    \r\n
      \r\n
    • Looking for 3rd party Python modules? The\r\nPackage Index has many of them.
    • \r\n
    • You can view the standard documentation\r\nonline, or you can download it\r\nin HTML, PostScript, PDF and other formats. See the main\r\nDocumentation page.
    • \r\n
    • Information on tools for unpacking archive files\r\nprovided on python.org is available.
    • \r\n
    • Tip: even if you download a ready-made binary for your\r\nplatform, it makes sense to also download the source.\r\nThis lets you browse the standard library (the subdirectory Lib)\r\nand the standard collections of demos (Demo) and tools\r\n(Tools) that come with it. There's a lot you can learn from the\r\nsource!
    • \r\n
    • There is also a collection of Emacs packages\r\nthat the Emacsing Pythoneer might find useful. This includes major\r\nmodes for editing Python, C, C++, Java, etc., Python debugger\r\ninterfaces and more. Most packages are compatible with Emacs and\r\nXEmacs.
    • \r\n
    \r\n\r\n

    Want to contribute?

    \r\n\r\n

    Want to contribute? See the Python Developer's Guide\r\nto learn about how Python development is managed.

    \r\n", + "content_markup_type": "html", + "_content_rendered": "

    OpenPGP Public Keys

    \r\n

    \r\nSource and binary executables are signed by the release manager or binary builder using their\r\nOpenPGP key. Release files for currently supported releases are signed by the following:\r\n

    \r\n\r\n
    \r\n

    \r\nRelease files for older releases which have now reached end-of-life may have been signed by one of the following:\r\n

    \r\n\r\n
    \r\n

    You can import a person's public keys from a public keyserver network server\r\nyou trust by running a command like:

    \r\n\r\n
    \r\ngpg --recv-keys [key id]\r\n
    \r\n\r\n

    \r\nor, in many cases, public keys can also be found\r\nat keybase.io.\r\nOn the version-specific download pages, you should see a link to both the\r\ndownloadable file and a detached signature file. To verify the authenticity\r\nof the download, grab both files and then run this command:

    \r\n\r\n
    \r\ngpg --verify Python-3.6.2.tgz.asc\r\n
    \r\n\r\n

    Note that you must use the name of the signature file, and you should use the\r\none that's appropriate to the download you're verifying.

    \r\n\r\n
      \r\n
    • (These instructions are geared to\r\nGnuPG and Unix command-line users.)\r\n
    • \r\n
    \r\n\r\n\r\n

    Other Useful Items

    \r\n
      \r\n
    • Looking for 3rd party Python modules? The\r\nPackage Index has many of them.
    • \r\n
    • You can view the standard documentation\r\nonline, or you can download it\r\nin HTML, PostScript, PDF and other formats. See the main\r\nDocumentation page.
    • \r\n
    • Information on tools for unpacking archive files\r\nprovided on python.org is available.
    • \r\n
    • Tip: even if you download a ready-made binary for your\r\nplatform, it makes sense to also download the source.\r\nThis lets you browse the standard library (the subdirectory Lib)\r\nand the standard collections of demos (Demo) and tools\r\n(Tools) that come with it. There's a lot you can learn from the\r\nsource!
    • \r\n
    • There is also a collection of Emacs packages\r\nthat the Emacsing Pythoneer might find useful. This includes major\r\nmodes for editing Python, C, C++, Java, etc., Python debugger\r\ninterfaces and more. Most packages are compatible with Emacs and\r\nXEmacs.
    • \r\n
    \r\n\r\n

    Want to contribute?

    \r\n\r\n

    Want to contribute? See the Python Developer's Guide\r\nto learn about how Python development is managed.

    \r\n" + } + }, + { + "model": "boxes.box", + "pk": 60, + "fields": { + "created": "2018-12-10T14:44:44.657Z", + "updated": "2020-12-01T13:34:06.908Z", + "label": "psf-widget0", + "content": "
    \r\n

    We Support The Python Community through...

    \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n
    \r\n

    \r\n Grants\r\n

    \r\n\r\n
    \r\n \r\n
    \r\n\r\n

    \r\n In 2019 we awarded $326,000 USD for over 200 grants to recipients in 60 different countries.\r\n

    \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n

    \r\n Infrastructure\r\n

    \r\n\r\n
    \r\n \r\n
    \r\n\r\n

    \r\n We support and maintain python.org,\r\n The Python Package Index,\r\n Python Documentation,\r\n and many other services the Python Community relies on.\r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n

    \r\n PyCon US\r\n

    \r\n\r\n
    \r\n \r\n
    \r\n\r\n\r\n

    \r\n We produce and underwrite the\r\n PyCon US Conference,\r\n the largest annual gathering for the Python community.\r\n Our sponsors’ support\r\n enabled us to award $138,162 USD in financial aid to 144 attendees for PyCon 2019.\r\n

    \r\n
    \r\n
    ", + "content_markup_type": "html", + "_content_rendered": "
    \r\n

    We Support The Python Community through...

    \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n
    \r\n

    \r\n Grants\r\n

    \r\n\r\n
    \r\n \r\n
    \r\n\r\n

    \r\n In 2019 we awarded $326,000 USD for over 200 grants to recipients in 60 different countries.\r\n

    \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n

    \r\n Infrastructure\r\n

    \r\n\r\n
    \r\n \r\n
    \r\n\r\n

    \r\n We support and maintain python.org,\r\n The Python Package Index,\r\n Python Documentation,\r\n and many other services the Python Community relies on.\r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n

    \r\n PyCon US\r\n

    \r\n\r\n
    \r\n \r\n
    \r\n\r\n\r\n

    \r\n We produce and underwrite the\r\n PyCon US Conference,\r\n the largest annual gathering for the Python community.\r\n Our sponsors’ support\r\n enabled us to award $138,162 USD in financial aid to 144 attendees for PyCon 2019.\r\n

    \r\n
    \r\n
    " + } + }, + { + "model": "boxes.box", + "pk": 65, + "fields": { + "created": "2019-09-26T20:21:53.853Z", + "updated": "2019-09-26T20:22:53.463Z", + "label": "donor-honor-roll", + "content": "
      \r\n
    1. PayPal Giving Fund
    2. \r\n
    3. Humble Bundle
    4. \r\n
    5. Facebook
    6. \r\n
    7. Handshake Development
    8. \r\n
    9. Google Cloud Platform
    10. \r\n
    11. PyLondinium
    12. \r\n
    13. craigslist Charitable Fund
    14. \r\n
    15. Benevity Causes
    16. \r\n
    17. Bloomberg LP
    18. \r\n
    19. Vanguard Charitable

    20. \r\n
    21. Katie Linero
    22. \r\n
    23. Anonymous
    24. \r\n
    25. Sam Kimbrel
    26. \r\n
    27. Ruben Orduz
    28. \r\n
    29. Thea Flowers
    30. \r\n
    31. Dustin Ingram
    32. \r\n
    33. Christopher Wilcox
    34. \r\n
    35. Jordon Phillips
    36. \r\n
    37. Frank Valcarcel
    38. \r\n
    39. CarGurus, Inc.

    40. \r\n
    41. Delany Watkins
    42. \r\n
    43. Alliance Data
    44. \r\n
    45. Benevity Community Impact Fund
    46. \r\n
    47. Underwood Institute
    48. \r\n
    49. ECP
    50. \r\n
    51. William F. Benter
    52. \r\n
    53. UK Online Giving Foundation
    54. \r\n
    55. Alethea Katherine Flowers
    56. \r\n
    57. Sergey Brin Family Foundation
    58. \r\n
    59. Kyle Knapp

    60. \r\n
    61. Jordan Guymon
    62. \r\n
    63. John Carlyle
    64. \r\n
    65. James Saryerwinnie
    66. \r\n
    67. Donald Stufft
    68. \r\n
    69. Grishma Jena
    70. \r\n
    71. Deepak K Gupta
    72. \r\n
    73. Jessica De Maria
    74. \r\n
    75. Bloomberg LP employees
    76. \r\n
    77. Naomi Ceder
    78. \r\n
    79. Jason Myers

    80. \r\n
    81. פיינל
    82. \r\n
    83. Bright Funds Foundation
    84. \r\n
    85. Roy Larson
    86. \r\n
    87. Michaela Shtilman-Minkin
    88. \r\n
    89. O'Reilly Japan, Inc.
    90. \r\n
    91. Christopher Swenson
    92. \r\n
    93. Jacqueline Kazil
    94. \r\n
    95. Kelly Elmstrom
    96. \r\n
    97. Ernest W Durbin III
    98. \r\n
    99. Carl Harris

    100. \r\n
    101. Gary A. Richardson
    102. \r\n
    103. Read the Docs, Inc
    104. \r\n
    105. Jon Banafato
    106. \r\n
    107. JupyterCon
    108. \r\n
    109. Michael Hebert
    110. \r\n
    111. Rachel Chazanovitz
    112. \r\n
    113. Tomasz Finc
    114. \r\n
    115. Fidelity Charitable
    116. \r\n
    117. William Israel
    118. \r\n
    119. indico data solutions INC

    120. \r\n
    121. Mike McCaffrey
    122. \r\n
    123. Gregory P. Smith
    124. \r\n
    125. Aaron Dershem
    126. \r\n
    127. Jennie MacDougall
    128. \r\n
    129. Lorena Mesa
    130. \r\n
    131. Albert Sweigart
    132. \r\n
    133. Steven Burnap
    134. \r\n
    135. Dorota Jarecka
    136. \r\n
    137. Anna Jaruga
    138. \r\n
    139. Hugo Bowne-Anderson

    140. \r\n
    141. phillip torrone
    142. \r\n
    143. Katherine McLaughlin
    144. \r\n
    145. Bors LTD
    146. \r\n
    147. Andrew VanCamp
    148. \r\n
    149. Troy Campbell
    150. \r\n
    151. ProxyMesh LLC
    152. \r\n
    153. Matthew Bullock
    154. \r\n
    155. Lief Koepsel
    156. \r\n
    157. Andrew Pinkham
    158. \r\n
    159. YourCause, LLC

    160. \r\n
    161. Jarret Raim
    162. \r\n
    163. Dane Hillard Photography
    164. \r\n
    165. Daniel Fortunov
    166. \r\n
    167. Christine Costello
    168. \r\n
    169. The Tobin and Lu Family Fund
    170. \r\n
    171. Amazon Smile
    172. \r\n
    173. Jace Browning
    174. \r\n
    175. Eric Floehr
    176. \r\n
    177. Chris Miller
    178. \r\n
    179. Ben Berry

    180. \r\n
    181. Dennis Bunskoek
    182. \r\n
    183. Amirali Sanatinia
    184. \r\n
    185. Enthought, Inc.
    186. \r\n
    187. Sankara Sampath
    188. \r\n
    189. Liubov Yurgenson
    190. \r\n
    191. Bill Schnieders
    192. \r\n
    193. James Alexander
    194. \r\n
    195. Thomas Kluyver
    196. \r\n
    197. Joseph Armbruster
    198. \r\n
    199. Adam Forsyth

    200. \r\n
    201. Casey Faist
    202. \r\n
    203. Lindsey Brockman
    204. \r\n
    205. Ronald Hayden
    206. \r\n
    207. Samuel Agnew
    208. \r\n
    209. John-Scott Atlakson
    210. \r\n
    211. Carol Willing
    212. \r\n
    213. Jacob Burch
    214. \r\n
    215. Michael Fleisher
    216. \r\n
    217. David Sturgis
    218. \r\n
    219. Felix Wyss

    220. \r\n
    221. Caitlin Outterson
    222. \r\n
    223. Karan Goel
    224. \r\n
    225. Chalmer Lowe
    226. \r\n
    227. Intellovations
    228. \r\n
    229. Brittany Vogel
    230. \r\n
    231. William Weitzel
    232. \r\n
    233. Cathy Wyss
    234. \r\n
    235. Anthony Lupinetti
    236. \r\n
    237. Ray Berg
    238. \r\n
    239. Intel Volunteer Grant Program

    240. \r\n
    241. Harry Percival
    242. \r\n
    243. Sanchit Anand
    244. \r\n
    245. Wendy Palmer and Richard Ruh
    246. \r\n
    247. Thomas Mortimer-Jones
    248. \r\n
    249. Frankie Graffagnino
    250. \r\n
    251. Jeremy Reichman
    252. \r\n
    253. Pythontek
    254. \r\n
    255. Emily Leathers
    256. \r\n
    257. Don Jayamanne
    258. \r\n
    259. Anna Winkler

    260. \r\n
    261. Benjamin Glass
    262. \r\n
    263. Scott Irwin
    264. \r\n
    265. Julian Crosson-Hill
    266. \r\n
    267. Jonathan Banafato
    268. \r\n
    269. Paul Bryan
    270. \r\n
    271. Charan Rajan
    272. \r\n
    273. Michael Chin
    274. \r\n
    275. paulo ALVES
    276. \r\n
    277. Tyler Bindon
    278. \r\n
    279. LUIS PALLARES ANIORTE

    280. \r\n
    281. Gerard Blais
    282. \r\n
    283. Bernard De Serres
    284. \r\n
    285. Jacob Kaplan-Moss
    286. \r\n
    287. TSUJI SHINGO
    288. \r\n
    289. Patrick Hagerty
    290. \r\n
    291. Kenzie Academy
    292. \r\n
    293. Paul Kehrer
    294. \r\n
    295. In Mun
    296. \r\n
    297. Katina Mooneyham
    298. \r\n
    299. Justin Harringa

    300. \r\n
    301. David Jones
    302. \r\n
    303. Jackie Kazil
    304. \r\n
    305. Joseph Wilhelm
    306. \r\n
    307. Intevation GmbH
    308. \r\n
    309. Andy Piper
    310. \r\n
    311. William E. Stelzel
    312. \r\n
    313. Ian Hellen
    314. \r\n
    315. Greg Goddard
    316. \r\n
    317. Scott Carpenter
    318. \r\n
    319. Lance Alligood

    320. \r\n
    321. Imaginary Landscape
    322. \r\n
    323. Shawn Hensley
    324. \r\n
    325. Daniel Woodraska
    326. \r\n
    327. Samuel Klock
    328. \r\n
    329. Andrew Kuchling
    330. \r\n
    331. Miguel Sarabia del Castillo
    332. \r\n
    333. David K Sutton
    334. \r\n
    335. Brett Slatkin
    336. \r\n
    337. Mahmoud Hashemi
    338. \r\n
    339. Avi Oza

    340. \r\n
    341. Jesse Shapiro
    342. \r\n
    343. nidhin pattaniyil
    344. \r\n
    345. dbader software co.
    346. \r\n
    347. litio network
    348. \r\n
    349. Paulus Schoutsen
    350. \r\n
    351. James Turk
    352. \r\n
    353. Kevin Marty
    354. \r\n
    355. Glenn Jones
    356. \r\n
    357. Dan Crosta
    358. \r\n
    359. Handojo Goenadi

    360. \r\n
    361. Katie McLaughlin
    362. \r\n
    363. Chip Warden
    364. \r\n
    365. JEAN-CLAUDE ARBAUT
    366. \r\n
    367. Tara Johnson
    368. \r\n
    369. Emanuil Tolev
    370. \r\n
    371. Peter Kropf
    372. \r\n
    373. Dang Griffith
    374. \r\n
    375. Bryan Davis
    376. \r\n
    377. Howard Mooneyham
    378. \r\n
    379. Benjamin Wohlwend

    380. \r\n
    381. Justin McCammon
    382. \r\n
    383. Kristen McIntyre
    384. \r\n
    385. Sebastian Lorentz
    386. \r\n
    387. Wendi Dreesen
    388. \r\n
    389. Sergey Konakov
    390. \r\n
    391. Douglas Ryan
    392. \r\n
    393. Chris Rose
    394. \r\n
    395. Joshua Simmons
    396. \r\n
    397. BRUCE F JAFFE
    398. \r\n
    399. Davide Frazzetto

    400. \r\n
    401. Analysis North
    402. \r\n
    403. Stack Exchange
    404. \r\n
    405. Everyday Hero
    406. \r\n
    407. Herbert Schilling
    408. \r\n
    409. Eric Klusman
    410. \r\n
    411. Robin Friedrich
    412. \r\n
    413. Anurag Saxena
    414. \r\n
    415. Karen Schmidt
    416. \r\n
    417. Bruno Alla
    418. \r\n
    419. Vikram Aggarwal

    420. \r\n
    421. Michael Seidel
    422. \r\n
    423. Albert Nubiola
    424. \r\n
    425. Yin Aaron
    426. \r\n
    427. Formlabs Operations
    428. \r\n
    429. Tom Augspurger
    430. \r\n
    431. James Crist
    432. \r\n
    433. Allen Wang
    434. \r\n
    435. Matthew Konvalin
    436. \r\n
    437. Julia White and Jason Friedman
    438. \r\n
    439. Fred Brasch

    440. \r\n
    441. Laurie White
    442. \r\n
    443. Ivan Nikolaev
    444. \r\n
    445. Peter Fein
    446. \r\n
    447. Ryan Watson
    448. \r\n
    449. A. Jesse Jiryu Davis
    450. \r\n
    451. Michael Miller
    452. \r\n
    453. Larry W Tooley II
    454. \r\n
    455. æ ªå¼ä¼šç¤¾Xoxzo
    456. \r\n
    457. Michael Gilbert
    458. \r\n
    459. Celia Cintas

    460. \r\n
    461. Jacob Peddicord
    462. \r\n
    463. 内田 公太
    464. \r\n
    465. Cherie Williams
    466. \r\n
    467. Adam Foster
    468. \r\n
    469. James Ahlstrom
    470. \r\n
    471. Dileep Bhat
    472. \r\n
    473. Chancy Kennedy
    474. \r\n
    475. Joel Watts
    476. \r\n
    477. Derek Keeler
    478. \r\n
    479. Reginald Dugard

    480. \r\n
    481. Chloe Tucker
    482. \r\n
    483. Webb Software, LLC
    484. \r\n
    485. Stefán Sigmundsson
    486. \r\n
    487. Johnny Cochrane
    488. \r\n
    489. Junlan Liu
    490. \r\n
    491. Alex Sobral de Freitas
    492. \r\n
    493. Thomas Ballinger
    494. \r\n
    495. Salem Environmental LLC
    496. \r\n
    497. Paulo alvarado
    498. \r\n
    499. Datadog Inc.

    500. \r\n
    501. Sanghee Kim
    502. \r\n
    503. Thomas HUNGER
    504. \r\n
    505. Jesper Dramsch
    506. \r\n
    507. Mohammad Burhan Khalid
    508. \r\n
    509. Shiboune Thill
    510. \r\n
    511. Xin Cynthia
    512. \r\n
    513. Nicholas Tietz
    514. \r\n
    515. Joseph Reed
    516. \r\n
    517. Paul McLanahan
    518. \r\n
    519. Plaid Inc.

    520. \r\n
    521. Eric Chou
    522. \r\n
    523. Kawabuchi Shota
    524. \r\n
    525. Anthony Plunkett
    526. \r\n
    527. Aaron Olson
    528. \r\n
    529. Robert Woodraska
    530. \r\n
    531. Justin Hoover
    532. \r\n
    533. Roland Metivier
    534. \r\n
    535. Stefan Hagen
    536. \r\n
    537. Joshua Engroff
    538. \r\n
    539. Aaron Shaneyfelt

    540. \r\n
    541. Ivana Kellyerova
    542. \r\n
    543. Amit Saha
    544. \r\n
    545. Ellery Payne
    546. \r\n
    547. Gorgias Inc.
    548. \r\n
    549. PayPal
    550. \r\n
    551. So Hau Heng Haggen
    552. \r\n
    553. David Gwilt
    554. \r\n
    555. VALLET Bastien
    556. \r\n
    557. Tianmu Zhang
    558. \r\n
    559. Antonio Puertas Gallardo

    560. \r\n
    561. Nathanial E Urwin
    562. \r\n
    563. Jillian Rouleau
    564. \r\n
    565. Bright Hat Solutions LLC
    566. \r\n
    567. Vishu Guntupalli
    568. \r\n
    569. Chantal Laplante
    570. \r\n
    571. FreeWear.org
    572. \r\n
    573. Zachery Bir
    574. \r\n
    575. Phillip Oldham
    576. \r\n
    577. Jozef Iljuk
    578. \r\n
    579. Patrick Kilduff

    580. \r\n
    581. Jeffrey Self
    582. \r\n
    583. Jonas Bagge
    584. \r\n
    585. Jonathan Hartley
    586. \r\n
    587. Brian Grohe
    588. \r\n
    589. Jason Rowley
    590. \r\n
    591. scott campbell
    592. \r\n
    593. Michael Twomey
    594. \r\n
    595. Alvaro Moises Valdebenito Bustamante
    596. \r\n
    597. Eric Appelt
    598. \r\n
    599. Thierry Moebel

    600. \r\n
    601. TowerUp.com
    602. \r\n
    603. Aaron Straus
    604. \r\n
    605. Yusuke Tsutsumi
    606. \r\n
    607. Edvardas Baltūsis
    608. \r\n
    609. Manatsawin Hanmongkolchai
    610. \r\n
    611. Ekaterina Levitskaya
    612. \r\n
    613. Kamishima Toshihiro
    614. \r\n
    615. William Mayor
    616. \r\n
    617. Jon Danao
    618. \r\n
    619. United Way of the Bay Area

    620. \r\n
    621. Kevin Shackleton
    622. \r\n
    623. Jennifer Basalone
    624. \r\n
    625. John Morrissey
    626. \r\n
    627. Tim Lesher
    628. \r\n
    629. Kevin Cox
    630. \r\n
    631. Paul Barker
    632. \r\n
    633. EuroPython 2017 Sponsored Massage
    634. \r\n
    635. John Hill
    636. \r\n
    637. Clay Campaigne
    638. \r\n
    639. STEPHANE WIRTEL

    640. \r\n
    641. Anna Schneider
    642. \r\n
    643. jingoloba.com
    644. \r\n
    645. Carl Trachte
    646. \r\n
    647. Britt Gresham
    648. \r\n
    649. John Mangino
    650. \r\n
    651. Applied Biomath, LLC
    652. \r\n
    653. Andrew Janke
    654. \r\n
    655. Froilan Irizarry
    656. \r\n
    657. Kevin Stilwell
    658. \r\n
    659. Sarah Guido

    660. \r\n
    661. Bruno Vermeulen
    662. \r\n
    663. David Radcliffe
    664. \r\n
    665. Sebastian Woehrl
    666. \r\n
    667. Alex Gallub
    668. \r\n
    669. Sandip Bhattacharya
    670. \r\n
    671. Bernard DeSerres
    672. \r\n
    673. Julie Yoo
    674. \r\n
    675. Kevin McCormick
    676. \r\n
    677. Ying Wang
    678. \r\n
    679. Benjamin Allen

    680. \r\n
    681. Robin Wilson's Website
    682. \r\n
    683. Kay Schlühr
    684. \r\n
    685. Daniel Taylor
    686. \r\n
    687. Sebastián Ramírez Magrí
    688. \r\n
    689. Tobias Kunze
    690. \r\n
    691. Pedro Rodrigues
    692. \r\n
    693. Théophile Studer
    694. \r\n
    695. John Reese
    696. \r\n
    697. Olivier Grisel
    698. \r\n
    699. Neil Fernandes

    700. \r\n
    701. michael pechner
    702. \r\n
    703. Salesforce.org
    704. \r\n
    705. MacLean Ian
    706. \r\n
    707. Phebe Polk
    708. \r\n
    709. Arnaud Legout
    710. \r\n
    711. The Lagunitas Brewing Co.
    712. \r\n
    713. Ned Deily
    714. \r\n
    715. Jerrie Martherus
    716. \r\n
    717. Gregg Thomason
    718. \r\n
    719. Rami Chowdhury

    720. \r\n
    721. Nick Schmalenberger
    722. \r\n
    723. Daniel Müller
    724. \r\n
    725. Reuven Lerner
    726. \r\n
    727. Peter Farrell
    728. \r\n
    729. Scott Halkyard
    730. \r\n
    731. Network for Good
    732. \r\n
    733. Scott Johnston
    734. \r\n
    735. David Gehrig
    736. \r\n
    737. Ben Warren
    738. \r\n
    739. Stuart Kennedy

    740. \r\n
    741. Daniel Furman
    742. \r\n
    743. femmegeek
    744. \r\n
    745. el cimarron wh llc
    746. \r\n
    747. David Ashby
    748. \r\n
    749. Daniel Wallace
    750. \r\n
    751. Goto Hjelle
    752. \r\n
    753. Charles Hailbronner
    754. \r\n
    755. Jeff Borisch
    756. \r\n
    757. Yarko Tymciurak
    758. \r\n
    759. Saptak Sengupta

    760. \r\n
    761. Sal DiStefano
    762. \r\n
    763. Paul Hallett software
    764. \r\n
    765. Eric Kansa
    766. \r\n
    767. Enrique Gonzalez
    768. \r\n
    769. Dustin Mendoza
    770. \r\n
    771. Fahima Djabelkhir
    772. \r\n
    773. Julien MOURA
    774. \r\n
    775. Artiya Thinkumpang
    776. \r\n
    777. Lucas CIMON
    778. \r\n
    779. Leandro Meili

    780. \r\n
    781. Justin Flory
    782. \r\n
    783. Nicholas Sarbicki
    784. \r\n
    785. Nicholas Serra
    786. \r\n
    787. Charles Engelke
    788. \r\n
    789. Petar Mlinaric
    790. \r\n
    791. TREVOR PINDLING
    792. \r\n
    793. Jose Padilla
    794. \r\n
    795. Joel Grus
    796. \r\n
    797. James Shields
    798. \r\n
    799. Benjamin Starling

    800. \r\n
    801. Simon Willison
    802. \r\n
    803. Richard Hanson
    804. \r\n
    805. Katherine Simmons
    806. \r\n
    807. Nathaniel Compton
    808. \r\n
    809. Level 12
    810. \r\n
    811. Alexander Hagerman
    812. \r\n
    813. Michael Pirnat
    814. \r\n
    815. Piper Thunstrom
    816. \r\n
    817. Blaise Laflamme
    818. \r\n
    819. Kelvin Vivash

    820. \r\n
    821. Glen Brazil
    822. \r\n
    823. William Horton
    824. \r\n
    825. Kelsey Saintclair
    826. \r\n
    827. Christopher Patti
    828. \r\n
    829. Micaela Alaniz
    830. \r\n
    831. Becky Sweger
    832. \r\n
    833. Matthew Bowden
    834. \r\n
    835. RAMAKRISHNA CH S N V
    836. \r\n
    837. Okko Willeboordse
    838. \r\n
    839. Nicolás Pérez Giorgi

    840. \r\n
    841. Guilherme Talarico
    842. \r\n
    843. lucas godoy
    844. \r\n
    845. Raul Maldonado
    846. \r\n
    847. David Potter
    848. \r\n
    849. Jena Heath
    850. \r\n
    851. Hillari Mohler
    852. \r\n
    853. Barbara Shaurette
    854. \r\n
    855. Thomas Ackland
    856. \r\n
    857. Stephen Figgins
    858. \r\n
    859. RAUL MALDONADO

    860. \r\n
    861. Peter Wang
    862. \r\n
    863. O'Reilly Media
    864. \r\n
    865. LORENZO MORIONDO
    866. \r\n
    867. Bert Jan Willem Regeer
    868. \r\n
    869. Alex Chamberlain
    870. \r\n
    871. Florian Schulze
    872. \r\n
    873. Arne Sommerfelt
    874. \r\n
    875. Charline Chester
    876. \r\n
    877. Christoph Gohlke
    878. \r\n
    879. Michel beaussart

    880. \r\n
    881. Mohammad Taleb
    882. \r\n
    883. Emily Spahn
    884. \r\n
    885. Seth Juarez
    886. \r\n
    887. murali kalapala
    888. \r\n
    889. Christopher B Georgen
    890. \r\n
    891. Aru Sahni
    892. \r\n
    893. Josiah McGlothin
    894. \r\n
    895. Douglas Napoleone
    896. \r\n
    897. Manny Francisco
    898. \r\n
    899. Pey Lian Lin

    900. \r\n
    901. Pamela McA'Nulty
    902. \r\n
    903. Ehsan Iran Nejad
    904. \r\n
    905. Mamadou Diallo
    906. \r\n
    907. Tim Harris
    908. \r\n
    909. Nicholas Tucker
    910. \r\n
    911. Amanda Casari
    912. \r\n
    913. 段 雪峰
    914. \r\n
    915. yonghoo sheen
    916. \r\n
    917. Brian Rutledge
    918. \r\n
    919. Alexander Levy

    920. \r\n
    921. Daniel Klein
    922. \r\n
    923. Deborah Harris
    924. \r\n
    925. Rafael Caricio
    926. \r\n
    927. Christopher Lunsford
    928. \r\n
    929. Sher Muhonen
    930. \r\n
    931. Christopher Miller
    932. \r\n
    933. Brad Crittenden
    934. \r\n
    935. gregdenson.com
    936. \r\n
    937. Lucas Coffey
    938. \r\n
    939. Ochiai Yuto

    940. \r\n
    941. Andy Fundinger
    942. \r\n
    943. daishi harada
    944. \r\n
    945. Daniel Yeaw
    946. \r\n
    947. Ravi Satya Durga Prasad Yenugula
    948. \r\n
    949. business business business
    950. \r\n
    951. Parbhat Puri
    952. \r\n
    953. Mark Turner
    954. \r\n
    955. Hugo Lopes Tavares
    956. \r\n
    957. sumeet yawalkar
    958. \r\n
    959. Cassidy Gallegos

    960. \r\n
    961. Peter Landoll
    962. \r\n
    963. Eugene O'Friel
    964. \r\n
    965. Kelly Peterson
    966. \r\n
    967. OLA JIRLOW
    968. \r\n
    969. Matt Trostel
    970. \r\n
    971. Christopher Sterk
    972. \r\n
    973. G Cody Bunch
    974. \r\n
    975. BRADLEY SCHWAB
    976. \r\n
    977. Yip Yen Lam
    978. \r\n
    979. Lee Vaughan

    980. \r\n
    981. David Morris
    982. \r\n
    983. Justin Holmes
    984. \r\n
    985. Michael Sarahan
    986. \r\n
    987. J Matthew Peters
    988. \r\n
    989. Fernando Martinez
    990. \r\n
    991. Brad Miro
    992. \r\n
    993. Bernard Lawson
    994. \r\n
    995. Rob Martin
    996. \r\n
    997. Tyler Bigler
    998. \r\n
    999. Peter Pinch

    1000. \r\n
    1001. Alex Riviere
    1002. \r\n
    1003. Aaron Scarisbrick
    1004. \r\n
    1005. Daniel Chen
    1006. \r\n
    1007. Shaoyan Huang
    1008. \r\n
    1009. Nehar Arora
    1010. \r\n
    1011. Mark Chollett
    1012. \r\n
    1013. erika bucio
    1014. \r\n
    1015. Vanessa Bergstedt
    1016. \r\n
    1017. Subhodip Biswas
    1018. \r\n
    1019. Robert Reynolds

    1020. \r\n
    1021. Philip James
    1022. \r\n
    1023. Michael Davis
    1024. \r\n
    1025. Gonzalo Correa
    1026. \r\n
    1027. Erik Bethke
    1028. \r\n
    1029. Christen Blake
    1030. \r\n
    1031. Arianne Dee
    1032. \r\n
    1033. Alexander Bliskovksy
    1034. \r\n
    1035. Timothy Hoagland
    1036. \r\n
    1037. Jerome Allen
    1038. \r\n
    1039. Steven Loria

    1040. \r\n
    1041. Shimizukawa Takayuki
    1042. \r\n
    1043. Faris Chebib
    1044. \r\n
    1045. John Adjei
    1046. \r\n
    1047. Yi-Huan Chan
    1048. \r\n
    1049. David Forgac
    1050. \r\n
    1051. Michael Trosen
    1052. \r\n
    1053. Anthony Pilger
    1054. \r\n
    1055. OpenRock Innovations Ltd.
    1056. \r\n
    1057. Patrick Shuff
    1058. \r\n
    1059. Shami Marangwanda

    1060. \r\n
    1061. Innolitics, LLC
    1062. \r\n
    1063. Walter Vrey
    1064. \r\n
    1065. Daniel Axmacher
    1066. \r\n
    1067. Steven Shapiro
    1068. \r\n
    1069. Mitchell Chapman
    1070. \r\n
    1071. Cara Schmitz
    1072. \r\n
    1073. Dan Sanderson
    1074. \r\n
    1075. Kevin Conway
    1076. \r\n
    1077. Patrick-Oliver Groß
    1078. \r\n
    1079. Nicholas Tollervey

    1080. \r\n
    1081. Abhay Saxena
    1082. \r\n
    1083. CyberGrants
    1084. \r\n
    1085. Vettrivel Viswanathan
    1086. \r\n
    1087. Magx Durbin
    1088. \r\n
    1089. Brad Israel
    1090. \r\n
    1091. Matthew Lauria
    1092. \r\n
    1093. Jeff Bradberry
    1094. \r\n
    1095. Harry Hebblewhite
    1096. \r\n
    1097. Expert Network at Packt
    1098. \r\n
    1099. Rodolfo De Nadai

    1100. \r\n
    1101. joaquin berenguer
    1102. \r\n
    1103. Jorge Herskovic
    1104. \r\n
    1105. Nicola Ramagnano
    1106. \r\n
    1107. Emil Christensen
    1108. \r\n
    1109. Ahmed Syed
    1110. \r\n
    1111. Russell Keith-Magee
    1112. \r\n
    1113. Bruce Collins
    1114. \r\n
    1115. Daniel Chudnov
    1116. \r\n
    1117. Tim Peters
    1118. \r\n
    1119. Marc Laughton

    1120. \r\n
    1121. Carol Peterson Ganz
    1122. \r\n
    1123. Younggun Kim
    1124. \r\n
    1125. Mariatta Wijaya
    1126. \r\n
    1127. Eryn Wells
    1128. \r\n
    1129. Ronny Meißner
    1130. \r\n
    1131. Brad Fritz
    1132. \r\n
    1133. Antony Jerome
    1134. \r\n
    1135. Jeff Knupp
    1136. \r\n
    1137. Andrew Chen
    1138. \r\n
    1139. Capital One

    1140. \r\n
    1141. Frederick VanCleve
    1142. \r\n
    1143. YONEYAMA HIDEAKI
    1144. \r\n
    1145. Luis Freire
    1146. \r\n
    1147. Tyrel Souza
    1148. \r\n
    1149. José Antonio Santiago Marrero
    1150. \r\n
    1151. Keith Bussell
    1152. \r\n
    1153. Ãlvaro Justen
    1154. \r\n
    1155. Esa Peuha
    1156. \r\n
    1157. Robert Scrimo
    1158. \r\n
    1159. Chris Paul

    1160. \r\n
    1161. Travis Risner
    1162. \r\n
    1163. Al Sweigart
    1164. \r\n
    1165. Sean Byrne
    1166. \r\n
    1167. Ben Kiel
    1168. \r\n
    1169. Baron Chandler
    1170. \r\n
    1171. Max Bezahler
    1172. \r\n
    1173. Alexander Sage
    1174. \r\n
    1175. Sonia IronCloud
    1176. \r\n
    1177. Emmanuel Leblond
    1178. \r\n
    1179. Eugene ODonnell

    1180. \r\n
    1181. Guillermo Monge Del Olmo
    1182. \r\n
    1183. Robert Law
    1184. \r\n
    1185. Russell Duhon
    1186. \r\n
    1187. Jonathon Duckworth
    1188. \r\n
    1189. Yang Yang
    1190. \r\n
    1191. Nick Johnston
    1192. \r\n
    1193. Aparajit Raghaven and Satyashree Srikanth
    1194. \r\n
    1195. Nikola Kantar
    1196. \r\n
    1197. Benjamin Freeman
    1198. \r\n
    1199. salesforce.org

    1200. \r\n
    1201. April Wright
    1202. \r\n
    1203. Max Bélanger
    1204. \r\n
    1205. Luciano Ramalho
    1206. \r\n
    1207. Dmitry Petrov
    1208. \r\n
    1209. T HUNGER
    1210. \r\n
    1211. Bright Hat Solutions, LLC
    1212. \r\n
    1213. Coffee Meets Bagel
    1214. \r\n
    1215. Timothy Prindle
    1216. \r\n
    1217. Diane Delallée
    1218. \r\n
    1219. Fred Thiele

    1220. \r\n
    1221. BluWall
    1222. \r\n
    1223. Charles Parker
    1224. \r\n
    1225. Joongi Kim
    1226. \r\n
    1227. Jeffrey Peacock Jr
    1228. \r\n
    1229. Fernando Rosendo
    1230. \r\n
    1231. Guruprasad Somasundaram
    1232. \r\n
    1233. Graham Gilmour
    1234. \r\n
    1235. Eric Sachs
    1236. \r\n
    1237. Pablo Lobariñas Crisera
    1238. \r\n
    1239. William Minarik

    1240. \r\n
    1241. Aly Sivji
    1242. \r\n
    1243. Alexander Müller
    1244. \r\n
    1245. Charles Dibsdale
    1246. \r\n
    1247. Atilio Quintero Vásquez
    1248. \r\n
    1249. Helen S Wan
    1250. \r\n
    1251. Ursula C F Junque
    1252. \r\n
    1253. Mark Mangoba
    1254. \r\n
    1255. Timo Würsch
    1256. \r\n
    1257. Daniel O'Meara
    1258. \r\n
    1259. Jeffrey Fischer

    1260. \r\n
    1261. Antti-Pekka Tuovinen
    1262. \r\n
    1263. Nicholas Grove
    1264. \r\n
    1265. ANTONI ALOY
    1266. \r\n
    1267. Scott Lasley
    1268. \r\n
    1269. Jarrod Hamilton
    1270. \r\n
    1271. Russ Crowther
    1272. \r\n
    1273. Gregory Akers
    1274. \r\n
    1275. Nathan F. Watson
    1276. \r\n
    1277. William Woodall
    1278. \r\n
    1279. Peter Dinges

    1280. \r\n
    1281. Eric Hui
    1282. \r\n
    1283. Alexandre Harano
    1284. \r\n
    1285. Eric Smith
    1286. \r\n
    1287. Srivatsan Ramanujam
    1288. \r\n
    1289. Oppenheimer Match for Jason Friedman
    1290. \r\n
    1291. Melvin Lim
    1292. \r\n
    1293. Douglas R Hellmann
    1294. \r\n
    1295. Peter Ullrich
    1296. \r\n
    1297. Ernest Durbin
    1298. \r\n
    1299. Zac Hatfield-Dodds

    1300. \r\n
    1301. EuroPython 16 Sponsored Massage
    1302. \r\n
    1303. Jonas Namida Aneskans
    1304. \r\n
    1305. Brian Dailey
    1306. \r\n
    1307. Kris Amundson
    1308. \r\n
    1309. Owen Nelson
    1310. \r\n
    1311. David Strozzi
    1312. \r\n
    1313. Andre Burgaud
    1314. \r\n
    1315. Torsten Marek
    1316. \r\n
    1317. Gustavo Soares Fernandes Coelho
    1318. \r\n
    1319. Kate Stohr

    1320. \r\n
    1321. Gert Burger
    1322. \r\n
    1323. Cristian Salamea
    1324. \r\n
    1325. Alex Trueman
    1326. \r\n
    1327. Nitesh Patel
    1328. \r\n
    1329. Matthew Svensson
    1330. \r\n
    1331. Raymond Cote
    1332. \r\n
    1333. Martin Goudreau
    1334. \r\n
    1335. Martin De Luca
    1336. \r\n
    1337. Amir Rachum
    1338. \r\n
    1339. Christopher Stevens

    1340. \r\n
    1341. John McGrail
    1342. \r\n
    1343. Christian Wappler
    1344. \r\n
    1345. Benjamin Dyer
    1346. \r\n
    1347. Mickael Falck
    1348. \r\n
    1349. Jonathan Villemaire-Krajden
    1350. \r\n
    1351. Olivier Philippon
    1352. \r\n
    1353. Mario Dix
    1354. \r\n
    1355. RAREkits
    1356. \r\n
    1357. Papakonstantinou K
    1358. \r\n
    1359. Michael McCaffrey

    1360. \r\n
    1361. Dmitri Kurbatskiy
    1362. \r\n
    1363. Mickaël Schoentgen
    1364. \r\n
    1365. Carlo Ciarrocchi
    1366. \r\n
    1367. Nora Kennedy
    1368. \r\n
    1369. Paul Block
    1370. \r\n
    1371. Ian-Matthew Hornburg
    1372. \r\n
    1373. Diane Trout
    1374. \r\n
    1375. Christopher Dent
    1376. \r\n
    1377. Hugh Pyle
    1378. \r\n
    1379. Michael Baker

    1380. \r\n
    1381. Martin Gfeller
    1382. \r\n
    1383. Geir Iversen
    1384. \r\n
    1385. Carl Oscar Aaro
    1386. \r\n
    1387. Erick Navarro
    1388. \r\n
    1389. Swaroop Chitlur Haridas
    1390. \r\n
    1391. Alexys Jacob-Monier
    1392. \r\n
    1393. Paolo Cantore
    1394. \r\n
    1395. Jakub Musko
    1396. \r\n
    1397. GovReady PBC
    1398. \r\n
    1399. César Cruz

    1400. \r\n
    1401. Kevin Boers
    1402. \r\n
    1403. Adam Englander
    1404. \r\n
    1405. Mel Tearle
    1406. \r\n
    1407. darren fix
    1408. \r\n
    1409. Ryan Schave
    1410. \r\n
    1411. Jung Oh
    1412. \r\n
    1413. Jakob Karstens
    1414. \r\n
    1415. G Nyers
    1416. \r\n
    1417. Robbert Zijp
    1418. \r\n
    1419. Marc-Aurèle Coste

    1420. \r\n
    1421. Ramakris Sridhara
    1422. \r\n
    1423. Justin Duke
    1424. \r\n
    1425. Christophe Jean
    1426. \r\n
    1427. Sheree Pena
    1428. \r\n
    1429. Christopher Brousseau
    1430. \r\n
    1431. James Lacy
    1432. \r\n
    1433. Susannah Herrada
    1434. \r\n
    1435. Mike Miller
    1436. \r\n
    1437. Elana Hashman
    1438. \r\n
    1439. Terrance Peppers

    1440. \r\n
    1441. Doyeon Kim
    1442. \r\n
    1443. William Tubbs
    1444. \r\n
    1445. Roger Coram
    1446. \r\n
    1447. Wladimir van der Laan
    1448. \r\n
    1449. Chan Florence
    1450. \r\n
    1451. ЛаÑтов Юрий
    1452. \r\n
    1453. Mathieu Legay
    1454. \r\n
    1455. Christopher Walsh
    1456. \r\n
    1457. Jens Nistler
    1458. \r\n
    1459. Adam Borbidge

    1460. \r\n
    1461. Brooke Hedrick
    1462. \r\n
    1463. Markus Daul
    1464. \r\n
    1465. Burak Alver
    1466. \r\n
    1467. David Michaels
    1468. \r\n
    1469. Marc Garcia
    1470. \r\n
    1471. Carsten Stupka
    1472. \r\n
    1473. Harry Moore
    1474. \r\n
    1475. Buddha Kumar
    1476. \r\n
    1477. Michael Iuzzolino
    1478. \r\n
    1479. JEROME PETAZZONI

    1480. \r\n
    1481. Douglas Wood
    1482. \r\n
    1483. Alexandre Bulté
    1484. \r\n
    1485. Fred Fitzhugh Jr
    1486. \r\n
    1487. Vit Zahradnik
    1488. \r\n
    1489. Tsuji Shingo
    1490. \r\n
    1491. Eli Wilson
    1492. \r\n
    1493. Andrew Remis
    1494. \r\n
    1495. Thomas Eckert
    1496. \r\n
    1497. Chris Erickson
    1498. \r\n
    1499. Mark Agustin

    1500. \r\n
    1501. Jason Wolosonovich
    1502. \r\n
    1503. Jonathan Seabold
    1504. \r\n
    1505. Jacob Magnusson
    1506. \r\n
    1507. Kevin Porterfield
    1508. \r\n
    1509. Филиппов Савва
    1510. \r\n
    1511. Pulkit Sinha
    1512. \r\n
    1513. Sarah Clements
    1514. \r\n
    1515. MA Lok Lam
    1516. \r\n
    1517. Leena Kudalkar
    1518. \r\n
    1519. David Brondsema

    1520. \r\n
    1521. Saifuddin Abdullah
    1522. \r\n
    1523. Georg Schwojer
    1524. \r\n
    1525. David Diminnie
    1526. \r\n
    1527. Frontstream
    1528. \r\n
    1529. Daniel Halbert
    1530. \r\n
    1531. Steve Lindblad
    1532. \r\n
    1533. Xie Zong-han
    1534. \r\n
    1535. Bjorn Stabell
    1536. \r\n
    1537. Hans Braakmann
    1538. \r\n
    1539. Faith Schlabach

    1540. \r\n
    1541. chris maenner
    1542. \r\n
    1543. ХриÑтюхин ÐлекÑандр
    1544. \r\n
    1545. ROBERT LUDWICK
    1546. \r\n
    1547. Prakash Shenoy
    1548. \r\n
    1549. Matthew Beauregard
    1550. \r\n
    1551. T. R. Padmanabhan
    1552. \r\n
    1553. David Bibb
    1554. \r\n
    1555. Edward Haymore
    1556. \r\n
    1557. David Beitey
    1558. \r\n
    1559. Insperity

    1560. \r\n
    1561. Ian-Mathew Hornburg
    1562. \r\n
    1563. The GE Foundation
    1564. \r\n
    1565. Dominic Valentino
    1566. \r\n
    1567. Alexander Arsky
    1568. \r\n
    1569. Thomas Lasinski
    1570. \r\n
    1571. Paul Brown
    1572. \r\n
    1573. Panorama Global Impact Fund
    1574. \r\n
    1575. Joshua Olson
    1576. \r\n
    1577. Christian Groleau
    1578. \r\n
    1579. Ian Zelikman

    1580. \r\n
    1581. TIAA Charitable
    1582. \r\n
    1583. Edgar Roman
    1584. \r\n
    1585. Oliver Schubert
    1586. \r\n
    1587. Christopher Moradi
    1588. \r\n
    1589. Manisha Patel
    1590. \r\n
    1591. Daniel Silvers
    1592. \r\n
    1593. JP Bourget
    1594. \r\n
    1595. Oleksandr Buchkovskyi
    1596. \r\n
    1597. Divakar Viswanath
    1598. \r\n
    1599. Radek Smejkal

    1600. \r\n
    1601. Catherine Devlin
    1602. \r\n
    1603. William Hall
    1604. \r\n
    1605. Yayoi Ukai
    1606. \r\n
    1607. Eliezer Mintz
    1608. \r\n
    1609. Ivan Ven Osdel
    1610. \r\n
    1611. Holger Kohr
    1612. \r\n
    1613. Alan Vezina
    1614. \r\n
    1615. Jason Huggins
    1616. \r\n
    1617. Stephen Z Montsaroff
    1618. \r\n
    1619. Ronak Vadalani

    1620. \r\n
    1621. Jonathan Mason
    1622. \r\n
    1623. Thomas McNamara
    1624. \r\n
    1625. Dhrubajyoti Doley
    1626. \r\n
    1627. David Rudling
    1628. \r\n
    1629. BRUCE GERHARDT
    1630. \r\n
    1631. Tilak T
    1632. \r\n
    1633. Gilberto Pastorello
    1634. \r\n
    1635. Bert Raeymaekers
    1636. \r\n
    1637. Suchindra Chandrahas
    1638. \r\n
    1639. Samuel Rinde

    1640. \r\n
    1641. Otter Software Limited
    1642. \r\n
    1643. Software Freedom School
    1644. \r\n
    1645. David Friedman
    1646. \r\n
    1647. James Williams
    1648. \r\n
    1649. Adam Murphy
    1650. \r\n
    1651. Keith Gaughan
    1652. \r\n
    1653. Jonathan Barnoud
    1654. \r\n
    1655. U. S. Bank Foundation
    1656. \r\n
    1657. Justin Schechter
    1658. \r\n
    1659. SF Python

    1660. \r\n
    1661. JOSE VARGAS MONTERO
    1662. \r\n
    1663. Thomas Wouters
    1664. \r\n
    1665. Michael Smith
    1666. \r\n
    1667. CBAhern Communications
    1668. \r\n
    1669. Richard Tedder
    1670. \r\n
    1671. Willis Cummins
    1672. \r\n
    1673. Joseph Curtin
    1674. \r\n
    1675. Oliver Andrich
    1676. \r\n
    1677. Akiko Maeda
    1678. \r\n
    1679. Victoria Boykis

    1680. \r\n
    1681. Tiffany Verkaik
    1682. \r\n
    1683. Michael Pinkowski
    1684. \r\n
    1685. Samuel Madireddy
    1686. \r\n
    1687. MagicStack Inc
    1688. \r\n
    1689. nathaniel compton
    1690. \r\n
    1691. Mark Lotspaih
    1692. \r\n
    1693. Chris Johnston
    1694. \r\n
    1695. MinneAnalytics
    1696. \r\n
    1697. Mazhalai Chellathurai
    1698. \r\n
    1699. Scott Sanderson

    1700. \r\n
    1701. John Roa
    1702. \r\n
    1703. Amazon
    1704. \r\n
    1705. Dolcera Corporation
    1706. \r\n
    1707. Sylvia Tran
    1708. \r\n
    1709. Minkyu Park
    1710. \r\n
    1711. Hiten jadeja
    1712. \r\n
    1713. David McInnis
    1714. \r\n
    1715. Craig Fisk
    1716. \r\n
    1717. Dann Halverson
    1718. \r\n
    1719. Edward Mann

    1720. \r\n
    1721. Michael Kusber
    1722. \r\n
    1723. SeongSoo Cho
    1724. \r\n
    1725. Alex Willmer
    1726. \r\n
    1727. Bruno Bord
    1728. \r\n
    1729. Sooda internetbureau B.V.
    1730. \r\n
    1731. Guilherme Moralez
    1732. \r\n
    1733. Nathaniel Brown
    1734. \r\n
    1735. James Donaldson
    1736. \r\n
    1737. Doug Reynolds
    1738. \r\n
    1739. Robert Wlodarczyk

    1740. \r\n
    1741. BoB Woodraska
    1742. \r\n
    1743. Jason Wattier
    1744. \r\n
    1745. Eleven Fifty Academy
    1746. \r\n
    1747. Geoffrey Jost
    1748. \r\n
    1749. Avenue 81, Inc.
    1750. \r\n
    1751. Diane M. and James D. Foote
    1752. \r\n
    1753. Lucas Pfaff
    1754. \r\n
    1755. Gyorgy Fischhof
    1756. \r\n
    1757. Bright Hat
    1758. \r\n
    1759. Johnathan Small

    1760. \r\n
    1761. Catherine Nelson
    1762. \r\n
    1763. Christian Long
    1764. \r\n
    1765. Seki Hiroshi
    1766. \r\n
    1767. Kelsey Hawley
    1768. \r\n
    1769. Van Lindberg
    1770. \r\n
    1771. John Roth
    1772. \r\n
    1773. Adam Collard
    1774. \r\n
    1775. Eugene Callahan
    1776. \r\n
    1777. George Mutter
    1778. \r\n
    1779. Jeremy BOIS

    1780. \r\n
    1781. Zachary Valenta
    1782. \r\n
    1783. Robert Wall
    1784. \r\n
    1785. Julien Enselme
    1786. \r\n
    1787. Todd Mitchell
    1788. \r\n
    1789. SUKREE SONG
    1790. \r\n
    1791. Pedro Ferraz
    1792. \r\n
    1793. Hyunsik Hwang
    1794. \r\n
    1795. Jaganadh Gopinadhan
    1796. \r\n
    1797. Johan Herland
    1798. \r\n
    1799. Scott Campbell

    1800. \r\n
    1801. Marcus Smith
    1802. \r\n
    1803. Hunter DiCicco
    1804. \r\n
    1805. Kevin Richardson
    1806. \r\n
    1807. Lloyd Analytics LLC
    1808. \r\n
    1809. David Gaeddert
    1810. \r\n
    1811. Vicky Lee
    1812. \r\n
    1813. Anthony Scopatz
    1814. \r\n
    1815. Anthony Williams
    1816. \r\n
    1817. Fabrizio Romano
    1818. \r\n
    1819. DataXu Inc

    1820. \r\n
    1821. Rajiv Vijayakumar
    1822. \r\n
    1823. Gilberto Goncalves
    1824. \r\n
    1825. Adrien Brunet
    1826. \r\n
    1827. Betsy Waliszewski
    1828. \r\n
    1829. William Eubanks
    1830. \r\n
    1831. Philipp Weidenhiller
    1832. \r\n
    1833. Paul Fontenrose
    1834. \r\n
    1835. Michael Herman
    1836. \r\n
    1837. Chaitat Piriyasatit
    1838. \r\n
    1839. Anirudh Surendranath

    1840. \r\n
    1841. Cathy Kernodle
    1842. \r\n
    1843. bradley searle
    1844. \r\n
    1845. Zoltan Schmidt
    1846. \r\n
    1847. Twin Panichsombat
    1848. \r\n
    1849. Thiago Luiz Pereira de Santana
    1850. \r\n
    1851. Pieter De Praetere
    1852. \r\n
    1853. Aruj Thirawat
    1854. \r\n
    1855. Arthit Suriyawongkul
    1856. \r\n
    1857. Ashley Perez
    1858. \r\n
    1859. Sander Schaminée

    1860. \r\n
    1861. Caleb Ely
    1862. \r\n
    1863. George Altland
    1864. \r\n
    1865. Patrick Abeya
    1866. \r\n
    1867. Terry Watt
    1868. \r\n
    1869. Burke Consulting Inc
    1870. \r\n
    1871. Lorenz Gruber
    1872. \r\n
    1873. Murali Kalapala
    1874. \r\n
    1875. Aono Koudai
    1876. \r\n
    1877. Vladislav Tyshkevich
    1878. \r\n
    1879. Zeta Associates

    1880. \r\n
    1881. Jeanne Lane
    1882. \r\n
    1883. Zheng Jin
    1884. \r\n
    1885. Martin Chilvers
    1886. \r\n
    1887. Patrick Gearhart
    1888. \r\n
    1889. Brian Whetten
    1890. \r\n
    1891. Wang Muyu
    1892. \r\n
    1893. Alexandre Chabot-Leclerc
    1894. \r\n
    1895. Jennifer Hua
    1896. \r\n
    1897. Shashidhar Mallapur
    1898. \r\n
    1899. Nate Pinchot

    1900. \r\n
    1901. Florian Kluck
    1902. \r\n
    1903. Jarret Hardie
    1904. \r\n
    1905. Cagil Ulusahin
    1906. \r\n
    1907. Corsin Gmür
    1908. \r\n
    1909. Saffet Sen
    1910. \r\n
    1911. Luca Masters
    1912. \r\n
    1913. Nina Zakharenko
    1914. \r\n
    1915. Ryan Nelson
    1916. \r\n
    1917. David Miller
    1918. \r\n
    1919. Praveen Bhamidipati

    1920. \r\n
    1921. Andrew Bialecki
    1922. \r\n
    1923. Daisy Birch Reynardson
    1924. \r\n
    1925. Jaykumar Desai
    1926. \r\n
    1927. neil chazin
    1928. \r\n
    1929. Adam Szegedi
    1930. \r\n
    1931. Jan Javorek
    1932. \r\n
    1933. Guishan Zheng
    1934. \r\n
    1935. Leif Ulstrup
    1936. \r\n
    1937. Peter Lada
    1938. \r\n
    1939. Liam Lefebvre

    1940. \r\n
    1941. Gavin Kirby
    1942. \r\n
    1943. 陈 洪波
    1944. \r\n
    1945. Shigeyuki Takeda
    1946. \r\n
    1947. Max Samp
    1948. \r\n
    1949. Dan Mattera
    1950. \r\n
    1951. Llewellyn Janse van Rensburg
    1952. \r\n
    1953. OddBird, LLC
    1954. \r\n
    1955. Joris Roovers
    1956. \r\n
    1957. Janko Otto
    1958. \r\n
    1959. George Richards

    1960. \r\n
    1961. Alexander Afanasyev
    1962. \r\n
    1963. babila lima
    1964. \r\n
    1965. Pietro Marini
    1966. \r\n
    1967. Jason Bindon
    1968. \r\n
    1969. Kiyotoshi Ichikawa
    1970. \r\n
    1971. loic rowe
    1972. \r\n
    1973. Michael Kisiel
    1974. \r\n
    1975. Eric Thorpe
    1976. \r\n
    1977. David Lauri Pla
    1978. \r\n
    1979. Ben Spaulding

    1980. \r\n
    1981. James Hogarty
    1982. \r\n
    1983. Ira Qualls
    1984. \r\n
    1985. OReilly
    1986. \r\n
    1987. Ben Freeman
    1988. \r\n
    1989. Andrew Beyer
    1990. \r\n
    1991. Jonathan Rogers
    1992. \r\n
    1993. Jethro Nederhof
    1994. \r\n
    1995. Hamza Sheikh
    1996. \r\n
    1997. David Beazley
    1998. \r\n
    1999. Matt Land

    2000. \r\n
    2001. ivan marques
    2002. \r\n
    2003. Geoffrey Ahlberg
    2004. \r\n
    2005. Andrew Herrington
    2006. \r\n
    2007. SunMi Leem
    2008. \r\n
    2009. Sandip Bose
    2010. \r\n
    2011. Mailchimp
    2012. \r\n
    2013. Sunghyun Hwang
    2014. \r\n
    2015. Min-Kyu Park
    2016. \r\n
    2017. Keith Bourgoin
    2018. \r\n
    2019. Robert Meineke

    2020. \r\n
    2021. Tanya Tickel
    2022. \r\n
    2023. Gary Beck
    2024. \r\n
    2025. Kai Willadsen
    2026. \r\n
    2027. Allen Downey
    2028. \r\n
    2029. Geoff Lawrence
    2030. \r\n
    2031. Chen Che Wei
    2032. \r\n
    2033. gooddonegreat.com
    2034. \r\n
    2035. Paul Hildebrandt
    2036. \r\n
    2037. David Smith
    2038. \r\n
    2039. Åukasz Dziedzia

    2040. \r\n
    2041. next health choice, llc
    2042. \r\n
    2043. Wendy Grus
    2044. \r\n
    2045. Praveen Patil
    2046. \r\n
    2047. Justin Shelton
    2048. \r\n
    2049. Joel Vasallo
    2050. \r\n
    2051. Melissa Lewis
    2052. \r\n
    2053. Mark Hanson
    2054. \r\n
    2055. Cory Benfield
    2056. \r\n
    2057. David Fischer
    2058. \r\n
    2059. Raymond Yee and Laura Shefler

    2060. \r\n
    2061. Anthony Clever
    2062. \r\n
    2063. Louise Collis
    2064. \r\n
    2065. marc davidson
    2066. \r\n
    2067. Nitin Madnani
    2068. \r\n
    2069. Markus Koziel
    2070. \r\n
    2071. James Sam
    2072. \r\n
    2073. John Vrbanac
    2074. \r\n
    2075. Hannah Aizenman
    2076. \r\n
    2077. slah ahmed
    2078. \r\n
    2079. kenneth durril

    2080. \r\n
    2081. Thijs van Dien
    2082. \r\n
    2083. Ryan Campbell
    2084. \r\n
    2085. Robert Roskam
    2086. \r\n
    2087. Patipat Susumpow
    2088. \r\n
    2089. Chris Moffitt
    2090. \r\n
    2091. Cholwich Nattee
    2092. \r\n
    2093. Adam J Boscarino
    2094. \r\n
    2095. Orcan Ogetbil
    2096. \r\n
    2097. Mattias Erichsén
    2098. \r\n
    2099. Ryan Petrello

    2100. \r\n
    2101. Ryan McCoy
    2102. \r\n
    2103. Brandon Grubbs
    2104. \r\n
    2105. Bill Griffith
    2106. \r\n
    2107. Vyacheslav Rossov
    2108. \r\n
    2109. EuroPython 2015 Sponsored Massage
    2110. \r\n
    2111. Aaron Virshup
    2112. \r\n
    2113. Cogapp Ltd
    2114. \r\n
    2115. Franklin Ventura
    2116. \r\n
    2117. Daniel Watkins
    2118. \r\n
    2119. YUNTAO WANG

    2120. \r\n
    2121. Merike Sell
    2122. \r\n
    2123. Bernat Gabor
    2124. \r\n
    2125. Francky NOYEZ
    2126. \r\n
    2127. Lisa Quera
    2128. \r\n
    2129. Bad Dog Consulting
    2130. \r\n
    2131. Algirdas Grybas
    2132. \r\n
    2133. Kent Shikama
    2134. \r\n
    2135. Walker Hale
    2136. \r\n
    2137. Jaime Buelta Aguirre
    2138. \r\n
    2139. Immanuel Buder

    2140. \r\n
    2141. Steven Lott
    2142. \r\n
    2143. Elaine Wong
    2144. \r\n
    2145. andrew want
    2146. \r\n
    2147. Kamil Sindi
    2148. \r\n
    2149. Julien Palard
    2150. \r\n
    2151. Elias Dabbas
    2152. \r\n
    2153. Ysbrand Galama
    2154. \r\n
    2155. æ¸…æ°´å· è²´ä¹‹
    2156. \r\n
    2157. Tony Ibbs
    2158. \r\n
    2159. Peter Baumgartner

    2160. \r\n
    2161. Mikhail Mamrouski
    2162. \r\n
    2163. Mark Osinski
    2164. \r\n
    2165. Shimrit Markette
    2166. \r\n
    2167. Raja Aluri
    2168. \r\n
    2169. REINALDO SANCHES
    2170. \r\n
    2171. Trenton McKinney
    2172. \r\n
    2173. Sye van der Veen
    2174. \r\n
    2175. Dr A J Carr
    2176. \r\n
    2177. Travis Shirk
    2178. \r\n
    2179. David Bonner

    2180. \r\n
    2181. erik van widenfelt
    2182. \r\n
    2183. Nicholas Silvester
    2184. \r\n
    2185. Vik Paruchuri
    2186. \r\n
    2187. Regina Sirois
    2188. \r\n
    2189. alpheus masanga
    2190. \r\n
    2191. sander teunissen
    2192. \r\n
    2193. RODNEY CURRYWOOD
    2194. \r\n
    2195. Nik Kantar
    2196. \r\n
    2197. Cyrille Marchand
    2198. \r\n
    2199. personal

    2200. \r\n
    2201. Nicholas Birch
    2202. \r\n
    2203. alessandro mienandi
    2204. \r\n
    2205. Lorenzo Moriondo
    2206. \r\n
    2207. Andres Pineda
    2208. \r\n
    2209. Thomas Rutherford
    2210. \r\n
    2211. Lorenzo Riches
    2212. \r\n
    2213. Karthikeyan Singaravelan
    2214. \r\n
    2215. Brian Ehrhart
    2216. \r\n
    2217. Miguel Sousa
    2218. \r\n
    2219. Vivek Goel

    2220. \r\n
    2221. james estevez
    2222. \r\n
    2223. Venkateshwaran Venkataramani
    2224. \r\n
    2225. 柳 泉波
    2226. \r\n
    2227. Rene Nejsum
    2228. \r\n
    2229. D F Moisset de Espanes
    2230. \r\n
    2231. Yakuza IT
    2232. \r\n
    2233. Andy McFarland
    2234. \r\n
    2235. Gregory Cappa
    2236. \r\n
    2237. Brian Warner
    2238. \r\n
    2239. Numerical Algorithms Group, Inc.

    2240. \r\n
    2241. Hellmut Hartmann
    2242. \r\n
    2243. Austin Gunter
    2244. \r\n
    2245. Ramin Soltani
    2246. \r\n
    2247. Hendrik Lankers
    2248. \r\n
    2249. Sergio Delgado Quintero
    2250. \r\n
    2251. Kim van Wyk
    2252. \r\n
    2253. Nik Kraus Consulting
    2254. \r\n
    2255. ANDY STRUNK
    2256. \r\n
    2257. William Spitler
    2258. \r\n
    2259. Paul Ciano

    2260. \r\n
    2261. PayPal Giving
    2262. \r\n
    2263. András Mózes
    2264. \r\n
    2265. Matthew Lamberti
    2266. \r\n
    2267. Edwin Quillian
    2268. \r\n
    2269. sasaki renato shinji
    2270. \r\n
    2271. Shailyn Ortiz Jimenez
    2272. \r\n
    2273. Network Theory Ltd
    2274. \r\n
    2275. בן פיינשטיין
    2276. \r\n
    2277. George Fischhof
    2278. \r\n
    2279. Maneesha Sane

    2280. \r\n
    2281. Henriette Vullers
    2282. \r\n
    2283. Andrés Torres
    2284. \r\n
    2285. Paul Woo
    2286. \r\n
    2287. John Harris
    2288. \r\n
    2289. Software Carpentry
    2290. \r\n
    2291. Chae Jong Bin
    2292. \r\n
    2293. Brian Skinn
    2294. \r\n
    2295. Adam Parkin
    2296. \r\n
    2297. Allison Simmons
    2298. \r\n
    2299. Alicia Florez

    2300. \r\n
    2301. Christoph Fink
    2302. \r\n
    2303. Kai Analytics
    2304. \r\n
    2305. Paul Egbert
    2306. \r\n
    2307. Annaelle Duff
    2308. \r\n
    2309. William Coleman
    2310. \r\n
    2311. Sungwoo Jo
    2312. \r\n
    2313. Guillaume BLANCHY
    2314. \r\n
    2315. Joseph Dougherty
    2316. \r\n
    2317. C. J. Jennings
    2318. \r\n
    2319. Aaron Holm

    2320. \r\n
    2321. Winston Churchill-Joell
    2322. \r\n
    2323. Joseph Cravo
    2324. \r\n
    2325. George Simpson
    2326. \r\n
    2327. Kevin Mitchell
    2328. \r\n
    2329. Pawan Mehta
    2330. \r\n
    2331. Teemu Tynjala
    2332. \r\n
    2333. Olivier GIMENEZ
    2334. \r\n
    2335. Maxwell Mitchell
    2336. \r\n
    2337. Carl Niger
    2338. \r\n
    2339. Richard Walkington

    2340. \r\n
    2341. Andrew Byers
    2342. \r\n
    2343. Angus Hollands
    2344. \r\n
    2345. Jonathan Bennett
    2346. \r\n
    2347. Keyton Weissinger
    2348. \r\n
    2349. David Larsen
    2350. \r\n
    2351. Brian Rotich
    2352. \r\n
    2353. Shreepad Shukla
    2354. \r\n
    2355. Jesse Evers
    2356. \r\n
    2357. JULIO HENRIQUE OLIVEIRA
    2358. \r\n
    2359. Gideon Pertzov

    2360. \r\n
    2361. H Lewis
    2362. \r\n
    2363. Gabriel Pestre
    2364. \r\n
    2365. John Holmblad
    2366. \r\n
    2367. Buthaina Hakamy
    2368. \r\n
    2369. Enzo C C Maimone
    2370. \r\n
    2371. PRASHANT CHEGOOR
    2372. \r\n
    2373. MICHIKO TAKAHASHI
    2374. \r\n
    2375. Sally Kleinfeldt
    2376. \r\n
    2377. Markus Zapke-Gründemann
    2378. \r\n
    2379. Bountysource Inc.

    2380. \r\n
    2381. David Pratt
    2382. \r\n
    2383. Tarun Kumar Rajamannar
    2384. \r\n
    2385. Formlabs, Inc
    2386. \r\n
    2387. Jiangang Sun
    2388. \r\n
    2389. Bernard Lawrence
    2390. \r\n
    2391. Jason Kessler
    2392. \r\n
    2393. Kurt B. Kaiser
    2394. \r\n
    2395. Gary Selzer
    2396. \r\n
    2397. Justin Malloy
    2398. \r\n
    2399. David Casey

    2400. \r\n
    2401. Aaron Kirschenfeld
    2402. \r\n
    2403. Kenneth Alger
    2404. \r\n
    2405. Jean-Paul Thomas
    2406. \r\n
    2407. Richard Landau
    2408. \r\n
    2409. Kun Xia
    2410. \r\n
    2411. Francois Gervais
    2412. \r\n
    2413. Matthew Hale
    2414. \r\n
    2415. SAU-CHUN LAM
    2416. \r\n
    2417. Matthew Bass
    2418. \r\n
    2419. Matteo Benci

    2420. \r\n
    2421. Beltrami Ester
    2422. \r\n
    2423. richard ward
    2424. \r\n
    2425. Jonathan Gilman
    2426. \r\n
    2427. CrowdPixie
    2428. \r\n
    2429. William Kahn-Greene
    2430. \r\n
    2431. Juny Kesumadewi
    2432. \r\n
    2433. Harvey Summers
    2434. \r\n
    2435. Alan Willams
    2436. \r\n
    2437. Addgene
    2438. \r\n
    2439. Joe Metcalfe

    2440. \r\n
    2441. Hayley Cook
    2442. \r\n
    2443. Peerbits Solution Pvt. Ltd.
    2444. \r\n
    2445. WILLIAM J SHUGARD
    2446. \r\n
    2447. Thiago Pavin Rodrigues
    2448. \r\n
    2449. Hugo Smett
    2450. \r\n
    2451. Gunther Strait
    2452. \r\n
    2453. Jiří Janoušek (Tiliado)
    2454. \r\n
    2455. Vivek Tripathi
    2456. \r\n
    2457. Kevin Samuel
    2458. \r\n
    2459. Clemens Hensen

    2460. \r\n
    2461. Paul Weston
    2462. \r\n
    2463. Jan-Olov Eriksson
    2464. \r\n
    2465. Cyrille COLLIN
    2466. \r\n
    2467. Katie Cunningham
    2468. \r\n
    2469. Odair G Martins
    2470. \r\n
    2471. Maurizio Binelli
    2472. \r\n
    2473. Erik Gillisjans
    2474. \r\n
    2475. Cory Tendal
    2476. \r\n
    2477. Priya Ranjan
    2478. \r\n
    2479. Jonathan McKenzie

    2480. \r\n
    2481. Yasin Bahtiyar
    2482. \r\n
    2483. Raul Gallegos
    2484. \r\n
    2485. Hillary Ellis
    2486. \r\n
    2487. Herald Jones
    2488. \r\n
    2489. Divya Gorantla
    2490. \r\n
    2491. Andrei Drang
    2492. \r\n
    2493. Barry Moore II
    2494. \r\n
    2495. lauren McNerney
    2496. \r\n
    2497. William Chandos
    2498. \r\n
    2499. Vanda Turturean

    2500. \r\n
    2501. Tsyrema Lazarev
    2502. \r\n
    2503. Tamara Andrade
    2504. \r\n
    2505. Sara Powell
    2506. \r\n
    2507. Renee Murray
    2508. \r\n
    2509. Piyush Sharma
    2510. \r\n
    2511. Philipp Wissneth
    2512. \r\n
    2513. Marisa Gomez
    2514. \r\n
    2515. Kathleen Russ
    2516. \r\n
    2517. Jessica Obermark
    2518. \r\n
    2519. Emma Lautz

    2520. \r\n
    2521. David glaser
    2522. \r\n
    2523. Brianne Caplan
    2524. \r\n
    2525. Amy Py
    2526. \r\n
    2527. Erin Allard
    2528. \r\n
    2529. Victor Stinner
    2530. \r\n
    2531. Ward Fenton
    2532. \r\n
    2533. Vlad Tudorache
    2534. \r\n
    2535. Philippe Gagnon
    2536. \r\n
    2537. Mamadou Alpha Barry
    2538. \r\n
    2539. LAURENCE TYLER

    2540. \r\n
    2541. Kevin Flynn
    2542. \r\n
    2543. Joseph Schmidt
    2544. \r\n
    2545. Constance Martineau
    2546. \r\n
    2547. Brooke Storm
    2548. \r\n
    2549. Al Brohi
    2550. \r\n
    2551. William Koehrsen
    2552. \r\n
    2553. Andrew Rash
    2554. \r\n
    2555. å´ å† ä»°
    2556. \r\n
    2557. Richard Basso
    2558. \r\n
    2559. Matt Bacchi

    2560. \r\n
    2561. ModevNetwork, LLC
    2562. \r\n
    2563. Jose Ramos
    2564. \r\n
    2565. Ida Nordang Kieler
    2566. \r\n
    2567. Ashina Sipiora
    2568. \r\n
    2569. Charities Aid Foundation
    2570. \r\n
    2571. John Slawkawski
    2572. \r\n
    2573. Benjamin Naecker
    2574. \r\n
    2575. utopland
    2576. \r\n
    2577. Jonathon Coe
    2578. \r\n
    2579. Benjamin M Johnson

    2580. \r\n
    2581. Baydin Inc.
    2582. \r\n
    2583. Ashwath Ravichandran
    2584. \r\n
    2585. УÑищев Павел
    2586. \r\n
    2587. Andy Smith
    2588. \r\n
    2589. Jeff Ramnani
    2590. \r\n
    2591. Sam Bryan
    2592. \r\n
    2593. David Appleby
    2594. \r\n
    2595. Ricardo Solano
    2596. \r\n
    2597. Peter B. Sellin
    2598. \r\n
    2599. Douglas Wurst

    2600. \r\n
    2601. Alex Slobodnik
    2602. \r\n
    2603. Gisela Eckey
    2604. \r\n
    2605. Aman Narang
    2606. \r\n
    2607. Guillaume Jean
    2608. \r\n
    2609. Logan Jones
    2610. \r\n
    2611. Edoardo Gerosa
    2612. \r\n
    2613. Esther Nam
    2614. \r\n
    2615. Derek Evans
    2616. \r\n
    2617. baron chandler
    2618. \r\n
    2619. Mykola Morhun

    2620. \r\n
    2621. Denise Abbott
    2622. \r\n
    2623. ÐлекÑандр Жуков
    2624. \r\n
    2625. Casey MacPhee
    2626. \r\n
    2627. James Doutt
    2628. \r\n
    2629. Sergio Sanchez
    2630. \r\n
    2631. Aaron Wise
    2632. \r\n
    2633. Miles Erickson
    2634. \r\n
    2635. David Willson
    2636. \r\n
    2637. David Boroditsky
    2638. \r\n
    2639. Chaos Development LLC

    2640. \r\n
    2641. George Schwieters
    2642. \r\n
    2643. Al Pankratz
    2644. \r\n
    2645. Zsolt Cserna
    2646. \r\n
    2647. Calvin Robinson
    2648. \r\n
    2649. Victor Vicente Palacios
    2650. \r\n
    2651. Brian Harrison
    2652. \r\n
    2653. Michael Steder
    2654. \r\n
    2655. José Carlos Coronas Vida
    2656. \r\n
    2657. Adrián Soto
    2658. \r\n
    2659. Levkivskyi Ivan

    2660. \r\n
    2661. John Palmieri
    2662. \r\n
    2663. Jacopo Corbetta
    2664. \r\n
    2665. Matthew Stibbs
    2666. \r\n
    2667. Daniel Bradburn
    2668. \r\n
    2669. Shawn Brown
    2670. \r\n
    2671. è— å…¬æ˜Ž
    2672. \r\n
    2673. Don Sheu
    2674. \r\n
    2675. Dain Crawford
    2676. \r\n
    2677. Naveen Kumar Arcot Lakshman
    2678. \r\n
    2679. William O'Shea

    2680. \r\n
    2681. Maxim Levet
    2682. \r\n
    2683. Mike Short
    2684. \r\n
    2685. Thuy Vu
    2686. \r\n
    2687. Daniel Hrisca
    2688. \r\n
    2689. Oliver Steele
    2690. \r\n
    2691. Greg Nisbet
    2692. \r\n
    2693. Jared Bowns
    2694. \r\n
    2695. Bradley Crittenden
    2696. \r\n
    2697. Bo Brockman
    2698. \r\n
    2699. Matthew McClure

    2700. \r\n
    2701. Luther Hill
    2702. \r\n
    2703. Andrew Konstantaras
    2704. \r\n
    2705. David Cuthbert
    2706. \r\n
    2707. Konstantin Nazarenko
    2708. \r\n
    2709. Aasmund Eldhuset
    2710. \r\n
    2711. Algoritmix
    2712. \r\n
    2713. Hunter Senft-Grupp
    2714. \r\n
    2715. Thomas Lambas
    2716. \r\n
    2717. Fred Jones
    2718. \r\n
    2719. Daw-Ran Liou

    2720. \r\n
    2721. CAF America
    2722. \r\n
    2723. 8ProxyMesh LLC
    2724. \r\n
    2725. Michael Newman
    2726. \r\n
    2727. Udupa Ganesh Murthy
    2728. \r\n
    2729. Keaunna Cleveland
    2730. \r\n
    2731. Mikael Holgersson
    2732. \r\n
    2733. Jesus Armando Anaya Orozco
    2734. \r\n
    2735. Cameron Fackler
    2736. \r\n
    2737. Ilya Kamenshchikov
    2738. \r\n
    2739. Gonzalo Bustos

    2740. \r\n
    2741. Tony Meyer
    2742. \r\n
    2743. Juancarlo Añez
    2744. \r\n
    2745. Kristopher Warner
    2746. \r\n
    2747. Siming Kang
    2748. \r\n
    2749. Thom Neale
    2750. \r\n
    2751. Eleanor Stribling
    2752. \r\n
    2753. Bernard Ostil
    2754. \r\n
    2755. Kurt Kaiser
    2756. \r\n
    2757. Lance Kurisaki
    2758. \r\n
    2759. ZANE DUFOUR

    2760. \r\n
    2761. Michael Putnam
    2762. \r\n
    2763. CBAhern Communications, LLC
    2764. \r\n
    2765. Niko Niemelä
    2766. \r\n
    2767. Personal
    2768. \r\n
    2769. Jamison K. Guyton
    2770. \r\n
    2771. James M Long
    2772. \r\n
    2773. David Keck
    2774. \r\n
    2775. Benjamin Richter
    2776. \r\n
    2777. Erik AM Eriksson
    2778. \r\n
    2779. Sam Corner

    2780. \r\n
    2781. André Bernard MENNICKEN
    2782. \r\n
    2783. James Patten
    2784. \r\n
    2785. charles mcconnell
    2786. \r\n
    2787. Brett Cannon
    2788. \r\n
    2789. Igor Kozyrenko
    2790. \r\n
    2791. Jonathan Mark
    2792. \r\n
    2793. zhukov oleksandr
    2794. \r\n
    2795. Sustainist Media
    2796. \r\n
    2797. Patrick Arnecke
    2798. \r\n
    2799. Karen McFarland

    2800. \r\n
    2801. Ian Dotson
    2802. \r\n
    2803. Kevin Sherwood
    2804. \r\n
    2805. Kookheon Kwon
    2806. \r\n
    2807. Michael Yu
    2808. \r\n
    2809. Alessio Marinelli
    2810. \r\n
    2811. Shawn Rider
    2812. \r\n
    2813. Eduardo Carvalho
    2814. \r\n
    2815. Sverre Johan Tøvik
    2816. \r\n
    2817. Hae Choi
    2818. \r\n
    2819. Daniel Pyrathon

    2820. \r\n
    2821. Craig Anderson
    2822. \r\n
    2823. Brennan Ashton
    2824. \r\n
    2825. LAEHYOUNG KIM
    2826. \r\n
    2827. Davide Brunato
    2828. \r\n
    2829. David Pearah
    2830. \r\n
    2831. CHINSEOK LEE
    2832. \r\n
    2833. Cynthia Calongne
    2834. \r\n
    2835. Norman Denayer
    2836. \r\n
    2837. Laurence Billingham
    2838. \r\n
    2839. Michael Hazoglou

    2840. \r\n
    2841. Anja Tischler
    2842. \r\n
    2843. MATSUEDA TOMOYA
    2844. \r\n
    2845. Ching Yong Goh
    2846. \r\n
    2847. Maria Trinick
    2848. \r\n
    2849. Israel Brewster
    2850. \r\n
    2851. Pavlo Shchelokovskyy
    2852. \r\n
    2853. Gana J Pango Nungui
    2854. \r\n
    2855. Evan Porter
    2856. \r\n
    2857. Peria Nallathambi
    2858. \r\n
    2859. Manuel Kaufmann

    2860. \r\n
    2861. lucio messina
    2862. \r\n
    2863. Spigot Labs LLC
    2864. \r\n
    2865. Mark Shackelford
    2866. \r\n
    2867. Ardian Haxha
    2868. \r\n
    2869. Konekt
    2870. \r\n
    2871. Todd Moyer
    2872. \r\n
    2873. Thomas Loiret
    2874. \r\n
    2875. Paolo Galletto
    2876. \r\n
    2877. Joachim Jablon
    2878. \r\n
    2879. EMELYANOV KIRILL

    2880. \r\n
    2881. indy group
    2882. \r\n
    2883. Amitabh Divyaraj
    2884. \r\n
    2885. Pedro Paulo Miranda
    2886. \r\n
    2887. Gabriel Gironda
    2888. \r\n
    2889. Arai Masataka
    2890. \r\n
    2891. Stefan Sakalos
    2892. \r\n
    2893. Robert Kirberich
    2894. \r\n
    2895. Narong Chansoi
    2896. \r\n
    2897. Christopher Glass
    2898. \r\n
    2899. Roland Luethy

    2900. \r\n
    2901. Tyler Kvochick
    2902. \r\n
    2903. Michael Stanley
    2904. \r\n
    2905. Juta Pichitlamken
    2906. \r\n
    2907. Jittat Fakcharoenphol
    2908. \r\n
    2909. Henry S Telfer
    2910. \r\n
    2911. Rodrigo Dias Arruda Senra
    2912. \r\n
    2913. Kurt Wiersma
    2914. \r\n
    2915. ã‚‚ã‚ã­ã£ã¨
    2916. \r\n
    2917. Gregory Dover
    2918. \r\n
    2919. David Holly

    2920. \r\n
    2921. Christopher Short
    2922. \r\n
    2923. Carlo Cosenza
    2924. \r\n
    2925. Keith Rainey
    2926. \r\n
    2927. Brice Parent
    2928. \r\n
    2929. Matthias Braun
    2930. \r\n
    2931. Marcus Holmgren
    2932. \r\n
    2933. MR K DWYER
    2934. \r\n
    2935. Daniel Contreras
    2936. \r\n
    2937. Jon Ribbens
    2938. \r\n
    2939. Chris Waddington

    2940. \r\n
    2941. Franz Woellert
    2942. \r\n
    2943. Additive Theory
    2944. \r\n
    2945. Yuwei Ba
    2946. \r\n
    2947. David Stinson
    2948. \r\n
    2949. Zachary Rubin
    2950. \r\n
    2951. Ronald Williams
    2952. \r\n
    2953. Daniel Gunter
    2954. \r\n
    2955. William Glennon
    2956. \r\n
    2957. Oleg Nykolyn
    2958. \r\n
    2959. Raissa dos Santos Ferreira

    2960. \r\n
    2961. Pawel Kozela
    2962. \r\n
    2963. Biswas Parajuli
    2964. \r\n
    2965. Haley Bear
    2966. \r\n
    2967. Melvin Fisher
    2968. \r\n
    2969. YaM Mesicka
    2970. \r\n
    2971. Silvio Capobianco
    2972. \r\n
    2973. Lee Godfrey
    2974. \r\n
    2975. Jiaxing Wang
    2976. \r\n
    2977. Ian Danforth
    2978. \r\n
    2979. Marina Nunamaker

    2980. \r\n
    2981. Jaime Rodríguez-Guerra Pedregal
    2982. \r\n
    2983. Alan Moore
    2984. \r\n
    2985. john tillett
    2986. \r\n
    2987. Sean O'Connor
    2988. \r\n
    2989. Kerri Reno
    2990. \r\n
    2991. JPTJ Berends
    2992. \r\n
    2993. Calvin Parker
    2994. \r\n
    2995. Alan Corson
    2996. \r\n
    2997. George Kussumoto
    2998. \r\n
    2999. 胡 盼å¿

    3000. \r\n
    3001. Helmut Eberharter
    3002. \r\n
    3003. Hongjun Fu
    3004. \r\n
    3005. Colin Carroll
    3006. \r\n
    3007. Todd Dembrey
    3008. \r\n
    3009. Jean-Sebastien Theriault
    3010. \r\n
    3011. Soboleva Larisa
    3012. \r\n
    3013. NICHOLAS SU
    3014. \r\n
    3015. William Hopson
    3016. \r\n
    3017. Bernard Jameson
    3018. \r\n
    3019. Urvish Vanzara

    3020. \r\n
    3021. Sam Bull
    3022. \r\n
    3023. Philip Massey
    3024. \r\n
    3025. Jason Friedman / Julia White
    3026. \r\n
    3027. Eric Camplin
    3028. \r\n
    3029. LISA CARLYLE
    3030. \r\n
    3031. Britone Mwasaru
    3032. \r\n
    3033. Gaurav Sehrawat
    3034. \r\n
    3035. carl petty
    3036. \r\n
    3037. T sidhu
    3038. \r\n
    3039. Shalini Kumar

    3040. \r\n
    3041. Latise Smalls
    3042. \r\n
    3043. Amber Schalk
    3044. \r\n
    3045. www.bookandrew4.me
    3046. \r\n
    3047. Will Ware
    3048. \r\n
    3049. Shorena Chikhladze
    3050. \r\n
    3051. Gregory Lett
    3052. \r\n
    3053. Mark Haase
    3054. \r\n
    3055. Maximov Mikhail
    3056. \r\n
    3057. Spencer Young
    3058. \r\n
    3059. Christine Spang

    3060. \r\n
    3061. Andre Lessa
    3062. \r\n
    3063. Alexander Elvers
    3064. \r\n
    3065. ANDREW D Oram
    3066. \r\n
    3067. Erin Atkinson
    3068. \r\n
    3069. Soeren Loevborg
    3070. \r\n
    3071. Mark Peschel
    3072. \r\n
    3073. Marci Murphy
    3074. \r\n
    3075. Gregory Lee
    3076. \r\n
    3077. Drew Aadland
    3078. \r\n
    3079. Google, Inc.

    3080. \r\n
    3081. Jonathan Findley
    3082. \r\n
    3083. Jeff Kramer
    3084. \r\n
    3085. Francis Lacroix
    3086. \r\n
    3087. Take it Simple srl
    3088. \r\n
    3089. Michael Johnson
    3090. \r\n
    3091. Barry Byford
    3092. \r\n
    3093. Erol Suleyman
    3094. \r\n
    3095. Bruno Caimar
    3096. \r\n
    3097. Nicolas Motte
    3098. \r\n
    3099. Open Source Kids

    3100. \r\n
    3101. Dao Duc Cuong
    3102. \r\n
    3103. Karl Jan Clinckspoor
    3104. \r\n
    3105. Jack Wilkinson
    3106. \r\n
    3107. KwonHan Bae
    3108. \r\n
    3109. Darasimi Ajewole
    3110. \r\n
    3111. Scott Godin
    3112. \r\n
    3113. Artem Tyumentsev
    3114. \r\n
    3115. William Silversmith
    3116. \r\n
    3117. James Littlefield
    3118. \r\n
    3119. Miquel Soldevila Gasquet

    3120. \r\n
    3121. Felipe del Río Rebolledo
    3122. \r\n
    3123. Andre Santana
    3124. \r\n
    3125. Michael Perez
    3126. \r\n
    3127. Daniel Knodel
    3128. \r\n
    3129. Andre Bienemann
    3130. \r\n
    3131. BLUE1647 NFP
    3132. \r\n
    3133. BravuraChicago
    3134. \r\n
    3135. Alex Lord
    3136. \r\n
    3137. Andriy Andriyuk
    3138. \r\n
    3139. Flash Apps

    3140. \r\n
    3141. Marcus Sherman
    3142. \r\n
    3143. YOGEV REGEV
    3144. \r\n
    3145. Joshua Steele
    3146. \r\n
    3147. Leslie Hawthorn
    3148. \r\n
    3149. Andrés Cuadrado Campaña
    3150. \r\n
    3151. Richard Hayes
    3152. \r\n
    3153. Mark Casanova
    3154. \r\n
    3155. Johan Losvik
    3156. \r\n
    3157. Konstantin Taletskiy
    3158. \r\n
    3159. Nikolaos Mavrakis

    3160. \r\n
    3161. Derek Payton
    3162. \r\n
    3163. Kojo Idrissa
    3164. \r\n
    3165. Ohshima Yusuke
    3166. \r\n
    3167. Luiz Fernando Oliveira
    3168. \r\n
    3169. David Sanchez
    3170. \r\n
    3171. Anilyka Barry
    3172. \r\n
    3173. James Robert Byrd
    3174. \r\n
    3175. DMITRIY ZHILTSOV
    3176. \r\n
    3177. GoodDoneGreat.com
    3178. \r\n
    3179. Enstaved Pty Ltd

    3180. \r\n
    3181. Roess Ramona
    3182. \r\n
    3183. Faisal Albarazi
    3184. \r\n
    3185. Bastien Gerard
    3186. \r\n
    3187. Manish Sinha
    3188. \r\n
    3189. Meagan Riley
    3190. \r\n
    3191. Julian Colomina
    3192. \r\n
    3193. Arnaud Devie
    3194. \r\n
    3195. Edwin van Amersfoort
    3196. \r\n
    3197. Christian KELLENBERGER
    3198. \r\n
    3199. Victor Manuel NAVARRO AYALA

    3200. \r\n
    3201. Todd Rovito
    3202. \r\n
    3203. Zandra Kubota
    3204. \r\n
    3205. Manivannan E
    3206. \r\n
    3207. Seth Naugler
    3208. \r\n
    3209. Gabriel Augendre
    3210. \r\n
    3211. Mark Vanstone
    3212. \r\n
    3213. Lionel Aster Mena García
    3214. \r\n
    3215. Eliahy Rosenblum
    3216. \r\n
    3217. Dawn Hewitson
    3218. \r\n
    3219. Romain Muller

    3220. \r\n
    3221. boris tassou
    3222. \r\n
    3223. Michael Sverdlik
    3224. \r\n
    3225. Sean Wall
    3226. \r\n
    3227. Deepak Subhramanian
    3228. \r\n
    3229. Jan Lipovský
    3230. \r\n
    3231. Alexander Ejbekov
    3232. \r\n
    3233. 陈 昊
    3234. \r\n
    3235. Stefan Steinbauer
    3236. \r\n
    3237. Prasannajeet Pani
    3238. \r\n
    3239. KOBAYASHI SHIGEAKI

    3240. \r\n
    3241. steven zhao
    3242. \r\n
    3243. æ¨ çŽš
    3244. \r\n
    3245. Shahar Dolev
    3246. \r\n
    3247. Rafael dos Santos de Oliveira
    3248. \r\n
    3249. Vishal Tak
    3250. \r\n
    3251. Sai Chaitanya Akella
    3252. \r\n
    3253. Ryo Kishimoto
    3254. \r\n
    3255. Matthew McGraw
    3256. \r\n
    3257. Julian Sequeira
    3258. \r\n
    3259. Griffin Derryberry

    3260. \r\n
    3261. Bob Belderbos
    3262. \r\n
    3263. Guo Baiwei
    3264. \r\n
    3265. Kenneth Durril
    3266. \r\n
    3267. anthony fagan
    3268. \r\n
    3269. MathKnowledge
    3270. \r\n
    3271. Sarah Hodges
    3272. \r\n
    3273. Janos Szeman
    3274. \r\n
    3275. Markus Mueller
    3276. \r\n
    3277. John Mattera
    3278. \r\n
    3279. YU CHUEN HUANG

    3280. \r\n
    3281. Claudia Greenwell
    3282. \r\n
    3283. Predrag Pucar
    3284. \r\n
    3285. Tony Ly
    3286. \r\n
    3287. Mathieu Dupuy
    3288. \r\n
    3289. Franco Minucci
    3290. \r\n
    3291. Srikanth A
    3292. \r\n
    3293. Augustin Garcia
    3294. \r\n
    3295. Open Stack Foundation
    3296. \r\n
    3297. Christian Laforest
    3298. \r\n
    3299. Oliver Behm

    3300. \r\n
    3301. Stefan Turalski
    3302. \r\n
    3303. Tertius Rossouw
    3304. \r\n
    3305. Girish Devappa
    3306. \r\n
    3307. Benjamin Sergeant
    3308. \r\n
    3309. Derrick Jackson
    3310. \r\n
    3311. Alexander Graf
    3312. \r\n
    3313. Iraquitan Cordeiro Filho
    3314. \r\n
    3315. Sergio Monte Fernández
    3316. \r\n
    3317. Major William Hayden
    3318. \r\n
    3319. REGINALDO OLIVEIRA DE JESUS

    3320. \r\n
    3321. Claes Bergman
    3322. \r\n
    3323. U.S. Bank Foundation
    3324. \r\n
    3325. Prayash Mohapatra
    3326. \r\n
    3327. Tracy Helms
    3328. \r\n
    3329. Volodymyr Kirichinets
    3330. \r\n
    3331. Tyler Baldwin
    3332. \r\n
    3333. Robert Grant
    3334. \r\n
    3335. Fran Longueira
    3336. \r\n
    3337. cristina catinella
    3338. \r\n
    3339. Carlos Mendia González

    3340. \r\n
    3341. Brandon Macer
    3342. \r\n
    3343. James Lipsey
    3344. \r\n
    3345. Wim Vis
    3346. \r\n
    3347. Joshua Campbell
    3348. \r\n
    3349. Walter Tross
    3350. \r\n
    3351. Oluwadamilare Obayanju
    3352. \r\n
    3353. Aiden Sherwood
    3354. \r\n
    3355. Hobson Lane
    3356. \r\n
    3357. Luca Carlotto
    3358. \r\n
    3359. Jacqueline Nelson

    3360. \r\n
    3361. Carl Byer
    3362. \r\n
    3363. Соколов Сергей
    3364. \r\n
    3365. Thomas Capuano
    3366. \r\n
    3367. Joshua Kammeraad
    3368. \r\n
    3369. Ryan Wade
    3370. \r\n
    3371. Mamad Blais
    3372. \r\n
    3373. 晋 正东
    3374. \r\n
    3375. Dylan Zingler
    3376. \r\n
    3377. Dusan Kolic
    3378. \r\n
    3379. YourCause LLC

    3380. \r\n
    3381. Wells Fargo Community Support Campaign
    3382. \r\n
    3383. Stacey Sern
    3384. \r\n
    3385. LUIGI FRANCESCHETTI
    3386. \r\n
    3387. é½ æ¬£
    3388. \r\n
    3389. Miranda buehler
    3390. \r\n
    3391. Mark Martin
    3392. \r\n
    3393. Andrew Wilkey
    3394. \r\n
    3395. Kelby Stine
    3396. \r\n
    3397. Greg Blonder
    3398. \r\n
    3399. Thiesmann Lim

    3400. \r\n
    3401. Matthias Kirst
    3402. \r\n
    3403. Philippe Docourt
    3404. \r\n
    3405. Frederic FOIRY
    3406. \r\n
    3407. donald douglas
    3408. \r\n
    3409. Brad Montgomery
    3410. \r\n
    3411. Alain Lubin
    3412. \r\n
    3413. david baird
    3414. \r\n
    3415. Maelle Vance
    3416. \r\n
    3417. Supayut Raksuk
    3418. \r\n
    3419. Peter McCormick

    3420. \r\n
    3421. Derek Morrison
    3422. \r\n
    3423. Gary Kahn
    3424. \r\n
    3425. Sai Nudurupati
    3426. \r\n
    3427. Bryan Siepert
    3428. \r\n
    3429. Ramakrishna Reddy Pappula
    3430. \r\n
    3431. SANDRO MOCCI
    3432. \r\n
    3433. Wojciech Semik
    3434. \r\n
    3435. Margaret Aronsohn
    3436. \r\n
    3437. Juan Comesaña Fernández
    3438. \r\n
    3439. Jonathan Eckel

    3440. \r\n
    3441. DHAVAL PATEL
    3442. \r\n
    3443. Gregory Fuller
    3444. \r\n
    3445. Phyllis Dobbs
    3446. \r\n
    3447. David Wilson
    3448. \r\n
    3449. chiu ping kei
    3450. \r\n
    3451. Ander Zarketa Astigarraga
    3452. \r\n
    3453. Thomas Eichhorn
    3454. \r\n
    3455. David Chen
    3456. \r\n
    3457. Paul Cuda
    3458. \r\n
    3459. Keith Brooks

    3460. \r\n
    3461. Don Fitzpatrick
    3462. \r\n
    3463. edx Finance
    3464. \r\n
    3465. Otto Felix Winter
    3466. \r\n
    3467. Nataliia Serebryakova
    3468. \r\n
    3469. Christopher Lubinski
    3470. \r\n
    3471. Ewa Jodlowska
    3472. \r\n
    3473. Kerry Creech
    3474. \r\n
    3475. Briceida Mariscal
    3476. \r\n
    3477. nathaniel mccourtney
    3478. \r\n
    3479. Shun Chen

    3480. \r\n
    3481. Scott Gordon
    3482. \r\n
    3483. Sanchit Sharma
    3484. \r\n
    3485. Neutron Drive
    3486. \r\n
    3487. David Morse
    3488. \r\n
    3489. RYAN COOPER
    3490. \r\n
    3491. Vasilios Syrakis
    3492. \r\n
    3493. Adam Rosier
    3494. \r\n
    3495. Jennifer Miller
    3496. \r\n
    3497. Sam Thirugnanasampanthan
    3498. \r\n
    3499. Pablo Rodriguez

    3500. \r\n
    3501. Leland Johnson
    3502. \r\n
    3503. DIMITRIOS KADOGLOU
    3504. \r\n
    3505. Waleed Alhaider
    3506. \r\n
    3507. Jessica Ross
    3508. \r\n
    3509. Catherine Sawatzky
    3510. \r\n
    3511. Selamu Masebo
    3512. \r\n
    3513. Rory Hartong-Redden
    3514. \r\n
    3515. John Chandler
    3516. \r\n
    3517. David Niemi
    3518. \r\n
    3519. De Canniere Jean

    3520. \r\n
    3521. MARK HELLYER
    3522. \r\n
    3523. Barbara Miller
    3524. \r\n
    3525. John Stephens
    3526. \r\n
    3527. Daniel Riggs
    3528. \r\n
    3529. Maria Vergara
    3530. \r\n
    3531. Kathryn Cogert
    3532. \r\n
    3533. Paolo Anastagi
    3534. \r\n
    3535. Sebastian Porst
    3536. \r\n
    3537. Venkata Ramana
    3538. \r\n
    3539. Akhil Ravipati

    3540. \r\n
    3541. Brian Williams
    3542. \r\n
    3543. Paul Friedman
    3544. \r\n
    3545. Sabrina Spencer
    3546. \r\n
    3547. Dmitry Kisler
    3548. \r\n
    3549. Seamus Johnston
    3550. \r\n
    3551. Sumayya Essack
    3552. \r\n
    3553. Glenn Travis
    3554. \r\n
    3555. Andre Miras
    3556. \r\n
    3557. Adrián Chaves Fernández
    3558. \r\n
    3559. SurveyNgBayan

    3560. \r\n
    3561. John Q. Glasgow
    3562. \r\n
    3563. Alexandra Rosenbaum
    3564. \r\n
    3565. Aaron Wood
    3566. \r\n
    3567. Maria McLinn
    3568. \r\n
    3569. Douglas Lamar
    3570. \r\n
    3571. David Mauricio Delgado Ruiz
    3572. \r\n
    3573. Caleb Gosnell
    3574. \r\n
    3575. Andrew Woodward
    3576. \r\n
    3577. Bhaskar teja Yerneni
    3578. \r\n
    3579. Timothy White

    3580. \r\n
    3581. Aleksandar Veselinovic
    3582. \r\n
    3583. Плугин Ðндрей
    3584. \r\n
    3585. philippe silve
    3586. \r\n
    3587. w scott stornetta
    3588. \r\n
    3589. Ahsan Haq
    3590. \r\n
    3591. Mark Feinberg
    3592. \r\n
    3593. eBay
    3594. \r\n
    3595. Sven Rahmann
    3596. \r\n
    3597. Norman Elliott
    3598. \r\n
    3599. Tom Schultz

    3600. \r\n
    3601. Rodrigo Pereira Garcia
    3602. \r\n
    3603. Katrina Durance
    3604. \r\n
    3605. Kirk Strauser
    3606. \r\n
    3607. David Wood
    3608. \r\n
    3609. Ari Cristiano Raimundo
    3610. \r\n
    3611. Selena Flannery
    3612. \r\n
    3613. Russell Pope
    3614. \r\n
    3615. marlon keating
    3616. \r\n
    3617. Fatima Coronado
    3618. \r\n
    3619. David Cramer

    3620. \r\n
    3621. Thomas Alton
    3622. \r\n
    3623. Eloy Romero Alcalde
    3624. \r\n
    3625. Moshe Zadka
    3626. \r\n
    3627. Eryn Wells
    3628. \r\n
    3629. Dražen Lazarevicć
    3630. \r\n
    3631. Eric Matthes
    3632. \r\n
    3633. David Kurkov
    3634. \r\n
    3635. Alex Johnson
    3636. \r\n
    3637. Scott Bryce
    3638. \r\n
    3639. Quentin CAUDRON

    3640. \r\n
    3641. John DeRosa
    3642. \r\n
    3643. Edward Gormley
    3644. \r\n
    3645. Rizky Ariestiyansyah
    3646. \r\n
    3647. Michael Jolliffe
    3648. \r\n
    3649. Brett Vitaz
    3650. \r\n
    3651. Barbara McGovern
    3652. \r\n
    3653. Stephen Broumley
    3654. \r\n
    3655. Peggy Fisher
    3656. \r\n
    3657. Milen Genov
    3658. \r\n
    3659. Drew Walker

    3660. \r\n
    3661. Flavio Diomede
    3662. \r\n
    3663. Vitor Freitas e Souza
    3664. \r\n
    3665. Joseph McGrew
    3666. \r\n
    3667. sai krishna aravalli
    3668. \r\n
    3669. Jaime Garcia
    3670. \r\n
    3671. Галаганов Сергей
    3672. \r\n
    3673. Sumeet Kishnani
    3674. \r\n
    3675. Perry Randall
    3676. \r\n
    3677. David Thomson
    3678. \r\n
    3679. Sergi Puso Gallart

    3680. \r\n
    3681. SHALABH BHATNAGAR
    3682. \r\n
    3683. John Harris
    3684. \r\n
    3685. Conrad Thiele
    3686. \r\n
    3687. Tyrone Scott
    3688. \r\n
    3689. Emmitt Tibbitts
    3690. \r\n
    3691. PAMELA MCA'NULTY
    3692. \r\n
    3693. Jakob Adams
    3694. \r\n
    3695. Andreas Braun
    3696. \r\n
    3697. Davis Nunes de Mesquita
    3698. \r\n
    3699. Carles Pina Estany

    3700. \r\n
    3701. gorgonzo.la
    3702. \r\n
    3703. Kushal Das
    3704. \r\n
    3705. Kittipong Piyawanno
    3706. \r\n
    3707. Ewen McNeill
    3708. \r\n
    3709. William Clemens
    3710. \r\n
    3711. Mark Mikofski
    3712. \r\n
    3713. Julie Pichon
    3714. \r\n
    3715. Florian Bruhin
    3716. \r\n
    3717. Emily Moss
    3718. \r\n
    3719. Mudranik Technologies Private Limited

    3720. \r\n
    3721. S D Kennedy
    3722. \r\n
    3723. Kate Brigham
    3724. \r\n
    3725. Richard Jones
    3726. \r\n
    3727. David Knoll
    3728. \r\n
    3729. Marcus Williams
    3730. \r\n
    3731. Ryan T Bard
    3732. \r\n
    3733. Jessica Freasier
    3734. \r\n
    3735. Robert Muratore
    3736. \r\n
    3737. James Abel
    3738. \r\n
    3739. Rachel Sima

    3740. \r\n
    3741. Ondrej Zuffa
    3742. \r\n
    3743. Lee Supe
    3744. \r\n
    3745. Thomas Nuegyn
    3746. \r\n
    3747. 郭 喜涌
    3748. \r\n
    3749. F Douglas Baker
    3750. \r\n
    3751. José Gómez Vázquez
    3752. \r\n
    3753. Jaqueline soriano
    3754. \r\n
    3755. Juan David Gonzalez Cobas
    3756. \r\n
    3757. Ravishankar N R
    3758. \r\n
    3759. Annalee Flower Horne

    3760. \r\n
    3761. Питько Любовь
    3762. \r\n
    3763. Philipp Horn
    3764. \r\n
    3765. Siddarth Ganguri
    3766. \r\n
    3767. Rutger Stapelkamp
    3768. \r\n
    3769. Oscar Becerril Domínguez
    3770. \r\n
    3771. Khanh Nguyen
    3772. \r\n
    3773. Phil Simonson
    3774. \r\n
    3775. Efim Krakhalev
    3776. \r\n
    3777. Steven C Howell
    3778. \r\n
    3779. Kevan Swanberg

    3780. \r\n
    3781. Krishnan Swamy
    3782. \r\n
    3783. Gamal Crichton
    3784. \r\n
    3785. Soapify.ch
    3786. \r\n
    3787. Liza Daly
    3788. \r\n
    3789. Nick Geller
    3790. \r\n
    3791. James Bruzek
    3792. \r\n
    3793. Kristin Bassett
    3794. \r\n
    3795. Prema Roman
    3796. \r\n
    3797. Pramote Teerasetmanakul
    3798. \r\n
    3799. Amit Chapatwala

    3800. \r\n
    3801. Eisa Mohsen
    3802. \r\n
    3803. Mathieu Poussin
    3804. \r\n
    3805. Diego Amicabile
    3806. \r\n
    3807. Allison Fero
    3808. \r\n
    3809. Katrina Demulling
    3810. \r\n
    3811. Robert Graham
    3812. \r\n
    3813. Ying Li
    3814. \r\n
    3815. Erica Asai
    3816. \r\n
    3817. Peter Taveira
    3818. \r\n
    3819. Marissa Utterberg

    3820. \r\n
    3821. 林 準一
    3822. \r\n
    3823. VANESSA VAN GILDER
    3824. \r\n
    3825. Stephen Gross
    3826. \r\n
    3827. Stephanie Parrott
    3828. \r\n
    3829. Oliver Bestwalter
    3830. \r\n
    3831. Mark Lindberg
    3832. \r\n
    3833. Mario Corchero
    3834. \r\n
    3835. MARIA ISABEL DELGADO BABIANO
    3836. \r\n
    3837. Laura Drummer
    3838. \r\n
    3839. João Franco

    3840. \r\n
    3841. HANHO YOON
    3842. \r\n
    3843. Emmanuelle COLIN
    3844. \r\n
    3845. Dennis Gomer
    3846. \r\n
    3847. Daniel Thomas
    3848. \r\n
    3849. Cirrustack, ltd.
    3850. \r\n
    3851. Chrles Gilbert
    3852. \r\n
    3853. Christopher Kiraly
    3854. \r\n
    3855. Axai Soluciones Avanzadas, S.C.
    3856. \r\n
    3857. Alex Fogleman
    3858. \r\n
    3859. Craig Boman

    3860. \r\n
    3861. David Rogers
    3862. \r\n
    3863. James Mategko
    3864. \r\n
    3865. Hans Olav Melberg
    3866. \r\n
    3867. LUKMAN EDWINDRA
    3868. \r\n
    3869. ria baldevia
    3870. \r\n
    3871. gurudev devanla
    3872. \r\n
    3873. Thomas Zakrajsek
    3874. \r\n
    3875. Susmitha Kothapalli
    3876. \r\n
    3877. Sean Boisen
    3878. \r\n
    3879. Samantha Yeargin

    3880. \r\n
    3881. Paul Craven
    3882. \r\n
    3883. Melanie Crutchfield
    3884. \r\n
    3885. Manasa Patibandla
    3886. \r\n
    3887. Laura Beaufort
    3888. \r\n
    3889. Emma Willemsma
    3890. \r\n
    3891. Elizabeth Durflinger
    3892. \r\n
    3893. Dotte Dinnet, Inc.
    3894. \r\n
    3895. Chelsea Stapleton Cordasco
    3896. \r\n
    3897. Andrew Selzer
    3898. \r\n
    3899. Qumisha Goss

    3900. \r\n
    3901. Alan Williams
    3902. \r\n
    3903. Drazen Lucanin
    3904. \r\n
    3905. XIAO XIAO
    3906. \r\n
    3907. Wesley Smiley
    3908. \r\n
    3909. Liaw Wey-Han
    3910. \r\n
    3911. Daniel Allan
    3912. \r\n
    3913. Abhishek Keny
    3914. \r\n
    3915. Surya Jayanthi
    3916. \r\n
    3917. Studenten Net Twente
    3918. \r\n
    3919. ìœ¤ì„ ì´

    3920. \r\n
    3921. mingyu jo
    3922. \r\n
    3923. SEUNG HO KIM
    3924. \r\n
    3925. PARK JUN YONG PARK
    3926. \r\n
    3927. Junghyun Park
    3928. \r\n
    3929. Richard MacCutchan
    3930. \r\n
    3931. David Albone
    3932. \r\n
    3933. Patrick Burns
    3934. \r\n
    3935. Brian K Okken
    3936. \r\n
    3937. srikrishna ch
    3938. \r\n
    3939. Sean Oldham

    3940. \r\n
    3941. Daniel Ellis
    3942. \r\n
    3943. Bas Meijer
    3944. \r\n
    3945. Antonio Beltran
    3946. \r\n
    3947. James Traub
    3948. \r\n
    3949. Mark Fackler
    3950. \r\n
    3951. ashutosh bhatt
    3952. \r\n
    3953. UAN FRANCISCO Correoso
    3954. \r\n
    3955. Ravi Taneja
    3956. \r\n
    3957. John Harrison
    3958. \r\n
    3959. Ignacio Vergara Kausel

    3960. \r\n
    3961. Chris Rands
    3962. \r\n
    3963. Blackbaud Cares Center
    3964. \r\n
    3965. Roman Mogilatov
    3966. \r\n
    3967. Randall Rodakowski
    3968. \r\n
    3969. Mouse Vs Python
    3970. \r\n
    3971. Israel Fruchter
    3972. \r\n
    3973. Graham Wheeler
    3974. \r\n
    3975. Gaspar Modelo Howard
    3976. \r\n
    3977. Chris Lasher
    3978. \r\n
    3979. evren kutar

    3980. \r\n
    3981. Evan Hurley
    3982. \r\n
    3983. Alexander Lutchko
    3984. \r\n
    3985. Finan
    3986. \r\n
    3987. kate mosier
    3988. \r\n
    3989. Ville Säävuori
    3990. \r\n
    3991. Tal Einat
    3992. \r\n
    3993. John Keyes
    3994. \r\n
    3995. Bernd Schlapsi
    3996. \r\n
    3997. Mitch Jablonski
    3998. \r\n
    3999. Lauri Lepistö

    4000. \r\n
    4001. Sérgio Agostinho
    4002. \r\n
    4003. Pierre Augier
    4004. \r\n
    4005. Markus Banfi
    4006. \r\n
    4007. Csaba Magyar
    4008. \r\n
    4009. Bogdan Cordier
    4010. \r\n
    4011. Ankesh Kumar
    4012. \r\n
    4013. Alexandre Barrozo do Amaral Villares
    4014. \r\n
    4015. ToolBeats
    4016. \r\n
    4017. å¶ æ€ä¿Š
    4018. \r\n
    4019. Raj Shekhar

    4020. \r\n
    4021. Jörg Tremmel
    4022. \r\n
    4023. Huang Zhugang
    4024. \r\n
    4025. Bernardo Roschke
    4026. \r\n
    4027. Florent Viard
    4028. \r\n
    4029. Philip Roche
    4030. \r\n
    4031. Daniel Castillo Casanova
    4032. \r\n
    4033. æ¢ ç€š
    4034. \r\n
    4035. yohanes gultom
    4036. \r\n
    4037. lonetwin.net
    4038. \r\n
    4039. Vishnu Gopal

    4040. \r\n
    4041. Uriel Fernando Sandoval Pérez
    4042. \r\n
    4043. Sumudu Tennakoon
    4044. \r\n
    4045. Pro Wrestling Superstar
    4046. \r\n
    4047. Petr Moses
    4048. \r\n
    4049. Oliver Stapel
    4050. \r\n
    4051. Nuttaphon Nuanyaisrithong
    4052. \r\n
    4053. Nicholas Sweeting
    4054. \r\n
    4055. Matthew Lemon
    4056. \r\n
    4057. Manuel Solorzano
    4058. \r\n
    4059. Maik Figura

    4060. \r\n
    4061. M ET MME FREDERIC ROLAND
    4062. \r\n
    4063. Jose Pedro Valdes Herrera
    4064. \r\n
    4065. Jordan Dawe
    4066. \r\n
    4067. Daniel Verdugo Moreno
    4068. \r\n
    4069. CycleVault
    4070. \r\n
    4071. Craig Richardson
    4072. \r\n
    4073. Christine Waigl
    4074. \r\n
    4075. Christan Grant
    4076. \r\n
    4077. Atthaphong Limsupanark
    4078. \r\n
    4079. Attakorn Putwattana

    4080. \r\n
    4081. Ana Balica
    4082. \r\n
    4083. Aart Goossens
    4084. \r\n
    4085. Eric Palakovich Carr
    4086. \r\n
    4087. Daniel Brooks
    4088. \r\n
    4089. ปà¸à¸¡à¸žà¸‡à¸¨à¹Œ à¸à¸§à¸²à¸‡à¸—อง
    4090. \r\n
    4091. nadia karlinsky
    4092. \r\n
    4093. Wiennat Mongkulmann
    4094. \r\n
    4095. Vincent Jesús Bahena Serrano
    4096. \r\n
    4097. Surote Wongpaiboon
    4098. \r\n
    4099. Smital Desai

    4100. \r\n
    4101. Sivathanu Kumaraswamy
    4102. \r\n
    4103. Preechai Mekbungwan
    4104. \r\n
    4105. Pisacha Srinuan
    4106. \r\n
    4107. Nattawat Palakawong
    4108. \r\n
    4109. Lisa Ballard
    4110. \r\n
    4111. Gonzalo Andres Pena Castellanos
    4112. \r\n
    4113. David Thompson
    4114. \r\n
    4115. Daniel Clementi
    4116. \r\n
    4117. Yves Roy
    4118. \r\n
    4119. Oleksandr Allakhverdiyev

    4120. \r\n
    4121. Gilbert Forsyth
    4122. \r\n
    4123. Tomas Mrozek
    4124. \r\n
    4125. Leo Kreymborg
    4126. \r\n
    4127. Sasidhar Donaparthi
    4128. \r\n
    4129. Patrick Morris
    4130. \r\n
    4131. James Seden Smith
    4132. \r\n
    4133. Alan Hobesh
    4134. \r\n
    4135. Thejaswi Puthraya
    4136. \r\n
    4137. Gökmen Görgen
    4138. \r\n
    4139. Ronald Ridley

    4140. \r\n
    4141. Clemens Lange
    4142. \r\n
    4143. Joseph Montgomery
    4144. \r\n
    4145. Marc-Anthony Taylor
    4146. \r\n
    4147. Luke Clarke
    4148. \r\n
    4149. ПовалÑев ВаÑилий
    4150. \r\n
    4151. Ray McCarthy
    4152. \r\n
    4153. Marcus Sharp II
    4154. \r\n
    4155. Marcel Loher
    4156. \r\n
    4157. Gary Davis
    4158. \r\n
    4159. Dungjit Shiowattana

    4160. \r\n
    4161. Alain Ledon
    4162. \r\n
    4163. Yungchieh Chang
    4164. \r\n
    4165. ulf sjodin
    4166. \r\n
    4167. Rikard Westman
    4168. \r\n
    4169. Mancini Giampaolo
    4170. \r\n
    4171. Kay Schink
    4172. \r\n
    4173. Jordan Eremieff
    4174. \r\n
    4175. Jan Wagner
    4176. \r\n
    4177. Hamilton Goonan
    4178. \r\n
    4179. Gabriel Foo

    4180. \r\n
    4181. Denis Sergeev
    4182. \r\n
    4183. Anders Ballegaard
    4184. \r\n
    4185. Wouter De Coster
    4186. \r\n
    4187. Will McGugan
    4188. \r\n
    4189. Tony Friis
    4190. \r\n
    4191. Thomas Viner
    4192. \r\n
    4193. Shihao Xu
    4194. \r\n
    4195. Perica Zivkovic
    4196. \r\n
    4197. Paul Smith
    4198. \r\n
    4199. Motion Group

    4200. \r\n
    4201. Greg Roodt
    4202. \r\n
    4203. Gary Martin
    4204. \r\n
    4205. Carlos Pereira Atencio
    4206. \r\n
    4207. Anil Srikantham
    4208. \r\n
    4209. Andrés Delfino
    4210. \r\n
    4211. Daniel Godfrey
    4212. \r\n
    4213. Tomasz Kalata
    4214. \r\n
    4215. Steve Barnes
    4216. \r\n
    4217. Matthew Hayes
    4218. \r\n
    4219. Matej Tacer

    4220. \r\n
    4221. Joost Molenaar
    4222. \r\n
    4223. Elias Bonauer
    4224. \r\n
    4225. Druzhinin Pavel
    4226. \r\n
    4227. BigDataChromium Tech
    4228. \r\n
    4229. Alex Ward
    4230. \r\n
    4231. Lukas Rupp
    4232. \r\n
    4233. Reinhard Dämon
    4234. \r\n
    4235. nathan MUSTAKI
    4236. \r\n
    4237. Rodolfo Oliveira
    4238. \r\n
    4239. John Griffith

    4240. \r\n
    4241. S Holden
    4242. \r\n
    4243. Serendipity Accelerator
    4244. \r\n
    4245. Doug Fortner
    4246. \r\n
    4247. Daniel Watson
    4248. \r\n
    4249. Allen Seelye
    4250. \r\n
    4251. Daniel Quinn
    4252. \r\n
    4253. Charlie Gunyon
    4254. \r\n
    4255. Alvaro Lopez Garcia
    4256. \r\n
    4257. James Medd
    4258. \r\n
    4259. Claire Dodd

    4260. \r\n
    4261. Carlos Joel Delgado Pizarro
    4262. \r\n
    4263. Samuel Focht
    4264. \r\n
    4265. Ollie Mignot
    4266. \r\n
    4267. Hynek Schlawack
    4268. \r\n
    4269. Ben Kinsella
    4270. \r\n
    4271. Aviad Lori
    4272. \r\n
    4273. DataRobot, Inc.
    4274. \r\n
    4275. Colin Kern
    4276. \r\n
    4277. Paul Hoffman
    4278. \r\n
    4279. Alex Clemmer

    4280. \r\n
    4281. Magnus Brattlöf
    4282. \r\n
    4283. LB
    4284. \r\n
    4285. Vincenzo Demasi
    4286. \r\n
    4287. glenn waterman
    4288. \r\n
    4289. thom neale
    4290. \r\n
    4291. Robin Sjostrom
    4292. \r\n
    4293. Palmeroo Fund
    4294. \r\n
    4295. Steve Bandel
    4296. \r\n
    4297. Erik Doffagne
    4298. \r\n
    4299. Zehua Wei

    4300. \r\n
    4301. George Reilly
    4302. \r\n
    4303. Matthieu Amiguet
    4304. \r\n
    4305. æ¨ å®ˆä»
    4306. \r\n
    4307. william Debenham
    4308. \r\n
    4309. Evan Beese
    4310. \r\n
    4311. Patricia Tressel
    4312. \r\n
    4313. Nick Denny
    4314. \r\n
    4315. Luke Petschauer
    4316. \r\n
    4317. Jasmine Sandhu
    4318. \r\n
    4319. Thomas Pohl

    4320. \r\n
    4321. Daniel Godot
    4322. \r\n
    4323. Renee MacDonald
    4324. \r\n
    4325. NICOLAS LOPEZ CISNEROS
    4326. \r\n
    4327. Glen English
    4328. \r\n
    4329. Jaganadh Gopinadhan
    4330. \r\n
    4331. ActiveState
    4332. \r\n
    4333. Christopher Berg
    4334. \r\n
    4335. Jim Nisbet
    4336. \r\n
    4337. Dylan Herrada
    4338. \r\n
    4339. Marcus Nelson

    4340. \r\n
    4341. Elsa Birch Morgan
    4342. \r\n
    4343. Ettienne Montagner
    4344. \r\n
    4345. Steven Kneiser
    4346. \r\n
    4347. Henry Ferguson
    4348. \r\n
    4349. Martijn Jacobs
    4350. \r\n
    4351. Xunzhen Quan
    4352. \r\n
    4353. Patrik Reiske
    4354. \r\n
    4355. Niklas Sombert
    4356. \r\n
    4357. Juliana Arrighi
    4358. \r\n
    4359. Zhang Zhijian

    4360. \r\n
    4361. Matthias Kühl
    4362. \r\n
    4363. Gijsbert Anthony van der Linden
    4364. \r\n
    4365. å¤ éªŒè¯
    4366. \r\n
    4367. Salomon G Davila Jr
    4368. \r\n
    4369. Addgene, Inc.
    4370. \r\n
    4371. Nikolay Golub
    4372. \r\n
    4373. Hervé Mignot
    4374. \r\n
    4375. Jonas Salcedo
    4376. \r\n
    4377. Andrew Radin
    4378. \r\n
    4379. Jay Shery

    4380. \r\n
    4381. confirm IT solutions GmbH
    4382. \r\n
    4383. Joseph winland
    4384. \r\n
    4385. Mark Wincek
    4386. \r\n
    4387. Morgan Visnesky
    4388. \r\n
    4389. Chris Perkins
    4390. \r\n
    4391. Anomaly Software Pty Ltd
    4392. \r\n
    4393. RAMESH DORAISWAMY
    4394. \r\n
    4395. Eric Appelt
    4396. \r\n
    4397. zak kohler
    4398. \r\n
    4399. Fernanda Diomede

    4400. \r\n
    4401. Ryan Mack
    4402. \r\n
    4403. Hansel Dunlop
    4404. \r\n
    4405. Romeo Lorenzo
    4406. \r\n
    4407. Jesse Hughson
    4408. \r\n
    4409. Anurag Palreddy
    4410. \r\n
    4411. Greg Reda
    4412. \r\n
    4413. Bruno Inaja de Almeida Caimar
    4414. \r\n
    4415. Allan Downey
    4416. \r\n
    4417. Josephine amaldhas
    4418. \r\n
    4419. Taylor Martin

    4420. \r\n
    4421. Chris Schmautz
    4422. \r\n
    4423. Luis Miranda
    4424. \r\n
    4425. Benno Rice
    4426. \r\n
    4427. Calamia Enzo
    4428. \r\n
    4429. Fred Thiele
    4430. \r\n
    4431. 刘 明军
    4432. \r\n
    4433. Thomas Groshong
    4434. \r\n
    4435. David Foster
    4436. \r\n
    4437. Johnny Britt
    4438. \r\n
    4439. Jesse Emery

    4440. \r\n
    4441. Juan Manuel Cordova
    4442. \r\n
    4443. ROBERT KEPNER
    4444. \r\n
    4445. ÐлекÑандр Кузьменко
    4446. \r\n
    4447. Microsoft Matching Gifts
    4448. \r\n
    4449. Elizabeth Schweinsberg
    4450. \r\n
    4451. Peter Jakobsen
    4452. \r\n
    4453. Julien Salinas
    4454. \r\n
    4455. Кулаков Игорь
    4456. \r\n
    4457. Dmitry Vikhorev
    4458. \r\n
    4459. David Nicholson

    4460. \r\n
    4461. Tim Savage
    4462. \r\n
    4463. Tim Phillips
    4464. \r\n
    4465. Brandon Bouier
    4466. \r\n
    4467. Annemieke Janssen
    4468. \r\n
    4469. Evgeny Ivanov
    4470. \r\n
    4471. Calvin Hendryx-Parker
    4472. \r\n
    4473. Jaroslava Schovancova
    4474. \r\n
    4475. Veaceslav Doina
    4476. \r\n
    4477. Michal Krassowski
    4478. \r\n
    4479. Emilio Mari Coppola

    4480. \r\n
    4481. Robert Rickman
    4482. \r\n
    4483. Rebekah Stafford
    4484. \r\n
    4485. Jesus Martinez
    4486. \r\n
    4487. Michal Cihar
    4488. \r\n
    4489. KITE AG
    4490. \r\n
    4491. 潘 佳鑫
    4492. \r\n
    4493. DAN KATZUV
    4494. \r\n
    4495. YOGESH SIDDHAYYA
    4496. \r\n
    4497. Alexander Zhukov
    4498. \r\n
    4499. Prashanth Sirsagi

    4500. \r\n
    4501. Joseph Murray
    4502. \r\n
    4503. Oliver Obrien
    4504. \r\n
    4505. Rodolfo De Nadai
    4506. \r\n
    4507. Payoj Jain
    4508. \r\n
    4509. Daniel Gonzalez
    4510. \r\n
    4511. Joyell Bellinger
    4512. \r\n
    4513. Shivu H
    4514. \r\n
    4515. Kiran Kaki
    4516. \r\n
    4517. Georges Duverger
    4518. \r\n
    4519. Robert Haydt

    4520. \r\n
    4521. Earl Clark
    4522. \r\n
    4523. Bernard Chester
    4524. \r\n
    4525. Srichand Avala
    4526. \r\n
    4527. James Conti
    4528. \r\n
    4529. YU CHENG
    4530. \r\n
    4531. Spencer Tollefson
    4532. \r\n
    4533. DOUGLAS MAHUGH
    4534. \r\n
    4535. Sai Gunda
    4536. \r\n
    4537. CHONGLI DI
    4538. \r\n
    4539. Alexandra Pawlak

    4540. \r\n
    4541. David James Beitey
    4542. \r\n
    4543. K GALANIS
    4544. \r\n
    4545. Thane Williams
    4546. \r\n
    4547. Aaron R Seelye
    4548. \r\n
    4549. Vamsee Kasavajhala
    4550. \r\n
    4551. Samata Dutta
    4552. \r\n
    4553. Alexander Rice
    4554. \r\n
    4555. Nitesh Patel
    4556. \r\n
    4557. Peter Holm
    4558. \r\n
    4559. Khoa Tran

    4560. \r\n
    4561. Bibin Varghese
    4562. \r\n
    4563. Alexander Miranda
    4564. \r\n
    4565. Jacob Crotts
    4566. \r\n
    4567. ZaunerTech Ltd
    4568. \r\n
    4569. Timothy Beauchamp
    4570. \r\n
    4571. Richard Edwards
    4572. \r\n
    4573. Maui Craft Creations
    4574. \r\n
    4575. Matthew McCoy
    4576. \r\n
    4577. Khalid Siddiqui
    4578. \r\n
    4579. Kevin Zhou

    4580. \r\n
    4581. Karsten Aichholz
    4582. \r\n
    4583. Joel Herrick
    4584. \r\n
    4585. Jay Adams
    4586. \r\n
    4587. James Christopher Bare
    4588. \r\n
    4589. Evan Frisch
    4590. \r\n
    4591. Dmitri Bouianov
    4592. \r\n
    4593. Elizabeth Wiethoff
    4594. \r\n
    4595. Thomas Colvin
    4596. \r\n
    4597. Zoran Milic
    4598. \r\n
    4599. Camille Welcher

    4600. \r\n
    4601. Jacqueline Wilson
    4602. \r\n
    4603. Maher Lahmar
    4604. \r\n
    4605. Tom Brander
    4606. \r\n
    4607. Lily Li
    4608. \r\n
    4609. Lauren Williams
    4610. \r\n
    4611. Mike Miller
    4612. \r\n
    4613. Parthibaraj Karunanidhi
    4614. \r\n
    4615. Michael Gat
    4616. \r\n
    4617. oliver OBrien
    4618. \r\n
    4619. Loren Cardella

    4620. \r\n
    4621. Shelly Elizabeth Mitchell
    4622. \r\n
    4623. Just Passing By
    4624. \r\n
    4625. José Andrés Garita Flores
    4626. \r\n
    4627. James Ball
    4628. \r\n
    4629. Robert Wall
    4630. \r\n
    4631. XIAOJUN WANG
    4632. \r\n
    4633. Alexander C. S. Hendorf
    4634. \r\n
    4635. Bernhard Bodry
    4636. \r\n
    4637. Yanshuo Sun
    4638. \r\n
    4639. Clyde Zerba

    4640. \r\n
    4641. Alejandro Cavagna
    4642. \r\n
    4643. Ariel Ladegård
    4644. \r\n
    4645. Haitian Luo
    4646. \r\n
    4647. David Duxstad
    4648. \r\n
    4649. Jared Lynn
    4650. \r\n
    4651. Marcus Collins
    4652. \r\n
    4653. Lisa Marie Rosson
    4654. \r\n
    4655. Timothy Edwards
    4656. \r\n
    4657. Anahi Costa
    4658. \r\n
    4659. Carl Meyer

    4660. \r\n
    4661. Sidnet
    4662. \r\n
    4663. Qusai Karam
    4664. \r\n
    4665. Nick Fernandez
    4666. \r\n
    4667. ÐагорÑкий ÐлекÑей
    4668. \r\n
    4669. Brian K Boatright
    4670. \r\n
    4671. Linux Australia, Inc.
    4672. \r\n
    4673. Reinier de Blois
    4674. \r\n
    4675. Tigran Babaian
    4676. \r\n
    4677. Chad Dillingham
    4678. \r\n
    4679. Abdelkarim Ahroba

    4680. \r\n
    4681. Shannon Bedore
    4682. \r\n
    4683. Amanullah Ansari
    4684. \r\n
    4685. Kai I Chang
    4686. \r\n
    4687. Raz Steinmetz
    4688. \r\n
    4689. Keep Holdings, Inc.
    4690. \r\n
    4691. GreatBizTools, LLC
    4692. \r\n
    4693. Reginald Dugard
    4694. \r\n
    4695. Heath Robertson
    4696. \r\n
    4697. Bruno Oliveira
    4698. \r\n
    4699. Susan Hutner

    4700. \r\n
    4701. Kathleen Perez-Lopez
    4702. \r\n
    4703. Christine Rehm-Zola
    4704. \r\n
    4705. Renato Oliveira
    4706. \r\n
    4707. Justin McCammon
    4708. \r\n
    4709. paul sorenson
    4710. \r\n
    4711. Joel Grossman
    4712. \r\n
    4713. Elizabeth johnson
    4714. \r\n
    4715. Ben Roy
    4716. \r\n
    4717. Richard van Liessum
    4718. \r\n
    4719. Damian Southard

    4720. \r\n
    4721. Stacey Smith
    4722. \r\n
    4723. James Hutton
    4724. \r\n
    4725. Michael Larsson
    4726. \r\n
    4727. Christian Long
    4728. \r\n
    4729. Martin Leubner
    4730. \r\n
    4731. João Matos
    4732. \r\n
    4733. Jose Navarrete
    4734. \r\n
    4735. Roland Knapp
    4736. \r\n
    4737. Kelly McBride
    4738. \r\n
    4739. Daniel Porteous

    4740. \r\n
    4741. Stefan Drees
    4742. \r\n
    4743. Francesco Feregotto
    4744. \r\n
    4745. daniel obrien
    4746. \r\n
    4747. Chad Rifenberick
    4748. \r\n
    4749. Anything-Aviation
    4750. \r\n
    4751. Roland Henrie
    4752. \r\n
    4753. Adrian Chifor
    4754. \r\n
    4755. Andres Danter
    4756. \r\n
    4757. Anoop Chawla
    4758. \r\n
    4759. Zhong Zhuang

    4760. \r\n
    4761. Wang Tao
    4762. \r\n
    4763. Mauro Mitsuyuki Yamaguchi
    4764. \r\n
    4765. New Relic Inc.
    4766. \r\n
    4767. Em Barry
    4768. \r\n
    4769. Carol Wilson, LeadPages
    4770. \r\n
    4771. Young Lee
    4772. \r\n
    4773. Ian Maurer
    4774. \r\n
    4775. YOU SONGWEN
    4776. \r\n
    4777. Heikki Lehtinen
    4778. \r\n
    4779. Oriol Jimenez Cilleruelo

    4780. \r\n
    4781. James Gill
    4782. \r\n
    4783. James Browning
    4784. \r\n
    4785. Arthur Goldhammer
    4786. \r\n
    4787. Phillip Oldham
    4788. \r\n
    4789. Дмитрий БазильÑкий
    4790. \r\n
    4791. Jeff Nielsen
    4792. \r\n
    4793. Rachel Knowler
    4794. \r\n
    4795. Leah Hoogstra
    4796. \r\n
    4797. Laszlo Kiss-Kollar
    4798. \r\n
    4799. Gabrielle Simard-Moore

    4800. \r\n
    4801. Carl B Trachte
    4802. \r\n
    4803. Anthony DiCola
    4804. \r\n
    4805. salvador nunez
    4806. \r\n
    4807. juan Rodríguez uribe
    4808. \r\n
    4809. Dipika Bhattacharya
    4810. \r\n
    4811. Alexander Bock
    4812. \r\n
    4813. John Morrissey
    4814. \r\n
    4815. Young Sand
    4816. \r\n
    4817. Jose Alexsandro Sobral de Sobral de Freitas
    4818. \r\n
    4819. james mun

    4820. \r\n
    4821. James Warner
    4822. \r\n
    4823. Johnathon Laine Fox
    4824. \r\n
    4825. Bobby Compton
    4826. \r\n
    4827. Dave Jones
    4828. \r\n
    4829. Eric T Simandle
    4830. \r\n
    4831. Filip Tomic
    4832. \r\n
    4833. Hameed Gifford
    4834. \r\n
    4835. Sebastián Ramírez Magrí
    4836. \r\n
    4837. Naman Bajaj
    4838. \r\n
    4839. Иванов СтаниÑлав

    4840. \r\n
    4841. Roberta Eastman
    4842. \r\n
    4843. Rômulo Collopy Souza Carrijo
    4844. \r\n
    4845. Scott Irwin
    4846. \r\n
    4847. Sears Merritt
    4848. \r\n
    4849. Wang Hitachi
    4850. \r\n
    4851. Christian Frömmel
    4852. \r\n
    4853. Alejandro Sánchez Saldaña
    4854. \r\n
    4855. Boris Pavlovic
    4856. \r\n
    4857. Caktus Consulting Group
    4858. \r\n
    4859. Marcelo Lima Souza

    4860. \r\n
    4861. Pavlos Georgiou
    4862. \r\n
    4863. Gene Callahan
    4864. \r\n
    4865. David Williams
    4866. \r\n
    4867. Teerapat Jenrungrot
    4868. \r\n
    4869. Oliver E Cole
    4870. \r\n
    4871. Kalle Kietäväinen
    4872. \r\n
    4873. Andrew Angel
    4874. \r\n
    4875. Matteo Bertini
    4876. \r\n
    4877. Erwin van Meggelen
    4878. \r\n
    4879. Sheree Pennah

    4880. \r\n
    4881. Virginia White
    4882. \r\n
    4883. Lakshami Mahajan
    4884. \r\n
    4885. Ashish Patil
    4886. \r\n
    4887. Calvin Black
    4888. \r\n
    4889. Paul Garner
    4890. \r\n
    4891. Christoph Haas
    4892. \r\n
    4893. Aaron Straus
    4894. \r\n
    4895. 8 Dancing Elephants
    4896. \r\n
    4897. Jerry Segers Jr
    4898. \r\n
    4899. Wafeeq Zakariyya

    4900. \r\n
    4901. Bridgette Moore
    4902. \r\n
    4903. Deanne DiPietro
    4904. \r\n
    4905. Rakesh Guha
    4906. \r\n
    4907. Kay-Uwe Clemens
    4908. \r\n
    4909. Jenn Morton
    4910. \r\n
    4911. karolyi
    4912. \r\n
    4913. Yotam Manor
    4914. \r\n
    4915. Karthik Reddy Mekala
    4916. \r\n
    4917. Dustin Vaselaar
    4918. \r\n
    4919. Matthias Leeder

    4920. \r\n
    4921. Ard Mulders
    4922. \r\n
    4923. Sujit Ray
    4924. \r\n
    4925. Soeren Howe Gersager
    4926. \r\n
    4927. Sidharth Mallick
    4928. \r\n
    4929. Peter W Bachant
    4930. \r\n
    4931. Aida Shoydokova
    4932. \r\n
    4933. Jeff Kiefer
    4934. \r\n
    4935. Goncalo Alves
    4936. \r\n
    4937. Ravi Kotecha
    4938. \r\n
    4939. Manuel Frei

    4940. \r\n
    4941. Justin Hui
    4942. \r\n
    4943. ChannelRobot
    4944. \r\n
    4945. Steve Buckley
    4946. \r\n
    4947. PRASAD GODAVARTHI
    4948. \r\n
    4949. Semih Hazar
    4950. \r\n
    4951. Alex Gerdom
    4952. \r\n
    4953. Darjus Loktevic
    4954. \r\n
    4955. Govardhan Rao Sunkishela
    4956. \r\n
    4957. donald nathan
    4958. \r\n
    4959. Marcus Sharp

    4960. \r\n
    4961. Chris Petrilli
    4962. \r\n
    4963. Veit Heller
    4964. \r\n
    4965. Mickael Hubert
    4966. \r\n
    4967. JBD Solutions
    4968. \r\n
    4969. Marc Schmed
    4970. \r\n
    4971. michael dunn
    4972. \r\n
    4973. Polymath
    4974. \r\n
    4975. Blaise Laflamme
    4976. \r\n
    4977. Franziskus Nakajima
    4978. \r\n
    4979. Paolo Gotti

    4980. \r\n
    4981. mario alemi
    4982. \r\n
    4983. Scott Spangenberg
    4984. \r\n
    4985. Bill Pollock
    4986. \r\n
    4987. Chris Johnston
    4988. \r\n
    4989. Jeremy Carbaugh
    4990. \r\n
    4991. Kay Thust
    4992. \r\n
    4993. Eric Casteleijn
    4994. \r\n
    4995. Dauren Zholdasbayev
    4996. \r\n
    4997. Vladyslav Kartavets
    4998. \r\n
    4999. Jacob Snow

    5000. \r\n
    5001. Kevin Reed
    5002. \r\n
    5003. Diego Argueta
    5004. \r\n
    5005. Aaron J Olson
    5006. \r\n
    5007. William May
    5008. \r\n
    5009. Matthew Clapp
    5010. \r\n
    5011. Linus Jäger
    5012. \r\n
    5013. James Houghton
    5014. \r\n
    5015. Jannes Engelbrecht
    5016. \r\n
    5017. Jathan McCollum
    5018. \r\n
    5019. Anna Noetzel

    5020. \r\n
    5021. PyTennessee 2015
    5022. \r\n
    5023. John Vrbanac
    5024. \r\n
    5025. Austin Bingham
    5026. \r\n
    5027. Dmitrij Perminov
    5028. \r\n
    5029. Eric Vegors
    5030. \r\n
    5031. ENDO SATOSHI
    5032. \r\n
    5033. Slater Victoroff
    5034. \r\n
    5035. S Rahul Bose
    5036. \r\n
    5037. Radoslaw Skiba
    5038. \r\n
    5039. James Simmons

    5040. \r\n
    5041. BOB HOGG
    5042. \r\n
    5043. Donald Watkins
    5044. \r\n
    5045. Roy Hyunjin Han
    5046. \r\n
    5047. Antonio Cavallo
    5048. \r\n
    5049. Erik Storrs
    5050. \r\n
    5051. Devon Warren
    5052. \r\n
    5053. Wu Jing
    5054. \r\n
    5055. steven lindblad
    5056. \r\n
    5057. Godwin A. Effiong
    5058. \r\n
    5059. Scott Chamberlain

    5060. \r\n
    5061. Nicholas Chammas
    5062. \r\n
    5063. Michael Deeringer
    5064. \r\n
    5065. Ayesha Mendoza
    5066. \r\n
    5067. Chris Clifton
    5068. \r\n
    5069. ian frith
    5070. \r\n
    5071. Anthony Lupinetti
    5072. \r\n
    5073. Harry Park
    5074. \r\n
    5075. Cox Media Group
    5076. \r\n
    5077. Lawrence Michel
    5078. \r\n
    5079. david scott

    5080. \r\n
    5081. William Forster
    5082. \r\n
    5083. Rodrigo Senra
    5084. \r\n
    5085. Shannon Quinn
    5086. \r\n
    5087. Tyler Weber
    5088. \r\n
    5089. Robert Brockman
    5090. \r\n
    5091. James Long
    5092. \r\n
    5093. Anthony Liang
    5094. \r\n
    5095. Gaëtan HARTER
    5096. \r\n
    5097. Eldon Berg
    5098. \r\n
    5099. Mark Pilgrim

    5100. \r\n
    5101. Matthew McKinzie
    5102. \r\n
    5103. Mario Sergio Antunes
    5104. \r\n
    5105. ЛеÑÑŒ КонÑтантин
    5106. \r\n
    5107. Nicole Galaz
    5108. \r\n
    5109. Meghan Halton
    5110. \r\n
    5111. Dong Xiangqian
    5112. \r\n
    5113. chan kin
    5114. \r\n
    5115. zhan tao
    5116. \r\n
    5117. Craig Capodilupo
    5118. \r\n
    5119. Neal Pignatora

    5120. \r\n
    5121. confirm IT solutions
    5122. \r\n
    5123. William Larsen
    5124. \r\n
    5125. Ulrich Petri
    5126. \r\n
    5127. Jean Bredeche
    5128. \r\n
    5129. James Mazur
    5130. \r\n
    5131. Greg Smith
    5132. \r\n
    5133. Thomas gretten
    5134. \r\n
    5135. Lars Freier
    5136. \r\n
    5137. Kay Schluehr
    5138. \r\n
    5139. Vicky Tuite

    5140. \r\n
    5141. Robert Flansburgh
    5142. \r\n
    5143. 柳 æ¨
    5144. \r\n
    5145. Willem de Groot
    5146. \r\n
    5147. Robert Marchese
    5148. \r\n
    5149. Karl Byleen-Higley
    5150. \r\n
    5151. Tony Morrow
    5152. \r\n
    5153. Andrés Perez Albela Hernandez
    5154. \r\n
    5155. Chris Glick
    5156. \r\n
    5157. ROBERT B MCCLAIN JR
    5158. \r\n
    5159. Daniel Vaughan

    5160. \r\n
    5161. Maura Haley
    5162. \r\n
    5163. Rafael Römhild
    5164. \r\n
    5165. Paige Bailey
    5166. \r\n
    5167. DÄvis MoÅ¡enkovs
    5168. \r\n
    5169. Kristopher Nybakken
    5170. \r\n
    5171. NARENDRA DHARMAVARAPU
    5172. \r\n
    5173. keith schmaljohn
    5174. \r\n
    5175. mx21.com
    5176. \r\n
    5177. Michael Beasley
    5178. \r\n
    5179. Samuel Bishop

    5180. \r\n
    5181. Steve Cataline
    5182. \r\n
    5183. Jeff Knupp
    5184. \r\n
    5185. Andrew Hunt
    5186. \r\n
    5187. en zyme
    5188. \r\n
    5189. Liu Jie
    5190. \r\n
    5191. Marcio Rotta
    5192. \r\n
    5193. David Forgac
    5194. \r\n
    5195. Christian Plümer
    5196. \r\n
    5197. Geng ShunRong
    5198. \r\n
    5199. Bart Jeukendrup

    5200. \r\n
    5201. William Reiher
    5202. \r\n
    5203. Michael Dostal
    5204. \r\n
    5205. SPEL Technologies, Inc
    5206. \r\n
    5207. Tjada Nelson
    5208. \r\n
    5209. Matthew Switanek
    5210. \r\n
    5211. maufonfa
    5212. \r\n
    5213. Nicole Patock
    5214. \r\n
    5215. Christian Strozyk
    5216. \r\n
    5217. Mace Ojala
    5218. \r\n
    5219. cao wangjie

    5220. \r\n
    5221. MARY HILLESTAD
    5222. \r\n
    5223. Brandon Gallardo
    5224. \r\n
    5225. Ivan Montejo Garcia
    5226. \r\n
    5227. Robert Gellman
    5228. \r\n
    5229. Paweł Baranowski
    5230. \r\n
    5231. graham richards
    5232. \r\n
    5233. Joana Robles
    5234. \r\n
    5235. ARULOLI M
    5236. \r\n
    5237. Ion Bica
    5238. \r\n
    5239. Silicon Valley Community Foundation

    5240. \r\n
    5241. felipe melis
    5242. \r\n
    5243. elizabeth cleveland
    5244. \r\n
    5245. Sergio Campo
    5246. \r\n
    5247. Orlando Garcia
    5248. \r\n
    5249. Jessica Unrein
    5250. \r\n
    5251. Irma Kramer
    5252. \r\n
    5253. Hanna Landrus
    5254. \r\n
    5255. BADIA DAAMASH
    5256. \r\n
    5257. derek payton
    5258. \r\n
    5259. Viktoriya Savkina

    5260. \r\n
    5261. Tyler Evans
    5262. \r\n
    5263. Thomas Storey
    5264. \r\n
    5265. Tashay Green
    5266. \r\n
    5267. Stephanie Keske
    5268. \r\n
    5269. Rachel Kelly
    5270. \r\n
    5271. Patrick Boland
    5272. \r\n
    5273. DeadTiger
    5274. \r\n
    5275. Bay Grabowski
    5276. \r\n
    5277. Ask Solem Hoel
    5278. \r\n
    5279. Alyssa Swift

    5280. \r\n
    5281. Mike Pacer
    5282. \r\n
    5283. Jeffery Read
    5284. \r\n
    5285. Sheree Maria Pena
    5286. \r\n
    5287. Terral Jordan
    5288. \r\n
    5289. michelle majorie
    5290. \r\n
    5291. Joseph Chilcote
    5292. \r\n
    5293. Morgyn Stryker
    5294. \r\n
    5295. Joe Friedrich
    5296. \r\n
    5297. æ»æ¾¤ æˆäºº
    5298. \r\n
    5299. Craig Kelly

    5300. \r\n
    5301. billy williams
    5302. \r\n
    5303. Sarala Akella
    5304. \r\n
    5305. WebFilings
    5306. \r\n
    5307. Kyle Marten
    5308. \r\n
    5309. roberta gaines
    5310. \r\n
    5311. SI QIN MENG
    5312. \r\n
    5313. Don Webster
    5314. \r\n
    5315. Tharavy Douc
    5316. \r\n
    5317. Anthony Kuback
    5318. \r\n
    5319. Nolan Dyck

    5320. \r\n
    5321. Prerana Kanakia
    5322. \r\n
    5323. Patrick Melanson
    5324. \r\n
    5325. Thomas Niederberger
    5326. \r\n
    5327. Narcis Simu
    5328. \r\n
    5329. akshay lad
    5330. \r\n
    5331. gabriel meringolo
    5332. \r\n
    5333. Roberto Hernandez
    5334. \r\n
    5335. Carl Petter Levy
    5336. \r\n
    5337. Julio Luna Reynoso
    5338. \r\n
    5339. Michael Anderson

    5340. \r\n
    5341. Arun Rangarajan
    5342. \r\n
    5343. Osvaldo Dias dos Santos
    5344. \r\n
    5345. Bruce Benson
    5346. \r\n
    5347. Steven Mesiner
    5348. \r\n
    5349. XU ZIYU
    5350. \r\n
    5351. Hangyul Lee
    5352. \r\n
    5353. Dirk Kulawiak
    5354. \r\n
    5355. Christine Maki
    5356. \r\n
    5357. Thomas Mifflin
    5358. \r\n
    5359. Amy Nguyen

    5360. \r\n
    5361. 余 森彬
    5362. \r\n
    5363. Mark Webster
    5364. \r\n
    5365. VAN HAVRE YORIK
    5366. \r\n
    5367. Aretha Alemu
    5368. \r\n
    5369. joaquin berenguer
    5370. \r\n
    5371. Lydie Jacqueline
    5372. \r\n
    5373. Wen J. Chen
    5374. \r\n
    5375. Steven Susemihl
    5376. \r\n
    5377. Jason Duncan
    5378. \r\n
    5379. Brendon Keelan

    5380. \r\n
    5381. Wei Lee Woon
    5382. \r\n
    5383. Vishwanath Gupta
    5384. \r\n
    5385. Matthew McIntyre
    5386. \r\n
    5387. 陈 泳桦
    5388. \r\n
    5389. Richard Mfitumukiza
    5390. \r\n
    5391. Philip Stewart
    5392. \r\n
    5393. Gustavo Kunzel
    5394. \r\n
    5395. Alexandre Garel
    5396. \r\n
    5397. ProofDriven
    5398. \r\n
    5399. Pratham Singh

    5400. \r\n
    5401. Esteban Feldman
    5402. \r\n
    5403. Senokuchi Hiroshi
    5404. \r\n
    5405. Roman Gres
    5406. \r\n
    5407. Jonathan Dayton
    5408. \r\n
    5409. William Warren
    5410. \r\n
    5411. Rafael Fonseca
    5412. \r\n
    5413. Xie Shi
    5414. \r\n
    5415. gaylin larson
    5416. \r\n
    5417. David Lord
    5418. \r\n
    5419. Anton Neururer

    5420. \r\n
    5421. ЯроÑлав Ð
    5422. \r\n
    5423. Sune Wøller
    5424. \r\n
    5425. Le Hoai Nham
    5426. \r\n
    5427. ENZO CALAMIA
    5428. \r\n
    5429. Benjamin Lerner
    5430. \r\n
    5431. Ben Knudson
    5432. \r\n
    5433. Thijs Metsch
    5434. \r\n
    5435. Frank Wiles
    5436. \r\n
    5437. Simon PAYAN
    5438. \r\n
    5439. Peter Pelberg

    5440. \r\n
    5441. Greg Goebel
    5442. \r\n
    5443. Fidelity Charitable Gifts
    5444. \r\n
    5445. Hermann Schuster
    5446. \r\n
    5447. Talata
    5448. \r\n
    5449. Dana Mosley
    5450. \r\n
    5451. Laurent-Philippe Gros
    5452. \r\n
    5453. Tiago Boldt Sousa
    5454. \r\n
    5455. Daniel Wernicke
    5456. \r\n
    5457. nicole embrey
    5458. \r\n
    5459. Iulius-Ioan Curt

    5460. \r\n
    5461. Werner Heidelsperger
    5462. \r\n
    5463. Jeffrey Jacobs
    5464. \r\n
    5465. Михайленко Дмитрий
    5466. \r\n
    5467. Trevor Bell
    5468. \r\n
    5469. Tiago Possato
    5470. \r\n
    5471. Joan Marc Tuduri Cladera
    5472. \r\n
    5473. Ashley Wilson
    5474. \r\n
    5475. Ziqiang Chen
    5476. \r\n
    5477. Liam Schumm
    5478. \r\n
    5479. Martin Zuther

    5480. \r\n
    5481. annamma george
    5482. \r\n
    5483. Ben Love
    5484. \r\n
    5485. YIOTA ADAMOU
    5486. \r\n
    5487. Florian Sommer
    5488. \r\n
    5489. Rick King
    5490. \r\n
    5491. EuroPython 2013 Sponsored Massage
    5492. \r\n
    5493. MySelf
    5494. \r\n
    5495. Indradeep Biswas
    5496. \r\n
    5497. Xiaotao Zhang
    5498. \r\n
    5499. James Warnock

    5500. \r\n
    5501. Kenneth Smith
    5502. \r\n
    5503. 邹 å¥å†›
    5504. \r\n
    5505. Mike Guerette
    5506. \r\n
    5507. diego de freitas
    5508. \r\n
    5509. Ð”ÐµÐ½Ð¸Ñ Ð—Ð²ÐµÐ·Ð´Ð¾Ð²
    5510. \r\n
    5511. Hyun Goo Kang
    5512. \r\n
    5513. Clara Bennett
    5514. \r\n
    5515. James Ferrara
    5516. \r\n
    5517. Olivier PELLET-MANY
    5518. \r\n
    5519. Peter Martin

    5520. \r\n
    5521. devova
    5522. \r\n
    5523. Michael Gang
    5524. \r\n
    5525. Bharath Gundala
    5526. \r\n
    5527. Wally Fort
    5528. \r\n
    5529. Du Yining
    5530. \r\n
    5531. 郑 翔
    5532. \r\n
    5533. Philippe Gouin
    5534. \r\n
    5535. Matthew Bellis
    5536. \r\n
    5537. Kyle Kelley
    5538. \r\n
    5539. Banafsheh Khakipoor

    5540. \r\n
    5541. Frederick Alger
    5542. \r\n
    5543. Eric Beurre
    5544. \r\n
    5545. Bruno Deschenes
    5546. \r\n
    5547. John Pena
    5548. \r\n
    5549. Jan Wilhelm Münch
    5550. \r\n
    5551. bronson lowery
    5552. \r\n
    5553. Independent Software
    5554. \r\n
    5555. Wonseok Jang
    5556. \r\n
    5557. Some Fantastic Ltd
    5558. \r\n
    5559. Mayur Mahajan

    5560. \r\n
    5561. Ned Batchelder
    5562. \r\n
    5563. HIMENO KOUSEI
    5564. \r\n
    5565. Bishwa Giri
    5566. \r\n
    5567. Michael Biber
    5568. \r\n
    5569. BRET A. BENNETT
    5570. \r\n
    5571. Donna Bennet
    5572. \r\n
    5573. MARYE. OKERSON
    5574. \r\n
    5575. Theodorus Sluijs
    5576. \r\n
    5577. Jessica Lachewitz
    5578. \r\n
    5579. Rackspace

    5580. \r\n
    5581. 温 ç¦é“¨
    5582. \r\n
    5583. Jacob Westfall
    5584. \r\n
    5585. Michael Vacha
    5586. \r\n
    5587. Angelek Larkins
    5588. \r\n
    5589. carol McCann
    5590. \r\n
    5591. Moritz Schubert
    5592. \r\n
    5593. Renee Nichols
    5594. \r\n
    5595. Frederic Guilleux
    5596. \r\n
    5597. Tatyana Gladkova
    5598. \r\n
    5599. Li Yanming

    5600. \r\n
    5601. Derian Andersen
    5602. \r\n
    5603. Paul Keating
    5604. \r\n
    5605. Kenneth Stox
    5606. \r\n
    5607. Meng Da xing
    5608. \r\n
    5609. Greg Frazier
    5610. \r\n
    5611. Anton Ovchinnikov
    5612. \r\n
    5613. Michael Izenson
    5614. \r\n
    5615. Diana Jacobs
    5616. \r\n
    5617. Adrianna Irvin
    5618. \r\n
    5619. Pedro Lopes

    5620. \r\n
    5621. Karalyn Baca
    5622. \r\n
    5623. Sun Fulong
    5624. \r\n
    5625. Sprymix Inc.
    5626. \r\n
    5627. Simon Biewald
    5628. \r\n
    5629. Ryan Rubin
    5630. \r\n
    5631. Painted Pixel LLC
    5632. \r\n
    5633. Kyle Niemeyer
    5634. \r\n
    5635. Christopher Wolfe
    5636. \r\n
    5637. Kerrick Staley
    5638. \r\n
    5639. andrei mitiaev

    5640. \r\n
    5641. Luca Verginer
    5642. \r\n
    5643. MapMyFitness, Inc
    5644. \r\n
    5645. Andrew Gwozdziewycz
    5646. \r\n
    5647. Matvey Teplov
    5648. \r\n
    5649. wenhe lin
    5650. \r\n
    5651. Jonathan Evans
    5652. \r\n
    5653. Карпов Игорь
    5654. \r\n
    5655. Rik Wanders
    5656. \r\n
    5657. Fred Drueck
    5658. \r\n
    5659. David Peters

    5660. \r\n
    5661. MANOHAR KUMAR
    5662. \r\n
    5663. Arnold Coto Marcia
    5664. \r\n
    5665. John Shegonee
    5666. \r\n
    5667. Robert Spessard
    5668. \r\n
    5669. Susannah Flynn
    5670. \r\n
    5671. Hugo Genesse
    5672. \r\n
    5673. Sasidhar Reddy
    5674. \r\n
    5675. Robbie Lambert Byrd
    5676. \r\n
    5677. Chad Shryock
    5678. \r\n
    5679. Jason Luce

    5680. \r\n
    5681. Порочкин Дмитрий
    5682. \r\n
    5683. Gabel Media LLC
    5684. \r\n
    5685. Michael Burroughs
    5686. \r\n
    5687. Shayne Rossum
    5688. \r\n
    5689. Christian David Koltermann
    5690. \r\n
    5691. Brad Williams
    5692. \r\n
    5693. Nate Lawson
    5694. \r\n
    5695. Zurich Premium
    5696. \r\n
    5697. Laurel Makusztak
    5698. \r\n
    5699. Jan Sheehan

    5700. \r\n
    5701. Arnold van der Wal
    5702. \r\n
    5703. Martin Gfeller
    5704. \r\n
    5705. Daniel Cloud
    5706. \r\n
    5707. Asiri Fernando
    5708. \r\n
    5709. Matt Keagle
    5710. \r\n
    5711. Yoann Aubineau
    5712. \r\n
    5713. peter stroud
    5714. \r\n
    5715. Mher Petrosyan
    5716. \r\n
    5717. 劉 盈妤
    5718. \r\n
    5719. Doug Storbeck

    5720. \r\n
    5721. Cliff and Jayne Dyer
    5722. \r\n
    5723. e goetze
    5724. \r\n
    5725. James Mertz
    5726. \r\n
    5727. Michael McLaughlin
    5728. \r\n
    5729. Kassandra R Keeton
    5730. \r\n
    5731. Fran Fitzpatrick
    5732. \r\n
    5733. Grigoriy Kostyuk
    5734. \r\n
    5735. Jon Udell
    5736. \r\n
    5737. Katherine Scott
    5738. \r\n
    5739. Julie Knapp

    5740. \r\n
    5741. DAVID ŽIHALA
    5742. \r\n
    5743. Alfred Castaldi
    5744. \r\n
    5745. Gualter Ramalho Portella
    5746. \r\n
    5747. Ted Gaubert
    5748. \r\n
    5749. JEF Industries
    5750. \r\n
    5751. Ramakrishna Pappula
    5752. \r\n
    5753. Andrea Monti
    5754. \r\n
    5755. Jay Reyes
    5756. \r\n
    5757. jinsong wu
    5758. \r\n
    5759. WorkMob

    5760. \r\n
    5761. Eli Smith
    5762. \r\n
    5763. caitlin choban
    5764. \r\n
    5765. Brendan Adkins
    5766. \r\n
    5767. Alberto Caso Palomino
    5768. \r\n
    5769. Rahiel Kasim
    5770. \r\n
    5771. Luiz Carlos Irber Jr
    5772. \r\n
    5773. Andrew Bednar
    5774. \r\n
    5775. Sune Jepsen
    5776. \r\n
    5777. Hideaki Takahashi
    5778. \r\n
    5779. Kulakov Igor

    5780. \r\n
    5781. Natalie Serebryakova
    5782. \r\n
    5783. Jesse Truscott
    5784. \r\n
    5785. Martin Micheltorena Urdaniz
    5786. \r\n
    5787. Razoo Foundation
    5788. \r\n
    5789. Steven Larson
    5790. \r\n
    5791. Matthew Cox
    5792. \r\n
    5793. Patrick Donahue
    5794. \r\n
    5795. Chris Heisel
    5796. \r\n
    5797. Tian He
    5798. \r\n
    5799. 张 明素

    5800. \r\n
    5801. 36monkeys Marcin Sztolcman
    5802. \r\n
    5803. Chris Davis
    5804. \r\n
    5805. João Teixeira
    5806. \r\n
    5807. Julien Pinget
    5808. \r\n
    5809. Paweł Adamek
    5810. \r\n
    5811. Andreas M�ller
    5812. \r\n
    5813. å¼  ç­–
    5814. \r\n
    5815. Kathleen MacInnis
    5816. \r\n
    5817. Jamiel Almeida
    5818. \r\n
    5819. Foote Family Fund

    5820. \r\n
    5821. Mary Orazem
    5822. \r\n
    5823. Digistump LLC
    5824. \r\n
    5825. Willette Barnett
    5826. \r\n
    5827. Tijs Teulings
    5828. \r\n
    5829. joseph bokongo
    5830. \r\n
    5831. Valtteri Mäkelä
    5832. \r\n
    5833. Chris Andrews
    5834. \r\n
    5835. Tonya Ramsey
    5836. \r\n
    5837. Patrick Laban
    5838. \r\n
    5839. Brittany Nelson

    5840. \r\n
    5841. The Capital Group Companies Charitable Fund
    5842. \r\n
    5843. RAFAEL TORRES RAMIREZ
    5844. \r\n
    5845. Juan José D'Ambrosio
    5846. \r\n
    5847. Robert Meyer
    5848. \r\n
    5849. Emily Quinn Finney
    5850. \r\n
    5851. Martin Banduch
    5852. \r\n
    5853. å´ å“ˆå“ˆ
    5854. \r\n
    5855. Jonathan Kamens
    5856. \r\n
    5857. Bruce Harrington
    5858. \r\n
    5859. Ganesh Murdeshwar

    5860. \r\n
    5861. CUSTOM MADE VENTURES, CORP
    5862. \r\n
    5863. Joseph Dasenbrock
    5864. \r\n
    5865. Alexander Kagioglu
    5866. \r\n
    5867. Mahesh Ramchandani
    5868. \r\n
    5869. Dewey Wallace
    5870. \r\n
    5871. Nancy Koroloff
    5872. \r\n
    5873. Donald Morrison
    5874. \r\n
    5875. Michael Kennedy
    5876. \r\n
    5877. Joseph Jerva
    5878. \r\n
    5879. Akshay Singh

    5880. \r\n
    5881. Samantha Ketts
    5882. \r\n
    5883. Trihandoyo Soesilo
    5884. \r\n
    5885. New Relic
    5886. \r\n
    5887. Matt Wensing
    5888. \r\n
    5889. James Bartek
    5890. \r\n
    5891. Vipul Borikar
    5892. \r\n
    5893. Van Pelt, Yi & James LLP
    5894. \r\n
    5895. Peter Fein
    5896. \r\n
    5897. Charles Stanhope
    5898. \r\n
    5899. Understanding Systems, Inc

    5900. \r\n
    5901. Stuart Fast
    5902. \r\n
    5903. Yann Kaiser
    5904. \r\n
    5905. Joe Lewis
    5906. \r\n
    5907. Graeme Phillipson
    5908. \r\n
    5909. XPIENT
    5910. \r\n
    5911. Sarah
    5912. \r\n
    5913. Caroline Harbitz
    5914. \r\n
    5915. Daniel Gonzalez Ibeas
    5916. \r\n
    5917. Oliver D�ring
    5918. \r\n
    5919. TEDxNashville

    5920. \r\n
    5921. Ralf Schwarz
    5922. \r\n
    5923. Edward Vogel
    5924. \r\n
    5925. Chester D Hosmer
    5926. \r\n
    5927. Eric Saxby
    5928. \r\n
    5929. Nikita Korneev
    5930. \r\n
    5931. Jason Soja
    5932. \r\n
    5933. Gilberto Goncalves
    5934. \r\n
    5935. Chris Newman
    5936. \r\n
    5937. Keegan McAllister
    5938. \r\n
    5939. Adam Venturella

    5940. \r\n
    5941. Timothy Perisho
    5942. \r\n
    5943. Eduardo Coll
    5944. \r\n
    5945. AARON OLSON
    5946. \r\n
    5947. Hans Sebastian
    5948. \r\n
    5949. Fabrizio Romano
    5950. \r\n
    5951. Salesforce Foundation / Raj Rajamanickam
    5952. \r\n
    5953. Mark Groen
    5954. \r\n
    5955. Ashish Ram
    5956. \r\n
    5957. Keith Nelson
    5958. \r\n
    5959. Antoine Trudel

    5960. \r\n
    5961. Charles Herbert
    5962. \r\n
    5963. Henrik Christiansen
    5964. \r\n
    5965. Salar Satti
    5966. \r\n
    5967. Eigenvalue Corporation
    5968. \r\n
    5969. Seunghyo Seo
    5970. \r\n
    5971. Tobi Bosede
    5972. \r\n
    5973. IMT Insurance Company
    5974. \r\n
    5975. Marian Meinhard
    5976. \r\n
    5977. Chris Adams
    5978. \r\n
    5979. Prometheus Research, LLC

    5980. \r\n
    5981. Naumov Stepan
    5982. \r\n
    5983. Erik Vandekieft
    5984. \r\n
    5985. Zachary Gulde
    5986. \r\n
    5987. Scott Brown
    5988. \r\n
    5989. Andrew Santos
    5990. \r\n
    5991. Esteban Pardo Sanchez
    5992. \r\n
    5993. Verwoorders & Dutveul
    5994. \r\n
    5995. Mary Catherine Cornick
    5996. \r\n
    5997. Chaim Krause
    5998. \r\n
    5999. Steve Burkholder

    6000. \r\n
    6001. Daniel Lindsley
    6002. \r\n
    6003. Коновалов Вениамин
    6004. \r\n
    6005. Jentzen Mooney
    6006. \r\n
    6007. Alexey Novgorodov
    6008. \r\n
    6009. Todd Smith
    6010. \r\n
    6011. Jessica Mizzi
    6012. \r\n
    6013. Erin Keith
    6014. \r\n
    6015. Emerton Infosystems
    6016. \r\n
    6017. Dylan Righi
    6018. \r\n
    6019. Destiny Gaines

    6020. \r\n
    6021. Apple Inc.
    6022. \r\n
    6023. kristofer white
    6024. \r\n
    6025. Suprita Shankar
    6026. \r\n
    6027. Shu Zong Chen
    6028. \r\n
    6029. Ryan Handy
    6030. \r\n
    6031. Cameron Cairns
    6032. \r\n
    6033. Giovanni Di Milia
    6034. \r\n
    6035. Ryan Heffernan
    6036. \r\n
    6037. Oskar Zabik
    6038. \r\n
    6039. Nicholas Buihner

    6040. \r\n
    6041. Megan Hemmila
    6042. \r\n
    6043. Matthew Olsen
    6044. \r\n
    6045. Luiz Irber
    6046. \r\n
    6047. Daniel Miller
    6048. \r\n
    6049. Anna Hull
    6050. \r\n
    6051. FlipKey
    6052. \r\n
    6053. Kyle Kingsbury
    6054. \r\n
    6055. Jeremy Blow
    6056. \r\n
    6057. Alex Good
    6058. \r\n
    6059. Albert Danial

    6060. \r\n
    6061. Warren Friedrich
    6062. \r\n
    6063. Florian Brezina
    6064. \r\n
    6065. William Benter
    6066. \r\n
    6067. Ian Cordasco
    6068. \r\n
    6069. Erica Woodcock
    6070. \r\n
    6071. Steve Dower
    6072. \r\n
    6073. Étienne Gilli
    6074. \r\n
    6075. Terry Smith
    6076. \r\n
    6077. Boris Sadkhin
    6078. \r\n
    6079. Julian de Convenent

    6080. \r\n
    6081. Marek Goslicki
    6082. \r\n
    6083. Inseo Hwang
    6084. \r\n
    6085. Travis Howse
    6086. \r\n
    6087. Rebecca Lerner
    6088. \r\n
    6089. Lee Pau San
    6090. \r\n
    6091. Samuel Villamonte Grimaldo
    6092. \r\n
    6093. George Kowalski
    6094. \r\n
    6095. Bryon Roche
    6096. \r\n
    6097. Stefanos Chalkidis
    6098. \r\n
    6099. Aalap Shah

    6100. \r\n
    6101. Byung Wook Seoh
    6102. \r\n
    6103. Jeremy Hylton
    6104. \r\n
    6105. Amolak Sandhu
    6106. \r\n
    6107. Steven Krengel
    6108. \r\n
    6109. Shivakumar Melmangalam
    6110. \r\n
    6111. Janet Riley
    6112. \r\n
    6113. Cynthia Birnbaum
    6114. \r\n
    6115. Aaron Becker
    6116. \r\n
    6117. Gabriel Boorse
    6118. \r\n
    6119. Adrian Weisberg

    6120. \r\n
    6121. Peter Kruskall
    6122. \r\n
    6123. Chuan Yang
    6124. \r\n
    6125. Chris Adams
    6126. \r\n
    6127. Bruce Eckel
    6128. \r\n
    6129. Anze Pecar
    6130. \r\n
    6131. Joao Matos
    6132. \r\n
    6133. Brian Johnson
    6134. \r\n
    6135. Benjamin Zaitlen
    6136. \r\n
    6137. Steve Wang
    6138. \r\n
    6139. Thomas Rothamel

    6140. \r\n
    6141. Taneka Everett
    6142. \r\n
    6143. Sri Harsha Pamu
    6144. \r\n
    6145. Brian Corbin
    6146. \r\n
    6147. Baptiste Mispelon
    6148. \r\n
    6149. Brenno Lemos Melquiades dos Santos
    6150. \r\n
    6151. Gary M Selzer
    6152. \r\n
    6153. R and R Emmons Fund
    6154. \r\n
    6155. Peter Eckhoff
    6156. \r\n
    6157. Aleksander Kogut
    6158. \r\n
    6159. Stephane ESTEVE

    6160. \r\n
    6161. iFixit
    6162. \r\n
    6163. Fabula C.R. Thomas
    6164. \r\n
    6165. Katherine Summers
    6166. \r\n
    6167. Larry Rosenstein
    6168. \r\n
    6169. Daniel Buchoff
    6170. \r\n
    6171. alicia Cutillo
    6172. \r\n
    6173. Robert Baumann
    6174. \r\n
    6175. Richard King
    6176. \r\n
    6177. Samantha Goldberg
    6178. \r\n
    6179. Daniel Olejarz

    6180. \r\n
    6181. Carl Shek
    6182. \r\n
    6183. Rory Rory Finnegan
    6184. \r\n
    6185. Steven Richards
    6186. \r\n
    6187. John Kuster
    6188. \r\n
    6189. Timothy Wakeling
    6190. \r\n
    6191. Arik Gelman
    6192. \r\n
    6193. Christopher White
    6194. \r\n
    6195. DAN HARTDEGEN
    6196. \r\n
    6197. David Stokes
    6198. \r\n
    6199. James Hafford

    6200. \r\n
    6201. Exality Corporation
    6202. \r\n
    6203. Russel Wheelwright
    6204. \r\n
    6205. Richard Hornbaker
    6206. \r\n
    6207. Roxanne Johnson
    6208. \r\n
    6209. Jan Murre
    6210. \r\n
    6211. Alexis Layton
    6212. \r\n
    6213. Bryan Haardt
    6214. \r\n
    6215. Guilherme Bessa Rezende
    6216. \r\n
    6217. Annapoornima Koppad
    6218. \r\n
    6219. Chris Saunders

    6220. \r\n
    6221. David W. Johnson
    6222. \r\n
    6223. George Collins
    6224. \r\n
    6225. Huang Yu-Heng
    6226. \r\n
    6227. Jason C Lutz
    6228. \r\n
    6229. Nicolas Allemand
    6230. \r\n
    6231. Brien Wheeler
    6232. \r\n
    6233. Marco Lai
    6234. \r\n
    6235. stephanie samson
    6236. \r\n
    6237. Brandon Gallardo Alvarado
    6238. \r\n
    6239. Team Otter

    6240. \r\n
    6241. Nicola Larosa
    6242. \r\n
    6243. Akash Shende
    6244. \r\n
    6245. Liu Yunqing
    6246. \r\n
    6247. TEDxNashville Inc.
    6248. \r\n
    6249. Leilani V. De Guzman
    6250. \r\n
    6251. Kevin Marsh
    6252. \r\n
    6253. Tomo Popovic
    6254. \r\n
    6255. Edward Schipul
    6256. \r\n
    6257. Jackson Isaac
    6258. \r\n
    6259. Alexandre Figura

    6260. \r\n
    6261. sebastien duthil
    6262. \r\n
    6263. Johannes Linke
    6264. \r\n
    6265. Shantanoo Mahajan
    6266. \r\n
    6267. Gaetan Faucher
    6268. \r\n
    6269. Michael Zielinski
    6270. \r\n
    6271. Victoria Porter
    6272. \r\n
    6273. Parthan Sundararajan Ramanujam
    6274. \r\n
    6275. Christopher Bagdanov
    6276. \r\n
    6277. Christian Hattemer
    6278. \r\n
    6279. Jan Kral

    6280. \r\n
    6281. Larisa Maletz
    6282. \r\n
    6283. Mahesh Fofandi
    6284. \r\n
    6285. Thomas Mortimer-Jones
    6286. \r\n
    6287. Ron Rubin
    6288. \r\n
    6289. Kanaka Shetty
    6290. \r\n
    6291. Lisa Doherty
    6292. \r\n
    6293. Andrés García García
    6294. \r\n
    6295. Rachel Sanders
    6296. \r\n
    6297. Jonah Bossewitch
    6298. \r\n
    6299. WONG Kenneth

    6300. \r\n
    6301. Brian Kreeger
    6302. \r\n
    6303. Thomas Nichols
    6304. \r\n
    6305. Коротеев МакÑим
    6306. \r\n
    6307. Nicolas Geoffroy
    6308. \r\n
    6309. Directemployers Association, Inc.
    6310. \r\n
    6311. Clear Ballot Group
    6312. \r\n
    6313. Ricardo Ichizo
    6314. \r\n
    6315. Michał Bultrowicz
    6316. \r\n
    6317. Jonathan Verrecchia
    6318. \r\n
    6319. David DAHAN

    6320. \r\n
    6321. Mikuláš Poul
    6322. \r\n
    6323. Daniel Rusek
    6324. \r\n
    6325. Mehmet Ali Akmanalp
    6326. \r\n
    6327. Hong MinHee
    6328. \r\n
    6329. Florian Schweikert
    6330. \r\n
    6331. Consuelo Arellano
    6332. \r\n
    6333. PG&E Corporation Foundation
    6334. \r\n
    6335. Aaron Burgess
    6336. \r\n
    6337. Gary Soli
    6338. \r\n
    6339. oliver priester

    6340. \r\n
    6341. Aurimas Pranskevicius
    6342. \r\n
    6343. Daniel Riti
    6344. \r\n
    6345. Nile Geisinger
    6346. \r\n
    6347. Zsolt Ero
    6348. \r\n
    6349. Christopher Simpson
    6350. \r\n
    6351. Michael Tracy
    6352. \r\n
    6353. Law Patrick
    6354. \r\n
    6355. Samuel Okpara
    6356. \r\n
    6357. Michael Bernhard Arp Sørensen
    6358. \r\n
    6359. Naftali Harris

    6360. \r\n
    6361. Yevgeniy Vyacheslavovich Shchemelev
    6362. \r\n
    6363. Dan Dunn
    6364. \r\n
    6365. James Pearson
    6366. \r\n
    6367. Juan Shishido
    6368. \r\n
    6369. Frédéric Maciaszek
    6370. \r\n
    6371. Siddharth Asnani
    6372. \r\n
    6373. Matthew Lefkowitz
    6374. \r\n
    6375. Michael Mattioli
    6376. \r\n
    6377. Philip Adler
    6378. \r\n
    6379. Christopher Campbell

    6380. \r\n
    6381. Jennifer Howard
    6382. \r\n
    6383. Graydon Hoare
    6384. \r\n
    6385. Senan Kelly
    6386. \r\n
    6387. Heroku
    6388. \r\n
    6389. Kyle Scarmardo
    6390. \r\n
    6391. Leah Soriaga
    6392. \r\n
    6393. Louis Filardi
    6394. \r\n
    6395. Anna Wszeborowska
    6396. \r\n
    6397. Daniel Bokor
    6398. \r\n
    6399. Paul Tagliamonte

    6400. \r\n
    6401. Julie Buchan
    6402. \r\n
    6403. Aroldo Souza-Leite
    6404. \r\n
    6405. Jason blum
    6406. \r\n
    6407. Troy Ponthieux
    6408. \r\n
    6409. John Fitch
    6410. \r\n
    6411. Jose Alexsandro Sobral de Freitas
    6412. \r\n
    6413. Andrew Kittredge
    6414. \r\n
    6415. Tomasz Przydatek HEIMA
    6416. \r\n
    6417. Leah Jones
    6418. \r\n
    6419. Joseph Cardenas

    6420. \r\n
    6421. Bill Schroeder
    6422. \r\n
    6423. Ian Bellamy
    6424. \r\n
    6425. Ilya Karasev
    6426. \r\n
    6427. Радченко ИльÑ
    6428. \r\n
    6429. Matthew Montgomery
    6430. \r\n
    6431. Jacques Woodcock
    6432. \r\n
    6433. Bertrand Cachet
    6434. \r\n
    6435. Storybird Inc.
    6436. \r\n
    6437. Glenn Franxman
    6438. \r\n
    6439. Rick Hubbard

    6440. \r\n
    6441. Stephen Howard McMahon
    6442. \r\n
    6443. МаÑловÑкий Ðртём
    6444. \r\n
    6445. Ben Hughes
    6446. \r\n
    6447. Reggie Dugard
    6448. \r\n
    6449. Alon Altman
    6450. \r\n
    6451. Google Matching Gifts
    6452. \r\n
    6453. Thomas Stratton
    6454. \r\n
    6455. Abhijit Patkar
    6456. \r\n
    6457. Cabinet dentaire Fran�ois RICHARD
    6458. \r\n
    6459. Bingyan Liu

    6460. \r\n
    6461. EuroPython 2012 Sponsored Massage
    6462. \r\n
    6463. Angie's List
    6464. \r\n
    6465. Domi Barton
    6466. \r\n
    6467. Djoko Soelarno A
    6468. \r\n
    6469. Patrick Winkler
    6470. \r\n
    6471. Allen Riddell
    6472. \r\n
    6473. Daniel Williams
    6474. \r\n
    6475. Daniel Greenfeld
    6476. \r\n
    6477. Fernando Gutierrez
    6478. \r\n
    6479. Robert B Liverman

    6480. \r\n
    6481. Marcelo Grafulha Vanti
    6482. \r\n
    6483. Cezary Statkiewicz
    6484. \r\n
    6485. Bar Goueta
    6486. \r\n
    6487. Henrik Kramsh�j
    6488. \r\n
    6489. Michael Schultz
    6490. \r\n
    6491. CENTRO SUPERIOR IUDICEM INNOVA PROFESIONAL CENTRO TECNICO
    6492. \r\n
    6493. Robert Kluin
    6494. \r\n
    6495. Pradhan Kumar
    6496. \r\n
    6497. Tarek Ziade
    6498. \r\n
    6499. Roman Danilov

    6500. \r\n
    6501. Wallace McMartin
    6502. \r\n
    6503. Dave Rankin
    6504. \r\n
    6505. Reed O'Brien
    6506. \r\n
    6507. Julien Thebault
    6508. \r\n
    6509. William Thibodeau
    6510. \r\n
    6511. Toshichika Fujita
    6512. \r\n
    6513. Maxime Guerreiro
    6514. \r\n
    6515. Kiril Reznikovsky
    6516. \r\n
    6517. Noah Kantrowitz
    6518. \r\n
    6519. James Bennett

    6520. \r\n
    6521. Continuum Analytics, Inc.
    6522. \r\n
    6523. Jessica Mong
    6524. \r\n
    6525. Christa Humber
    6526. \r\n
    6527. Adam Glasall
    6528. \r\n
    6529. Li Xiang
    6530. \r\n
    6531. Nils Pascal Illenseer
    6532. \r\n
    6533. Thumbtack, Inc.
    6534. \r\n
    6535. Chan Tin Tsun
    6536. \r\n
    6537. Paul Honig
    6538. \r\n
    6539. Steve Heyman

    6540. \r\n
    6541. พิชัย เลิศวชิรà¸à¸¸à¸¥
    6542. \r\n
    6543. Paul McLanahan
    6544. \r\n
    6545. Caroline Simpson
    6546. \r\n
    6547. Erika Klein
    6548. \r\n
    6549. Chris Bradfield
    6550. \r\n
    6551. John Kotz
    6552. \r\n
    6553. eBay Matching Gifts
    6554. \r\n
    6555. Dmitry Chichkov
    6556. \r\n
    6557. Colin Alston
    6558. \r\n
    6559. Tim Martin

    6560. \r\n
    6561. William Alexander
    6562. \r\n
    6563. pierre gronlier
    6564. \r\n
    6565. Ryan Kulla
    6566. \r\n
    6567. Daniil Boykis
    6568. \r\n
    6569. PyCon Donation
    6570. \r\n
    6571. brian wickman
    6572. \r\n
    6573. Josivaldo G. Silva
    6574. \r\n
    6575. Flavio B Diomede
    6576. \r\n
    6577. Brian Lee Costlow
    6578. \r\n
    6579. DIMITRIOS MAKROPOULOS

    6580. \r\n
    6581. Chris Shenton
    6582. \r\n
    6583. Morten Lind
    6584. \r\n
    6585. Jim Palmer
    6586. \r\n
    6587. Benjamin Crom
    6588. \r\n
    6589. Elizabeth Rush
    6590. \r\n
    6591. Steven Myint
    6592. \r\n
    6593. Lakshminarayana Motamarri
    6594. \r\n
    6595. Marcelo Moreira de Mello
    6596. \r\n
    6597. Mohamed Khalil
    6598. \r\n
    6599. Richard Beier

    6600. \r\n
    6601. Nicola Iarocci
    6602. \r\n
    6603. Lukas Prokop
    6604. \r\n
    6605. Thomas Heller
    6606. \r\n
    6607. ryan kulla
    6608. \r\n
    6609. Tian Zhi
    6610. \r\n
    6611. aaron henderson
    6612. \r\n
    6613. Bob
    6614. \r\n
    6615. Stephan Deibel
    6616. \r\n
    6617. Shannon Behrens
    6618. \r\n
    6619. R Michael Perry

    6620. \r\n
    6621. Alexander Coco
    6622. \r\n
    6623. Jesse Dubay
    6624. \r\n
    6625. Greg Toombs
    6626. \r\n
    6627. Rupesh Pradhan
    6628. \r\n
    6629. ETIENNE SALIEZ
    6630. \r\n
    6631. Isaac Gerg
    6632. \r\n
    6633. Philippe Gauthier
    6634. \r\n
    6635. Jim Sturdivant
    6636. \r\n
    6637. Richard Floyd
    6638. \r\n
    6639. Stein Palmer

    6640. \r\n
    6641. Eric Bauer
    6642. \r\n
    6643. Joseph Pyott
    6644. \r\n
    6645. Kitware, Inc.
    6646. \r\n
    6647. Christopher Simpkins
    6648. \r\n
    6649. Revolution Systems, LLC
    6650. \r\n
    6651. Liene Verzemnieks
    6652. \r\n
    6653. Josh Marshall
    6654. \r\n
    6655. Alexander Gaynor
    6656. \r\n
    6657. åˆ å­è±ª
    6658. \r\n
    6659. Samar Agrawal

    6660. \r\n
    6661. David Cleary
    6662. \r\n
    6663. SpiderOak, Inc
    6664. \r\n
    6665. Jason K�lker
    6666. \r\n
    6667. Will Shanks
    6668. \r\n
    6669. Vincent LEFOULON
    6670. \r\n
    6671. Yannick Gingras
    6672. \r\n
    6673. Nassim Gannoun
    6674. \r\n
    6675. Judith Repp
    6676. \r\n
    6677. Firelight Webware LLC
    6678. \r\n
    6679. Víðir Valberg Gudmundsson

    6680. \r\n
    6681. John Barbuto
    6682. \r\n
    6683. Sean Quinn
    6684. \r\n
    6685. Rachid Belaid
    6686. \r\n
    6687. wangsitan wangsitan
    6688. \r\n
    6689. Michael Gasser
    6690. \r\n
    6691. 温 业民
    6692. \r\n
    6693. Johnathan Lee Bingham
    6694. \r\n
    6695. Gruschow Foundation
    6696. \r\n
    6697. Ruslan Kiyanchuk
    6698. \r\n
    6699. Paweł Adamczak

    6700. \r\n
    6701. Frazer McLean
    6702. \r\n
    6703. Christine Rehm
    6704. \r\n
    6705. Jonathan Hill
    6706. \r\n
    6707. Stuart Levinson
    6708. \r\n
    6709. Francisco Gracia
    6710. \r\n
    6711. Karsten Franke
    6712. \r\n
    6713. LI BO
    6714. \r\n
    6715. Simply Maco
    6716. \r\n
    6717. albert kim
    6718. \r\n
    6719. Gabriel Camargo

    6720. \r\n
    6721. Greg Albrecht
    6722. \r\n
    6723. chernomirdin macuvele
    6724. \r\n
    6725. Nagarjuna Venna
    6726. \r\n
    6727. Mathieu Leduc-Hamel
    6728. \r\n
    6729. Daniel Pope
    6730. \r\n
    6731. Rob Kennedy
    6732. \r\n
    6733. Jon Seger
    6734. \r\n
    6735. Raul Taranu
    6736. \r\n
    6737. Michael Greene
    6738. \r\n
    6739. Katheryn Farris

    6740. \r\n
    6741. Grayson Chao
    6742. \r\n
    6743. Yuyin Him
    6744. \r\n
    6745. Nick Lang
    6746. \r\n
    6747. Christopher Neugebauer
    6748. \r\n
    6749. Curt Fiedler
    6750. \r\n
    6751. Lacey Williams
    6752. \r\n
    6753. Jon Henner
    6754. \r\n
    6755. kevin spleid
    6756. \r\n
    6757. Lisa Crispin
    6758. \r\n
    6759. Leah Culver

    6760. \r\n
    6761. Jay Parlar
    6762. \r\n
    6763. Catherine Allman
    6764. \r\n
    6765. William Lubanovic
    6766. \r\n
    6767. Simon LALIMAN
    6768. \r\n
    6769. Jeremy Lujan
    6770. \r\n
    6771. TOYOTA DAIGO
    6772. \r\n
    6773. George Schneeloch
    6774. \r\n
    6775. William Rutledge
    6776. \r\n
    6777. John Camara
    6778. \r\n
    6779. Manfred Huber

    6780. \r\n
    6781. Yannick Breton
    6782. \r\n
    6783. Delta-X Research Inc
    6784. \r\n
    6785. Ricardo Cerqueira
    6786. \r\n
    6787. Benjamin Paxton
    6788. \r\n
    6789. Ray M Leyva
    6790. \r\n
    6791. Stacy Cunningham
    6792. \r\n
    6793. Scott Burns
    6794. \r\n
    6795. Heinz Pommer
    6796. \r\n
    6797. Bikineyev Shamil
    6798. \r\n
    6799. Melissa Cirtain

    6800. \r\n
    6801. WILLIAM COWAN
    6802. \r\n
    6803. Kimberley Lawrence
    6804. \r\n
    6805. æ¨ æ²ç‘
    6806. \r\n
    6807. Jim Paul Belgado
    6808. \r\n
    6809. 陈 群
    6810. \r\n
    6811. Taehun Kim
    6812. \r\n
    6813. Seth Rosen
    6814. \r\n
    6815. Pro Flex
    6816. \r\n
    6817. John Niemi
    6818. \r\n
    6819. mathieu perrenoud

    6820. \r\n
    6821. Gabriel Pirvan
    6822. \r\n
    6823. christian horne
    6824. \r\n
    6825. Annie-Claude C�t�
    6826. \r\n
    6827. lucas alves
    6828. \r\n
    6829. christian bergmann
    6830. \r\n
    6831. Aimee Langmaid
    6832. \r\n
    6833. Michael Schramke
    6834. \r\n
    6835. Lev Trubach
    6836. \r\n
    6837. Paul McNett
    6838. \r\n
    6839. James Dozier

    6840. \r\n
    6841. Arthur Gibson
    6842. \r\n
    6843. Stefan Hesse
    6844. \r\n
    6845. ZHANG FEI
    6846. \r\n
    6847. Micheal Beatty
    6848. \r\n
    6849. Barry Pederson
    6850. \r\n
    6851. Yao Heling
    6852. \r\n
    6853. Rory Campbell-Lange
    6854. \r\n
    6855. Ayun Park
    6856. \r\n
    6857. Marko Antoncic
    6858. \r\n
    6859. Michelle Funk

    6860. \r\n
    6861. Dr. Doris Helene Fuertinger
    6862. \r\n
    6863. Michael 227 Satinwood Avenue Taylor
    6864. \r\n
    6865. Lorenzo Franceschini
    6866. \r\n
    6867. John Mullin
    6868. \r\n
    6869. Mihkel Tael
    6870. \r\n
    6871. Aprigo, Inc.
    6872. \r\n
    6873. Gil Zimmermann
    6874. \r\n
    6875. paul haeberli
    6876. \r\n
    6877. Eric Ma
    6878. \r\n
    6879. Gianni-Lauritz Grubert

    6880. \r\n
    6881. Cristian Catellani
    6882. \r\n
    6883. Andrew Winterman
    6884. \r\n
    6885. Lisa Miller
    6886. \r\n
    6887. Evan Gary
    6888. \r\n
    6889. Paul Mountford
    6890. \r\n
    6891. Aaron Held
    6892. \r\n
    6893. Joshua Tauberer
    6894. \r\n
    6895. Joon Suk Lee
    6896. \r\n
    6897. Darrin McCarthy
    6898. \r\n
    6899. Lina Wadi

    6900. \r\n
    6901. Bogdan Sergiu Dragos
    6902. \r\n
    6903. Stefan Bergmann
    6904. \r\n
    6905. Jose Estevez
    6906. \r\n
    6907. Fidel Leon
    6908. \r\n
    6909. Alicia Valin
    6910. \r\n
    6911. 樊 æ•
    6912. \r\n
    6913. Adrian Belanger
    6914. \r\n
    6915. Olaf Kayser
    6916. \r\n
    6917. Stephen McCrea
    6918. \r\n
    6919. Bent Claus Christian Kj�r

    6920. \r\n
    6921. Wyatt Walter
    6922. \r\n
    6923. Maxime Lorant
    6924. \r\n
    6925. Peter Hoz�k
    6926. \r\n
    6927. Courtney Correll
    6928. \r\n
    6929. Michael Auritt
    6930. \r\n
    6931. John O'Brien
    6932. \r\n
    6933. Louis-Bertrand Varin
    6934. \r\n
    6935. Metametrics
    6936. \r\n
    6937. RICHARD ALTIMAS
    6938. \r\n
    6939. Timothy Allen

    6940. \r\n
    6941. Zhao Zhang
    6942. \r\n
    6943. sukhmandeep sandhu
    6944. \r\n
    6945. Robert Kemmetmueller
    6946. \r\n
    6947. Regina Dowdell
    6948. \r\n
    6949. steve ulrich
    6950. \r\n
    6951. Alejandro Cabrera
    6952. \r\n
    6953. Zhuodong He
    6954. \r\n
    6955. Terry Simons
    6956. \r\n
    6957. avi maman
    6958. \r\n
    6959. Jonathan Haddad

    6960. \r\n
    6961. Microsoft Matching Gifts Program
    6962. \r\n
    6963. EuroPython 2011 Sponsored Massage
    6964. \r\n
    6965. Jamie McArdle
    6966. \r\n
    6967. Sean True
    6968. \r\n
    6969. Gabriel Trautmann
    6970. \r\n
    6971. Маланчев КонÑтантин
    6972. \r\n
    6973. Lars-Olav Pettersen
    6974. \r\n
    6975. Xavier Monfort Faure
    6976. \r\n
    6977. Carol Willing
    6978. \r\n
    6979. Alexander Dorsk

    6980. \r\n
    6981. Derek Willis
    6982. \r\n
    6983. MICHAEL PEMBERTON
    6984. \r\n
    6985. Robert Tian
    6986. \r\n
    6987. Kenneth Love
    6988. \r\n
    6989. Nenad Andric
    6990. \r\n
    6991. Alec Mitchell
    6992. \r\n
    6993. Bert de Miranda
    6994. \r\n
    6995. Tagschema
    6996. \r\n
    6997. Aleksandra Klapcinska
    6998. \r\n
    6999. Raul Garza

    7000. \r\n
    7001. Philip Huggins
    7002. \r\n
    7003. Content Creature
    7004. \r\n
    7005. ì§€ì˜ ìœ¤
    7006. \r\n
    7007. Olga Botvinnik
    7008. \r\n
    7009. Kelly Shalk
    7010. \r\n
    7011. Joel Garza
    7012. \r\n
    7013. Stephen Childs
    7014. \r\n
    7015. JiYun Kim
    7016. \r\n
    7017. Roman Gladkov
    7018. \r\n
    7019. Ryan Derry

    7020. \r\n
    7021. david Larsen
    7022. \r\n
    7023. George Cook
    7024. \r\n
    7025. Zachary Voase
    7026. \r\n
    7027. Richard Ruh
    7028. \r\n
    7029. Adam Lindsay
    7030. \r\n
    7031. Paolo Di Paolantonio
    7032. \r\n
    7033. Panya Suwan
    7034. \r\n
    7035. Nigel Dunn
    7036. \r\n
    7037. Brian Robinson
    7038. \r\n
    7039. Anthony Munro

    7040. \r\n
    7041. Sebastien Renard
    7042. \r\n
    7043. Todd Minehardt
    7044. \r\n
    7045. Thomas Nesbit
    7046. \r\n
    7047. New Relic, Inc.
    7048. \r\n
    7049. Addy Yeow
    7050. \r\n
    7051. Benjamin Sloboda
    7052. \r\n
    7053. Berard Patrick McLaughlin
    7054. \r\n
    7055. Django Software Foundation
    7056. \r\n
    7057. Mark Groves
    7058. \r\n
    7059. William Henry Lyne

    7060. \r\n
    7061. The UNIX Man Consulting, LLC
    7062. \r\n
    7063. Edgar Aroutiounian
    7064. \r\n
    7065. Antonio Tapia
    7066. \r\n
    7067. William Lyne
    7068. \r\n
    7069. David Smatlak
    7070. \r\n
    7071. Charles Reynolds
    7072. \r\n
    7073. Richard Shea
    7074. \r\n
    7075. Menno Smits
    7076. \r\n
    7077. Miriam Lauter
    7078. \r\n
    7079. Jeong-Hee Kang

    7080. \r\n
    7081. Ruben Rodriguez
    7082. \r\n
    7083. Milan Prpic
    7084. \r\n
    7085. Elburz Sorkhabi
    7086. \r\n
    7087. Daniel Harris
    7088. \r\n
    7089. Andrew Gorcester
    7090. \r\n
    7091. Harlan Hile
    7092. \r\n
    7093. PyCon Ireland
    7094. \r\n
    7095. 周 维
    7096. \r\n
    7097. DMITRIY PERLOW
    7098. \r\n
    7099. Robert Meagher

    7100. \r\n
    7101. Timo W�rsch
    7102. \r\n
    7103. Deborah Nicholson
    7104. \r\n
    7105. W GEENE
    7106. \r\n
    7107. GiryaScope Kettlebell
    7108. \r\n
    7109. Luke Crouch
    7110. \r\n
    7111. Jack Diederich
    7112. \r\n
    7113. Vijay Phadke
    7114. \r\n
    7115. Nemanja Kundovic
    7116. \r\n
    7117. Noé Alberto Reyes Guerra
    7118. \r\n
    7119. Robert Kestner

    7120. \r\n
    7121. R Gulati
    7122. \r\n
    7123. Yoav Shapira
    7124. \r\n
    7125. EuroPython 2010 Sponsored Massage
    7126. \r\n
    7127. Christopher Ritter
    7128. \r\n
    7129. Pierrick Boitel
    7130. \r\n
    7131. Karl Obermeyer
    7132. \r\n
    7133. Spokane Data Recovery
    7134. \r\n
    7135. Jesus Del Carpio
    7136. \r\n
    7137. Stephen Waterbury
    7138. \r\n
    7139. Michelle Tran

    7140. \r\n
    7141. Jorge Lav�n Gonz�lez
    7142. \r\n
    7143. Bart den Ouden
    7144. \r\n
    7145. Robyn Wagner, Esq.
    7146. \r\n
    7147. 潘 永之
    7148. \r\n
    7149. Kurt Griffiths
    7150. \r\n
    7151. Mathieu Guay-Paquet
    7152. \r\n
    7153. Jeong-Hwan Kwak
    7154. \r\n
    7155. Rogelio Nájera Rodríguez
    7156. \r\n
    7157. Alexander Perkins
    7158. \r\n
    7159. Howard Haimovitch

    7160. \r\n
    7161. Жильцов Дмитрий
    7162. \r\n
    7163. Julian Krause
    7164. \r\n
    7165. Erin Shellman
    7166. \r\n
    7167. Paul Krieger
    7168. \r\n
    7169. Dysart Creative
    7170. \r\n
    7171. Stephen McDonald
    7172. \r\n
    7173. Harold Smith
    7174. \r\n
    7175. Marcel Dahle
    7176. \r\n
    7177. Habib Khan
    7178. \r\n
    7179. Taras Voinarovskyi

    7180. \r\n
    7181. Firas Wehbe
    7182. \r\n
    7183. R David Coryell
    7184. \r\n
    7185. Jason Centino
    7186. \r\n
    7187. Patrick Stegmann
    7188. \r\n
    7189. Тихонов Юлий
    7190. \r\n
    7191. Jakub Ruzicka
    7192. \r\n
    7193. mazhalai chellathurai
    7194. \r\n
    7195. Andrew Ritz
    7196. \r\n
    7197. Steven Buss
    7198. \r\n
    7199. Matt Zimmerman

    7200. \r\n
    7201. MR C R FOOTE
    7202. \r\n
    7203. David Rasch
    7204. \r\n
    7205. å´ æ˜Šå¤©
    7206. \r\n
    7207. William Duncan
    7208. \r\n
    7209. adam sah
    7210. \r\n
    7211. Dan Horn
    7212. \r\n
    7213. Asang Dani
    7214. \r\n
    7215. Rocky Meza
    7216. \r\n
    7217. Sean Bradley
    7218. \r\n
    7219. Angel Hernandez

    7220. \r\n
    7221. Joseph Mulhern
    7222. \r\n
    7223. Ricardo Banffy
    7224. \r\n
    7225. Ruairi Newman
    7226. \r\n
    7227. Samy Zafrany
    7228. \r\n
    7229. Steven Landman
    7230. \r\n
    7231. David K Lam
    7232. \r\n
    7233. Mauricio Cleveland
    7234. \r\n
    7235. Jodi Havranek
    7236. \r\n
    7237. Amir Tarighat
    7238. \r\n
    7239. Christopher George Abiad

    7240. \r\n
    7241. Jennifer Selby
    7242. \r\n
    7243. Python Extra
    7244. \r\n
    7245. Alexey Nedyuzhev
    7246. \r\n
    7247. ThoughtAfter LLC
    7248. \r\n
    7249. Peter J Farrell
    7250. \r\n
    7251. Matthew Woodward
    7252. \r\n
    7253. Gnanaprabhu Gnanam
    7254. \r\n
    7255. Jeremy Kelley
    7256. \r\n
    7257. Eric Chou
    7258. \r\n
    7259. Frank Hillier

    7260. \r\n
    7261. Christian Theune
    7262. \r\n
    7263. Erick Oliveira
    7264. \r\n
    7265. Brian Costlow
    7266. \r\n
    7267. Christine Bullock
    7268. \r\n
    7269. Harold Vogel
    7270. \r\n
    7271. William Zingler
    7272. \r\n
    7273. Brian Curtin
    7274. \r\n
    7275. peter ford
    7276. \r\n
    7277. Sasha Mendez
    7278. \r\n
    7279. Marcus Bertrand

    7280. \r\n
    7281. Stephen Spector
    7282. \r\n
    7283. Gagan Sikri
    7284. \r\n
    7285. Leslie Salazar
    7286. \r\n
    7287. Lee Kulberda
    7288. \r\n
    7289. Jeffrey Butler
    7290. \r\n
    7291. Christopher Santoro
    7292. \r\n
    7293. Susan Walker
    7294. \r\n
    7295. Mtthew Kyle
    7296. \r\n
    7297. Mark Molitor
    7298. \r\n
    7299. Margaret Hartmann

    7300. \r\n
    7301. Brendan McGeehan
    7302. \r\n
    7303. Shannon Hook
    7304. \r\n
    7305. Jacqueline Hawkins
    7306. \r\n
    7307. Linda Daniels
    7308. \r\n
    7309. Karl Martino
    7310. \r\n
    7311. Cortney Buffington
    7312. \r\n
    7313. Myopia Music
    7314. \r\n
    7315. Bryan Grimes
    7316. \r\n
    7317. Potato
    7318. \r\n
    7319. Philip Simmons

    7320. \r\n
    7321. Harish Sethu
    7322. \r\n
    7323. Denise Tremblay
    7324. \r\n
    7325. David Grizzanti
    7326. \r\n
    7327. Shashwat Anand
    7328. \r\n
    7329. Grant Bowman
    7330. \r\n
    7331. Arthur Neuman
    7332. \r\n
    7333. Allie Meng
    7334. \r\n
    7335. Euan Hayward
    7336. \r\n
    7337. Gerard SWINNEN
    7338. \r\n
    7339. Thomas Janofsky

    7340. \r\n
    7341. Roy Racer
    7342. \r\n
    7343. Orly Zeewy
    7344. \r\n
    7345. James Shulman
    7346. \r\n
    7347. sally vassalotti
    7348. \r\n
    7349. Kara Rennert
    7350. \r\n
    7351. Dana Bauer
    7352. \r\n
    7353. Loic Duros
    7354. \r\n
    7355. Mark Schulhof
    7356. \r\n
    7357. Amanda Clark
    7358. \r\n
    7359. riccardo ghetta

    7360. \r\n
    7361. Pierre Vernier
    7362. \r\n
    7363. Pierre BOIZOT
    7364. \r\n
    7365. Andreas Fackler
    7366. \r\n
    7367. David Martinez
    7368. \r\n
    7369. Mark Sunnucks
    7370. \r\n
    7371. Tristan Harward
    7372. \r\n
    7373. Mathias Bavay
    7374. \r\n
    7375. Johan Appelgren
    7376. \r\n
    7377. Inovica Ltd
    7378. \r\n
    7379. Edward Hodapp

    7380. \r\n
    7381. Bruno BARBIER
    7382. \r\n
    7383. Josh Sarver
    7384. \r\n
    7385. Helge Aksdal
    7386. \r\n
    7387. Todd Ogin
    7388. \r\n
    7389. Esir Pavel
    7390. \r\n
    7391. Pedro Luis Garc�a Alonso
    7392. \r\n
    7393. Alyssa Batula
    7394. \r\n
    7395. Vlasenko Andrey
    7396. \r\n
    7397. Chris Thorpe
    7398. \r\n
    7399. Nathan Miller

    7400. \r\n
    7401. Adrian Lasconi
    7402. \r\n
    7403. Tyler McGinnis
    7404. \r\n
    7405. Jason Sexauer
    7406. \r\n
    7407. Donna St. Louis
    7408. \r\n
    7409. Sean Kennedy
    7410. \r\n
    7411. Liza Chen
    7412. \r\n
    7413. Jane Eisenstein
    7414. \r\n
    7415. Ethan McCreadie
    7416. \r\n
    7417. Chad Nelson
    7418. \r\n
    7419. Steven Burnett

    7420. \r\n
    7421. Eric Vernichon
    7422. \r\n
    7423. Yelena Kushleyeva
    7424. \r\n
    7425. Sarah Gray
    7426. \r\n
    7427. John Campbell
    7428. \r\n
    7429. Casey Thomas
    7430. \r\n
    7431. Briana Morgan
    7432. \r\n
    7433. Shantanu Mahajan
    7434. \r\n
    7435. Comic Vs. Audience
    7436. \r\n
    7437. Mark Schrauwen
    7438. \r\n
    7439. Howard R Hansen

    7440. \r\n
    7441. Manuel Martinez
    7442. \r\n
    7443. DVASS SP and DVINC
    7444. \r\n
    7445. Afonso Haruo Carnielli Mukai
    7446. \r\n
    7447. Bulent Sahin
    7448. \r\n
    7449. Gregory Edwards
    7450. \r\n
    7451. Dmitry Ovchinnikov
    7452. \r\n
    7453. Neil Abrahams
    7454. \r\n
    7455. Ðполлов Юрий
    7456. \r\n
    7457. Richard Ames
    7458. \r\n
    7459. Ingmar Lei�e

    7460. \r\n
    7461. Simon Arlott
    7462. \r\n
    7463. Thiago Avelino
    7464. \r\n
    7465. Stephen Bridgett
    7466. \r\n
    7467. Reford Still
    7468. \r\n
    7469. anatoly techtonik
    7470. \r\n
    7471. Andrew Thomas
    7472. \r\n
    7473. Lukas Blakk
    7474. \r\n
    7475. Thomas Hermann Handtmann
    7476. \r\n
    7477. Brody Robertson
    7478. \r\n
    7479. Jongho Lee

    7480. \r\n
    7481. Nick Coghlan
    7482. \r\n
    7483. 张 邦全
    7484. \r\n
    7485. Rachel Sanders
    7486. \r\n
    7487. Richard Harding
    7488. \r\n
    7489. Pieter van der Walt
    7490. \r\n
    7491. James King
    7492. \r\n
    7493. robert messemer
    7494. \r\n
    7495. john morrow
    7496. \r\n
    7497. emily williamson
    7498. \r\n
    7499. aurynn shaw

    7500. \r\n
    7501. William Smith
    7502. \r\n
    7503. Ted Landis
    7504. \r\n
    7505. Shilpa Apte
    7506. \r\n
    7507. Sarah Kelley
    7508. \r\n
    7509. Rebecca Standig
    7510. \r\n
    7511. Moon Limb
    7512. \r\n
    7513. Matthew Drover
    7514. \r\n
    7515. Maria Teresa Gim�nez Fayos
    7516. \r\n
    7517. Marcin Swiatek
    7518. \r\n
    7519. Kristofer White

    7520. \r\n
    7521. Katherine Daniels
    7522. \r\n
    7523. Jyrki Pulliainen
    7524. \r\n
    7525. Janina Szkut
    7526. \r\n
    7527. Filip Sufitchi
    7528. \r\n
    7529. Fernando Masanori Ashikaga
    7530. \r\n
    7531. Clinton Roy
    7532. \r\n
    7533. Cindy Pallares-Quezada
    7534. \r\n
    7535. Cara Jo Miller
    7536. \r\n
    7537. Cameron Maske
    7538. \r\n
    7539. Anja boskovic

    7540. \r\n
    7541. Andrea Villanes
    7542. \r\n
    7543. John delos Reyes
    7544. \r\n
    7545. Timo Rossi
    7546. \r\n
    7547. Tyler Neylon
    7548. \r\n
    7549. Sævar
    7550. \r\n
    7551. Riccardo Vianello
    7552. \r\n
    7553. Erez Gottlieb
    7554. \r\n
    7555. Erik Bray
    7556. \r\n
    7557. greg albrecht
    7558. \r\n
    7559. Christophe Courtois

    7560. \r\n
    7561. Erik Rahlen
    7562. \r\n
    7563. James Luscher
    7564. \r\n
    7565. Gerry Piaget
    7566. \r\n
    7567. WebReply Inc
    7568. \r\n
    7569. Matthew Spencer
    7570. \r\n
    7571. Silvers Networks LLC
    7572. \r\n
    7573. John Baldwin
    7574. \r\n
    7575. jani sanjaya
    7576. \r\n
    7577. Daniel Zemke
    7578. \r\n
    7579. Paul Baines

    7580. \r\n
    7581. Bob Skala
    7582. \r\n
    7583. Grigoriy Krimer
    7584. \r\n
    7585. woog, jennifer
    7586. \r\n
    7587. Leo Franchi
    7588. \r\n
    7589. Katel LeDu
    7590. \r\n
    7591. Andreas H�rpfer
    7592. \r\n
    7593. Joshua Gourneau
    7594. \r\n
    7595. Mark Colby
    7596. \r\n
    7597. Chris Overfield
    7598. \r\n
    7599. Harry

    7600. \r\n
    7601. Matt Sayler
    7602. \r\n
    7603. Jonathan Katz
    7604. \r\n
    7605. Eric Sipple
    7606. \r\n
    7607. Ognian Dimitrov Ivanov
    7608. \r\n
    7609. Joaqu�n Planells Lerma
    7610. \r\n
    7611. Jannis Leidel
    7612. \r\n
    7613. Alain Carbonneau
    7614. \r\n
    7615. Sebastian Graf
    7616. \r\n
    7617. МуÑин Булат
    7618. \r\n
    7619. Matt Olsen

    7620. \r\n
    7621. Hugo Montoya Diaz
    7622. \r\n
    7623. Kenneth Armstrong
    7624. \r\n
    7625. Sandro Skansi
    7626. \r\n
    7627. Gustavo Lima da Luz
    7628. \r\n
    7629. Darren Fix
    7630. \r\n
    7631. Jens Thomas
    7632. \r\n
    7633. Fei Qi
    7634. \r\n
    7635. Shavkat Nizamov
    7636. \r\n
    7637. Steven Jonker
    7638. \r\n
    7639. Diana Clarke

    7640. \r\n
    7641. Resonon, Inc
    7642. \r\n
    7643. Aaron Lav
    7644. \r\n
    7645. Simon Beckerman
    7646. \r\n
    7647. Токарев Михаил
    7648. \r\n
    7649. Sam Vilain
    7650. \r\n
    7651. Mark Anderson
    7652. \r\n
    7653. ÐлекÑандр ЗаÑц
    7654. \r\n
    7655. Rocha Management LLC
    7656. \r\n
    7657. Patrick EVRARD
    7658. \r\n
    7659. Dwight Hubbard

    7660. \r\n
    7661. Adam Albrechtas
    7662. \r\n
    7663. Josip Delic
    7664. \r\n
    7665. Derek McWilliams
    7666. \r\n
    7667. Jonathan Leicher
    7668. \r\n
    7669. Ryan Webb
    7670. \r\n
    7671. Ranjith Reddy Deena Bandulu
    7672. \r\n
    7673. Jason Kelly
    7674. \r\n
    7675. Mike Allen
    7676. \r\n
    7677. SARAVANAN SIVASWAMY
    7678. \r\n
    7679. Eduardo Barros

    7680. \r\n
    7681. Elettrocomm Sas di Lagan� e Cordioli
    7682. \r\n
    7683. Zane Bassett
    7684. \r\n
    7685. Evergreen Online Limited
    7686. \r\n
    7687. Sharon Wong
    7688. \r\n
    7689. Kostakov Andrey
    7690. \r\n
    7691. JESSICA MCKELLAR
    7692. \r\n
    7693. Gabriel Rodr�guez Alberich
    7694. \r\n
    7695. Ivelin Djantov
    7696. \r\n
    7697. robert mcdonald
    7698. \r\n
    7699. 王 文沛

    7700. \r\n
    7701. Maximo Pech Jaramillo
    7702. \r\n
    7703. Åukasz Mierzwa
    7704. \r\n
    7705. Григорий КоÑтюк
    7706. \r\n
    7707. Richard Blumberg
    7708. \r\n
    7709. See Wei Ooi
    7710. \r\n
    7711. Saurabh Belsare
    7712. \r\n
    7713. Rob Nichols
    7714. \r\n
    7715. Samuel Allen
    7716. \r\n
    7717. Joseph Copp
    7718. \r\n
    7719. 刘 凯

    7720. \r\n
    7721. Maxime GRANDCOLAS
    7722. \r\n
    7723. Seung Hyo Seo
    7724. \r\n
    7725. Pete Higgins
    7726. \r\n
    7727. Niclas Darville
    7728. \r\n
    7729. Maia Bittner
    7730. \r\n
    7731. Jane Ruffino
    7732. \r\n
    7733. Guy Hindle
    7734. \r\n
    7735. Ari Blenkhorn
    7736. \r\n
    7737. Zhiming Wang
    7738. \r\n
    7739. Andreas Dr Riemann

    7740. \r\n
    7741. Diana Clarke
    7742. \r\n
    7743. joe copp
    7744. \r\n
    7745. Michael Sch�nw�lder
    7746. \r\n
    7747. Jozef Maceka
    7748. \r\n
    7749. young lee
    7750. \r\n
    7751. Ievgenii Vdovenko
    7752. \r\n
    7753. Alex Couper
    7754. \r\n
    7755. Bryan Lane
    7756. \r\n
    7757. Ranjan Grover
    7758. \r\n
    7759. Alex Vorndran

    7760. \r\n
    7761. Jean Shanks
    7762. \r\n
    7763. Andreas Jung
    7764. \r\n
    7765. Justin Myers
    7766. \r\n
    7767. Alfredo Kojima
    7768. \r\n
    7769. Barron Snyder
    7770. \r\n
    7771. ALFONSO BACIERO ADRADOS
    7772. \r\n
    7773. Matthew Boehm
    7774. \r\n
    7775. James Reese
    7776. \r\n
    7777. Maarten Zaanen
    7778. \r\n
    7779. Wolfram Wiedner

    7780. \r\n
    7781. Parinya Rungrodesuwan
    7782. \r\n
    7783. Luis Osa
    7784. \r\n
    7785. Arnd Ludwig
    7786. \r\n
    7787. Mark Draelos
    7788. \r\n
    7789. Thomas Hochstein
    7790. \r\n
    7791. Pablo RUTH
    7792. \r\n
    7793. Julien Konczak
    7794. \r\n
    7795. Eino Makitalo
    7796. \r\n
    7797. Frank Demarco
    7798. \r\n
    7799. Sebastian Tennant

    7800. \r\n
    7801. Peter Landgren
    7802. \r\n
    7803. Eric Mill
    7804. \r\n
    7805. Cole Yarbor
    7806. \r\n
    7807. McGilvra Engineering
    7808. \r\n
    7809. Mark Shroyer
    7810. \r\n
    7811. Nancy Abi Root
    7812. \r\n
    7813. Max Lekomcev
    7814. \r\n
    7815. Grishkin Maxim
    7816. \r\n
    7817. Fadi Samara
    7818. \r\n
    7819. Eddie Penninkhof

    7820. \r\n
    7821. Demeshkin Ivan
    7822. \r\n
    7823. Andr�s Veres-Szentkir�lyi
    7824. \r\n
    7825. wolfgang teschner
    7826. \r\n
    7827. Sanjay Velamparambil
    7828. \r\n
    7829. Rome Reginelli
    7830. \r\n
    7831. Marco Caresia
    7832. \r\n
    7833. Christian Bergman
    7834. \r\n
    7835. Bronislaw Kozicki
    7836. \r\n
    7837. Ian Hopkinson
    7838. \r\n
    7839. guillaume percepied

    7840. \r\n
    7841. Ricardo Barberis
    7842. \r\n
    7843. Mitja Tavcar
    7844. \r\n
    7845. Miguel Vaz
    7846. \r\n
    7847. Bernard Weiss
    7848. \r\n
    7849. LUKAS KRAEHENBUEHL
    7850. \r\n
    7851. David Nelson
    7852. \r\n
    7853. Винников ÐлекÑандр
    7854. \r\n
    7855. Vlads Sukevicus
    7856. \r\n
    7857. Teemu Haapoja
    7858. \r\n
    7859. Steven Wolf

    7860. \r\n
    7861. Simon Hayward
    7862. \r\n
    7863. Shchagin Alexander
    7864. \r\n
    7865. Robert Leider
    7866. \r\n
    7867. Philip Turmel
    7868. \r\n
    7869. Oliv Schacher
    7870. \r\n
    7871. Oleg Peil
    7872. \r\n
    7873. Nicholas Clark
    7874. \r\n
    7875. Nathan Waterman
    7876. \r\n
    7877. Mark Koudritsky
    7878. \r\n
    7879. Lorna Mitchell

    7880. \r\n
    7881. Jose L Rodriguez Cuesta
    7882. \r\n
    7883. Joerg Maeder
    7884. \r\n
    7885. Joerg Baach
    7886. \r\n
    7887. Jay Nayegandhi
    7888. \r\n
    7889. Gonzalo Rojas Landsberger
    7890. \r\n
    7891. Ethan White
    7892. \r\n
    7893. Corin Froese
    7894. \r\n
    7895. Callum Donaldson
    7896. \r\n
    7897. Eric Floehr
    7898. \r\n
    7899. Roy Leith

    7900. \r\n
    7901. Richard Hindle
    7902. \r\n
    7903. ProLogiTech
    7904. \r\n
    7905. Matt Schmidt
    7906. \r\n
    7907. Lorenzo Lucherini
    7908. \r\n
    7909. Jonas Cleve
    7910. \r\n
    7911. Joel Landsteiner
    7912. \r\n
    7913. Christoph Heer
    7914. \r\n
    7915. Salvatore Ragucci
    7916. \r\n
    7917. Tobias Wellnitz
    7918. \r\n
    7919. NodePing LLC

    7920. \r\n
    7921. Charlie Clark
    7922. \r\n
    7923. Charles Cheever
    7924. \r\n
    7925. Digi Communications Ltd
    7926. \r\n
    7927. Michael Taylor
    7928. \r\n
    7929. Michal Toman
    7930. \r\n
    7931. æ™ ç„¶
    7932. \r\n
    7933. Patricia Bothwell
    7934. \r\n
    7935. James Cox
    7936. \r\n
    7937. Natalie Carrier
    7938. \r\n
    7939. Diarmuid Bourke

    7940. \r\n
    7941. Hole System
    7942. \r\n
    7943. Gregory Roodt
    7944. \r\n
    7945. Andrew Lenards
    7946. \r\n
    7947. Vicky Twomey-Lee
    7948. \r\n
    7949. Goran Širola
    7950. \r\n
    7951. Jordan Kay
    7952. \r\n
    7953. Michael Twomey
    7954. \r\n
    7955. Anthony Michael Scopatz
    7956. \r\n
    7957. Radhakrishna Dudella
    7958. \r\n
    7959. John Tough

    7960. \r\n
    7961. Taavi Burns
    7962. \r\n
    7963. Левченко Михаил
    7964. \r\n
    7965. Nemil Dalal
    7966. \r\n
    7967. John Transue
    7968. \r\n
    7969. Michael Schlottke
    7970. \r\n
    7971. Nandan Vaidya
    7972. \r\n
    7973. Kathleen LaVallee
    7974. \r\n
    7975. Justin Hugon
    7976. \r\n
    7977. Josh Roppo
    7978. \r\n
    7979. Bjarne Hansen

    7980. \r\n
    7981. Arun Visvanathan
    7982. \r\n
    7983. Pat Benson
    7984. \r\n
    7985. A.M.S.E. SPRL
    7986. \r\n
    7987. Luke Gotszling
    7988. \r\n
    7989. Shane Feely
    7990. \r\n
    7991. Joseph Reagle
    7992. \r\n
    7993. Gabriel-Girip Pirvan
    7994. \r\n
    7995. Vanitha Raja
    7996. \r\n
    7997. Palaka,Inc.
    7998. \r\n
    7999. Lysenkov Ilya

    8000. \r\n
    8001. Sally Joy Hall
    8002. \r\n
    8003. Laura Akerman
    8004. \r\n
    8005. Maru Newby
    8006. \r\n
    8007. Keith Pincombe
    8008. \r\n
    8009. Ian McGregor
    8010. \r\n
    8011. Andrey Kazantsev
    8012. \r\n
    8013. Richard Donkin
    8014. \r\n
    8015. Eric Renkey
    8016. \r\n
    8017. Deukey Lee
    8018. \r\n
    8019. Nancy Melucci

    8020. \r\n
    8021. matt venn
    8022. \r\n
    8023. Simone Accascina
    8024. \r\n
    8025. SoundLand.org
    8026. \r\n
    8027. Stefan Drees
    8028. \r\n
    8029. Jaime Marqu�nez Ferr�ndiz
    8030. \r\n
    8031. steven smith
    8032. \r\n
    8033. Doug Philips
    8034. \r\n
    8035. Max Proft
    8036. \r\n
    8037. Xin Xie
    8038. \r\n
    8039. ТурковÑкий Ðртем

    8040. \r\n
    8041. Paul An
    8042. \r\n
    8043. David Macara
    8044. \r\n
    8045. Lekomcev Max
    8046. \r\n
    8047. Christina Long
    8048. \r\n
    8049. Wingware
    8050. \r\n
    8051. Richard Weldon
    8052. \r\n
    8053. Yücel KILIÇ
    8054. \r\n
    8055. Ales Meglic
    8056. \r\n
    8057. David Cook
    8058. \r\n
    8059. Jenkins Aviles

    8060. \r\n
    8061. FreshBooks
    8062. \r\n
    8063. John M. Camara
    8064. \r\n
    8065. Deelip Chatterjee
    8066. \r\n
    8067. Enevie Mullone
    8068. \r\n
    8069. Nathan Gautrey
    8070. \r\n
    8071. Blitware Technology Inc.
    8072. \r\n
    8073. Kuang ZE HUI
    8074. \r\n
    8075. Charles Merriam
    8076. \r\n
    8077. Mark Eichin
    8078. \r\n
    8079. James Helms

    8080. \r\n
    8081. Tadhg O'Reilly
    8082. \r\n
    8083. Sam Hearn
    8084. \r\n
    8085. MATREP LIMITED
    8086. \r\n
    8087. Mark Verleg
    8088. \r\n
    8089. Bartenev Valentin
    8090. \r\n
    8091. Andrew Sutton
    8092. \r\n
    8093. Georg Stillfried
    8094. \r\n
    8095. Juan Riquelme Gonzalez
    8096. \r\n
    8097. Yoshikazu Yokotani
    8098. \r\n
    8099. Yuriy Skalko

    8100. \r\n
    8101. Susan Kleinmann
    8102. \r\n
    8103. Plasstech
    8104. \r\n
    8105. Alberto Ridolfi
    8106. \r\n
    8107. Paul Routley
    8108. \r\n
    8109. Mehdi Laouichi
    8110. \r\n
    8111. Yury Yurevich
    8112. \r\n
    8113. Olivier Duquesne
    8114. \r\n
    8115. Francisco Martin Brugue
    8116. \r\n
    8117. Stefan Schmidbauer
    8118. \r\n
    8119. Joe Short

    8120. \r\n
    8121. Justin Gomes
    8122. \r\n
    8123. Andrew Hedges
    8124. \r\n
    8125. David Lam
    8126. \r\n
    8127. Allyn Raskind
    8128. \r\n
    8129. Yuri Samsoniuk
    8130. \r\n
    8131. Emil Obermayr
    8132. \r\n
    8133. Oleksandr Khutoretskyy
    8134. \r\n
    8135. Michael Goulbourn
    8136. \r\n
    8137. Chris Alden
    8138. \r\n
    8139. Benjamin ESTRABAUD

    8140. \r\n
    8141. Alice Lieutier
    8142. \r\n
    8143. Marc Abramowitz
    8144. \r\n
    8145. Igor Yegorov
    8146. \r\n
    8147. Sebastian Mitterle
    8148. \r\n
    8149. Jae Hyun Ahn
    8150. \r\n
    8151. Michael Kallay
    8152. \r\n
    8153. Daniel Lemos
    8154. \r\n
    8155. Barry Scheepers
    8156. \r\n
    8157. Heling Yao
    8158. \r\n
    8159. Shannon Moore

    8160. \r\n
    8161. Raphael Costales
    8162. \r\n
    8163. Theodore J Dziuba
    8164. \r\n
    8165. Daniel Azhar
    8166. \r\n
    8167. VALERIE DACIW
    8168. \r\n
    8169. ruben robles
    8170. \r\n
    8171. Henry Haugland
    8172. \r\n
    8173. Florian N�ding
    8174. \r\n
    8175. Jeff Self
    8176. \r\n
    8177. Albert Kim
    8178. \r\n
    8179. DMITRY DEMBINSKY

    8180. \r\n
    8181. Onkar Bhardwaj
    8182. \r\n
    8183. Kelly Painter
    8184. \r\n
    8185. Neil Tallim
    8186. \r\n
    8187. John Woods
    8188. \r\n
    8189. Barry C. and Suzel Deer
    8190. \r\n
    8191. R David Murray
    8192. \r\n
    8193. Brad Francis
    8194. \r\n
    8195. Lindsley Daniel
    8196. \r\n
    8197. Parham Saidi
    8198. \r\n
    8199. Taher Haveliwala

    8200. \r\n
    8201. Orde Saunders
    8202. \r\n
    8203. Jaakko Vallo
    8204. \r\n
    8205. Stijn Ghesquiere
    8206. \r\n
    8207. Micah Koleoso Software
    8208. \r\n
    8209. Leonardo Santos
    8210. \r\n
    8211. John Garrett
    8212. \r\n
    8213. James Siebe
    8214. \r\n
    8215. James Morgan
    8216. \r\n
    8217. David Braude
    8218. \r\n
    8219. Daniel Simon

    8220. \r\n
    8221. Coffeesprout ICT services
    8222. \r\n
    8223. CC
    8224. \r\n
    8225. Adam Oberbeck
    8226. \r\n
    8227. Sandra Keller
    8228. \r\n
    8229. MIKHAIL KSENZOV
    8230. \r\n
    8231. Karl J Smith
    8232. \r\n
    8233. Jonas Obrist
    8234. \r\n
    8235. Irina Kats
    8236. \r\n
    8237. Christopher Roach
    8238. \r\n
    8239. brett peppe

    8240. \r\n
    8241. Leonidas Kapassakalis
    8242. \r\n
    8243. Wolfhalton.info
    8244. \r\n
    8245. Dominique Corpataux
    8246. \r\n
    8247. KenTyde
    8248. \r\n
    8249. Fachrian Nugraha
    8250. \r\n
    8251. LUTFI ALTIN
    8252. \r\n
    8253. Arach Tchoupani
    8254. \r\n
    8255. Accense Technology, Inc.
    8256. \r\n
    8257. Doug Hellmann
    8258. \r\n
    8259. Paweł Rozlach

    8260. \r\n
    8261. Zaber Technologies Inc
    8262. \r\n
    8263. Conor Cox
    8264. \r\n
    8265. Michael S Lubandi
    8266. \r\n
    8267. Exoweb
    8268. \r\n
    8269. Dan Silvers
    8270. \r\n
    8271. kevin cho
    8272. \r\n
    8273. Timothy Murphy
    8274. \r\n
    8275. Amaury Rodriguez
    8276. \r\n
    8277. Grant Olsen
    8278. \r\n
    8279. Allan Saddi

    8280. \r\n
    8281. Jonathan Sprague
    8282. \r\n
    8283. UnHa Kim
    8284. \r\n
    8285. MIGUEL A RODRIGUEZ TARNO
    8286. \r\n
    8287. Michael Lamb
    8288. \r\n
    8289. Stewart Adam
    8290. \r\n
    8291. Billy Tobon
    8292. \r\n
    8293. Igor Bodlak
    8294. \r\n
    8295. geoffrey jost
    8296. \r\n
    8297. Marc Falzon
    8298. \r\n
    8299. Chris Guidry

    8300. \r\n
    8301. Tom Johnson
    8302. \r\n
    8303. Stephen Etheridge
    8304. \r\n
    8305. Antoine Phelouzat
    8306. \r\n
    8307. Joachim Koerfer
    8308. \r\n
    8309. Simon Cross
    8310. \r\n
    8311. Michael Berens
    8312. \r\n
    8313. Domenico Wielgosz
    8314. \r\n
    8315. Cornelius K�lbel
    8316. \r\n
    8317. Blair Cameron Bonnett
    8318. \r\n
    8319. Alexandre Bergeron

    8320. \r\n
    8321. Umberto Mascia
    8322. \r\n
    8323. Fulvio Casali
    8324. \r\n
    8325. Christoph Wolf
    8326. \r\n
    8327. Christoph Schilling
    8328. \r\n
    8329. Yannick M�heut
    8330. \r\n
    8331. Josh Johnson
    8332. \r\n
    8333. Tomas Kral
    8334. \r\n
    8335. Julius Schlosburg
    8336. \r\n
    8337. Joao Batista
    8338. \r\n
    8339. Gabriel Santonja

    8340. \r\n
    8341. Fran�ois Bianco
    8342. \r\n
    8343. SRAM
    8344. \r\n
    8345. �lan Cr�stoffer e Sousa
    8346. \r\n
    8347. Зотов ÐлекÑей
    8348. \r\n
    8349. sonia el hedri
    8350. \r\n
    8351. andr� renaut
    8352. \r\n
    8353. YAKOVLEV ALEKSEY
    8354. \r\n
    8355. Timo Bezjak
    8356. \r\n
    8357. Tim Lossen
    8358. \r\n
    8359. Suren Karapetyan

    8360. \r\n
    8361. Philip Gillißen
    8362. \r\n
    8363. Omri Barel
    8364. \r\n
    8365. Niels de Leeuw
    8366. \r\n
    8367. Nicholas Paulik
    8368. \r\n
    8369. Jonathan Cole
    8370. \r\n
    8371. Jeremie tarot
    8372. \r\n
    8373. Dofri Jonsson
    8374. \r\n
    8375. Christian Becker
    8376. \r\n
    8377. Alfred Mechsner
    8378. \r\n
    8379. Alex Pulver

    8380. \r\n
    8381. Thomas Norris
    8382. \r\n
    8383. Johan Hjelm
    8384. \r\n
    8385. Jilles de Wit
    8386. \r\n
    8387. James Grant
    8388. \r\n
    8389. Damien ULRICH
    8390. \r\n
    8391. Memset Ltd
    8392. \r\n
    8393. Tom Nute
    8394. \r\n
    8395. tell-k
    8396. \r\n
    8397. Carl Decker
    8398. \r\n
    8399. Mark Lee

    8400. \r\n
    8401. Ricardo Amador
    8402. \r\n
    8403. Jason Moore
    8404. \r\n
    8405. Michael Richard
    8406. \r\n
    8407. Brian Fein
    8408. \r\n
    8409. Beni Cherniavsky-Paskin
    8410. \r\n
    8411. Daniel
    8412. \r\n
    8413. takakuwakeisoku
    8414. \r\n
    8415. Photoboof
    8416. \r\n
    8417. Austin Thornton
    8418. \r\n
    8419. Atsuo Ishimoto

    8420. \r\n
    8421. William Hayes
    8422. \r\n
    8423. Nick Pellitteri
    8424. \r\n
    8425. 张 酉夫
    8426. \r\n
    8427. Tom Bajoras, Art & Logic
    8428. \r\n
    8429. Keith Nelson
    8430. \r\n
    8431. Snoball, Inc.
    8432. \r\n
    8433. Ian Farm
    8434. \r\n
    8435. Dominique Pitt
    8436. \r\n
    8437. Rocio Askew
    8438. \r\n
    8439. RENATA BRANDAO

    8440. \r\n
    8441. Manuel wang
    8442. \r\n
    8443. Alberta Parkhurst
    8444. \r\n
    8445. BMC Atrium
    8446. \r\n
    8447. 廖 文豪
    8448. \r\n
    8449. Andrew McMillan
    8450. \r\n
    8451. Pierre-Antoine Carnot
    8452. \r\n
    8453. Alessandro Gazzetta
    8454. \r\n
    8455. Jordi Masip Riera
    8456. \r\n
    8457. pol moragas corredor
    8458. \r\n
    8459. David Glick

    8460. \r\n
    8461. Richard House
    8462. \r\n
    8463. XIONG RONGZHENG
    8464. \r\n
    8465. Thomas Elfstr�m
    8466. \r\n
    8467. Aron Ahmadia
    8468. \r\n
    8469. daniel eaton
    8470. \r\n
    8471. Ruben Robles
    8472. \r\n
    8473. Morten Lind Petersen
    8474. \r\n
    8475. Chee Chuen Sim
    8476. \r\n
    8477. BIKASH PRADHAN
    8478. \r\n
    8479. Christie Koehler

    8480. \r\n
    8481. Ben Dickson
    8482. \r\n
    8483. Malia McClure
    8484. \r\n
    8485. Nancy Broughton
    8486. \r\n
    8487. Andrew Aylward
    8488. \r\n
    8489. Hugo Bourinbayar
    8490. \r\n
    8491. Gian Luca Ruggero
    8492. \r\n
    8493. Evgeniya Larina
    8494. \r\n
    8495. Tommy Bozeman
    8496. \r\n
    8497. Ole D Jensen
    8498. \r\n
    8499. Aaron Robson

    8500. \r\n
    8501. Anna Ravenscroft
    8502. \r\n
    8503. Paul McGinnis
    8504. \r\n
    8505. Laura Pyne
    8506. \r\n
    8507. Chris McDonough
    8508. \r\n
    8509. Sutyrin Pavel
    8510. \r\n
    8511. Sean Bleier
    8512. \r\n
    8513. Jorge Alberch Gracia
    8514. \r\n
    8515. Timothy Wiseman
    8516. \r\n
    8517. Ignas ButÄ—nas
    8518. \r\n
    8519. dirk bergstrom

    8520. \r\n
    8521. Batterfly Industries
    8522. \r\n
    8523. Neil Martinko
    8524. \r\n
    8525. Tobias Diekershoff
    8526. \r\n
    8527. Owen Williams
    8528. \r\n
    8529. Ngoc Nguyen
    8530. \r\n
    8531. YAKHONTOV DMITRY
    8532. \r\n
    8533. Jacques de Selliers
    8534. \r\n
    8535. Thomas Guettler
    8536. \r\n
    8537. Thomas Wallutis
    8538. \r\n
    8539. Daniel Michelon De Carli

    8540. \r\n
    8541. Wilhelm Brasch
    8542. \r\n
    8543. Javier Alani Ogea
    8544. \r\n
    8545. matthew attwood
    8546. \r\n
    8547. Seshadri Raja
    8548. \r\n
    8549. Lukas Vacek
    8550. \r\n
    8551. LibreStickers
    8552. \r\n
    8553. JUNJI NAKANISHI
    8554. \r\n
    8555. Shinya Okano
    8556. \r\n
    8557. Alef Farah
    8558. \r\n
    8559. Eric Werth

    8560. \r\n
    8561. Shashank Sharma
    8562. \r\n
    8563. Michael D. Healy
    8564. \r\n
    8565. Vanja Cvelbar
    8566. \r\n
    8567. Karl Barkei
    8568. \r\n
    8569. Mike Albert
    8570. \r\n
    8571. Andrey Popp
    8572. \r\n
    8573. Brad Lumley
    8574. \r\n
    8575. Daniel Rill
    8576. \r\n
    8577. Szymon Krzanowski
    8578. \r\n
    8579. Christian Lpez Alarcn

    8580. \r\n
    8581. Benjamin Smith
    8582. \r\n
    8583. Corey Goldberg
    8584. \r\n
    8585. Roberto Gal
    8586. \r\n
    8587. Ioannis Krommydas
    8588. \r\n
    8589. Ferdinand Silva
    8590. \r\n
    8591. Charles Norton
    8592. \r\n
    8593. Pam Eveland
    8594. \r\n
    8595. PEDRO JARA VIGUERAS
    8596. \r\n
    8597. Nate Swanberg
    8598. \r\n
    8599. Wolfgang Doll

    8600. \r\n
    8601. Юдинцев Владимир
    8602. \r\n
    8603. Alex Morega
    8604. \r\n
    8605. Kurtis Rader
    8606. \r\n
    8607. Alan Cima
    8608. \r\n
    8609. Benoit Delville
    8610. \r\n
    8611. Tomer Nosrati
    8612. \r\n
    8613. Leo VAN DER VELDEN
    8614. \r\n
    8615. Luke Tymowski
    8616. \r\n
    8617. Kunal Gupta
    8618. \r\n
    8619. Lawrence Hayes

    8620. \r\n
    8621. Ryan Gorman
    8622. \r\n
    8623. Matt Terry
    8624. \r\n
    8625. Thomas Peikert
    8626. \r\n
    8627. Claudio Campos
    8628. \r\n
    8629. Ole Wengler
    8630. \r\n
    8631. Mary Chipman
    8632. \r\n
    8633. rama krishna kapilavai
    8634. \r\n
    8635. Chingis Dugarzhapov
    8636. \r\n
    8637. Ammar Khaku
    8638. \r\n
    8639. Vern Ceder

    8640. \r\n
    8641. SafPlusPlus
    8642. \r\n
    8643. Rich Signell
    8644. \r\n
    8645. Robert Dennison
    8646. \r\n
    8647. Timmy Yee
    8648. \r\n
    8649. Jayne wang
    8650. \r\n
    8651. Zlatko Duric
    8652. \r\n
    8653. Marlon van der Linde
    8654. \r\n
    8655. Jacob Perkins
    8656. \r\n
    8657. Diogo Pinto
    8658. \r\n
    8659. Yoshifumi Yamaguchi

    8660. \r\n
    8661. Mark Redar
    8662. \r\n
    8663. 刘 原旭
    8664. \r\n
    8665. ÐовоÑелов Ðнтон
    8666. \r\n
    8667. Python Spa
    8668. \r\n
    8669. KOLTIGUN ANTON
    8670. \r\n
    8671. Gareth Sime
    8672. \r\n
    8673. Alexandru Budin
    8674. \r\n
    8675. Nick Semenkovich (semenko)
    8676. \r\n
    8677. Kamil Sarkowicz
    8678. \r\n
    8679. Muhametfazilovich Radik

    8680. \r\n
    8681. Pieter-Jan Dewitte
    8682. \r\n
    8683. Ariel Ruiz
    8684. \r\n
    8685. TIMOTHY TENNYSON
    8686. \r\n
    8687. Peter Sutherland
    8688. \r\n
    8689. Mauricio Correa
    8690. \r\n
    8691. BERNARD Olivier
    8692. \r\n
    8693. EDUARDO LOPEZ SANCHEZ
    8694. \r\n
    8695. Barry Marshall
    8696. \r\n
    8697. Nishant Mehta
    8698. \r\n
    8699. RIPE NCC

    8700. \r\n
    8701. è¾» 真å¾
    8702. \r\n
    8703. S�bastien Capt
    8704. \r\n
    8705. Jonathan Schneider
    8706. \r\n
    8707. Kinev Alexey Vadimovich
    8708. \r\n
    8709. Yoren GAFFARY
    8710. \r\n
    8711. Marla Parker
    8712. \r\n
    8713. Gladys Michaels
    8714. \r\n
    8715. Robert Edwards
    8716. \r\n
    8717. Gilles Adda
    8718. \r\n
    8719. Carlos Mazon

    8720. \r\n
    8721. Paul W Stein
    8722. \r\n
    8723. EuroPython Conference Dinner (sponsored massage)
    8724. \r\n
    8725. Sacred Sircle Marketing
    8726. \r\n
    8727. Mary Frances Hunter
    8728. \r\n
    8729. House of Laudanum, Australia
    8730. \r\n
    8731. Konstantin Kondrashov
    8732. \r\n
    8733. Christoph Heitkamp
    8734. \r\n
    8735. Matt Hagy
    8736. \r\n
    8737. Brent Brian
    8738. \r\n
    8739. Jasper Visser

    8740. \r\n
    8741. Bartosz Debski
    8742. \r\n
    8743. john mitchell
    8744. \r\n
    8745. Carlo Pirchio
    8746. \r\n
    8747. Andriy Tarasenko
    8748. \r\n
    8749. MAN YONG LEE
    8750. \r\n
    8751. Edgardo Rafael Medrano
    8752. \r\n
    8753. Nitkalya Wiriyanuparb
    8754. \r\n
    8755. Thomas Hartmann
    8756. \r\n
    8757. Paul Nelson
    8758. \r\n
    8759. Oleg Kushynskyy

    8760. \r\n
    8761. Lo�c Grobol
    8762. \r\n
    8763. KOROSTELEV TIMOFEY
    8764. \r\n
    8765. Ivan Brkanac
    8766. \r\n
    8767. GELASE MANTSIELA
    8768. \r\n
    8769. Clive van Hilten
    8770. \r\n
    8771. Роман Фартушный
    8772. \r\n
    8773. Миронов ÐлекÑей
    8774. \r\n
    8775. КорженевÑкий Ðртём
    8776. \r\n
    8777. Демидов Ðндрей
    8778. \r\n
    8779. Vladislav Zorov

    8780. \r\n
    8781. Vincent Mangelschots
    8782. \r\n
    8783. Tilmann Gläser
    8784. \r\n
    8785. Thomas B�cker
    8786. \r\n
    8787. Stian Drobak
    8788. \r\n
    8789. Steven Young
    8790. \r\n
    8791. Stephen Gray
    8792. \r\n
    8793. Samuel Bri�re
    8794. \r\n
    8795. Przemek Bryndza
    8796. \r\n
    8797. Pierre Virgile Prinetti
    8798. \r\n
    8799. Nicolas H�ft

    8800. \r\n
    8801. Mohammad Atif
    8802. \r\n
    8803. Matthias Prager
    8804. \r\n
    8805. Kęstutis Mizara
    8806. \r\n
    8807. Konvalyuk Anton
    8808. \r\n
    8809. Knut Remi L�vli
    8810. \r\n
    8811. Kirienko Denis
    8812. \r\n
    8813. Kevin Renskers
    8814. \r\n
    8815. Keith Astoria
    8816. \r\n
    8817. Kaloyan Raev
    8818. \r\n
    8819. Jonathan Brandvein

    8820. \r\n
    8821. HookUpPower
    8822. \r\n
    8823. Henrique Pereira
    8824. \r\n
    8825. Gary Jarocha
    8826. \r\n
    8827. Fabio Natali
    8828. \r\n
    8829. Emil Nicolaie Perhinschi
    8830. \r\n
    8831. Daniele Palmese
    8832. \r\n
    8833. Clifford Lindsay
    8834. \r\n
    8835. Andre Peeters
    8836. \r\n
    8837. Lee Cannon
    8838. \r\n
    8839. Vivek Ramavajjala

    8840. \r\n
    8841. Sadomov Evgeny
    8842. \r\n
    8843. Nikolaus Rath
    8844. \r\n
    8845. Michael Grazebrook
    8846. \r\n
    8847. Matthew Cahn
    8848. \r\n
    8849. Christian Romero
    8850. \r\n
    8851. Barry Norton
    8852. \r\n
    8853. Alessandro Fanna
    8854. \r\n
    8855. Mark Kovach
    8856. \r\n
    8857. Jose Hasemann
    8858. \r\n
    8859. Kevin Davenport

    8860. \r\n
    8861. Brian T. Edgar
    8862. \r\n
    8863. Andreas Haerpfer
    8864. \r\n
    8865. Edward Swartz
    8866. \r\n
    8867. nazmi Postacioglu
    8868. \r\n
    8869. J.T. Presta
    8870. \r\n
    8871. Юрий ЛаÑтов
    8872. \r\n
    8873. Ken McNamara
    8874. \r\n
    8875. Michael Etts
    8876. \r\n
    8877. Kirill Issakov
    8878. \r\n
    8879. Dektyarev Mikhail

    8880. \r\n
    8881. Matthew Goodman
    8882. \r\n
    8883. bill hackler
    8884. \r\n
    8885. Team 2ch
    8886. \r\n
    8887. pycon.ca
    8888. \r\n
    8889. Aleksandrs Orlovs
    8890. \r\n
    8891. Dilum Aluthge
    8892. \r\n
    8893. Tobias Ammann
    8894. \r\n
    8895. Ben Regenspan
    8896. \r\n
    8897. Michal Gajda
    8898. \r\n
    8899. Mansour Farghaly

    8900. \r\n
    8901. Michael Bachelder
    8902. \r\n
    8903. Joshua Sorenson
    8904. \r\n
    8905. Paul Gorelick
    8906. \r\n
    8907. kracekumar
    8908. \r\n
    8909. Monica He
    8910. \r\n
    8911. Попп Сергей
    8912. \r\n
    8913. Ezio Melotti
    8914. \r\n
    8915. James Dennis
    8916. \r\n
    8917. Leif Hunneman
    8918. \r\n
    8919. Edward Hebert Jr

    8920. \r\n
    8921. Johann Markl
    8922. \r\n
    8923. Asier Zorrilla Lozano
    8924. \r\n
    8925. noam flam
    8926. \r\n
    8927. Kapil Thangavelu
    8928. \r\n
    8929. Justin High
    8930. \r\n
    8931. Charles King
    8932. \r\n
    8933. mtgeek
    8934. \r\n
    8935. Massimo Di Pierro
    8936. \r\n
    8937. Fred Cirera
    8938. \r\n
    8939. Gabriele Inghirami

    8940. \r\n
    8941. Michael Steffeck
    8942. \r\n
    8943. Nikolay Khodov
    8944. \r\n
    8945. Toby Ho
    8946. \r\n
    8947. Daniel Tehranian
    8948. \r\n
    8949. Phil Hardaker
    8950. \r\n
    8951. Edward Blake
    8952. \r\n
    8953. Rodrigo Hoffmann Domingos
    8954. \r\n
    8955. TANESHA JORDAN
    8956. \r\n
    8957. Ohio Valley Energy
    8958. \r\n
    8959. Nordic Software, Inc.

    8960. \r\n
    8961. Sophia Collier
    8962. \r\n
    8963. Cristian Marinescu
    8964. \r\n
    8965. Kangtao Chuang
    8966. \r\n
    8967. Ren� RIBAUD
    8968. \r\n
    8969. E. Blake Peterson
    8970. \r\n
    8971. Roman Andreev
    8972. \r\n
    8973. Mikhaylo Gavrylov
    8974. \r\n
    8975. Miguel Angel Martinez Hernandez
    8976. \r\n
    8977. Gabriel
    8978. \r\n
    8979. Minesh B. Amin

    8980. \r\n
    8981. 今津 充正
    8982. \r\n
    8983. Mirus Research
    8984. \r\n
    8985. Joseph Kottke
    8986. \r\n
    8987. DAIGO TOYOTA
    8988. \r\n
    8989. Marcelo de Sena Lacerda
    8990. \r\n
    8991. Jan Blankenburgh
    8992. \r\n
    8993. Michael Rigdon
    8994. \r\n
    8995. SUNNY K
    8996. \r\n
    8997. Kyran Dale
    8998. \r\n
    8999. Albert O'Connor

    9000. \r\n
    9001. Matthew Blomquist
    9002. \r\n
    9003. æŽ ç¿ç¿
    9004. \r\n
    9005. Seppo kivij�rvi
    9006. \r\n
    9007. ExoAnalytic Solutions
    9008. \r\n
    9009. Luca Bergamini
    9010. \r\n
    9011. Berker PeksaÄŸ
    9012. \r\n
    9013. Kelsey Hightower
    9014. \r\n
    9015. Michael Dowdy
    9016. \r\n
    9017. Gregus Mihai
    9018. \r\n
    9019. Scott Bucher

    9020. \r\n
    9021. Tomasz Paczkowski
    9022. \r\n
    9023. Aleksandra Sendecka
    9024. \r\n
    9025. Richard Leland
    9026. \r\n
    9027. James Farrimond
    9028. \r\n
    9029. PARIS COLLINS
    9030. \r\n
    9031. Nishant Puranik
    9032. \r\n
    9033. Pamela Stephens
    9034. \r\n
    9035. Michal Stankoviansky
    9036. \r\n
    9037. Nicholas Weinhold
    9038. \r\n
    9039. Lyle Scott III

    9040. \r\n
    9041. James Garrison
    9042. \r\n
    9043. Sidney Cave
    9044. \r\n
    9045. Hishiv Shah
    9046. \r\n
    9047. Eric Walstad
    9048. \r\n
    9049. Jan Hapala
    9050. \r\n
    9051. Sebastian K�hler
    9052. \r\n
    9053. John D Blischak
    9054. \r\n
    9055. robert king
    9056. \r\n
    9057. Michael Garba
    9058. \r\n
    9059. Brian Schreffler

    9060. \r\n
    9061. Adebayo Opadeyi
    9062. \r\n
    9063. dechico marc
    9064. \r\n
    9065. Marissa Huang
    9066. \r\n
    9067. David Ripton
    9068. \r\n
    9069. Wei Wei
    9070. \r\n
    9071. Uriel Fernando Sandoval P�rez
    9072. \r\n
    9073. Don Bush
    9074. \r\n
    9075. Miju Han
    9076. \r\n
    9077. Terry Bates
    9078. \r\n
    9079. Wolfgang Blickle

    9080. \r\n
    9081. Vihaan Majety
    9082. \r\n
    9083. Matias Bustamante
    9084. \r\n
    9085. Kevin Crothers
    9086. \r\n
    9087. Konstantin Scheumann
    9088. \r\n
    9089. Joschka Wanke
    9090. \r\n
    9091. Eduardo San Miguel Garcia
    9092. \r\n
    9093. Ian Wilson
    9094. \r\n
    9095. Myrna Morales
    9096. \r\n
    9097. Michiel Bakker
    9098. \r\n
    9099. sean bleier

    9100. \r\n
    9101. Megan Means
    9102. \r\n
    9103. Dennis Jelinek
    9104. \r\n
    9105. Aeracode
    9106. \r\n
    9107. ООО \"СинÐпп Софтвер\"
    9108. \r\n
    9109. Marvin Rabe
    9110. \r\n
    9111. Lau Wai Chung
    9112. \r\n
    9113. yasemen karakoc
    9114. \r\n
    9115. clement roblot
    9116. \r\n
    9117. Vlad Iulian Schnakovszki
    9118. \r\n
    9119. Tino Mehlmann

    9120. \r\n
    9121. Rene Pilz
    9122. \r\n
    9123. Max Eliaser
    9124. \r\n
    9125. Mattias Lundberg
    9126. \r\n
    9127. Matteo Pasotti
    9128. \r\n
    9129. James Paige
    9130. \r\n
    9131. Felix Pleșoianu
    9132. \r\n
    9133. Fang Yang
    9134. \r\n
    9135. Eleonor Vinicius Dudel Mayer
    9136. \r\n
    9137. Bogdan Vatulya
    9138. \r\n
    9139. julien faivre

    9140. \r\n
    9141. Yuzhi Liu
    9142. \r\n
    9143. Thomas Sch�ssler
    9144. \r\n
    9145. Marc Haase
    9146. \r\n
    9147. Maurycy Pietrzak
    9148. \r\n
    9149. Threepress Consulting Inc.
    9150. \r\n
    9151. Beau Lyddon
    9152. \r\n
    9153. EDUARDO TADEU FELIPE LEMPE
    9154. \r\n
    9155. Alexander Moiseenko
    9156. \r\n
    9157. Robert Love
    9158. \r\n
    9159. Rodney Hardrick

    9160. \r\n
    9161. Donald Curtis
    9162. \r\n
    9163. Dan Stephenson
    9164. \r\n
    9165. grizlupo
    9166. \r\n
    9167. Patrik Hersenius
    9168. \r\n
    9169. Orne Brocaar
    9170. \r\n
    9171. Chris Kelly
    9172. \r\n
    9173. Uniblue Systems Ltd
    9174. \r\n
    9175. Altas Web Design
    9176. \r\n
    9177. Dan Medley
    9178. \r\n
    9179. K Hart Insight2Action

    9180. \r\n
    9181. Florian Vogt
    9182. \r\n
    9183. Guillermo Barreiro
    9184. \r\n
    9185. Inspection Help, LLC
    9186. \r\n
    9187. Yang Zhaohui
    9188. \r\n
    9189. julio berdote
    9190. \r\n
    9191. Matt Lott
    9192. \r\n
    9193. Devin Jacobs
    9194. \r\n
    9195. Jim Hess
    9196. \r\n
    9197. Gwen Conley
    9198. \r\n
    9199. Kent Churchill

    9200. \r\n
    9201. In Spec, Inc.
    9202. \r\n
    9203. GmonE! GPS Tracking System
    9204. \r\n
    9205. Ronald
    9206. \r\n
    9207. Mike Tracy
    9208. \r\n
    9209. Hakan Ozkirim
    9210. \r\n
    9211. imo.im
    9212. \r\n
    9213. pakingan jeffrey
    9214. \r\n
    9215. Robert Liverman
    9216. \r\n
    9217. Anurag Panda
    9218. \r\n
    9219. Chi F. Chen

    9220. \r\n
    9221. baba kane
    9222. \r\n
    9223. Christian Metz
    9224. \r\n
    9225. Yixi Zhang
    9226. \r\n
    9227. Python Ireland
    9228. \r\n
    9229. josef hoffman
    9230. \r\n
    9231. shelia ash
    9232. \r\n
    9233. CodeModLabs LLC
    9234. \r\n
    9235. Macizoft
    9236. \r\n
    9237. Iman Haamid
    9238. \r\n
    9239. Sharan Sharalaya

    9240. \r\n
    9241. agathe battestini
    9242. \r\n
    9243. Tom Bennett
    9244. \r\n
    9245. bspinor
    9246. \r\n
    9247. Paul Scherf
    9248. \r\n
    9249. Wilhelm Kleiminger
    9250. \r\n
    9251. Allen George
    9252. \r\n
    9253. Steven Grubb
    9254. \r\n
    9255. Karl Schleicher
    9256. \r\n
    9257. Chen Ruo Fei
    9258. \r\n
    9259. Russell Folks

    9260. \r\n
    9261. 稲田 直哉
    9262. \r\n
    9263. Jeffrey Meyer
    9264. \r\n
    9265. JPBX Systems Solutions
    9266. \r\n
    9267. Paul Felix
    9268. \r\n
    9269. Eran Rechter
    9270. \r\n
    9271. Campbell-Lange Workshop
    9272. \r\n
    9273. David O'Brennan
    9274. \r\n
    9275. Adobe Inc. Matching Gift
    9276. \r\n
    9277. Martin Eggen
    9278. \r\n
    9279. Brian Howell

    9280. \r\n
    9281. 森 å¥ä¸€
    9282. \r\n
    9283. Suzuki Tomohiro
    9284. \r\n
    9285. Matthew Marshall
    9286. \r\n
    9287. Konstantin Tretyakov
    9288. \r\n
    9289. Ernest Oppetit
    9290. \r\n
    9291. The Power of 9
    9292. \r\n
    9293. Suzie Etchart
    9294. \r\n
    9295. 今井 一幾
    9296. \r\n
    9297. Christopher Grebs
    9298. \r\n
    9299. Juan David Gomez

    9300. \r\n
    9301. Clinton James
    9302. \r\n
    9303. PyConUK (sponsored massage)
    9304. \r\n
    9305. saurav agarwal
    9306. \r\n
    9307. John Shaffstall
    9308. \r\n
    9309. Bill Zingler
    9310. \r\n
    9311. Nick Joyce
    9312. \r\n
    9313. Marek Lach
    9314. \r\n
    9315. Konstantin Mosesov
    9316. \r\n
    9317. Nilovna Bascunan-Vasquez
    9318. \r\n
    9319. Sablin Dmitry

    9320. \r\n
    9321. Marian Sigler
    9322. \r\n
    9323. Jared Nuzzolillo
    9324. \r\n
    9325. David Vannucci
    9326. \r\n
    9327. Ari Flinkman
    9328. \r\n
    9329. Erland Nordin
    9330. \r\n
    9331. MBA Sciences, Inc
    9332. \r\n
    9333. Xiang Xin Luo
    9334. \r\n
    9335. Markus Wulff
    9336. \r\n
    9337. Sherman Wilcox
    9338. \r\n
    9339. Manfred Moitzi

    9340. \r\n
    9341. ANDRE ROBERGE
    9342. \r\n
    9343. Huan Do
    9344. \r\n
    9345. Kyle Stephens
    9346. \r\n
    9347. Philip Dexter
    9348. \r\n
    9349. Kenneth Platt
    9350. \r\n
    9351. Eduardo Ribeiro
    9352. \r\n
    9353. Bob Ippolito
    9354. \r\n
    9355. Cedric Drolet
    9356. \r\n
    9357. Arian van Dorsten
    9358. \r\n
    9359. ALBERTAS PADRIEZAS

    9360. \r\n
    9361. Varghese Philip
    9362. \r\n
    9363. Richard Ross
    9364. \r\n
    9365. Michael Albert
    9366. \r\n
    9367. Alessandro de Manzano
    9368. \r\n
    9369. Junghoon Kim
    9370. \r\n
    9371. Arezqui Belaid
    9372. \r\n
    9373. anurak hansuk
    9374. \r\n
    9375. RAVI KRISHNAPPA
    9376. \r\n
    9377. John Szakmeister
    9378. \r\n
    9379. Michael Groh

    9380. \r\n
    9381. Tracy Hinds
    9382. \r\n
    9383. Ryan Franklin
    9384. \r\n
    9385. wang xiao
    9386. \r\n
    9387. Ellina Petukhova
    9388. \r\n
    9389. NEIL PASSAGE
    9390. \r\n
    9391. DistroWatch.com
    9392. \r\n
    9393. Penny Rand
    9394. \r\n
    9395. tony cervantes
    9396. \r\n
    9397. Yuichi Nishiyama
    9398. \r\n
    9399. Atlantes Global Ltd

    9400. \r\n
    9401. RedHeLL-Hosting
    9402. \r\n
    9403. BitAlyze ApS Morten Zilmer
    9404. \r\n
    9405. Warren Thom
    9406. \r\n
    9407. Kai Groner
    9408. \r\n
    9409. Robert Morton
    9410. \r\n
    9411. Evan Phelan
    9412. \r\n
    9413. Saketh Bhamidipati
    9414. \r\n
    9415. Carlos Valiente
    9416. \r\n
    9417. Johan Lammens
    9418. \r\n
    9419. Fernando Fco Toro Rueda

    9420. \r\n
    9421. Alext
    9422. \r\n
    9423. Pablo Recio Quijano
    9424. \r\n
    9425. Dillon Korman
    9426. \r\n
    9427. Andrew Poynter
    9428. \r\n
    9429. OSMININ MAKSIM
    9430. \r\n
    9431. Theodore Pollari
    9432. \r\n
    9433. Gregory Bolstad
    9434. \r\n
    9435. David Loop
    9436. \r\n
    9437. Brett Anderson
    9438. \r\n
    9439. Randy Wiser

    9440. \r\n
    9441. John Eiler
    9442. \r\n
    9443. SATOSHI ARAI
    9444. \r\n
    9445. Mirco Tracolli
    9446. \r\n
    9447. Simon Ellis
    9448. \r\n
    9449. Rushi Agrawal
    9450. \r\n
    9451. Douglas Ireton
    9452. \r\n
    9453. Juan Pablo Ca�as Arboleda
    9454. \r\n
    9455. Bertha Jacobs
    9456. \r\n
    9457. chris harris
    9458. \r\n
    9459. Johnny Franks

    9460. \r\n
    9461. Oleg Zverkov
    9462. \r\n
    9463. Jonathan B. David
    9464. \r\n
    9465. Douglas Hellmann
    9466. \r\n
    9467. S7 Labs
    9468. \r\n
    9469. Jeffrey Jones
    9470. \r\n
    9471. Arjun Chennu
    9472. \r\n
    9473. Robin Pruss
    9474. \r\n
    9475. Samuel Safyan
    9476. \r\n
    9477. Pierce McMartin
    9478. \r\n
    9479. Wendal Chen

    9480. \r\n
    9481. Roger Hamlett
    9482. \r\n
    9483. Harold Bordy
    9484. \r\n
    9485. Walker Hale IV
    9486. \r\n
    9487. John Sabini
    9488. \r\n
    9489. Uday Kumar
    9490. \r\n
    9491. Jeffery Self
    9492. \r\n
    9493. Alexey Zinoviev
    9494. \r\n
    9495. Andrew Godwin
    9496. \r\n
    9497. John Benediktsson
    9498. \r\n
    9499. Paolo Scuro

    9500. \r\n
    9501. Man-Yong Lee
    9502. \r\n
    9503. JET
    9504. \r\n
    9505. Amit Belani
    9506. \r\n
    9507. john parrott
    9508. \r\n
    9509. Will Becker
    9510. \r\n
    9511. alex
    9512. \r\n
    9513. Jack Hagge
    9514. \r\n
    9515. SIDNEY WALKER
    9516. \r\n
    9517. Vancouver Python and Zope User Group
    9518. \r\n
    9519. H�gni Wennerstr�m

    9520. \r\n
    9521. S�bastien Volle
    9522. \r\n
    9523. CHARALAMPOS SAPERAS
    9524. \r\n
    9525. Alois Kuu Poodle
    9526. \r\n
    9527. SteepRock
    9528. \r\n
    9529. Juju, Inc.
    9530. \r\n
    9531. Andrea Barberio
    9532. \r\n
    9533. Hiroshi Yajima
    9534. \r\n
    9535. Aditya Joshi
    9536. \r\n
    9537. RAWSHAN MURADOV
    9538. \r\n
    9539. aonlazio

    9540. \r\n
    9541. Stephen Whalley
    9542. \r\n
    9543. INIKUP
    9544. \r\n
    9545. Marian Borca
    9546. \r\n
    9547. Reynold Chery
    9548. \r\n
    9549. Robert Hawk
    9550. \r\n
    9551. Eli Bendersky
    9552. \r\n
    9553. John Cox
    9554. \r\n
    9555. J. Andrew Poth
    9556. \r\n
    9557. Chen YenHung
    9558. \r\n
    9559. Hanover Technology Group

    9560. \r\n
    9561. james adams
    9562. \r\n
    9563. Windel Bouwman
    9564. \r\n
    9565. Rune Strand
    9566. \r\n
    9567. Ivo Danihelka
    9568. \r\n
    9569. Oyster Hotel Reviews
    9570. \r\n
    9571. Matt Palmer
    9572. \r\n
    9573. Christian Rocheleau
    9574. \r\n
    9575. Mario Fernandez
    9576. \r\n
    9577. Hariharan Jayaram
    9578. \r\n
    9579. Jordi Masip i Riera

    9580. \r\n
    9581. Michael Bauer
    9582. \r\n
    9583. Interet Corporation
    9584. \r\n
    9585. Brian Gershon
    9586. \r\n
    9587. Andre Bellafronte
    9588. \r\n
    9589. Cynthia Andre
    9590. \r\n
    9591. Andrew Casias
    9592. \r\n
    9593. H�kan Terelius
    9594. \r\n
    9595. Jason Whitlark
    9596. \r\n
    9597. Bogdan Luca
    9598. \r\n
    9599. Nicola Larosa

    9600. \r\n
    9601. Antonio Pedrosa
    9602. \r\n
    9603. Peter Scheie
    9604. \r\n
    9605. Benjamin Li
    9606. \r\n
    9607. Kenny Requa
    9608. \r\n
    9609. Jinsong Wu
    9610. \r\n
    9611. Jim Wilcoxson
    9612. \r\n
    9613. Quincy Yarde
    9614. \r\n
    9615. Mattias Sundblad
    9616. \r\n
    9617. Juan Pedro Fisanotti
    9618. \r\n
    9619. Jan-Jaap Driessen

    9620. \r\n
    9621. Matthew Lewis
    9622. \r\n
    9623. Jon Levy
    9624. \r\n
    9625. Noah Aklilu
    9626. \r\n
    9627. Lyles Art Gallery
    9628. \r\n
    9629. Roman Susi
    9630. \r\n
    9631. James Tauber
    9632. \r\n
    9633. David Turvene
    9634. \r\n
    9635. Brian Lyttle
    9636. \r\n
    9637. Andrea Pelizzari
    9638. \r\n
    9639. David J Harris

    9640. \r\n
    9641. Chad Cooper
    9642. \r\n
    9643. Roger Vossler
    9644. \r\n
    9645. francesco berni
    9646. \r\n
    9647. Fredrik Ohlin
    9648. \r\n
    9649. Levi Haupert
    9650. \r\n
    9651. Dan Jacka
    9652. \r\n
    9653. Douglas Budd
    9654. \r\n
    9655. 邹 业盛
    9656. \r\n
    9657. Levi Culver
    9658. \r\n
    9659. Stanislav Bazhenov

    9660. \r\n
    9661. Vasiliy Fomin
    9662. \r\n
    9663. Alan Drozd
    9664. \r\n
    9665. Dmitry Denisiuk
    9666. \r\n
    9667. Skylar Saveland
    9668. \r\n
    9669. Lex Lindsey
    9670. \r\n
    9671. РаевÑкий Кирилл
    9672. \r\n
    9673. Mohammad Yusuf Syafroni Karim
    9674. \r\n
    9675. Mikita Hradovich
    9676. \r\n
    9677. Syd Logan
    9678. \r\n
    9679. alessio garofalo

    9680. \r\n
    9681. Vlad Ionescu
    9682. \r\n
    9683. bucho
    9684. \r\n
    9685. Muharem Hrnjadovic
    9686. \r\n
    9687. carlos coronado
    9688. \r\n
    9689. Arturo Medina Jim�nez
    9690. \r\n
    9691. Andr Augusto
    9692. \r\n
    9693. Ðндрей ÐÑ€Ñенин
    9694. \r\n
    9695. Nicholas Joyce
    9696. \r\n
    9697. Mike Bauer
    9698. \r\n
    9699. Roger Powell

    9700. \r\n
    9701. Jose Iv�n L�pez Su�rez
    9702. \r\n
    9703. Alex&Anna
    9704. \r\n
    9705. å§œ é¹
    9706. \r\n
    9707. Juan Velasco Mieses
    9708. \r\n
    9709. Benjamin H Smith
    9710. \r\n
    9711. Mark Krautheim
    9712. \r\n
    9713. Tres Seaver
    9714. \r\n
    9715. Two Sigma Investments, LLC
    9716. \r\n
    9717. 曹 阳
    9718. \r\n
    9719. Ashley Kirk

    9720. \r\n
    9721. Peyroux J.Alexandre
    9722. \r\n
    9723. KC Johnson
    9724. \r\n
    9725. Vagif Hasanov
    9726. \r\n
    9727. Rene Schweiger
    9728. \r\n
    9729. Jesper Bernoee
    9730. \r\n
    9731. Jason Robinson
    9732. \r\n
    9733. Benny Bergsell
    9734. \r\n
    9735. Enrique Davis
    9736. \r\n
    9737. Manuel Verlaat
    9738. \r\n
    9739. Hassan Zawiah

    9740. \r\n
    9741. Deniz Kural
    9742. \r\n
    9743. Chris Sederqvist
    9744. \r\n
    9745. George Sakkis
    9746. \r\n
    9747. Rezha Julio Arly Pradana
    9748. \r\n
    9749. Ben Charrow
    9750. \r\n
    9751. Jens Meyer
    9752. \r\n
    9753. Fire Crow
    9754. \r\n
    9755. Michael Foord
    9756. \r\n
    9757. Jorge Rivero
    9758. \r\n
    9759. Luca Sabatini

    9760. \r\n
    9761. Kevin Wang
    9762. \r\n
    9763. Babak Badaei
    9764. \r\n
    9765. Andrew Webster
    9766. \r\n
    9767. Akira Kitada
    9768. \r\n
    9769. Aggie L. Choi
    9770. \r\n
    9771. Eric Natolini
    9772. \r\n
    9773. Hans-Georg Boden
    9774. \r\n
    9775. Charles Miller
    9776. \r\n
    9777. Kevin Hazzard
    9778. \r\n
    9779. Michael Bentley

    9780. \r\n
    9781. Adrian Vazquez
    9782. \r\n
    9783. Szilveszter Farkas
    9784. \r\n
    9785. Alex Dreyer
    9786. \r\n
    9787. Chris Petrich
    9788. \r\n
    9789. Till Keyling
    9790. \r\n
    9791. atusi nakamura
    9792. \r\n
    9793. tjin bui min
    9794. \r\n
    9795. Brian Loomis
    9796. \r\n
    9797. Evgeny Fadeev
    9798. \r\n
    9799. Geoffrey Hing

    9800. \r\n
    9801. Ankur Kumar
    9802. \r\n
    9803. Phil Curtiss
    9804. \r\n
    9805. КонÑтантин ЗемлÑк
    9806. \r\n
    9807. Edwin van der Velden
    9808. \r\n
    9809. SourceForge, Inc.
    9810. \r\n
    9811. Kurt Grandis
    9812. \r\n
    9813. Noah Gift
    9814. \r\n
    9815. Neil Joshi
    9816. \r\n
    9817. Gene
    9818. \r\n
    9819. Raidlogs

    9820. \r\n
    9821. David Garc�a Alonso
    9822. \r\n
    9823. William Roscoe
    9824. \r\n
    9825. Allebrum
    9826. \r\n
    9827. Heather Spealman
    9828. \r\n
    9829. Sardorbek Pulatov
    9830. \r\n
    9831. NAOFUMI SAKAGUCHI
    9832. \r\n
    9833. Lauren C. Dandridge
    9834. \r\n
    9835. Cerise Cauthron
    9836. \r\n
    9837. Joelle BRUEL
    9838. \r\n
    9839. Paolo

    9840. \r\n
    9841. Eric Sorensen
    9842. \r\n
    9843. Dirkjan Ochtman
    9844. \r\n
    9845. Maximillian Dornseif
    9846. \r\n
    9847. PythonForum.Org
    9848. \r\n
    9849. Pallav Negi
    9850. \r\n
    9851. Praveen I V
    9852. \r\n
    9853. Steve O'Brien
    9854. \r\n
    9855. Cedric Small
    9856. \r\n
    9857. Dawns
    9858. \r\n
    9859. JIN HYEON WOO

    9860. \r\n
    9861. Renato Pereira
    9862. \r\n
    9863. Billy Boone
    9864. \r\n
    9865. Charles Hollingsworth
    9866. \r\n
    9867. Woosha IT
    9868. \r\n
    9869. Scott Turnbull
    9870. \r\n
    9871. Andrew Garner
    9872. \r\n
    9873. Kaan AKSIT
    9874. \r\n
    9875. Made in Hawaii USA
    9876. \r\n
    9877. Michael Stubbs
    9878. \r\n
    9879. Christopher Blunck

    9880. \r\n
    9881. Tengiz Sharafiev
    9882. \r\n
    9883. Carrie Black
    9884. \r\n
    9885. Stepan Wagner
    9886. \r\n
    9887. Matthew Sacks
    9888. \r\n
    9889. Kristaps Buliņš
    9890. \r\n
    9891. Stephen Cooper
    9892. \r\n
    9893. Terry Phillips
    9894. \r\n
    9895. Mary Pelepchuk
    9896. \r\n
    9897. Lesli Olding
    9898. \r\n
    9899. Artem Godlevskyy

    9900. \r\n
    9901. Jeff Forcier
    9902. \r\n
    9903. George VanArsdale
    9904. \r\n
    9905. the cvs2svn developers
    9906. \r\n
    9907. Slavko Radman
    9908. \r\n
    9909. Michael Trier
    9910. \r\n
    9911. S J Nixon
    9912. \r\n
    9913. David Zakariaie
    9914. \r\n
    9915. Charles M Palmer
    9916. \r\n
    9917. Salil Kulkarni
    9918. \r\n
    9919. Roger Pack

    9920. \r\n
    9921. Brian Munroe
    9922. \r\n
    9923. Keith Rudkin P/L ATF Rudkin Trading Trust
    9924. \r\n
    9925. Doug Woods
    9926. \r\n
    9927. Matt Mahaney
    9928. \r\n
    9929. David Gallwey
    9930. \r\n
    9931. Jeff Flanders
    9932. \r\n
    9933. 兼山 元太
    9934. \r\n
    9935. Masakazu Ejiri
    9936. \r\n
    9937. Melanie Fox
    9938. \r\n
    9939. Stephanus Henzi

    9940. \r\n
    9941. Gregory Meno
    9942. \r\n
    9943. Scott Hassan
    9944. \r\n
    9945. enQuira, Inc.
    9946. \r\n
    9947. Robert Ramsdell
    9948. \r\n
    9949. Tarik Sabanovic
    9950. \r\n
    9951. Katsuhiko Kawai
    9952. \r\n
    9953. Alexandre Carbonell
    9954. \r\n
    9955. Andres Martinez
    9956. \r\n
    9957. James Hancock
    9958. \r\n
    9959. PMP Certification

    9960. \r\n
    9961. R. David Murray
    9962. \r\n
    9963. Thomas Crawley
    9964. \r\n
    9965. Chris Bennett
    9966. \r\n
    9967. David Peckham
    9968. \r\n
    9969. Ludwig Ries
    9970. \r\n
    9971. Friedrich Forstner
    9972. \r\n
    9973. Omidyar Network
    9974. \r\n
    9975. Dillon Hicks
    9976. \r\n
    9977. Olivier Friard
    9978. \r\n
    9979. Joseph Tevaarwerk

    9980. \r\n
    9981. jack leene
    9982. \r\n
    9983. Alex de Landgraaf
    9984. \r\n
    9985. Snowflake-sl
    9986. \r\n
    9987. DR F F Robb
    9988. \r\n
    9989. masashi yoshida
    9990. \r\n
    9991. Jason Jerome
    9992. \r\n
    9993. Mike Rolish
    9994. \r\n
    9995. Michal Bartoszkiewicz
    9996. \r\n
    9997. OLEG OVCHINNIKOV
    9998. \r\n
    9999. duncan ablitt

    10000. \r\n
    10001. Nino Lopez
    10002. \r\n
    10003. Paul Dubois
    10004. \r\n
    10005. Shaoduo Xie China
    10006. \r\n
    10007. Karun Dambiec
    10008. \r\n
    10009. Sarosh Sultan Khwaja
    10010. \r\n
    10011. Lars P Mathiassen
    10012. \r\n
    10013. Larry Bugbee
    10014. \r\n
    10015. YCFlame
    10016. \r\n
    10017. Robinson P Tryon
    10018. \r\n
    10019. Robert Black

    10020. \r\n
    10021. noppaon songsawasd
    10022. \r\n
    10023. Graeme Glass
    10024. \r\n
    10025. jebat ayam
    10026. \r\n
    10027. david fuard
    10028. \r\n
    10029. Brian Jinwright
    10030. \r\n
    10031. Karyn Barnes
    10032. \r\n
    10033. Raymond Hettinger
    10034. \r\n
    10035. Robin D Bruce
    10036. \r\n
    10037. musheng chen
    10038. \r\n
    10039. Ricardo Nunes Cerqueira

    10040. \r\n
    10041. Linda Hall
    10042. \r\n
    10043. M. Dale Keith
    10044. \r\n
    10045. Andrew Shearer
    10046. \r\n
    10047. Andy Kopra
    10048. \r\n
    10049. jim Andersson
    10050. \r\n
    10051. Cyrus Gross
    10052. \r\n
    10053. Rick Floyd
    10054. \r\n
    10055. ISAAC RAMNATH
    10056. \r\n
    10057. Simple Station
    10058. \r\n
    10059. Joshua Banton

    10060. \r\n
    10061. Sebastien Capt
    10062. \r\n
    10063. Iru Hwang
    10064. \r\n
    10065. Affiliated Commerce
    10066. \r\n
    10067. Wilton de O Garcia
    10068. \r\n
    10069. josh livni
    10070. \r\n
    10071. Nikolay Ivanov
    10072. \r\n
    10073. orçun avşar
    10074. \r\n
    10075. derin
    10076. \r\n
    10077. St Matthew eAccounting
    10078. \r\n
    10079. Alan Daniels

    10080. \r\n
    10081. David Avraamides
    10082. \r\n
    10083. Gregory Trubetskoy
    10084. \r\n
    10085. Yohei Sasaki
    10086. \r\n
    10087. Travis Bear
    10088. \r\n
    10089. 周 文喆
    10090. \r\n
    10091. kilo
    10092. \r\n
    10093. Will Boyce
    10094. \r\n
    10095. Orcun Avsar
    10096. \r\n
    10097. Ed Sweeney
    10098. \r\n
    10099. Chris Gemignani

    10100. \r\n
    10101. Earl Strassberger
    10102. \r\n
    10103. Michael Rolish
    10104. \r\n
    10105. Stephen C Waterbury
    10106. \r\n
    10107. Mr Robert C Ramsdell III
    10108. \r\n
    10109. Samuel John
    10110. \r\n
    10111. Kevin Sandifer
    10112. \r\n
    10113. Computer Line Associates
    10114. \r\n
    10115. Edward Corns
    10116. \r\n
    10117. ZipTicker
    10118. \r\n
    10119. Nichols Software, Inc.

    10120. \r\n
    10121. Robert Parnes
    10122. \r\n
    10123. Caleb Nidey
    10124. \r\n
    10125. OSDN / VA Software
    10126. \r\n
    10127. NSW Rural Doctors Network
    10128. \r\n
    10129. Ramon Sant Igarreta
    10130. \r\n
    10131. Alin Hanghiuc
    10132. \r\n
    10133. Lyle Dingus
    10134. \r\n
    10135. Rahul Viswanathan
    10136. \r\n
    10137. Lijst.com
    10138. \r\n
    10139. Mitch Chapman

    10140. \r\n
    10141. mercurial-ja
    10142. \r\n
    10143. Tyler Rimstad
    10144. \r\n
    10145. Catherine Arlett
    10146. \r\n
    10147. Stefan K�gl
    10148. \r\n
    10149. Andrew
    10150. \r\n
    10151. Bradley Allen
    10152. \r\n
    10153. Evan Luine
    10154. \r\n
    10155. TALHA KARABIYIK
    10156. \r\n
    10157. Pradeep Gowda
    10158. \r\n
    10159. Arnaud DELLU

    10160. \r\n
    10161. Dimitar Balinov
    10162. \r\n
    10163. Chitpol
    10164. \r\n
    10165. Vojtěch Rylko
    10166. \r\n
    10167. Anton Sipos
    10168. \r\n
    10169. Guido van Rossum
    10170. \r\n
    10171. Jonathan March
    10172. \r\n
    10173. Jeffrey Wilcox
    10174. \r\n
    10175. Skandar De Anaya
    10176. \r\n
    10177. Clifford Gruen
    10178. \r\n
    10179. NVP

    10180. \r\n
    10181. Ruth Peterson
    10182. \r\n
    10183. James Dukarm
    10184. \r\n
    10185. Lincoln
    10186. \r\n
    10187. Blanford Robinson
    10188. \r\n
    10189. Rigel Trajano
    10190. \r\n
    10191. Paul Johnson
    10192. \r\n
    10193. Kevin R Crothers
    10194. \r\n
    10195. Simon Forman
    10196. \r\n
    10197. Zope Corporation
    10198. \r\n
    10199. Robert Cole

    10200. \r\n
    10201. Anton G.
    10202. \r\n
    10203. Mark Nenadov
    10204. \r\n
    10205. Kerry King
    10206. \r\n
    10207. Gerd Woetzel
    10208. \r\n
    10209. Oluwatosin Sodipe
    10210. \r\n
    10211. Blok
    10212. \r\n
    10213. 胡 知锋
    10214. \r\n
    10215. David Rovardi
    10216. \r\n
    10217. Tasuku SUENAGA a.k.a. gunyarakun
    10218. \r\n
    10219. Filipe AlvesFerreira

    10220. \r\n
    10221. Mr Thomas A Crawley
    10222. \r\n
    10223. Marc Dechico
    10224. \r\n
    10225. Christopher David Blunck Esq
    10226. \r\n
    10227. Robert F. Hossley
    10228. \r\n
    10229. Fredrick Gruman
    10230. \r\n
    10231. Stefan Scholl
    10232. \r\n
    10233. Roy H Han
    10234. \r\n
    10235. Ariel Nunez
    10236. \r\n
    10237. Christopher J Cook
    10238. \r\n
    10239. David Moran Anton

    10240. \r\n
    10241. Elizabeth Paton-Simpson
    10242. \r\n
    10243. Marian Deaconescu
    10244. \r\n
    10245. HenkJan van der Pol
    10246. \r\n
    10247. Browsershots
    10248. \r\n
    10249. Sarah Fortune
    10250. \r\n
    10251. Scott J Irwin
    10252. \r\n
    10253. Mr Brian Lyttle
    10254. \r\n
    10255. Mr Bill Zingler
    10256. \r\n
    10257. Mark C Jones
    10258. \r\n
    10259. Benjamin Zweig

    10260. \r\n
    10261. Buğra Okçu
    10262. \r\n
    10263. Alexandr Puzeyev
    10264. \r\n
    10265. Alan McIntyre
    10266. \r\n
    10267. Leendert Geffen
    10268. \r\n
    10269. Larry Jones
    10270. \r\n
    10271. Zettai.net
    10272. \r\n
    10273. Marvin Paul
    10274. \r\n
    10275. Elson Rodriguez
    10276. \r\n
    10277. Mike Cariaso
    10278. \r\n
    10279. Tim Sharpe

    10280. \r\n
    10281. Jonathan Schmidt
    10282. \r\n
    10283. Alberta Liquor and Gaming Commission
    10284. \r\n
    10285. Jan Kanis
    10286. \r\n
    10287. IOANNIS GIFTAKIS
    10288. \r\n
    10289. Misato Takahashi
    10290. \r\n
    10291. Fabien Schwob
    10292. \r\n
    10293. Michael Rotondo
    10294. \r\n
    10295. Adam Breashers
    10296. \r\n
    10297. Patrick Brooks
    10298. \r\n
    10299. David Slate

    10300. \r\n
    10301. Akihiro Takizawa
    10302. \r\n
    10303. David K Friedman
    10304. \r\n
    10305. Zingler & Associates, Inc.
    10306. \r\n
    10307. Clarke Wittstruck
    10308. \r\n
    10309. Bob Heida
    10310. \r\n
    10311. William Metz
    10312. \r\n
    10313. Matthew Costello
    10314. \r\n
    10315. Diego Havenstein
    10316. \r\n
    10317. Peter Ziobrzynski
    10318. \r\n
    10319. Sandro Dutra

    10320. \r\n
    10321. informatica 3dart di Diego Masciolini
    10322. \r\n
    10323. Whil Hentzen
    10324. \r\n
    10325. Eileen Quintero
    10326. \r\n
    10327. Radek Å enfeld
    10328. \r\n
    10329. Drew Mason-Laurence
    10330. \r\n
    10331. John van Uitregt
    10332. \r\n
    10333. Holden Web LLC
    10334. \r\n
    10335. Carsten Lindner
    10336. \r\n
    10337. Zed A Shaw
    10338. \r\n
    10339. Stephen Carmona

    10340. \r\n
    10341. Mr Brian E Magill
    10342. \r\n
    10343. Mr Thomas Herve
    10344. \r\n
    10345. K. Larsen
    10346. \r\n
    10347. Shawn Storie
    10348. \r\n
    10349. Damon Jordan
    10350. \r\n
    10351. Ed Grether
    10352. \r\n
    10353. mr peter harris
    10354. \r\n
    10355. Steven H. Rogers
    10356. \r\n
    10357. Kamal Gill
    10358. \r\n
    10359. Caren Roberty

    10360. \r\n
    10361. Mr Eric L Shropshire
    10362. \r\n
    10363. Ken Dere
    10364. \r\n
    10365. Ioan Vlad
    10366. \r\n
    10367. matt perpick
    10368. \r\n
    10369. Mike Bayer
    10370. \r\n
    10371. Mr Earl Strassberger
    10372. \r\n
    10373. Lee Murach
    10374. \r\n
    10375. Brian Blazer
    10376. \r\n
    10377. Wayne Sutton
    10378. \r\n
    10379. Albert Hopkins

    10380. \r\n
    10381. Roy Smith
    10382. \r\n
    10383. Ilguiz Latypov
    10384. \r\n
    10385. sa puushkofik
    10386. \r\n
    10387. Lisa Goldsberry
    10388. \r\n
    10389. Mr Warren R Thom
    10390. \r\n
    10391. Mail-Archive, Inc.
    10392. \r\n
    10393. 晓冬 牛
    10394. \r\n
    10395. Masahiro Fukuda
    10396. \r\n
    10397. Andy Stark
    10398. \r\n
    10399. Mr Rodney Drenth

    10400. \r\n
    10401. Mr Jeff Flanders
    10402. \r\n
    10403. Mr Jason Whitlark
    10404. \r\n
    10405. Gerard C Blais
    10406. \r\n
    10407. Jorge Monteiro
    10408. \r\n
    10409. Mr Luke Powers
    10410. \r\n
    10411. Daniel Young
    10412. \r\n
    10413. Srinidhi Venkatesh
    10414. \r\n
    10415. Wenzhe Zhou
    10416. \r\n
    10417. Trelgol
    10418. \r\n
    10419. Brian J. Mahoney

    10420. \r\n
    10421. Fernando Cuevas JR
    10422. \r\n
    10423. B&D Building
    10424. \r\n
    10425. Elegant Stitches
    10426. \r\n
    10427. Santiago Suarez Ordonez
    10428. \r\n
    10429. Susan Forman
    10430. \r\n
    10431. Iris Goosen
    10432. \r\n
    10433. Phil Helms
    10434. \r\n
    10435. David Niskanen
    10436. \r\n
    10437. AdytumSolutions, Inc.
    10438. \r\n
    10439. Nancy Rice Bott

    10440. \r\n
    10441. LD Landis
    10442. \r\n
    10443. Net100 Partners Ltd
    10444. \r\n
    10445. Yichun Wang
    10446. \r\n
    10447. laka
    10448. \r\n
    10449. Alec Bennett
    10450. \r\n
    10451. Lincoln Frye
    10452. \r\n
    10453. Kashya (Ronnie Maor)
    10454. \r\n
    10455. Forrest Voight
    10456. \r\n
    10457. Charles Woods
    10458. \r\n
    10459. Peter Schinkel

    10460. \r\n
    10461. Andrew Lientz and Chelsea Shure
    10462. \r\n
    10463. Shigeru Maruyama
    10464. \r\n
    10465. Lester Carr
    10466. \r\n
    10467. Jure Vrscaj
    10468. \r\n
    10469. Theo Thomas
    10470. \r\n
    10471. Kirk Ireson
    10472. \r\n
    10473. Gordon Tillman
    10474. \r\n
    10475. Samuel Schulenburg
    10476. \r\n
    10477. Jeremy Dunck
    10478. \r\n
    10479. nathan Jones

    10480. \r\n
    10481. Stuart Ellis
    10482. \r\n
    10483. Satoshi Abe
    10484. \r\n
    10485. Mark Pape
    10486. \r\n
    10487. Kendall Whitesell
    10488. \r\n
    10489. Charles Mead
    10490. \r\n
    10491. Microsoft LNC
    10492. \r\n
    10493. Thomas Herve
    10494. \r\n
    10495. Narupon Chattrapiban
    10496. \r\n
    10497. Chad Whitacre
    10498. \r\n
    10499. Mr Chris P McDonough

    10500. \r\n
    10501. Edward m. Blake
    10502. \r\n
    10503. Istvan Albert
    10504. \r\n
    10505. Rich M. Krauter
    10506. \r\n
    10507. Mr Shannon -jj Behrens
    10508. \r\n
    10509. Larry Rutledge
    10510. \r\n
    10511. Scott Sheffield
    10512. \r\n
    10513. Barry Miller
    10514. \r\n
    10515. Takuo Yonezawa
    10516. \r\n
    10517. Jeff Kowalczyk
    10518. \r\n
    10519. Ian King

    10520. \r\n
    10521. Gary Culp
    10522. \r\n
    10523. СеваÑтьÑн Рабдано
    10524. \r\n
    10525. David Finch
    10526. \r\n
    10527. Xiao Liang
    10528. \r\n
    10529. Aaron Rhodes
    10530. \r\n
    10531. Mel Vincent
    10532. \r\n
    10533. Massimo Bassi
    10534. \r\n
    10535. DOTS
    10536. \r\n
    10537. Omar El-Domeiri
    10538. \r\n
    10539. Axiomfire

    10540. \r\n
    10541. James Gray
    10542. \r\n
    10543. Gerard CBlais
    10544. \r\n
    10545. Contradix Corporation
    10546. \r\n
    10547. Minghong Lin
    10548. \r\n
    10549. Ubaldo Bulla
    10550. \r\n
    10551. Robert L. Gabardy
    10552. \r\n
    10553. Edward M Kent
    10554. \r\n
    10555. Sarah Lambert
    10556. \r\n
    10557. Jan Decaluwe
    10558. \r\n
    10559. Michael H Jeffries Living Trust

    10560. \r\n
    10561. Howard Jones
    10562. \r\n
    10563. Uldis Bojars
    10564. \r\n
    10565. Didier THOMAS
    10566. \r\n
    10567. David Koonce
    10568. \r\n
    10569. Mike Arnott
    10570. \r\n
    10571. Michael Boroditsky
    10572. \r\n
    10573. Ian Caven
    10574. \r\n
    10575. Yusei TAHARA
    10576. \r\n
    10577. Wiilliam Neil Howell
    10578. \r\n
    10579. American Transport, Inc.

    10580. \r\n
    10581. Tetsuya Kitahata
    10582. \r\n
    10583. Cingular Matching Gift Center
    10584. \r\n
    10585. Luiz Felipe Eneas
    10586. \r\n
    10587. PEIWEI WU
    10588. \r\n
    10589. Randy Stulce
    10590. \r\n
    10591. Marshall Thompson
    10592. \r\n
    10593. Constantinos Laitsas
    10594. \r\n
    10595. Rich M.Krauter
    10596. \r\n
    10597. Harold Moss
    10598. \r\n
    10599. bodo august schnabel

    10600. \r\n
    10601. Wallace P. McMartin
    10602. \r\n
    10603. Shin Takeyama
    10604. \r\n
    10605. frank mahony
    10606. \r\n
    10607. RICARDO CERQUEIRA
    10608. \r\n
    10609. Jules Allen
    10610. \r\n
    10611. Yuuki Kikuchi
    10612. \r\n
    10613. Andrew Clark
    10614. \r\n
    10615. Dorothy Heim
    10616. \r\n
    10617. Christopher and Julie Blunck
    10618. \r\n
    10619. Andrew Groom

    10620. \r\n
    10621. Walt Buehring
    10622. \r\n
    10623. Clark C. Evans
    10624. \r\n
    10625. charles hightower
    10626. \r\n
    10627. Jostein Skaar
    10628. \r\n
    10629. Amir Bakhtiar
    10630. \r\n
    10631. Daniel Ogden
    10632. \r\n
    10633. Andrew Ittner
    10634. \r\n
    10635. mark borges
    10636. \r\n
    10637. David Kraus
    10638. \r\n
    10639. David Goodger

    10640. \r\n
    10641. Patrick Maupin
    10642. \r\n
    10643. Jusup Budiyasa
    10644. \r\n
    10645. Glenn Parker
    10646. \r\n
    10647. Higinio Cachola
    10648. \r\n
    10649. W.T. Bridgman
    10650. \r\n
    10651. Bernhard Sch�ler
    10652. \r\n
    10653. Robert M. Emmons
    10654. \r\n
    10655. Sami Badawi
    10656. \r\n
    10657. charles a. hightower
    10658. \r\n
    10659. Thomas J Lucas

    10660. \r\n
    10661. Hans-Werner Bartels
    10662. \r\n
    10663. David A. and Cindy L. Byrne
    10664. \r\n
    10665. Grant Whiting
    10666. \r\n
    10667. Gene Ha
    10668. \r\n
    10669. Peggy Baker
    10670. \r\n
    10671. andrew sommerville
    10672. \r\n
    10673. Rostislav Cerovsky
    10674. \r\n
    10675. Astor M Castelo
    10676. \r\n
    10677. Armin Rigo
    10678. \r\n
    10679. James Conant

    10680. \r\n
    10681. Carl Phillips
    10682. \r\n
    10683. William, H Cozad
    10684. \r\n
    10685. Robin K. Friedrich
    10686. \r\n
    10687. Ivor Ellis
    10688. \r\n
    10689. Beverly Yahr
    10690. \r\n
    10691. Doug Blanding
    10692. \r\n
    10693. Jesse Costales
    10694. \r\n
    10695. Brenda Pruett
    10696. \r\n
    10697. Eric Florenzano
    10698. \r\n
    10699. St�phane KLEIN

    10700. \r\n
    10701. Rad Widmer
    10702. \r\n
    10703. George Paci
    10704. \r\n
    10705. Rob Nelson
    10706. \r\n
    10707. Theodore Gielow
    10708. \r\n
    10709. Fabio Bovelacci
    10710. \r\n
    10711. Peter Hamilton
    10712. \r\n
    10713. The Incredible Pear
    10714. \r\n
    10715. Christina Stevens
    10716. \r\n
    10717. Noah Aboussafy (IT Goes Click)
    10718. \r\n
    10719. Arthur Kjos

    10720. \r\n
    10721. Greg Lindstrom
    10722. \r\n
    10723. Andrew Engle
    10724. \r\n
    10725. Thomas Bennett
    10726. \r\n
    10727. Egil R�yeng
    10728. \r\n
    10729. Angela Roberts
    10730. \r\n
    10731. Bradley J. Allen
    10732. \r\n
    10733. Lupegi Liao / Chiung-i Huang
    10734. \r\n
    10735. Eugene Mazur
    10736. \r\n
    10737. Randall E Ivener
    10738. \r\n
    10739. Pete Soper

    10740. \r\n
    10741. Daniel Garman
    10742. \r\n
    10743. William T. Bridgman
    10744. \r\n
    10745. Mike LeonGuerrero
    10746. \r\n
    10747. C-Ring Systems, Inc.
    10748. \r\n
    10749. Bob Burke
    10750. \r\n
    10751. Lynn C. Rees
    10752. \r\n
    10753. Les Matheson
    10754. \r\n
    10755. Judy Miller
    10756. \r\n
    10757. Jim Draper
    10758. \r\n
    10759. Robert Brewer

    10760. \r\n
    10761. Mike Thompson
    10762. \r\n
    10763. John Rhodes
    10764. \r\n
    10765. Douglas J Fort
    10766. \r\n
    10767. Jeff Suttles
    10768. \r\n
    10769. Andrew Doran
    10770. \r\n
    10771. Thomas Hodgson
    10772. \r\n
    10773. David Freedman
    10774. \r\n
    10775. David Hancock
    10776. \r\n
    10777. Carl Banks
    10778. \r\n
    10779. Marco Napolitano

    10780. \r\n
    10781. Dave Jones
    10782. \r\n
    10783. KGS Electronics
    10784. \r\n
    10785. Tony Cappellini
    10786. \r\n
    10787. Mike Beachy
    10788. \r\n
    10789. Julien Poissonnier
    10790. \r\n
    10791. Open Source Appls Foundation
    10792. \r\n
    10793. D. I. Hoenicke
    10794. \r\n
    10795. Wesleyt Witten
    10796. \r\n
    10797. Steven Zatz (Joan Lesnick)
    10798. \r\n
    10799. Jaime Peschiera

    10800. \r\n
    10801. Heikki J Toivonen
    10802. \r\n
    10803. Manfred Hanenkamp
    10804. \r\n
    10805. Irmen de Jong
    10806. \r\n
    10807. Bernhard Engelskircher
    10808. \r\n
    10809. Charles Richmond
    10810. \r\n
    10811. Reed Simpson
    10812. \r\n
    10813. Thomas Birsic
    10814. \r\n
    10815. Charles McIntire
    10816. \r\n
    10817. Brian van den Broek
    10818. \r\n
    10819. Roland Reumerman

    10820. \r\n
    10821. Vecta Exploration
    10822. \r\n
    10823. John Coker
    10824. \r\n
    10825. Kyle Sullivan
    10826. \r\n
    10827. Enigmatics
    10828. \r\n
    10829. Samuel Wilson
    10830. \r\n
    10831. Sebastian Erben
    10832. \r\n
    10833. Sebastjan
    10834. \r\n
    10835. Chris Thomas
    10836. \r\n
    10837. Beatrice During
    10838. \r\n
    10839. Don Spaulding II

    10840. \r\n
    10841. alan falk
    10842. \r\n
    10843. Petra Dr. Hayder-Eibl
    10844. \r\n
    10845. Steve Holden
    10846. \r\n
    10847. Will Leaman
    10848. \r\n
    10849. Dennis Furbush
    10850. \r\n
    10851. Hieu Hoang
    10852. \r\n
    10853. Michael Gwilliam
    10854. \r\n
    10855. Robert Emmons
    10856. \r\n
    10857. Gaurav DCosta
    10858. \r\n
    10859. Robert Zimmermann

    10860. \r\n
    10861. Greg Chapman
    10862. \r\n
    10863. Daniel Clark
    10864. \r\n
    10865. Jay Breda
    10866. \r\n
    10867. Stephen Jakubowski
    10868. \r\n
    10869. Ollie Rutherfurd
    10870. \r\n
    10871. veth guevarra
    10872. \r\n
    10873. John Pinner
    10874. \r\n
    10875. Thomas Verghese
    10876. \r\n
    10877. Matthew Ross
    10878. \r\n
    10879. Tim Douglas

    10880. \r\n
    10881. Nichols Software
    10882. \r\n
    10883. George Wills
    10884. \r\n
    10885. Lynn C Rees
    10886. \r\n
    10887. Paul Akerhielm
    10888. \r\n
    10889. Jeffrey Allen
    10890. \r\n
    10891. Tracy Ruggles
    10892. \r\n
    10893. Oleksandr Tyutyunnyk
    10894. \r\n
    10895. Ralph S Miller
    10896. \r\n
    10897. Steve Bailey
    10898. \r\n
    10899. Eric V. Smith

    10900. \r\n
    10901. Monash University Tea Room
    10902. \r\n
    10903. Mark D Borges
    10904. \r\n
    10905. Dermot Doran
    10906. \r\n
    10907. Val Bykovsky
    10908. \r\n
    10909. Alan Mitchell
    10910. \r\n
    10911. Michael Beachy
    10912. \r\n
    10913. Cn'V Corvette Sales
    10914. \r\n
    10915. charles a hightower
    10916. \r\n
    10917. Society for American Archaeology
    10918. \r\n
    10919. Fred Allen

    10920. \r\n
    10921. Kazuya Fukamachi
    10922. \r\n
    10923. Tom Suzuki
    10924. \r\n
    10925. HAROLD RICHARDSON
    10926. \r\n
    10927. Basil Rouskas
    10928. \r\n
    10929. Aaron Nauman
    10930. \r\n
    10931. Todd Engle
    10932. \r\n
    10933. Robert N. Cordy
    10934. \r\n
    10935. Alfred Forster
    10936. \r\n
    10937. samik chakraborty
    10938. \r\n
    10939. Gordon Hemminger

    10940. \r\n
    10941. Kevin Altis
    10942. \r\n
    10943. Matthew Ranostay
    10944. \r\n
    10945. Johan Hahn
    10946. \r\n
    10947. Cimarron Taylor
    10948. \r\n
    10949. Adi Miller
    10950. \r\n
    10951. James Ross
    10952. \r\n
    10953. richard rosenberg
    10954. \r\n
    10955. Bruce Harrison
    10956. \r\n
    10957. Audun Vaaler
    10958. \r\n
    10959. Gatecrash

    10960. \r\n
    10961. Brian Bilbrey
    10962. \r\n
    10963. Gray Ward
    10964. \r\n
    10965. Thomas Varghese
    10966. \r\n
    10967. Yusei Tahara
    10968. \r\n
    10969. Sloan Brooks
    10970. \r\n
    10971. John LaTorre
    10972. \r\n
    10973. Richard Monroe
    10974. \r\n
    10975. Arthur Siegel
    10976. \r\n
    10977. Vicente Otero Santiago
    10978. \r\n
    10979. camilla palmer

    10980. \r\n
    10981. Mick Bryant
    10982. \r\n
    10983. Dr. S. Kudva, M.D.
    10984. \r\n
    10985. Phil Stressel, Sr.
    10986. \r\n
    10987. Yvonne Mohrbacher
    10988. \r\n
    10989. Erik Dahl
    10990. \r\n
    10991. Martin Nohr
    10992. \r\n
    10993. Paul McGuire
    10994. \r\n
    10995. George Montanaro
    10996. \r\n
    10997. Lex Berezhny
    10998. \r\n
    10999. Keller & Fuller, Inc.

    11000. \r\n
    11001. David Hatcher
    11002. \r\n
    11003. Susan Dean
    11004. \r\n
    11005. Chad Harrington
    11006. \r\n
    11007. Richard & Susan Ames
    11008. \r\n
    11009. Thomas Kaufmann
    11010. \r\n
    11011. ObeliskConsulting, Inc.
    11012. \r\n
    11013. James R. Hall-Morrison
    11014. \r\n
    11015. Richard Emslie
    11016. \r\n
    11017. Madeline Gleich
    11018. \r\n
    11019. Vincent Wehren

    11020. \r\n
    11021. William Donais
    11022. \r\n
    11023. Leo Lawrenson
    11024. \r\n
    11025. James Kehoe
    11026. \r\n
    11027. Altasoft
    11028. \r\n
    11029. CD Baby
    11030. \r\n
    11031. Ka-Ping Yee
    11032. \r\n
    11033. Andriy Kravchuk
    11034. \r\n
    11035. John Jarvis
    11036. \r\n
    11037. James McManus
    11038. \r\n
    11039. Mike Spencer

    11040. \r\n
    11041. Gheorghe Gheorghiu
    11042. \r\n
    11043. Scott Haas
    11044. \r\n
    11045. Greg Barr
    11046. \r\n
    11047. Vincent Roy
    11048. \r\n
    11049. OSDN / VA Software (athompso)
    11050. \r\n
    11051. Robert & Kay, Inc
    11052. \r\n
    11053. Michael McCafferty
    11054. \r\n
    11055. John Barker
    11056. \r\n
    11057. Scott Leerssen
    11058. \r\n
    11059. OSDN / VA Software (mckemie)

    11060. \r\n
    11061. Jeffrey Smith
    11062. \r\n
    11063. Robert Jeppesen
    11064. \r\n
    11065. Dominick Franzini
    11066. \r\n
    11067. Rodrigo Rodrigues
    11068. \r\n
    11069. Ron Willard
    11070. \r\n
    11071. Neundorfer, Inc.
    11072. \r\n
    11073. Farrel Buchinsky
    11074. \r\n
    11075. Marcos Sanchez Provencio
    11076. \r\n
    11077. Hans-Martin Hess
    11078. \r\n
    11079. Patricia Kingsley

    11080. \r\n
    11081. Timothy Smith
    11082. \r\n
    11083. Bruce Nehlsen
    11084. \r\n
    11085. Stefan Niederhauser
    11086. \r\n
    11087. Lawrence Landis
    11088. \r\n
    11089. fie raymon
    11090. \r\n
    11091. Mark Nias
    11092. \r\n
    11093. Max Wilbert
    11094. \r\n
    11095. Iftikhar Haq
    11096. \r\n
    11097. Elizabeth Hogan
    11098. \r\n
    11099. David Givers

    11100. \r\n
    11101. Roman Suzuki
    11102. \r\n
    11103. Roger Upole
    11104. \r\n
    11105. Paul Bonneau
    11106. \r\n
    11107. Craig Downing
    11108. \r\n
    11109. Roy Cline
    11110. \r\n
    11111. Jon Bartelson
    11112. \r\n
    11113. Franco Mastroddi
    11114. \r\n
    11115. Torsten K�hnel
    11116. \r\n
    11117. Daniele Berti
    11118. \r\n
    11119. David Carroll

    11120. \r\n
    11121. li jun zheng
    11122. \r\n
    11123. Donnal Walter
    11124. \r\n
    11125. Michael Jacquot
    11126. \r\n
    11127. NETWORKOLOGIST
    11128. \r\n
    11129. Kyle Brunskill
    11130. \r\n
    11131. Tim Godfrey
    11132. \r\n
    11133. Libor Foltynek
    11134. \r\n
    11135. Ataman Software, Inc
    11136. \r\n
    11137. Joel Hall
    11138. \r\n
    11139. Bernard Delmee

    11140. \r\n
    11141. Harrison Chauncey
    11142. \r\n
    11143. Donald Harper
    11144. \r\n
    11145. Thomas Zarecki
    11146. \r\n
    11147. Leslie Olding
    11148. \r\n
    11149. Paul F. DuBois
    11150. \r\n
    11151. A.M. Kuchling
    11152. \r\n
    11153. Robert Bryant
    11154. \r\n
    11155. Robert Maynard
    11156. \r\n
    11157. Otto Pichlhoefer
    11158. \r\n
    11159. Duane Kaufman

    11160. \r\n
    11161. Mark McEahern
    11162. \r\n
    11163. Hordern House Rare Books
    11164. \r\n
    11165. Alden Hart
    11166. \r\n
    11167. Paul Winkler
    11168. \r\n
    11169. Lawrence D Landis
    11170. \r\n
    11171. Stephen Maharam
    11172. \r\n
    11173. Jim Stone
    11174. \r\n
    11175. Grant Harris
    11176. \r\n
    11177. Dale Potter
    11178. \r\n
    11179. Martin Seibert

    11180. \r\n
    11181. Wolfgang Demisch
    11182. \r\n
    11183. David Niergarth
    11184. \r\n
    11185. ed van sicklin
    11186. \r\n
    11187. Martin Spear
    11188. \r\n
    11189. Robert Cordy
    11190. \r\n
    11191. High Tech Trading Company
    11192. \r\n
    11193. Its Your Turn, Inc.
    11194. \r\n
    11195. Bill Sconce
    11196. \r\n
    11197. George Runyan
    11198. \r\n
    11199. Tobias Geiger

    11200. \r\n
    11201. Jason Hitch
    11202. \r\n
    11203. Peter Hansen
    11204. \r\n
    11205. Daniel Garber
    11206. \r\n
    11207. Jeff Griffith
    11208. \r\n
    11209. Mike Hansen
    11210. \r\n
    11211. Kevin Meboe
    11212. \r\n
    11213. Peter Haines
    11214. \r\n
    11215. Matt Campbell
    11216. \r\n
    11217. JS Wild
    11218. \r\n
    11219. marco gillies

    11220. \r\n
    11221. Charles
    11222. \r\n
    11223. Eskander Kazim
    11224. \r\n
    11225. Pete Adams
    11226. \r\n
    11227. Katherine Kennedy
    11228. \r\n
    11229. Russell Ruckman
    11230. \r\n
    11231. Jim Lyles
    11232. \r\n
    11233. Daniel Gordon
    11234. \r\n
    11235. Christopher Kirkpatrick
    11236. \r\n
    11237. Stephen Tremel
    11238. \r\n
    11239. Debra Abberton

    11240. \r\n
    11241. Chai C Ang
    11242. \r\n
    11243. William Stuart
    11244. \r\n
    11245. Simon Michael
    11246. \r\n
    11247. Joseph J. Pamer
    11248. \r\n
    11249. Dan Downing
    11250. \r\n
    11251. John seward
    11252. \r\n
    11253. S Willison
    11254. \r\n
    11255. Nichalas Enser
    11256. \r\n
    11257. Robert Purbrick
    11258. \r\n
    11259. Vineet Jain

    11260. \r\n
    11261. David Eriksson
    11262. \r\n
    11263. Robert Howard
    11264. \r\n
    11265. Evan Jones
    11266. \r\n
    11267. Brian McKenna
    11268. \r\n
    11269. David Pentecost
    11270. \r\n
    11271. Bernd Kunrath
    11272. \r\n
    11273. Roger Eaton
    11274. \r\n
    11275. M. Khan
    11276. \r\n
    11277. Piers Lauder
    11278. \r\n
    11279. Bonnie Kosanke

    11280. \r\n
    11281. Sebastian Wilhelmi
    11282. \r\n
    11283. Chad W Whitacre
    11284. \r\n
    11285. Ian Cook
    11286. \r\n
    11287. James Edwards
    11288. \r\n
    11289. Lada Adamic
    11290. \r\n
    11291. Sue Doersch
    11292. \r\n
    11293. John Welch
    11294. \r\n
    11295. Albert Martinez
    11296. \r\n
    11297. Mike Coward
    11298. \r\n
    11299. Tracy Woodrow

    11300. \r\n
    11301. David Packard
    11302. \r\n
    11303. Bob Watson
    11304. \r\n
    11305. Yun Huang Yong
    11306. \r\n
    11307. Larry McElderry
    11308. \r\n
    11309. Trevor Owen
    11310. \r\n
    11311. Steven Cooper
    11312. \r\n
    11313. Richard Honigsbaum
    11314. \r\n
    11315. Michael Chermside
    11316. \r\n
    11317. Gotpetsonline
    11318. \r\n
    11319. Michael Newhouse

    11320. \r\n
    11321. Scott Mitchell
    11322. \r\n
    11323. Michael James Hoy
    11324. \r\n
    11325. Philip H. Stressel, Sr.
    11326. \r\n
    11327. Clay Shirky
    11328. \r\n
    11329. John M. Copacino
    11330. \r\n
    11331. Jesse Brandeburg
    11332. \r\n
    11333. Andrew Todd
    11334. \r\n
    11335. B J Naughton III
    11336. \r\n
    11337. Mario La Valva
    11338. \r\n
    11339. OSDN / VA Software (gerryf)

    11340. \r\n
    11341. Mike Jaynes
    11342. \r\n
    11343. Travis Oliphant
    11344. \r\n
    11345. Daniel McLaughlin
    11346. \r\n
    11347. William King
    11348. \r\n
    11349. Dennis Coates
    11350. \r\n
    11351. Neal Norwitz
    11352. \r\n
    11353. Brian J. Gough
    11354. \r\n
    11355. defrance
    11356. \r\n
    11357. Judy Ross
    11358. \r\n
    11359. Dirk Meissner

    11360. \r\n
    11361. netmarkhome.com
    11362. \r\n
    11363. Nicholas S Jacobson
    11364. \r\n
    11365. Allie Lierman
    11366. \r\n
    11367. Dian Chesney
    11368. \r\n
    11369. Kazuhiro Sado
    11370. \r\n
    11371. Oliver Rutherfurd
    11372. \r\n
    11373. Jeffrey Johnson
    11374. \r\n
    11375. Glenn Williams
    11376. \r\n
    11377. Pinner John
    11378. \r\n
    11379. Albert Lilley

    11380. \r\n
    11381. Steven Alderson
    11382. \r\n
    11383. Allan Clarke
    11384. \r\n
    11385. Sandra Li
    11386. \r\n
    11387. Anthony Hawes
    11388. \r\n
    11389. Virginia Keech
    11390. \r\n
    11391. Tahoe Donner Association
    11392. \r\n
    11393. Vineet Singh
    11394. \r\n
    11395. Michael Butts
    11396. \r\n
    11397. Emile van Sebille
    11398. \r\n
    11399. Walter H Rauser

    11400. \r\n
    11401. Kevin Jacobs
    11402. \r\n
    11403. Joel Mandel
    11404. \r\n
    11405. Jean-Paul Calderone
    11406. \r\n
    11407. Glenn Gifford
    11408. \r\n
    11409. Robert Driscoll
    11410. \r\n
    11411. Dynapower Corporation
    11412. \r\n
    11413. Gordon Fang
    11414. \r\n
    11415. Gary DiNofrio
    11416. \r\n
    11417. Brian Pratt
    11418. \r\n
    11419. Meedio LLC

    11420. \r\n
    11421. Bob Pegan
    11422. \r\n
    11423. John Hodges
    11424. \r\n
    11425. Michael Sears
    11426. \r\n
    11427. Avigdor Sagi
    11428. \r\n
    11429. Gregory Wilson
    11430. \r\n
    11431. Dick Jones
    11432. \r\n
    11433. Susan Gleason
    11434. \r\n
    11435. Adytumsolutions
    11436. \r\n
    11437. Thomas E. Brosseau
    11438. \r\n
    11439. Douglas Sharp

    11440. \r\n
    11441. Ken Leonard
    11442. \r\n
    11443. Matthew Voight
    11444. \r\n
    11445. Downright Software LLC
    11446. \r\n
    11447. John Burkey
    11448. \r\n
    11449. Marco Mazzi
    11450. \r\n
    11451. omi
    11452. \r\n
    11453. Joel Carlson
    11454. \r\n
    11455. Pescom Research
    11456. \r\n
    11457. Nicholas G. Constantin
    11458. \r\n
    11459. Pontus Skold

    11460. \r\n
    11461. James McKiel
    11462. \r\n
    11463. William M Hesse
    11464. \r\n
    11465. Howard Lev
    11466. \r\n
    11467. Runsun Pan
    11468. \r\n
    11469. James Graham
    11470. \r\n
    11471. Roger Milton
    11472. \r\n
    11473. Christian Muirhead
    11474. \r\n
    11475. Jose Nunez
    11476. \r\n
    11477. Justin Vincent
    11478. \r\n
    11479. Jeri Steele

    11480. \r\n
    11481. William J Clabby
    11482. \r\n
    11483. Steven Scott
    11484. \r\n
    11485. Daniel Garner
    11486. \r\n
    11487. Keith Loose
    11488. \r\n
    11489. Roger Herzler
    11490. \r\n
    11491. Roger Walters
    11492. \r\n
    11493. Hakan R Esme
    11494. \r\n
    11495. Charles Cech
    11496. \r\n
    11497. Lockergnome
    11498. \r\n
    11499. Robert Stapp

    11500. \r\n
    11501. Marilyn Savory
    11502. \r\n
    11503. Brian Duncan
    11504. \r\n
    11505. Dave Mathiesen
    11506. \r\n
    11507. Wade Wagner
    11508. \r\n
    11509. Frederick Lim
    11510. \r\n
    11511. Ian T Kohl
    11512. \r\n
    11513. Gordon Weakliem
    11514. \r\n
    11515. Charles Erignac
    11516. \r\n
    11517. Lynette Moore
    11518. \r\n
    11519. nhok nhok

    11520. \r\n
    11521. Taed Wynnell
    11522. \r\n
    11523. Anthony Auretto
    11524. \r\n
    11525. Richard Moxley
    11526. \r\n
    11527. Rocky Bivens
    11528. \r\n
    11529. Lora Lee Mueller
    11530. \r\n
    11531. James Arnett
    11532. \r\n
    11533. greg Ward
    11534. \r\n
    11535. Matthew Dixon Cowles
    11536. \r\n
    11537. Lesmes Gonzalez Valles
    11538. \r\n
    11539. Patrick O'Flaherty

    11540. \r\n
    11541. Bas van der Meer
    11542. \r\n
    11543. Peyton McCullough
    11544. \r\n
    11545. Alvar & Associates
    11546. \r\n
    11547. George Pelletier
    11548. \r\n
    11549. Stewart Dugan
    11550. \r\n
    11551. Michael Bergmann
    11552. \r\n
    11553. Cameron Photography
    11554. \r\n
    11555. Fred Persson
    11556. \r\n
    11557. Sassan Hassassian
    11558. \r\n
    11559. Wael Al Ali

    11560. \r\n
    11561. Yeon-Ki Kim
    11562. \r\n
    11563. Leigh Klotz
    11564. \r\n
    11565. Roch Leduc
    11566. \r\n
    11567. Stephen P Gallagher
    11568. \r\n
    11569. Richard Karnesky
    11570. \r\n
    11571. Paul Gibson
    11572. \r\n
    11573. Advanced Industrial Automation
    11574. \r\n
    11575. Kim Nyberg
    11576. \r\n
    11577. Britta Jessen
    11578. \r\n
    11579. Tom Goodell

    11580. \r\n
    11581. David Butcher
    11582. \r\n
    11583. Shearer Software, Inc.
    11584. \r\n
    11585. Lorilei Thompson
    11586. \r\n
    11587. Rudy Spevacek
    11588. \r\n
    11589. Steve Chouinard
    11590. \r\n
    11591. Zoid Technologies, LLC.
    11592. \r\n
    11593. Michelle Weclsk
    11594. \r\n
    11595. Pierre Robitaille
    11596. \r\n
    11597. Javier Fernandez
    11598. \r\n
    11599. Kenley Lamaute

    11600. \r\n
    11601. Harry Freeman
    11602. \r\n
    11603. Jens Diemer
    11604. \r\n
    11605. William Pry
    11606. \r\n
    11607. Chris Cogdon
    11608. \r\n
    11609. Jim Hamill
    11610. \r\n
    11611. John Paradiso & Associates
    11612. \r\n
    11613. Michael Myers
    11614. \r\n
    11615. Ryan Rodgers
    11616. \r\n
    11617. Nancy Tindle
    11618. \r\n
    11619. Martin Drew

    11620. \r\n
    11621. Anjan Bacchu
    11622. \r\n
    11623. Richard Staff
    11624. \r\n
    11625. David Fox
    11626. \r\n
    11627. Simon Vans-Colina
    11628. \r\n
    11629. John Muller
    11630. \r\n
    11631. Jeff Davis
    11632. \r\n
    11633. Dana Graves
    11634. \r\n
    11635. Christopher G Walker
    11636. \r\n
    11637. Simon Perkins
    11638. \r\n
    11639. Sprint Tax, Inc.

    11640. \r\n
    11641. Carola Fuchs
    11642. \r\n
    11643. OSDN / VA Software (aportale)
    11644. \r\n
    11645. Wayne
    11646. \r\n
    11647. Jim Weber
    11648. \r\n
    11649. Luke Woollard
    11650. \r\n
    11651. Ludovico Magnocavallo
    11652. \r\n
    11653. John Byrd
    11654. \r\n
    11655. Donley Parmentier
    11656. \r\n
    11657. Dan Scherer
    11658. \r\n
    11659. George Cotsikis

    11660. \r\n
    11661. Suzette Benjamin
    11662. \r\n
    11663. Anne Verret-Speck
    11664. \r\n
    11665. Thomas Chused
    11666. \r\n
    11667. Michael Sock
    11668. \r\n
    11669. Marco Roxas
    11670. \r\n
    11671. Burning Blue Audio
    11672. \r\n
    11673. Michael Abajian
    11674. \r\n
    11675. Simon Heywood
    11676. \r\n
    11677. Gregory Crosswhite
    11678. \r\n
    11679. Bruce Pearson

    11680. \r\n
    11681. Max M Rasmussen
    11682. \r\n
    11683. Web Wizard Design
    11684. \r\n
    11685. Patrick Hart
    11686. \r\n
    11687. Bjarke Dahl Ebert
    11688. \r\n
    11689. Arya Connett
    11690. \r\n
    11691. Ryan Keppel
    11692. \r\n
    11693. Aniket Sheth
    11694. \r\n
    11695. William Kennedy
    11696. \r\n
    11697. Frank Laughlin III
    11698. \r\n
    11699. Ahmad Zakir Jaafar

    11700. \r\n
    11701. Richard Perez
    11702. \r\n
    11703. David Palme
    11704. \r\n
    11705. Andreas Schmeidl
    11706. \r\n
    11707. Kyle Degraaf
    11708. \r\n
    11709. Steve Lamb
    11710. \r\n
    11711. Christopher Armstrong
    11712. \r\n
    11713. Yi-Ling Wu
    11714. \r\n
    11715. John Bley
    11716. \r\n
    11717. Roy Morley
    11718. \r\n
    11719. Adam Cripps

    11720. \r\n
    11721. Trina R Owens
    11722. \r\n
    11723. Robert Jason
    11724. \r\n
    11725. Steven Sprouse
    11726. \r\n
    11727. Oded Degani
    11728. \r\n
    11729. Wayne Wei
    11730. \r\n
    11731. Tim Wilson
    11732. \r\n
    11733. Roger Green
    11734. \r\n
    11735. Marie Royea
    11736. \r\n
    11737. Lairhaven Enterprises
    11738. \r\n
    11739. David Tucker

    11740. \r\n
    11741. Henry E Melgarejo
    11742. \r\n
    11743. Ramesh Ratan
    11744. \r\n
    11745. Guido Bugmann
    11746. \r\n
    11747. Lazaro Bello
    11748. \r\n
    11749. Kenneth Hardy
    11750. \r\n
    11751. John Kinney
    11752. \r\n
    11753. Hans-Christoph Hoepker
    11754. \r\n
    11755. Edward Lipsett
    11756. \r\n
    11757. Philippe Leyvraz
    11758. \r\n
    11759. Allen Jackson

    11760. \r\n
    11761. Suzie Boulos
    11762. \r\n
    11763. Brian Armand
    11764. \r\n
    11765. JT Gale
    11766. \r\n
    11767. David Colbeth
    11768. \r\n
    11769. Dave Faloon
    11770. \r\n
    11771. Roger Pueyo Centelles
    11772. \r\n
    11773. Rodrigo Vieira
    11774. \r\n
    11775. Richard Karsmakers
    11776. \r\n
    11777. Bob Eckert
    11778. \r\n
    11779. Mark Interrante

    11780. \r\n
    11781. Matthew Siegler
    11782. \r\n
    11783. Jonathan Simms
    11784. \r\n
    11785. Mark Guidroz
    11786. \r\n
    11787. Daniele Scalzi
    11788. \r\n
    11789. Paul Nordstrom
    11790. \r\n
    11791. Sylvia Zhang
    11792. \r\n
    11793. George B Smith
    11794. \r\n
    11795. Vincent Bielke
    11796. \r\n
    11797. Terry Reedy
    11798. \r\n
    11799. Luka Horvatic

    11800. \r\n
    11801. William C Carr
    11802. \r\n
    11803. Paul Hartley
    11804. \r\n
    11805. Klaus H�ppner
    11806. \r\n
    11807. Chris Cooper
    11808. \r\n
    11809. Robert Simmonds
    11810. \r\n
    11811. Douglas Warner
    11812. \r\n
    11813. Ahmed Daniyal
    11814. \r\n
    11815. David Yee
    11816. \r\n
    11817. Randy Ryan
    11818. \r\n
    11819. A. J. Bolton

    11820. \r\n
    11821. JAMROC
    11822. \r\n
    11823. Javier Girado
    11824. \r\n
    11825. Gino Castellano
    11826. \r\n
    11827. Mark Bennett
    11828. \r\n
    11829. Emma Spurgeon
    11830. \r\n
    11831. george succi
    11832. \r\n
    11833. Teresa Morrison
    11834. \r\n
    11835. Benedict Falegan
    11836. \r\n
    11837. Letitia Moller
    11838. \r\n
    11839. Affero

    11840. \r\n
    11841. Robert Vargas
    11842. \r\n
    11843. Mark Hammond
    11844. \r\n
    11845. Roberto Ferrero
    11846. \r\n
    11847. CLYDE K. HARVEY
    11848. \r\n
    ", + "content_markup_type": "html", + "_content_rendered": "
      \r\n
    1. PayPal Giving Fund
    2. \r\n
    3. Humble Bundle
    4. \r\n
    5. Facebook
    6. \r\n
    7. Handshake Development
    8. \r\n
    9. Google Cloud Platform
    10. \r\n
    11. PyLondinium
    12. \r\n
    13. craigslist Charitable Fund
    14. \r\n
    15. Benevity Causes
    16. \r\n
    17. Bloomberg LP
    18. \r\n
    19. Vanguard Charitable

    20. \r\n
    21. Katie Linero
    22. \r\n
    23. Anonymous
    24. \r\n
    25. Sam Kimbrel
    26. \r\n
    27. Ruben Orduz
    28. \r\n
    29. Thea Flowers
    30. \r\n
    31. Dustin Ingram
    32. \r\n
    33. Christopher Wilcox
    34. \r\n
    35. Jordon Phillips
    36. \r\n
    37. Frank Valcarcel
    38. \r\n
    39. CarGurus, Inc.

    40. \r\n
    41. Delany Watkins
    42. \r\n
    43. Alliance Data
    44. \r\n
    45. Benevity Community Impact Fund
    46. \r\n
    47. Underwood Institute
    48. \r\n
    49. ECP
    50. \r\n
    51. William F. Benter
    52. \r\n
    53. UK Online Giving Foundation
    54. \r\n
    55. Alethea Katherine Flowers
    56. \r\n
    57. Sergey Brin Family Foundation
    58. \r\n
    59. Kyle Knapp

    60. \r\n
    61. Jordan Guymon
    62. \r\n
    63. John Carlyle
    64. \r\n
    65. James Saryerwinnie
    66. \r\n
    67. Donald Stufft
    68. \r\n
    69. Grishma Jena
    70. \r\n
    71. Deepak K Gupta
    72. \r\n
    73. Jessica De Maria
    74. \r\n
    75. Bloomberg LP employees
    76. \r\n
    77. Naomi Ceder
    78. \r\n
    79. Jason Myers

    80. \r\n
    81. פיינל
    82. \r\n
    83. Bright Funds Foundation
    84. \r\n
    85. Roy Larson
    86. \r\n
    87. Michaela Shtilman-Minkin
    88. \r\n
    89. O'Reilly Japan, Inc.
    90. \r\n
    91. Christopher Swenson
    92. \r\n
    93. Jacqueline Kazil
    94. \r\n
    95. Kelly Elmstrom
    96. \r\n
    97. Ernest W Durbin III
    98. \r\n
    99. Carl Harris

    100. \r\n
    101. Gary A. Richardson
    102. \r\n
    103. Read the Docs, Inc
    104. \r\n
    105. Jon Banafato
    106. \r\n
    107. JupyterCon
    108. \r\n
    109. Michael Hebert
    110. \r\n
    111. Rachel Chazanovitz
    112. \r\n
    113. Tomasz Finc
    114. \r\n
    115. Fidelity Charitable
    116. \r\n
    117. William Israel
    118. \r\n
    119. indico data solutions INC

    120. \r\n
    121. Mike McCaffrey
    122. \r\n
    123. Gregory P. Smith
    124. \r\n
    125. Aaron Dershem
    126. \r\n
    127. Jennie MacDougall
    128. \r\n
    129. Lorena Mesa
    130. \r\n
    131. Albert Sweigart
    132. \r\n
    133. Steven Burnap
    134. \r\n
    135. Dorota Jarecka
    136. \r\n
    137. Anna Jaruga
    138. \r\n
    139. Hugo Bowne-Anderson

    140. \r\n
    141. phillip torrone
    142. \r\n
    143. Katherine McLaughlin
    144. \r\n
    145. Bors LTD
    146. \r\n
    147. Andrew VanCamp
    148. \r\n
    149. Troy Campbell
    150. \r\n
    151. ProxyMesh LLC
    152. \r\n
    153. Matthew Bullock
    154. \r\n
    155. Lief Koepsel
    156. \r\n
    157. Andrew Pinkham
    158. \r\n
    159. YourCause, LLC

    160. \r\n
    161. Jarret Raim
    162. \r\n
    163. Dane Hillard Photography
    164. \r\n
    165. Daniel Fortunov
    166. \r\n
    167. Christine Costello
    168. \r\n
    169. The Tobin and Lu Family Fund
    170. \r\n
    171. Amazon Smile
    172. \r\n
    173. Jace Browning
    174. \r\n
    175. Eric Floehr
    176. \r\n
    177. Chris Miller
    178. \r\n
    179. Ben Berry

    180. \r\n
    181. Dennis Bunskoek
    182. \r\n
    183. Amirali Sanatinia
    184. \r\n
    185. Enthought, Inc.
    186. \r\n
    187. Sankara Sampath
    188. \r\n
    189. Liubov Yurgenson
    190. \r\n
    191. Bill Schnieders
    192. \r\n
    193. James Alexander
    194. \r\n
    195. Thomas Kluyver
    196. \r\n
    197. Joseph Armbruster
    198. \r\n
    199. Adam Forsyth

    200. \r\n
    201. Casey Faist
    202. \r\n
    203. Lindsey Brockman
    204. \r\n
    205. Ronald Hayden
    206. \r\n
    207. Samuel Agnew
    208. \r\n
    209. John-Scott Atlakson
    210. \r\n
    211. Carol Willing
    212. \r\n
    213. Jacob Burch
    214. \r\n
    215. Michael Fleisher
    216. \r\n
    217. David Sturgis
    218. \r\n
    219. Felix Wyss

    220. \r\n
    221. Caitlin Outterson
    222. \r\n
    223. Karan Goel
    224. \r\n
    225. Chalmer Lowe
    226. \r\n
    227. Intellovations
    228. \r\n
    229. Brittany Vogel
    230. \r\n
    231. William Weitzel
    232. \r\n
    233. Cathy Wyss
    234. \r\n
    235. Anthony Lupinetti
    236. \r\n
    237. Ray Berg
    238. \r\n
    239. Intel Volunteer Grant Program

    240. \r\n
    241. Harry Percival
    242. \r\n
    243. Sanchit Anand
    244. \r\n
    245. Wendy Palmer and Richard Ruh
    246. \r\n
    247. Thomas Mortimer-Jones
    248. \r\n
    249. Frankie Graffagnino
    250. \r\n
    251. Jeremy Reichman
    252. \r\n
    253. Pythontek
    254. \r\n
    255. Emily Leathers
    256. \r\n
    257. Don Jayamanne
    258. \r\n
    259. Anna Winkler

    260. \r\n
    261. Benjamin Glass
    262. \r\n
    263. Scott Irwin
    264. \r\n
    265. Julian Crosson-Hill
    266. \r\n
    267. Jonathan Banafato
    268. \r\n
    269. Paul Bryan
    270. \r\n
    271. Charan Rajan
    272. \r\n
    273. Michael Chin
    274. \r\n
    275. paulo ALVES
    276. \r\n
    277. Tyler Bindon
    278. \r\n
    279. LUIS PALLARES ANIORTE

    280. \r\n
    281. Gerard Blais
    282. \r\n
    283. Bernard De Serres
    284. \r\n
    285. Jacob Kaplan-Moss
    286. \r\n
    287. TSUJI SHINGO
    288. \r\n
    289. Patrick Hagerty
    290. \r\n
    291. Kenzie Academy
    292. \r\n
    293. Paul Kehrer
    294. \r\n
    295. In Mun
    296. \r\n
    297. Katina Mooneyham
    298. \r\n
    299. Justin Harringa

    300. \r\n
    301. David Jones
    302. \r\n
    303. Jackie Kazil
    304. \r\n
    305. Joseph Wilhelm
    306. \r\n
    307. Intevation GmbH
    308. \r\n
    309. Andy Piper
    310. \r\n
    311. William E. Stelzel
    312. \r\n
    313. Ian Hellen
    314. \r\n
    315. Greg Goddard
    316. \r\n
    317. Scott Carpenter
    318. \r\n
    319. Lance Alligood

    320. \r\n
    321. Imaginary Landscape
    322. \r\n
    323. Shawn Hensley
    324. \r\n
    325. Daniel Woodraska
    326. \r\n
    327. Samuel Klock
    328. \r\n
    329. Andrew Kuchling
    330. \r\n
    331. Miguel Sarabia del Castillo
    332. \r\n
    333. David K Sutton
    334. \r\n
    335. Brett Slatkin
    336. \r\n
    337. Mahmoud Hashemi
    338. \r\n
    339. Avi Oza

    340. \r\n
    341. Jesse Shapiro
    342. \r\n
    343. nidhin pattaniyil
    344. \r\n
    345. dbader software co.
    346. \r\n
    347. litio network
    348. \r\n
    349. Paulus Schoutsen
    350. \r\n
    351. James Turk
    352. \r\n
    353. Kevin Marty
    354. \r\n
    355. Glenn Jones
    356. \r\n
    357. Dan Crosta
    358. \r\n
    359. Handojo Goenadi

    360. \r\n
    361. Katie McLaughlin
    362. \r\n
    363. Chip Warden
    364. \r\n
    365. JEAN-CLAUDE ARBAUT
    366. \r\n
    367. Tara Johnson
    368. \r\n
    369. Emanuil Tolev
    370. \r\n
    371. Peter Kropf
    372. \r\n
    373. Dang Griffith
    374. \r\n
    375. Bryan Davis
    376. \r\n
    377. Howard Mooneyham
    378. \r\n
    379. Benjamin Wohlwend

    380. \r\n
    381. Justin McCammon
    382. \r\n
    383. Kristen McIntyre
    384. \r\n
    385. Sebastian Lorentz
    386. \r\n
    387. Wendi Dreesen
    388. \r\n
    389. Sergey Konakov
    390. \r\n
    391. Douglas Ryan
    392. \r\n
    393. Chris Rose
    394. \r\n
    395. Joshua Simmons
    396. \r\n
    397. BRUCE F JAFFE
    398. \r\n
    399. Davide Frazzetto

    400. \r\n
    401. Analysis North
    402. \r\n
    403. Stack Exchange
    404. \r\n
    405. Everyday Hero
    406. \r\n
    407. Herbert Schilling
    408. \r\n
    409. Eric Klusman
    410. \r\n
    411. Robin Friedrich
    412. \r\n
    413. Anurag Saxena
    414. \r\n
    415. Karen Schmidt
    416. \r\n
    417. Bruno Alla
    418. \r\n
    419. Vikram Aggarwal

    420. \r\n
    421. Michael Seidel
    422. \r\n
    423. Albert Nubiola
    424. \r\n
    425. Yin Aaron
    426. \r\n
    427. Formlabs Operations
    428. \r\n
    429. Tom Augspurger
    430. \r\n
    431. James Crist
    432. \r\n
    433. Allen Wang
    434. \r\n
    435. Matthew Konvalin
    436. \r\n
    437. Julia White and Jason Friedman
    438. \r\n
    439. Fred Brasch

    440. \r\n
    441. Laurie White
    442. \r\n
    443. Ivan Nikolaev
    444. \r\n
    445. Peter Fein
    446. \r\n
    447. Ryan Watson
    448. \r\n
    449. A. Jesse Jiryu Davis
    450. \r\n
    451. Michael Miller
    452. \r\n
    453. Larry W Tooley II
    454. \r\n
    455. æ ªå¼ä¼šç¤¾Xoxzo
    456. \r\n
    457. Michael Gilbert
    458. \r\n
    459. Celia Cintas

    460. \r\n
    461. Jacob Peddicord
    462. \r\n
    463. 内田 公太
    464. \r\n
    465. Cherie Williams
    466. \r\n
    467. Adam Foster
    468. \r\n
    469. James Ahlstrom
    470. \r\n
    471. Dileep Bhat
    472. \r\n
    473. Chancy Kennedy
    474. \r\n
    475. Joel Watts
    476. \r\n
    477. Derek Keeler
    478. \r\n
    479. Reginald Dugard

    480. \r\n
    481. Chloe Tucker
    482. \r\n
    483. Webb Software, LLC
    484. \r\n
    485. Stefán Sigmundsson
    486. \r\n
    487. Johnny Cochrane
    488. \r\n
    489. Junlan Liu
    490. \r\n
    491. Alex Sobral de Freitas
    492. \r\n
    493. Thomas Ballinger
    494. \r\n
    495. Salem Environmental LLC
    496. \r\n
    497. Paulo alvarado
    498. \r\n
    499. Datadog Inc.

    500. \r\n
    501. Sanghee Kim
    502. \r\n
    503. Thomas HUNGER
    504. \r\n
    505. Jesper Dramsch
    506. \r\n
    507. Mohammad Burhan Khalid
    508. \r\n
    509. Shiboune Thill
    510. \r\n
    511. Xin Cynthia
    512. \r\n
    513. Nicholas Tietz
    514. \r\n
    515. Joseph Reed
    516. \r\n
    517. Paul McLanahan
    518. \r\n
    519. Plaid Inc.

    520. \r\n
    521. Eric Chou
    522. \r\n
    523. Kawabuchi Shota
    524. \r\n
    525. Anthony Plunkett
    526. \r\n
    527. Aaron Olson
    528. \r\n
    529. Robert Woodraska
    530. \r\n
    531. Justin Hoover
    532. \r\n
    533. Roland Metivier
    534. \r\n
    535. Stefan Hagen
    536. \r\n
    537. Joshua Engroff
    538. \r\n
    539. Aaron Shaneyfelt

    540. \r\n
    541. Ivana Kellyerova
    542. \r\n
    543. Amit Saha
    544. \r\n
    545. Ellery Payne
    546. \r\n
    547. Gorgias Inc.
    548. \r\n
    549. PayPal
    550. \r\n
    551. So Hau Heng Haggen
    552. \r\n
    553. David Gwilt
    554. \r\n
    555. VALLET Bastien
    556. \r\n
    557. Tianmu Zhang
    558. \r\n
    559. Antonio Puertas Gallardo

    560. \r\n
    561. Nathanial E Urwin
    562. \r\n
    563. Jillian Rouleau
    564. \r\n
    565. Bright Hat Solutions LLC
    566. \r\n
    567. Vishu Guntupalli
    568. \r\n
    569. Chantal Laplante
    570. \r\n
    571. FreeWear.org
    572. \r\n
    573. Zachery Bir
    574. \r\n
    575. Phillip Oldham
    576. \r\n
    577. Jozef Iljuk
    578. \r\n
    579. Patrick Kilduff

    580. \r\n
    581. Jeffrey Self
    582. \r\n
    583. Jonas Bagge
    584. \r\n
    585. Jonathan Hartley
    586. \r\n
    587. Brian Grohe
    588. \r\n
    589. Jason Rowley
    590. \r\n
    591. scott campbell
    592. \r\n
    593. Michael Twomey
    594. \r\n
    595. Alvaro Moises Valdebenito Bustamante
    596. \r\n
    597. Eric Appelt
    598. \r\n
    599. Thierry Moebel

    600. \r\n
    601. TowerUp.com
    602. \r\n
    603. Aaron Straus
    604. \r\n
    605. Yusuke Tsutsumi
    606. \r\n
    607. Edvardas Baltūsis
    608. \r\n
    609. Manatsawin Hanmongkolchai
    610. \r\n
    611. Ekaterina Levitskaya
    612. \r\n
    613. Kamishima Toshihiro
    614. \r\n
    615. William Mayor
    616. \r\n
    617. Jon Danao
    618. \r\n
    619. United Way of the Bay Area

    620. \r\n
    621. Kevin Shackleton
    622. \r\n
    623. Jennifer Basalone
    624. \r\n
    625. John Morrissey
    626. \r\n
    627. Tim Lesher
    628. \r\n
    629. Kevin Cox
    630. \r\n
    631. Paul Barker
    632. \r\n
    633. EuroPython 2017 Sponsored Massage
    634. \r\n
    635. John Hill
    636. \r\n
    637. Clay Campaigne
    638. \r\n
    639. STEPHANE WIRTEL

    640. \r\n
    641. Anna Schneider
    642. \r\n
    643. jingoloba.com
    644. \r\n
    645. Carl Trachte
    646. \r\n
    647. Britt Gresham
    648. \r\n
    649. John Mangino
    650. \r\n
    651. Applied Biomath, LLC
    652. \r\n
    653. Andrew Janke
    654. \r\n
    655. Froilan Irizarry
    656. \r\n
    657. Kevin Stilwell
    658. \r\n
    659. Sarah Guido

    660. \r\n
    661. Bruno Vermeulen
    662. \r\n
    663. David Radcliffe
    664. \r\n
    665. Sebastian Woehrl
    666. \r\n
    667. Alex Gallub
    668. \r\n
    669. Sandip Bhattacharya
    670. \r\n
    671. Bernard DeSerres
    672. \r\n
    673. Julie Yoo
    674. \r\n
    675. Kevin McCormick
    676. \r\n
    677. Ying Wang
    678. \r\n
    679. Benjamin Allen

    680. \r\n
    681. Robin Wilson's Website
    682. \r\n
    683. Kay Schlühr
    684. \r\n
    685. Daniel Taylor
    686. \r\n
    687. Sebastián Ramírez Magrí
    688. \r\n
    689. Tobias Kunze
    690. \r\n
    691. Pedro Rodrigues
    692. \r\n
    693. Théophile Studer
    694. \r\n
    695. John Reese
    696. \r\n
    697. Olivier Grisel
    698. \r\n
    699. Neil Fernandes

    700. \r\n
    701. michael pechner
    702. \r\n
    703. Salesforce.org
    704. \r\n
    705. MacLean Ian
    706. \r\n
    707. Phebe Polk
    708. \r\n
    709. Arnaud Legout
    710. \r\n
    711. The Lagunitas Brewing Co.
    712. \r\n
    713. Ned Deily
    714. \r\n
    715. Jerrie Martherus
    716. \r\n
    717. Gregg Thomason
    718. \r\n
    719. Rami Chowdhury

    720. \r\n
    721. Nick Schmalenberger
    722. \r\n
    723. Daniel Müller
    724. \r\n
    725. Reuven Lerner
    726. \r\n
    727. Peter Farrell
    728. \r\n
    729. Scott Halkyard
    730. \r\n
    731. Network for Good
    732. \r\n
    733. Scott Johnston
    734. \r\n
    735. David Gehrig
    736. \r\n
    737. Ben Warren
    738. \r\n
    739. Stuart Kennedy

    740. \r\n
    741. Daniel Furman
    742. \r\n
    743. femmegeek
    744. \r\n
    745. el cimarron wh llc
    746. \r\n
    747. David Ashby
    748. \r\n
    749. Daniel Wallace
    750. \r\n
    751. Goto Hjelle
    752. \r\n
    753. Charles Hailbronner
    754. \r\n
    755. Jeff Borisch
    756. \r\n
    757. Yarko Tymciurak
    758. \r\n
    759. Saptak Sengupta

    760. \r\n
    761. Sal DiStefano
    762. \r\n
    763. Paul Hallett software
    764. \r\n
    765. Eric Kansa
    766. \r\n
    767. Enrique Gonzalez
    768. \r\n
    769. Dustin Mendoza
    770. \r\n
    771. Fahima Djabelkhir
    772. \r\n
    773. Julien MOURA
    774. \r\n
    775. Artiya Thinkumpang
    776. \r\n
    777. Lucas CIMON
    778. \r\n
    779. Leandro Meili

    780. \r\n
    781. Justin Flory
    782. \r\n
    783. Nicholas Sarbicki
    784. \r\n
    785. Nicholas Serra
    786. \r\n
    787. Charles Engelke
    788. \r\n
    789. Petar Mlinaric
    790. \r\n
    791. TREVOR PINDLING
    792. \r\n
    793. Jose Padilla
    794. \r\n
    795. Joel Grus
    796. \r\n
    797. James Shields
    798. \r\n
    799. Benjamin Starling

    800. \r\n
    801. Simon Willison
    802. \r\n
    803. Richard Hanson
    804. \r\n
    805. Katherine Simmons
    806. \r\n
    807. Nathaniel Compton
    808. \r\n
    809. Level 12
    810. \r\n
    811. Alexander Hagerman
    812. \r\n
    813. Michael Pirnat
    814. \r\n
    815. Piper Thunstrom
    816. \r\n
    817. Blaise Laflamme
    818. \r\n
    819. Kelvin Vivash

    820. \r\n
    821. Glen Brazil
    822. \r\n
    823. William Horton
    824. \r\n
    825. Kelsey Saintclair
    826. \r\n
    827. Christopher Patti
    828. \r\n
    829. Micaela Alaniz
    830. \r\n
    831. Becky Sweger
    832. \r\n
    833. Matthew Bowden
    834. \r\n
    835. RAMAKRISHNA CH S N V
    836. \r\n
    837. Okko Willeboordse
    838. \r\n
    839. Nicolás Pérez Giorgi

    840. \r\n
    841. Guilherme Talarico
    842. \r\n
    843. lucas godoy
    844. \r\n
    845. Raul Maldonado
    846. \r\n
    847. David Potter
    848. \r\n
    849. Jena Heath
    850. \r\n
    851. Hillari Mohler
    852. \r\n
    853. Barbara Shaurette
    854. \r\n
    855. Thomas Ackland
    856. \r\n
    857. Stephen Figgins
    858. \r\n
    859. RAUL MALDONADO

    860. \r\n
    861. Peter Wang
    862. \r\n
    863. O'Reilly Media
    864. \r\n
    865. LORENZO MORIONDO
    866. \r\n
    867. Bert Jan Willem Regeer
    868. \r\n
    869. Alex Chamberlain
    870. \r\n
    871. Florian Schulze
    872. \r\n
    873. Arne Sommerfelt
    874. \r\n
    875. Charline Chester
    876. \r\n
    877. Christoph Gohlke
    878. \r\n
    879. Michel beaussart

    880. \r\n
    881. Mohammad Taleb
    882. \r\n
    883. Emily Spahn
    884. \r\n
    885. Seth Juarez
    886. \r\n
    887. murali kalapala
    888. \r\n
    889. Christopher B Georgen
    890. \r\n
    891. Aru Sahni
    892. \r\n
    893. Josiah McGlothin
    894. \r\n
    895. Douglas Napoleone
    896. \r\n
    897. Manny Francisco
    898. \r\n
    899. Pey Lian Lin

    900. \r\n
    901. Pamela McA'Nulty
    902. \r\n
    903. Ehsan Iran Nejad
    904. \r\n
    905. Mamadou Diallo
    906. \r\n
    907. Tim Harris
    908. \r\n
    909. Nicholas Tucker
    910. \r\n
    911. Amanda Casari
    912. \r\n
    913. 段 雪峰
    914. \r\n
    915. yonghoo sheen
    916. \r\n
    917. Brian Rutledge
    918. \r\n
    919. Alexander Levy

    920. \r\n
    921. Daniel Klein
    922. \r\n
    923. Deborah Harris
    924. \r\n
    925. Rafael Caricio
    926. \r\n
    927. Christopher Lunsford
    928. \r\n
    929. Sher Muhonen
    930. \r\n
    931. Christopher Miller
    932. \r\n
    933. Brad Crittenden
    934. \r\n
    935. gregdenson.com
    936. \r\n
    937. Lucas Coffey
    938. \r\n
    939. Ochiai Yuto

    940. \r\n
    941. Andy Fundinger
    942. \r\n
    943. daishi harada
    944. \r\n
    945. Daniel Yeaw
    946. \r\n
    947. Ravi Satya Durga Prasad Yenugula
    948. \r\n
    949. business business business
    950. \r\n
    951. Parbhat Puri
    952. \r\n
    953. Mark Turner
    954. \r\n
    955. Hugo Lopes Tavares
    956. \r\n
    957. sumeet yawalkar
    958. \r\n
    959. Cassidy Gallegos

    960. \r\n
    961. Peter Landoll
    962. \r\n
    963. Eugene O'Friel
    964. \r\n
    965. Kelly Peterson
    966. \r\n
    967. OLA JIRLOW
    968. \r\n
    969. Matt Trostel
    970. \r\n
    971. Christopher Sterk
    972. \r\n
    973. G Cody Bunch
    974. \r\n
    975. BRADLEY SCHWAB
    976. \r\n
    977. Yip Yen Lam
    978. \r\n
    979. Lee Vaughan

    980. \r\n
    981. David Morris
    982. \r\n
    983. Justin Holmes
    984. \r\n
    985. Michael Sarahan
    986. \r\n
    987. J Matthew Peters
    988. \r\n
    989. Fernando Martinez
    990. \r\n
    991. Brad Miro
    992. \r\n
    993. Bernard Lawson
    994. \r\n
    995. Rob Martin
    996. \r\n
    997. Tyler Bigler
    998. \r\n
    999. Peter Pinch

    1000. \r\n
    1001. Alex Riviere
    1002. \r\n
    1003. Aaron Scarisbrick
    1004. \r\n
    1005. Daniel Chen
    1006. \r\n
    1007. Shaoyan Huang
    1008. \r\n
    1009. Nehar Arora
    1010. \r\n
    1011. Mark Chollett
    1012. \r\n
    1013. erika bucio
    1014. \r\n
    1015. Vanessa Bergstedt
    1016. \r\n
    1017. Subhodip Biswas
    1018. \r\n
    1019. Robert Reynolds

    1020. \r\n
    1021. Philip James
    1022. \r\n
    1023. Michael Davis
    1024. \r\n
    1025. Gonzalo Correa
    1026. \r\n
    1027. Erik Bethke
    1028. \r\n
    1029. Christen Blake
    1030. \r\n
    1031. Arianne Dee
    1032. \r\n
    1033. Alexander Bliskovksy
    1034. \r\n
    1035. Timothy Hoagland
    1036. \r\n
    1037. Jerome Allen
    1038. \r\n
    1039. Steven Loria

    1040. \r\n
    1041. Shimizukawa Takayuki
    1042. \r\n
    1043. Faris Chebib
    1044. \r\n
    1045. John Adjei
    1046. \r\n
    1047. Yi-Huan Chan
    1048. \r\n
    1049. David Forgac
    1050. \r\n
    1051. Michael Trosen
    1052. \r\n
    1053. Anthony Pilger
    1054. \r\n
    1055. OpenRock Innovations Ltd.
    1056. \r\n
    1057. Patrick Shuff
    1058. \r\n
    1059. Shami Marangwanda

    1060. \r\n
    1061. Innolitics, LLC
    1062. \r\n
    1063. Walter Vrey
    1064. \r\n
    1065. Daniel Axmacher
    1066. \r\n
    1067. Steven Shapiro
    1068. \r\n
    1069. Mitchell Chapman
    1070. \r\n
    1071. Cara Schmitz
    1072. \r\n
    1073. Dan Sanderson
    1074. \r\n
    1075. Kevin Conway
    1076. \r\n
    1077. Patrick-Oliver Groß
    1078. \r\n
    1079. Nicholas Tollervey

    1080. \r\n
    1081. Abhay Saxena
    1082. \r\n
    1083. CyberGrants
    1084. \r\n
    1085. Vettrivel Viswanathan
    1086. \r\n
    1087. Magx Durbin
    1088. \r\n
    1089. Brad Israel
    1090. \r\n
    1091. Matthew Lauria
    1092. \r\n
    1093. Jeff Bradberry
    1094. \r\n
    1095. Harry Hebblewhite
    1096. \r\n
    1097. Expert Network at Packt
    1098. \r\n
    1099. Rodolfo De Nadai

    1100. \r\n
    1101. joaquin berenguer
    1102. \r\n
    1103. Jorge Herskovic
    1104. \r\n
    1105. Nicola Ramagnano
    1106. \r\n
    1107. Emil Christensen
    1108. \r\n
    1109. Ahmed Syed
    1110. \r\n
    1111. Russell Keith-Magee
    1112. \r\n
    1113. Bruce Collins
    1114. \r\n
    1115. Daniel Chudnov
    1116. \r\n
    1117. Tim Peters
    1118. \r\n
    1119. Marc Laughton

    1120. \r\n
    1121. Carol Peterson Ganz
    1122. \r\n
    1123. Younggun Kim
    1124. \r\n
    1125. Mariatta Wijaya
    1126. \r\n
    1127. Eryn Wells
    1128. \r\n
    1129. Ronny Meißner
    1130. \r\n
    1131. Brad Fritz
    1132. \r\n
    1133. Antony Jerome
    1134. \r\n
    1135. Jeff Knupp
    1136. \r\n
    1137. Andrew Chen
    1138. \r\n
    1139. Capital One

    1140. \r\n
    1141. Frederick VanCleve
    1142. \r\n
    1143. YONEYAMA HIDEAKI
    1144. \r\n
    1145. Luis Freire
    1146. \r\n
    1147. Tyrel Souza
    1148. \r\n
    1149. José Antonio Santiago Marrero
    1150. \r\n
    1151. Keith Bussell
    1152. \r\n
    1153. Ãlvaro Justen
    1154. \r\n
    1155. Esa Peuha
    1156. \r\n
    1157. Robert Scrimo
    1158. \r\n
    1159. Chris Paul

    1160. \r\n
    1161. Travis Risner
    1162. \r\n
    1163. Al Sweigart
    1164. \r\n
    1165. Sean Byrne
    1166. \r\n
    1167. Ben Kiel
    1168. \r\n
    1169. Baron Chandler
    1170. \r\n
    1171. Max Bezahler
    1172. \r\n
    1173. Alexander Sage
    1174. \r\n
    1175. Sonia IronCloud
    1176. \r\n
    1177. Emmanuel Leblond
    1178. \r\n
    1179. Eugene ODonnell

    1180. \r\n
    1181. Guillermo Monge Del Olmo
    1182. \r\n
    1183. Robert Law
    1184. \r\n
    1185. Russell Duhon
    1186. \r\n
    1187. Jonathon Duckworth
    1188. \r\n
    1189. Yang Yang
    1190. \r\n
    1191. Nick Johnston
    1192. \r\n
    1193. Aparajit Raghaven and Satyashree Srikanth
    1194. \r\n
    1195. Nikola Kantar
    1196. \r\n
    1197. Benjamin Freeman
    1198. \r\n
    1199. salesforce.org

    1200. \r\n
    1201. April Wright
    1202. \r\n
    1203. Max Bélanger
    1204. \r\n
    1205. Luciano Ramalho
    1206. \r\n
    1207. Dmitry Petrov
    1208. \r\n
    1209. T HUNGER
    1210. \r\n
    1211. Bright Hat Solutions, LLC
    1212. \r\n
    1213. Coffee Meets Bagel
    1214. \r\n
    1215. Timothy Prindle
    1216. \r\n
    1217. Diane Delallée
    1218. \r\n
    1219. Fred Thiele

    1220. \r\n
    1221. BluWall
    1222. \r\n
    1223. Charles Parker
    1224. \r\n
    1225. Joongi Kim
    1226. \r\n
    1227. Jeffrey Peacock Jr
    1228. \r\n
    1229. Fernando Rosendo
    1230. \r\n
    1231. Guruprasad Somasundaram
    1232. \r\n
    1233. Graham Gilmour
    1234. \r\n
    1235. Eric Sachs
    1236. \r\n
    1237. Pablo Lobariñas Crisera
    1238. \r\n
    1239. William Minarik

    1240. \r\n
    1241. Aly Sivji
    1242. \r\n
    1243. Alexander Müller
    1244. \r\n
    1245. Charles Dibsdale
    1246. \r\n
    1247. Atilio Quintero Vásquez
    1248. \r\n
    1249. Helen S Wan
    1250. \r\n
    1251. Ursula C F Junque
    1252. \r\n
    1253. Mark Mangoba
    1254. \r\n
    1255. Timo Würsch
    1256. \r\n
    1257. Daniel O'Meara
    1258. \r\n
    1259. Jeffrey Fischer

    1260. \r\n
    1261. Antti-Pekka Tuovinen
    1262. \r\n
    1263. Nicholas Grove
    1264. \r\n
    1265. ANTONI ALOY
    1266. \r\n
    1267. Scott Lasley
    1268. \r\n
    1269. Jarrod Hamilton
    1270. \r\n
    1271. Russ Crowther
    1272. \r\n
    1273. Gregory Akers
    1274. \r\n
    1275. Nathan F. Watson
    1276. \r\n
    1277. William Woodall
    1278. \r\n
    1279. Peter Dinges

    1280. \r\n
    1281. Eric Hui
    1282. \r\n
    1283. Alexandre Harano
    1284. \r\n
    1285. Eric Smith
    1286. \r\n
    1287. Srivatsan Ramanujam
    1288. \r\n
    1289. Oppenheimer Match for Jason Friedman
    1290. \r\n
    1291. Melvin Lim
    1292. \r\n
    1293. Douglas R Hellmann
    1294. \r\n
    1295. Peter Ullrich
    1296. \r\n
    1297. Ernest Durbin
    1298. \r\n
    1299. Zac Hatfield-Dodds

    1300. \r\n
    1301. EuroPython 16 Sponsored Massage
    1302. \r\n
    1303. Jonas Namida Aneskans
    1304. \r\n
    1305. Brian Dailey
    1306. \r\n
    1307. Kris Amundson
    1308. \r\n
    1309. Owen Nelson
    1310. \r\n
    1311. David Strozzi
    1312. \r\n
    1313. Andre Burgaud
    1314. \r\n
    1315. Torsten Marek
    1316. \r\n
    1317. Gustavo Soares Fernandes Coelho
    1318. \r\n
    1319. Kate Stohr

    1320. \r\n
    1321. Gert Burger
    1322. \r\n
    1323. Cristian Salamea
    1324. \r\n
    1325. Alex Trueman
    1326. \r\n
    1327. Nitesh Patel
    1328. \r\n
    1329. Matthew Svensson
    1330. \r\n
    1331. Raymond Cote
    1332. \r\n
    1333. Martin Goudreau
    1334. \r\n
    1335. Martin De Luca
    1336. \r\n
    1337. Amir Rachum
    1338. \r\n
    1339. Christopher Stevens

    1340. \r\n
    1341. John McGrail
    1342. \r\n
    1343. Christian Wappler
    1344. \r\n
    1345. Benjamin Dyer
    1346. \r\n
    1347. Mickael Falck
    1348. \r\n
    1349. Jonathan Villemaire-Krajden
    1350. \r\n
    1351. Olivier Philippon
    1352. \r\n
    1353. Mario Dix
    1354. \r\n
    1355. RAREkits
    1356. \r\n
    1357. Papakonstantinou K
    1358. \r\n
    1359. Michael McCaffrey

    1360. \r\n
    1361. Dmitri Kurbatskiy
    1362. \r\n
    1363. Mickaël Schoentgen
    1364. \r\n
    1365. Carlo Ciarrocchi
    1366. \r\n
    1367. Nora Kennedy
    1368. \r\n
    1369. Paul Block
    1370. \r\n
    1371. Ian-Matthew Hornburg
    1372. \r\n
    1373. Diane Trout
    1374. \r\n
    1375. Christopher Dent
    1376. \r\n
    1377. Hugh Pyle
    1378. \r\n
    1379. Michael Baker

    1380. \r\n
    1381. Martin Gfeller
    1382. \r\n
    1383. Geir Iversen
    1384. \r\n
    1385. Carl Oscar Aaro
    1386. \r\n
    1387. Erick Navarro
    1388. \r\n
    1389. Swaroop Chitlur Haridas
    1390. \r\n
    1391. Alexys Jacob-Monier
    1392. \r\n
    1393. Paolo Cantore
    1394. \r\n
    1395. Jakub Musko
    1396. \r\n
    1397. GovReady PBC
    1398. \r\n
    1399. César Cruz

    1400. \r\n
    1401. Kevin Boers
    1402. \r\n
    1403. Adam Englander
    1404. \r\n
    1405. Mel Tearle
    1406. \r\n
    1407. darren fix
    1408. \r\n
    1409. Ryan Schave
    1410. \r\n
    1411. Jung Oh
    1412. \r\n
    1413. Jakob Karstens
    1414. \r\n
    1415. G Nyers
    1416. \r\n
    1417. Robbert Zijp
    1418. \r\n
    1419. Marc-Aurèle Coste

    1420. \r\n
    1421. Ramakris Sridhara
    1422. \r\n
    1423. Justin Duke
    1424. \r\n
    1425. Christophe Jean
    1426. \r\n
    1427. Sheree Pena
    1428. \r\n
    1429. Christopher Brousseau
    1430. \r\n
    1431. James Lacy
    1432. \r\n
    1433. Susannah Herrada
    1434. \r\n
    1435. Mike Miller
    1436. \r\n
    1437. Elana Hashman
    1438. \r\n
    1439. Terrance Peppers

    1440. \r\n
    1441. Doyeon Kim
    1442. \r\n
    1443. William Tubbs
    1444. \r\n
    1445. Roger Coram
    1446. \r\n
    1447. Wladimir van der Laan
    1448. \r\n
    1449. Chan Florence
    1450. \r\n
    1451. ЛаÑтов Юрий
    1452. \r\n
    1453. Mathieu Legay
    1454. \r\n
    1455. Christopher Walsh
    1456. \r\n
    1457. Jens Nistler
    1458. \r\n
    1459. Adam Borbidge

    1460. \r\n
    1461. Brooke Hedrick
    1462. \r\n
    1463. Markus Daul
    1464. \r\n
    1465. Burak Alver
    1466. \r\n
    1467. David Michaels
    1468. \r\n
    1469. Marc Garcia
    1470. \r\n
    1471. Carsten Stupka
    1472. \r\n
    1473. Harry Moore
    1474. \r\n
    1475. Buddha Kumar
    1476. \r\n
    1477. Michael Iuzzolino
    1478. \r\n
    1479. JEROME PETAZZONI

    1480. \r\n
    1481. Douglas Wood
    1482. \r\n
    1483. Alexandre Bulté
    1484. \r\n
    1485. Fred Fitzhugh Jr
    1486. \r\n
    1487. Vit Zahradnik
    1488. \r\n
    1489. Tsuji Shingo
    1490. \r\n
    1491. Eli Wilson
    1492. \r\n
    1493. Andrew Remis
    1494. \r\n
    1495. Thomas Eckert
    1496. \r\n
    1497. Chris Erickson
    1498. \r\n
    1499. Mark Agustin

    1500. \r\n
    1501. Jason Wolosonovich
    1502. \r\n
    1503. Jonathan Seabold
    1504. \r\n
    1505. Jacob Magnusson
    1506. \r\n
    1507. Kevin Porterfield
    1508. \r\n
    1509. Филиппов Савва
    1510. \r\n
    1511. Pulkit Sinha
    1512. \r\n
    1513. Sarah Clements
    1514. \r\n
    1515. MA Lok Lam
    1516. \r\n
    1517. Leena Kudalkar
    1518. \r\n
    1519. David Brondsema

    1520. \r\n
    1521. Saifuddin Abdullah
    1522. \r\n
    1523. Georg Schwojer
    1524. \r\n
    1525. David Diminnie
    1526. \r\n
    1527. Frontstream
    1528. \r\n
    1529. Daniel Halbert
    1530. \r\n
    1531. Steve Lindblad
    1532. \r\n
    1533. Xie Zong-han
    1534. \r\n
    1535. Bjorn Stabell
    1536. \r\n
    1537. Hans Braakmann
    1538. \r\n
    1539. Faith Schlabach

    1540. \r\n
    1541. chris maenner
    1542. \r\n
    1543. ХриÑтюхин ÐлекÑандр
    1544. \r\n
    1545. ROBERT LUDWICK
    1546. \r\n
    1547. Prakash Shenoy
    1548. \r\n
    1549. Matthew Beauregard
    1550. \r\n
    1551. T. R. Padmanabhan
    1552. \r\n
    1553. David Bibb
    1554. \r\n
    1555. Edward Haymore
    1556. \r\n
    1557. David Beitey
    1558. \r\n
    1559. Insperity

    1560. \r\n
    1561. Ian-Mathew Hornburg
    1562. \r\n
    1563. The GE Foundation
    1564. \r\n
    1565. Dominic Valentino
    1566. \r\n
    1567. Alexander Arsky
    1568. \r\n
    1569. Thomas Lasinski
    1570. \r\n
    1571. Paul Brown
    1572. \r\n
    1573. Panorama Global Impact Fund
    1574. \r\n
    1575. Joshua Olson
    1576. \r\n
    1577. Christian Groleau
    1578. \r\n
    1579. Ian Zelikman

    1580. \r\n
    1581. TIAA Charitable
    1582. \r\n
    1583. Edgar Roman
    1584. \r\n
    1585. Oliver Schubert
    1586. \r\n
    1587. Christopher Moradi
    1588. \r\n
    1589. Manisha Patel
    1590. \r\n
    1591. Daniel Silvers
    1592. \r\n
    1593. JP Bourget
    1594. \r\n
    1595. Oleksandr Buchkovskyi
    1596. \r\n
    1597. Divakar Viswanath
    1598. \r\n
    1599. Radek Smejkal

    1600. \r\n
    1601. Catherine Devlin
    1602. \r\n
    1603. William Hall
    1604. \r\n
    1605. Yayoi Ukai
    1606. \r\n
    1607. Eliezer Mintz
    1608. \r\n
    1609. Ivan Ven Osdel
    1610. \r\n
    1611. Holger Kohr
    1612. \r\n
    1613. Alan Vezina
    1614. \r\n
    1615. Jason Huggins
    1616. \r\n
    1617. Stephen Z Montsaroff
    1618. \r\n
    1619. Ronak Vadalani

    1620. \r\n
    1621. Jonathan Mason
    1622. \r\n
    1623. Thomas McNamara
    1624. \r\n
    1625. Dhrubajyoti Doley
    1626. \r\n
    1627. David Rudling
    1628. \r\n
    1629. BRUCE GERHARDT
    1630. \r\n
    1631. Tilak T
    1632. \r\n
    1633. Gilberto Pastorello
    1634. \r\n
    1635. Bert Raeymaekers
    1636. \r\n
    1637. Suchindra Chandrahas
    1638. \r\n
    1639. Samuel Rinde

    1640. \r\n
    1641. Otter Software Limited
    1642. \r\n
    1643. Software Freedom School
    1644. \r\n
    1645. David Friedman
    1646. \r\n
    1647. James Williams
    1648. \r\n
    1649. Adam Murphy
    1650. \r\n
    1651. Keith Gaughan
    1652. \r\n
    1653. Jonathan Barnoud
    1654. \r\n
    1655. U. S. Bank Foundation
    1656. \r\n
    1657. Justin Schechter
    1658. \r\n
    1659. SF Python

    1660. \r\n
    1661. JOSE VARGAS MONTERO
    1662. \r\n
    1663. Thomas Wouters
    1664. \r\n
    1665. Michael Smith
    1666. \r\n
    1667. CBAhern Communications
    1668. \r\n
    1669. Richard Tedder
    1670. \r\n
    1671. Willis Cummins
    1672. \r\n
    1673. Joseph Curtin
    1674. \r\n
    1675. Oliver Andrich
    1676. \r\n
    1677. Akiko Maeda
    1678. \r\n
    1679. Victoria Boykis

    1680. \r\n
    1681. Tiffany Verkaik
    1682. \r\n
    1683. Michael Pinkowski
    1684. \r\n
    1685. Samuel Madireddy
    1686. \r\n
    1687. MagicStack Inc
    1688. \r\n
    1689. nathaniel compton
    1690. \r\n
    1691. Mark Lotspaih
    1692. \r\n
    1693. Chris Johnston
    1694. \r\n
    1695. MinneAnalytics
    1696. \r\n
    1697. Mazhalai Chellathurai
    1698. \r\n
    1699. Scott Sanderson

    1700. \r\n
    1701. John Roa
    1702. \r\n
    1703. Amazon
    1704. \r\n
    1705. Dolcera Corporation
    1706. \r\n
    1707. Sylvia Tran
    1708. \r\n
    1709. Minkyu Park
    1710. \r\n
    1711. Hiten jadeja
    1712. \r\n
    1713. David McInnis
    1714. \r\n
    1715. Craig Fisk
    1716. \r\n
    1717. Dann Halverson
    1718. \r\n
    1719. Edward Mann

    1720. \r\n
    1721. Michael Kusber
    1722. \r\n
    1723. SeongSoo Cho
    1724. \r\n
    1725. Alex Willmer
    1726. \r\n
    1727. Bruno Bord
    1728. \r\n
    1729. Sooda internetbureau B.V.
    1730. \r\n
    1731. Guilherme Moralez
    1732. \r\n
    1733. Nathaniel Brown
    1734. \r\n
    1735. James Donaldson
    1736. \r\n
    1737. Doug Reynolds
    1738. \r\n
    1739. Robert Wlodarczyk

    1740. \r\n
    1741. BoB Woodraska
    1742. \r\n
    1743. Jason Wattier
    1744. \r\n
    1745. Eleven Fifty Academy
    1746. \r\n
    1747. Geoffrey Jost
    1748. \r\n
    1749. Avenue 81, Inc.
    1750. \r\n
    1751. Diane M. and James D. Foote
    1752. \r\n
    1753. Lucas Pfaff
    1754. \r\n
    1755. Gyorgy Fischhof
    1756. \r\n
    1757. Bright Hat
    1758. \r\n
    1759. Johnathan Small

    1760. \r\n
    1761. Catherine Nelson
    1762. \r\n
    1763. Christian Long
    1764. \r\n
    1765. Seki Hiroshi
    1766. \r\n
    1767. Kelsey Hawley
    1768. \r\n
    1769. Van Lindberg
    1770. \r\n
    1771. John Roth
    1772. \r\n
    1773. Adam Collard
    1774. \r\n
    1775. Eugene Callahan
    1776. \r\n
    1777. George Mutter
    1778. \r\n
    1779. Jeremy BOIS

    1780. \r\n
    1781. Zachary Valenta
    1782. \r\n
    1783. Robert Wall
    1784. \r\n
    1785. Julien Enselme
    1786. \r\n
    1787. Todd Mitchell
    1788. \r\n
    1789. SUKREE SONG
    1790. \r\n
    1791. Pedro Ferraz
    1792. \r\n
    1793. Hyunsik Hwang
    1794. \r\n
    1795. Jaganadh Gopinadhan
    1796. \r\n
    1797. Johan Herland
    1798. \r\n
    1799. Scott Campbell

    1800. \r\n
    1801. Marcus Smith
    1802. \r\n
    1803. Hunter DiCicco
    1804. \r\n
    1805. Kevin Richardson
    1806. \r\n
    1807. Lloyd Analytics LLC
    1808. \r\n
    1809. David Gaeddert
    1810. \r\n
    1811. Vicky Lee
    1812. \r\n
    1813. Anthony Scopatz
    1814. \r\n
    1815. Anthony Williams
    1816. \r\n
    1817. Fabrizio Romano
    1818. \r\n
    1819. DataXu Inc

    1820. \r\n
    1821. Rajiv Vijayakumar
    1822. \r\n
    1823. Gilberto Goncalves
    1824. \r\n
    1825. Adrien Brunet
    1826. \r\n
    1827. Betsy Waliszewski
    1828. \r\n
    1829. William Eubanks
    1830. \r\n
    1831. Philipp Weidenhiller
    1832. \r\n
    1833. Paul Fontenrose
    1834. \r\n
    1835. Michael Herman
    1836. \r\n
    1837. Chaitat Piriyasatit
    1838. \r\n
    1839. Anirudh Surendranath

    1840. \r\n
    1841. Cathy Kernodle
    1842. \r\n
    1843. bradley searle
    1844. \r\n
    1845. Zoltan Schmidt
    1846. \r\n
    1847. Twin Panichsombat
    1848. \r\n
    1849. Thiago Luiz Pereira de Santana
    1850. \r\n
    1851. Pieter De Praetere
    1852. \r\n
    1853. Aruj Thirawat
    1854. \r\n
    1855. Arthit Suriyawongkul
    1856. \r\n
    1857. Ashley Perez
    1858. \r\n
    1859. Sander Schaminée

    1860. \r\n
    1861. Caleb Ely
    1862. \r\n
    1863. George Altland
    1864. \r\n
    1865. Patrick Abeya
    1866. \r\n
    1867. Terry Watt
    1868. \r\n
    1869. Burke Consulting Inc
    1870. \r\n
    1871. Lorenz Gruber
    1872. \r\n
    1873. Murali Kalapala
    1874. \r\n
    1875. Aono Koudai
    1876. \r\n
    1877. Vladislav Tyshkevich
    1878. \r\n
    1879. Zeta Associates

    1880. \r\n
    1881. Jeanne Lane
    1882. \r\n
    1883. Zheng Jin
    1884. \r\n
    1885. Martin Chilvers
    1886. \r\n
    1887. Patrick Gearhart
    1888. \r\n
    1889. Brian Whetten
    1890. \r\n
    1891. Wang Muyu
    1892. \r\n
    1893. Alexandre Chabot-Leclerc
    1894. \r\n
    1895. Jennifer Hua
    1896. \r\n
    1897. Shashidhar Mallapur
    1898. \r\n
    1899. Nate Pinchot

    1900. \r\n
    1901. Florian Kluck
    1902. \r\n
    1903. Jarret Hardie
    1904. \r\n
    1905. Cagil Ulusahin
    1906. \r\n
    1907. Corsin Gmür
    1908. \r\n
    1909. Saffet Sen
    1910. \r\n
    1911. Luca Masters
    1912. \r\n
    1913. Nina Zakharenko
    1914. \r\n
    1915. Ryan Nelson
    1916. \r\n
    1917. David Miller
    1918. \r\n
    1919. Praveen Bhamidipati

    1920. \r\n
    1921. Andrew Bialecki
    1922. \r\n
    1923. Daisy Birch Reynardson
    1924. \r\n
    1925. Jaykumar Desai
    1926. \r\n
    1927. neil chazin
    1928. \r\n
    1929. Adam Szegedi
    1930. \r\n
    1931. Jan Javorek
    1932. \r\n
    1933. Guishan Zheng
    1934. \r\n
    1935. Leif Ulstrup
    1936. \r\n
    1937. Peter Lada
    1938. \r\n
    1939. Liam Lefebvre

    1940. \r\n
    1941. Gavin Kirby
    1942. \r\n
    1943. 陈 洪波
    1944. \r\n
    1945. Shigeyuki Takeda
    1946. \r\n
    1947. Max Samp
    1948. \r\n
    1949. Dan Mattera
    1950. \r\n
    1951. Llewellyn Janse van Rensburg
    1952. \r\n
    1953. OddBird, LLC
    1954. \r\n
    1955. Joris Roovers
    1956. \r\n
    1957. Janko Otto
    1958. \r\n
    1959. George Richards

    1960. \r\n
    1961. Alexander Afanasyev
    1962. \r\n
    1963. babila lima
    1964. \r\n
    1965. Pietro Marini
    1966. \r\n
    1967. Jason Bindon
    1968. \r\n
    1969. Kiyotoshi Ichikawa
    1970. \r\n
    1971. loic rowe
    1972. \r\n
    1973. Michael Kisiel
    1974. \r\n
    1975. Eric Thorpe
    1976. \r\n
    1977. David Lauri Pla
    1978. \r\n
    1979. Ben Spaulding

    1980. \r\n
    1981. James Hogarty
    1982. \r\n
    1983. Ira Qualls
    1984. \r\n
    1985. OReilly
    1986. \r\n
    1987. Ben Freeman
    1988. \r\n
    1989. Andrew Beyer
    1990. \r\n
    1991. Jonathan Rogers
    1992. \r\n
    1993. Jethro Nederhof
    1994. \r\n
    1995. Hamza Sheikh
    1996. \r\n
    1997. David Beazley
    1998. \r\n
    1999. Matt Land

    2000. \r\n
    2001. ivan marques
    2002. \r\n
    2003. Geoffrey Ahlberg
    2004. \r\n
    2005. Andrew Herrington
    2006. \r\n
    2007. SunMi Leem
    2008. \r\n
    2009. Sandip Bose
    2010. \r\n
    2011. Mailchimp
    2012. \r\n
    2013. Sunghyun Hwang
    2014. \r\n
    2015. Min-Kyu Park
    2016. \r\n
    2017. Keith Bourgoin
    2018. \r\n
    2019. Robert Meineke

    2020. \r\n
    2021. Tanya Tickel
    2022. \r\n
    2023. Gary Beck
    2024. \r\n
    2025. Kai Willadsen
    2026. \r\n
    2027. Allen Downey
    2028. \r\n
    2029. Geoff Lawrence
    2030. \r\n
    2031. Chen Che Wei
    2032. \r\n
    2033. gooddonegreat.com
    2034. \r\n
    2035. Paul Hildebrandt
    2036. \r\n
    2037. David Smith
    2038. \r\n
    2039. Åukasz Dziedzia

    2040. \r\n
    2041. next health choice, llc
    2042. \r\n
    2043. Wendy Grus
    2044. \r\n
    2045. Praveen Patil
    2046. \r\n
    2047. Justin Shelton
    2048. \r\n
    2049. Joel Vasallo
    2050. \r\n
    2051. Melissa Lewis
    2052. \r\n
    2053. Mark Hanson
    2054. \r\n
    2055. Cory Benfield
    2056. \r\n
    2057. David Fischer
    2058. \r\n
    2059. Raymond Yee and Laura Shefler

    2060. \r\n
    2061. Anthony Clever
    2062. \r\n
    2063. Louise Collis
    2064. \r\n
    2065. marc davidson
    2066. \r\n
    2067. Nitin Madnani
    2068. \r\n
    2069. Markus Koziel
    2070. \r\n
    2071. James Sam
    2072. \r\n
    2073. John Vrbanac
    2074. \r\n
    2075. Hannah Aizenman
    2076. \r\n
    2077. slah ahmed
    2078. \r\n
    2079. kenneth durril

    2080. \r\n
    2081. Thijs van Dien
    2082. \r\n
    2083. Ryan Campbell
    2084. \r\n
    2085. Robert Roskam
    2086. \r\n
    2087. Patipat Susumpow
    2088. \r\n
    2089. Chris Moffitt
    2090. \r\n
    2091. Cholwich Nattee
    2092. \r\n
    2093. Adam J Boscarino
    2094. \r\n
    2095. Orcan Ogetbil
    2096. \r\n
    2097. Mattias Erichsén
    2098. \r\n
    2099. Ryan Petrello

    2100. \r\n
    2101. Ryan McCoy
    2102. \r\n
    2103. Brandon Grubbs
    2104. \r\n
    2105. Bill Griffith
    2106. \r\n
    2107. Vyacheslav Rossov
    2108. \r\n
    2109. EuroPython 2015 Sponsored Massage
    2110. \r\n
    2111. Aaron Virshup
    2112. \r\n
    2113. Cogapp Ltd
    2114. \r\n
    2115. Franklin Ventura
    2116. \r\n
    2117. Daniel Watkins
    2118. \r\n
    2119. YUNTAO WANG

    2120. \r\n
    2121. Merike Sell
    2122. \r\n
    2123. Bernat Gabor
    2124. \r\n
    2125. Francky NOYEZ
    2126. \r\n
    2127. Lisa Quera
    2128. \r\n
    2129. Bad Dog Consulting
    2130. \r\n
    2131. Algirdas Grybas
    2132. \r\n
    2133. Kent Shikama
    2134. \r\n
    2135. Walker Hale
    2136. \r\n
    2137. Jaime Buelta Aguirre
    2138. \r\n
    2139. Immanuel Buder

    2140. \r\n
    2141. Steven Lott
    2142. \r\n
    2143. Elaine Wong
    2144. \r\n
    2145. andrew want
    2146. \r\n
    2147. Kamil Sindi
    2148. \r\n
    2149. Julien Palard
    2150. \r\n
    2151. Elias Dabbas
    2152. \r\n
    2153. Ysbrand Galama
    2154. \r\n
    2155. æ¸…æ°´å· è²´ä¹‹
    2156. \r\n
    2157. Tony Ibbs
    2158. \r\n
    2159. Peter Baumgartner

    2160. \r\n
    2161. Mikhail Mamrouski
    2162. \r\n
    2163. Mark Osinski
    2164. \r\n
    2165. Shimrit Markette
    2166. \r\n
    2167. Raja Aluri
    2168. \r\n
    2169. REINALDO SANCHES
    2170. \r\n
    2171. Trenton McKinney
    2172. \r\n
    2173. Sye van der Veen
    2174. \r\n
    2175. Dr A J Carr
    2176. \r\n
    2177. Travis Shirk
    2178. \r\n
    2179. David Bonner

    2180. \r\n
    2181. erik van widenfelt
    2182. \r\n
    2183. Nicholas Silvester
    2184. \r\n
    2185. Vik Paruchuri
    2186. \r\n
    2187. Regina Sirois
    2188. \r\n
    2189. alpheus masanga
    2190. \r\n
    2191. sander teunissen
    2192. \r\n
    2193. RODNEY CURRYWOOD
    2194. \r\n
    2195. Nik Kantar
    2196. \r\n
    2197. Cyrille Marchand
    2198. \r\n
    2199. personal

    2200. \r\n
    2201. Nicholas Birch
    2202. \r\n
    2203. alessandro mienandi
    2204. \r\n
    2205. Lorenzo Moriondo
    2206. \r\n
    2207. Andres Pineda
    2208. \r\n
    2209. Thomas Rutherford
    2210. \r\n
    2211. Lorenzo Riches
    2212. \r\n
    2213. Karthikeyan Singaravelan
    2214. \r\n
    2215. Brian Ehrhart
    2216. \r\n
    2217. Miguel Sousa
    2218. \r\n
    2219. Vivek Goel

    2220. \r\n
    2221. james estevez
    2222. \r\n
    2223. Venkateshwaran Venkataramani
    2224. \r\n
    2225. 柳 泉波
    2226. \r\n
    2227. Rene Nejsum
    2228. \r\n
    2229. D F Moisset de Espanes
    2230. \r\n
    2231. Yakuza IT
    2232. \r\n
    2233. Andy McFarland
    2234. \r\n
    2235. Gregory Cappa
    2236. \r\n
    2237. Brian Warner
    2238. \r\n
    2239. Numerical Algorithms Group, Inc.

    2240. \r\n
    2241. Hellmut Hartmann
    2242. \r\n
    2243. Austin Gunter
    2244. \r\n
    2245. Ramin Soltani
    2246. \r\n
    2247. Hendrik Lankers
    2248. \r\n
    2249. Sergio Delgado Quintero
    2250. \r\n
    2251. Kim van Wyk
    2252. \r\n
    2253. Nik Kraus Consulting
    2254. \r\n
    2255. ANDY STRUNK
    2256. \r\n
    2257. William Spitler
    2258. \r\n
    2259. Paul Ciano

    2260. \r\n
    2261. PayPal Giving
    2262. \r\n
    2263. András Mózes
    2264. \r\n
    2265. Matthew Lamberti
    2266. \r\n
    2267. Edwin Quillian
    2268. \r\n
    2269. sasaki renato shinji
    2270. \r\n
    2271. Shailyn Ortiz Jimenez
    2272. \r\n
    2273. Network Theory Ltd
    2274. \r\n
    2275. בן פיינשטיין
    2276. \r\n
    2277. George Fischhof
    2278. \r\n
    2279. Maneesha Sane

    2280. \r\n
    2281. Henriette Vullers
    2282. \r\n
    2283. Andrés Torres
    2284. \r\n
    2285. Paul Woo
    2286. \r\n
    2287. John Harris
    2288. \r\n
    2289. Software Carpentry
    2290. \r\n
    2291. Chae Jong Bin
    2292. \r\n
    2293. Brian Skinn
    2294. \r\n
    2295. Adam Parkin
    2296. \r\n
    2297. Allison Simmons
    2298. \r\n
    2299. Alicia Florez

    2300. \r\n
    2301. Christoph Fink
    2302. \r\n
    2303. Kai Analytics
    2304. \r\n
    2305. Paul Egbert
    2306. \r\n
    2307. Annaelle Duff
    2308. \r\n
    2309. William Coleman
    2310. \r\n
    2311. Sungwoo Jo
    2312. \r\n
    2313. Guillaume BLANCHY
    2314. \r\n
    2315. Joseph Dougherty
    2316. \r\n
    2317. C. J. Jennings
    2318. \r\n
    2319. Aaron Holm

    2320. \r\n
    2321. Winston Churchill-Joell
    2322. \r\n
    2323. Joseph Cravo
    2324. \r\n
    2325. George Simpson
    2326. \r\n
    2327. Kevin Mitchell
    2328. \r\n
    2329. Pawan Mehta
    2330. \r\n
    2331. Teemu Tynjala
    2332. \r\n
    2333. Olivier GIMENEZ
    2334. \r\n
    2335. Maxwell Mitchell
    2336. \r\n
    2337. Carl Niger
    2338. \r\n
    2339. Richard Walkington

    2340. \r\n
    2341. Andrew Byers
    2342. \r\n
    2343. Angus Hollands
    2344. \r\n
    2345. Jonathan Bennett
    2346. \r\n
    2347. Keyton Weissinger
    2348. \r\n
    2349. David Larsen
    2350. \r\n
    2351. Brian Rotich
    2352. \r\n
    2353. Shreepad Shukla
    2354. \r\n
    2355. Jesse Evers
    2356. \r\n
    2357. JULIO HENRIQUE OLIVEIRA
    2358. \r\n
    2359. Gideon Pertzov

    2360. \r\n
    2361. H Lewis
    2362. \r\n
    2363. Gabriel Pestre
    2364. \r\n
    2365. John Holmblad
    2366. \r\n
    2367. Buthaina Hakamy
    2368. \r\n
    2369. Enzo C C Maimone
    2370. \r\n
    2371. PRASHANT CHEGOOR
    2372. \r\n
    2373. MICHIKO TAKAHASHI
    2374. \r\n
    2375. Sally Kleinfeldt
    2376. \r\n
    2377. Markus Zapke-Gründemann
    2378. \r\n
    2379. Bountysource Inc.

    2380. \r\n
    2381. David Pratt
    2382. \r\n
    2383. Tarun Kumar Rajamannar
    2384. \r\n
    2385. Formlabs, Inc
    2386. \r\n
    2387. Jiangang Sun
    2388. \r\n
    2389. Bernard Lawrence
    2390. \r\n
    2391. Jason Kessler
    2392. \r\n
    2393. Kurt B. Kaiser
    2394. \r\n
    2395. Gary Selzer
    2396. \r\n
    2397. Justin Malloy
    2398. \r\n
    2399. David Casey

    2400. \r\n
    2401. Aaron Kirschenfeld
    2402. \r\n
    2403. Kenneth Alger
    2404. \r\n
    2405. Jean-Paul Thomas
    2406. \r\n
    2407. Richard Landau
    2408. \r\n
    2409. Kun Xia
    2410. \r\n
    2411. Francois Gervais
    2412. \r\n
    2413. Matthew Hale
    2414. \r\n
    2415. SAU-CHUN LAM
    2416. \r\n
    2417. Matthew Bass
    2418. \r\n
    2419. Matteo Benci

    2420. \r\n
    2421. Beltrami Ester
    2422. \r\n
    2423. richard ward
    2424. \r\n
    2425. Jonathan Gilman
    2426. \r\n
    2427. CrowdPixie
    2428. \r\n
    2429. William Kahn-Greene
    2430. \r\n
    2431. Juny Kesumadewi
    2432. \r\n
    2433. Harvey Summers
    2434. \r\n
    2435. Alan Willams
    2436. \r\n
    2437. Addgene
    2438. \r\n
    2439. Joe Metcalfe

    2440. \r\n
    2441. Hayley Cook
    2442. \r\n
    2443. Peerbits Solution Pvt. Ltd.
    2444. \r\n
    2445. WILLIAM J SHUGARD
    2446. \r\n
    2447. Thiago Pavin Rodrigues
    2448. \r\n
    2449. Hugo Smett
    2450. \r\n
    2451. Gunther Strait
    2452. \r\n
    2453. Jiří Janoušek (Tiliado)
    2454. \r\n
    2455. Vivek Tripathi
    2456. \r\n
    2457. Kevin Samuel
    2458. \r\n
    2459. Clemens Hensen

    2460. \r\n
    2461. Paul Weston
    2462. \r\n
    2463. Jan-Olov Eriksson
    2464. \r\n
    2465. Cyrille COLLIN
    2466. \r\n
    2467. Katie Cunningham
    2468. \r\n
    2469. Odair G Martins
    2470. \r\n
    2471. Maurizio Binelli
    2472. \r\n
    2473. Erik Gillisjans
    2474. \r\n
    2475. Cory Tendal
    2476. \r\n
    2477. Priya Ranjan
    2478. \r\n
    2479. Jonathan McKenzie

    2480. \r\n
    2481. Yasin Bahtiyar
    2482. \r\n
    2483. Raul Gallegos
    2484. \r\n
    2485. Hillary Ellis
    2486. \r\n
    2487. Herald Jones
    2488. \r\n
    2489. Divya Gorantla
    2490. \r\n
    2491. Andrei Drang
    2492. \r\n
    2493. Barry Moore II
    2494. \r\n
    2495. lauren McNerney
    2496. \r\n
    2497. William Chandos
    2498. \r\n
    2499. Vanda Turturean

    2500. \r\n
    2501. Tsyrema Lazarev
    2502. \r\n
    2503. Tamara Andrade
    2504. \r\n
    2505. Sara Powell
    2506. \r\n
    2507. Renee Murray
    2508. \r\n
    2509. Piyush Sharma
    2510. \r\n
    2511. Philipp Wissneth
    2512. \r\n
    2513. Marisa Gomez
    2514. \r\n
    2515. Kathleen Russ
    2516. \r\n
    2517. Jessica Obermark
    2518. \r\n
    2519. Emma Lautz

    2520. \r\n
    2521. David glaser
    2522. \r\n
    2523. Brianne Caplan
    2524. \r\n
    2525. Amy Py
    2526. \r\n
    2527. Erin Allard
    2528. \r\n
    2529. Victor Stinner
    2530. \r\n
    2531. Ward Fenton
    2532. \r\n
    2533. Vlad Tudorache
    2534. \r\n
    2535. Philippe Gagnon
    2536. \r\n
    2537. Mamadou Alpha Barry
    2538. \r\n
    2539. LAURENCE TYLER

    2540. \r\n
    2541. Kevin Flynn
    2542. \r\n
    2543. Joseph Schmidt
    2544. \r\n
    2545. Constance Martineau
    2546. \r\n
    2547. Brooke Storm
    2548. \r\n
    2549. Al Brohi
    2550. \r\n
    2551. William Koehrsen
    2552. \r\n
    2553. Andrew Rash
    2554. \r\n
    2555. å´ å† ä»°
    2556. \r\n
    2557. Richard Basso
    2558. \r\n
    2559. Matt Bacchi

    2560. \r\n
    2561. ModevNetwork, LLC
    2562. \r\n
    2563. Jose Ramos
    2564. \r\n
    2565. Ida Nordang Kieler
    2566. \r\n
    2567. Ashina Sipiora
    2568. \r\n
    2569. Charities Aid Foundation
    2570. \r\n
    2571. John Slawkawski
    2572. \r\n
    2573. Benjamin Naecker
    2574. \r\n
    2575. utopland
    2576. \r\n
    2577. Jonathon Coe
    2578. \r\n
    2579. Benjamin M Johnson

    2580. \r\n
    2581. Baydin Inc.
    2582. \r\n
    2583. Ashwath Ravichandran
    2584. \r\n
    2585. УÑищев Павел
    2586. \r\n
    2587. Andy Smith
    2588. \r\n
    2589. Jeff Ramnani
    2590. \r\n
    2591. Sam Bryan
    2592. \r\n
    2593. David Appleby
    2594. \r\n
    2595. Ricardo Solano
    2596. \r\n
    2597. Peter B. Sellin
    2598. \r\n
    2599. Douglas Wurst

    2600. \r\n
    2601. Alex Slobodnik
    2602. \r\n
    2603. Gisela Eckey
    2604. \r\n
    2605. Aman Narang
    2606. \r\n
    2607. Guillaume Jean
    2608. \r\n
    2609. Logan Jones
    2610. \r\n
    2611. Edoardo Gerosa
    2612. \r\n
    2613. Esther Nam
    2614. \r\n
    2615. Derek Evans
    2616. \r\n
    2617. baron chandler
    2618. \r\n
    2619. Mykola Morhun

    2620. \r\n
    2621. Denise Abbott
    2622. \r\n
    2623. ÐлекÑандр Жуков
    2624. \r\n
    2625. Casey MacPhee
    2626. \r\n
    2627. James Doutt
    2628. \r\n
    2629. Sergio Sanchez
    2630. \r\n
    2631. Aaron Wise
    2632. \r\n
    2633. Miles Erickson
    2634. \r\n
    2635. David Willson
    2636. \r\n
    2637. David Boroditsky
    2638. \r\n
    2639. Chaos Development LLC

    2640. \r\n
    2641. George Schwieters
    2642. \r\n
    2643. Al Pankratz
    2644. \r\n
    2645. Zsolt Cserna
    2646. \r\n
    2647. Calvin Robinson
    2648. \r\n
    2649. Victor Vicente Palacios
    2650. \r\n
    2651. Brian Harrison
    2652. \r\n
    2653. Michael Steder
    2654. \r\n
    2655. José Carlos Coronas Vida
    2656. \r\n
    2657. Adrián Soto
    2658. \r\n
    2659. Levkivskyi Ivan

    2660. \r\n
    2661. John Palmieri
    2662. \r\n
    2663. Jacopo Corbetta
    2664. \r\n
    2665. Matthew Stibbs
    2666. \r\n
    2667. Daniel Bradburn
    2668. \r\n
    2669. Shawn Brown
    2670. \r\n
    2671. è— å…¬æ˜Ž
    2672. \r\n
    2673. Don Sheu
    2674. \r\n
    2675. Dain Crawford
    2676. \r\n
    2677. Naveen Kumar Arcot Lakshman
    2678. \r\n
    2679. William O'Shea

    2680. \r\n
    2681. Maxim Levet
    2682. \r\n
    2683. Mike Short
    2684. \r\n
    2685. Thuy Vu
    2686. \r\n
    2687. Daniel Hrisca
    2688. \r\n
    2689. Oliver Steele
    2690. \r\n
    2691. Greg Nisbet
    2692. \r\n
    2693. Jared Bowns
    2694. \r\n
    2695. Bradley Crittenden
    2696. \r\n
    2697. Bo Brockman
    2698. \r\n
    2699. Matthew McClure

    2700. \r\n
    2701. Luther Hill
    2702. \r\n
    2703. Andrew Konstantaras
    2704. \r\n
    2705. David Cuthbert
    2706. \r\n
    2707. Konstantin Nazarenko
    2708. \r\n
    2709. Aasmund Eldhuset
    2710. \r\n
    2711. Algoritmix
    2712. \r\n
    2713. Hunter Senft-Grupp
    2714. \r\n
    2715. Thomas Lambas
    2716. \r\n
    2717. Fred Jones
    2718. \r\n
    2719. Daw-Ran Liou

    2720. \r\n
    2721. CAF America
    2722. \r\n
    2723. 8ProxyMesh LLC
    2724. \r\n
    2725. Michael Newman
    2726. \r\n
    2727. Udupa Ganesh Murthy
    2728. \r\n
    2729. Keaunna Cleveland
    2730. \r\n
    2731. Mikael Holgersson
    2732. \r\n
    2733. Jesus Armando Anaya Orozco
    2734. \r\n
    2735. Cameron Fackler
    2736. \r\n
    2737. Ilya Kamenshchikov
    2738. \r\n
    2739. Gonzalo Bustos

    2740. \r\n
    2741. Tony Meyer
    2742. \r\n
    2743. Juancarlo Añez
    2744. \r\n
    2745. Kristopher Warner
    2746. \r\n
    2747. Siming Kang
    2748. \r\n
    2749. Thom Neale
    2750. \r\n
    2751. Eleanor Stribling
    2752. \r\n
    2753. Bernard Ostil
    2754. \r\n
    2755. Kurt Kaiser
    2756. \r\n
    2757. Lance Kurisaki
    2758. \r\n
    2759. ZANE DUFOUR

    2760. \r\n
    2761. Michael Putnam
    2762. \r\n
    2763. CBAhern Communications, LLC
    2764. \r\n
    2765. Niko Niemelä
    2766. \r\n
    2767. Personal
    2768. \r\n
    2769. Jamison K. Guyton
    2770. \r\n
    2771. James M Long
    2772. \r\n
    2773. David Keck
    2774. \r\n
    2775. Benjamin Richter
    2776. \r\n
    2777. Erik AM Eriksson
    2778. \r\n
    2779. Sam Corner

    2780. \r\n
    2781. André Bernard MENNICKEN
    2782. \r\n
    2783. James Patten
    2784. \r\n
    2785. charles mcconnell
    2786. \r\n
    2787. Brett Cannon
    2788. \r\n
    2789. Igor Kozyrenko
    2790. \r\n
    2791. Jonathan Mark
    2792. \r\n
    2793. zhukov oleksandr
    2794. \r\n
    2795. Sustainist Media
    2796. \r\n
    2797. Patrick Arnecke
    2798. \r\n
    2799. Karen McFarland

    2800. \r\n
    2801. Ian Dotson
    2802. \r\n
    2803. Kevin Sherwood
    2804. \r\n
    2805. Kookheon Kwon
    2806. \r\n
    2807. Michael Yu
    2808. \r\n
    2809. Alessio Marinelli
    2810. \r\n
    2811. Shawn Rider
    2812. \r\n
    2813. Eduardo Carvalho
    2814. \r\n
    2815. Sverre Johan Tøvik
    2816. \r\n
    2817. Hae Choi
    2818. \r\n
    2819. Daniel Pyrathon

    2820. \r\n
    2821. Craig Anderson
    2822. \r\n
    2823. Brennan Ashton
    2824. \r\n
    2825. LAEHYOUNG KIM
    2826. \r\n
    2827. Davide Brunato
    2828. \r\n
    2829. David Pearah
    2830. \r\n
    2831. CHINSEOK LEE
    2832. \r\n
    2833. Cynthia Calongne
    2834. \r\n
    2835. Norman Denayer
    2836. \r\n
    2837. Laurence Billingham
    2838. \r\n
    2839. Michael Hazoglou

    2840. \r\n
    2841. Anja Tischler
    2842. \r\n
    2843. MATSUEDA TOMOYA
    2844. \r\n
    2845. Ching Yong Goh
    2846. \r\n
    2847. Maria Trinick
    2848. \r\n
    2849. Israel Brewster
    2850. \r\n
    2851. Pavlo Shchelokovskyy
    2852. \r\n
    2853. Gana J Pango Nungui
    2854. \r\n
    2855. Evan Porter
    2856. \r\n
    2857. Peria Nallathambi
    2858. \r\n
    2859. Manuel Kaufmann

    2860. \r\n
    2861. lucio messina
    2862. \r\n
    2863. Spigot Labs LLC
    2864. \r\n
    2865. Mark Shackelford
    2866. \r\n
    2867. Ardian Haxha
    2868. \r\n
    2869. Konekt
    2870. \r\n
    2871. Todd Moyer
    2872. \r\n
    2873. Thomas Loiret
    2874. \r\n
    2875. Paolo Galletto
    2876. \r\n
    2877. Joachim Jablon
    2878. \r\n
    2879. EMELYANOV KIRILL

    2880. \r\n
    2881. indy group
    2882. \r\n
    2883. Amitabh Divyaraj
    2884. \r\n
    2885. Pedro Paulo Miranda
    2886. \r\n
    2887. Gabriel Gironda
    2888. \r\n
    2889. Arai Masataka
    2890. \r\n
    2891. Stefan Sakalos
    2892. \r\n
    2893. Robert Kirberich
    2894. \r\n
    2895. Narong Chansoi
    2896. \r\n
    2897. Christopher Glass
    2898. \r\n
    2899. Roland Luethy

    2900. \r\n
    2901. Tyler Kvochick
    2902. \r\n
    2903. Michael Stanley
    2904. \r\n
    2905. Juta Pichitlamken
    2906. \r\n
    2907. Jittat Fakcharoenphol
    2908. \r\n
    2909. Henry S Telfer
    2910. \r\n
    2911. Rodrigo Dias Arruda Senra
    2912. \r\n
    2913. Kurt Wiersma
    2914. \r\n
    2915. ã‚‚ã‚ã­ã£ã¨
    2916. \r\n
    2917. Gregory Dover
    2918. \r\n
    2919. David Holly

    2920. \r\n
    2921. Christopher Short
    2922. \r\n
    2923. Carlo Cosenza
    2924. \r\n
    2925. Keith Rainey
    2926. \r\n
    2927. Brice Parent
    2928. \r\n
    2929. Matthias Braun
    2930. \r\n
    2931. Marcus Holmgren
    2932. \r\n
    2933. MR K DWYER
    2934. \r\n
    2935. Daniel Contreras
    2936. \r\n
    2937. Jon Ribbens
    2938. \r\n
    2939. Chris Waddington

    2940. \r\n
    2941. Franz Woellert
    2942. \r\n
    2943. Additive Theory
    2944. \r\n
    2945. Yuwei Ba
    2946. \r\n
    2947. David Stinson
    2948. \r\n
    2949. Zachary Rubin
    2950. \r\n
    2951. Ronald Williams
    2952. \r\n
    2953. Daniel Gunter
    2954. \r\n
    2955. William Glennon
    2956. \r\n
    2957. Oleg Nykolyn
    2958. \r\n
    2959. Raissa dos Santos Ferreira

    2960. \r\n
    2961. Pawel Kozela
    2962. \r\n
    2963. Biswas Parajuli
    2964. \r\n
    2965. Haley Bear
    2966. \r\n
    2967. Melvin Fisher
    2968. \r\n
    2969. YaM Mesicka
    2970. \r\n
    2971. Silvio Capobianco
    2972. \r\n
    2973. Lee Godfrey
    2974. \r\n
    2975. Jiaxing Wang
    2976. \r\n
    2977. Ian Danforth
    2978. \r\n
    2979. Marina Nunamaker

    2980. \r\n
    2981. Jaime Rodríguez-Guerra Pedregal
    2982. \r\n
    2983. Alan Moore
    2984. \r\n
    2985. john tillett
    2986. \r\n
    2987. Sean O'Connor
    2988. \r\n
    2989. Kerri Reno
    2990. \r\n
    2991. JPTJ Berends
    2992. \r\n
    2993. Calvin Parker
    2994. \r\n
    2995. Alan Corson
    2996. \r\n
    2997. George Kussumoto
    2998. \r\n
    2999. 胡 盼å¿

    3000. \r\n
    3001. Helmut Eberharter
    3002. \r\n
    3003. Hongjun Fu
    3004. \r\n
    3005. Colin Carroll
    3006. \r\n
    3007. Todd Dembrey
    3008. \r\n
    3009. Jean-Sebastien Theriault
    3010. \r\n
    3011. Soboleva Larisa
    3012. \r\n
    3013. NICHOLAS SU
    3014. \r\n
    3015. William Hopson
    3016. \r\n
    3017. Bernard Jameson
    3018. \r\n
    3019. Urvish Vanzara

    3020. \r\n
    3021. Sam Bull
    3022. \r\n
    3023. Philip Massey
    3024. \r\n
    3025. Jason Friedman / Julia White
    3026. \r\n
    3027. Eric Camplin
    3028. \r\n
    3029. LISA CARLYLE
    3030. \r\n
    3031. Britone Mwasaru
    3032. \r\n
    3033. Gaurav Sehrawat
    3034. \r\n
    3035. carl petty
    3036. \r\n
    3037. T sidhu
    3038. \r\n
    3039. Shalini Kumar

    3040. \r\n
    3041. Latise Smalls
    3042. \r\n
    3043. Amber Schalk
    3044. \r\n
    3045. www.bookandrew4.me
    3046. \r\n
    3047. Will Ware
    3048. \r\n
    3049. Shorena Chikhladze
    3050. \r\n
    3051. Gregory Lett
    3052. \r\n
    3053. Mark Haase
    3054. \r\n
    3055. Maximov Mikhail
    3056. \r\n
    3057. Spencer Young
    3058. \r\n
    3059. Christine Spang

    3060. \r\n
    3061. Andre Lessa
    3062. \r\n
    3063. Alexander Elvers
    3064. \r\n
    3065. ANDREW D Oram
    3066. \r\n
    3067. Erin Atkinson
    3068. \r\n
    3069. Soeren Loevborg
    3070. \r\n
    3071. Mark Peschel
    3072. \r\n
    3073. Marci Murphy
    3074. \r\n
    3075. Gregory Lee
    3076. \r\n
    3077. Drew Aadland
    3078. \r\n
    3079. Google, Inc.

    3080. \r\n
    3081. Jonathan Findley
    3082. \r\n
    3083. Jeff Kramer
    3084. \r\n
    3085. Francis Lacroix
    3086. \r\n
    3087. Take it Simple srl
    3088. \r\n
    3089. Michael Johnson
    3090. \r\n
    3091. Barry Byford
    3092. \r\n
    3093. Erol Suleyman
    3094. \r\n
    3095. Bruno Caimar
    3096. \r\n
    3097. Nicolas Motte
    3098. \r\n
    3099. Open Source Kids

    3100. \r\n
    3101. Dao Duc Cuong
    3102. \r\n
    3103. Karl Jan Clinckspoor
    3104. \r\n
    3105. Jack Wilkinson
    3106. \r\n
    3107. KwonHan Bae
    3108. \r\n
    3109. Darasimi Ajewole
    3110. \r\n
    3111. Scott Godin
    3112. \r\n
    3113. Artem Tyumentsev
    3114. \r\n
    3115. William Silversmith
    3116. \r\n
    3117. James Littlefield
    3118. \r\n
    3119. Miquel Soldevila Gasquet

    3120. \r\n
    3121. Felipe del Río Rebolledo
    3122. \r\n
    3123. Andre Santana
    3124. \r\n
    3125. Michael Perez
    3126. \r\n
    3127. Daniel Knodel
    3128. \r\n
    3129. Andre Bienemann
    3130. \r\n
    3131. BLUE1647 NFP
    3132. \r\n
    3133. BravuraChicago
    3134. \r\n
    3135. Alex Lord
    3136. \r\n
    3137. Andriy Andriyuk
    3138. \r\n
    3139. Flash Apps

    3140. \r\n
    3141. Marcus Sherman
    3142. \r\n
    3143. YOGEV REGEV
    3144. \r\n
    3145. Joshua Steele
    3146. \r\n
    3147. Leslie Hawthorn
    3148. \r\n
    3149. Andrés Cuadrado Campaña
    3150. \r\n
    3151. Richard Hayes
    3152. \r\n
    3153. Mark Casanova
    3154. \r\n
    3155. Johan Losvik
    3156. \r\n
    3157. Konstantin Taletskiy
    3158. \r\n
    3159. Nikolaos Mavrakis

    3160. \r\n
    3161. Derek Payton
    3162. \r\n
    3163. Kojo Idrissa
    3164. \r\n
    3165. Ohshima Yusuke
    3166. \r\n
    3167. Luiz Fernando Oliveira
    3168. \r\n
    3169. David Sanchez
    3170. \r\n
    3171. Anilyka Barry
    3172. \r\n
    3173. James Robert Byrd
    3174. \r\n
    3175. DMITRIY ZHILTSOV
    3176. \r\n
    3177. GoodDoneGreat.com
    3178. \r\n
    3179. Enstaved Pty Ltd

    3180. \r\n
    3181. Roess Ramona
    3182. \r\n
    3183. Faisal Albarazi
    3184. \r\n
    3185. Bastien Gerard
    3186. \r\n
    3187. Manish Sinha
    3188. \r\n
    3189. Meagan Riley
    3190. \r\n
    3191. Julian Colomina
    3192. \r\n
    3193. Arnaud Devie
    3194. \r\n
    3195. Edwin van Amersfoort
    3196. \r\n
    3197. Christian KELLENBERGER
    3198. \r\n
    3199. Victor Manuel NAVARRO AYALA

    3200. \r\n
    3201. Todd Rovito
    3202. \r\n
    3203. Zandra Kubota
    3204. \r\n
    3205. Manivannan E
    3206. \r\n
    3207. Seth Naugler
    3208. \r\n
    3209. Gabriel Augendre
    3210. \r\n
    3211. Mark Vanstone
    3212. \r\n
    3213. Lionel Aster Mena García
    3214. \r\n
    3215. Eliahy Rosenblum
    3216. \r\n
    3217. Dawn Hewitson
    3218. \r\n
    3219. Romain Muller

    3220. \r\n
    3221. boris tassou
    3222. \r\n
    3223. Michael Sverdlik
    3224. \r\n
    3225. Sean Wall
    3226. \r\n
    3227. Deepak Subhramanian
    3228. \r\n
    3229. Jan Lipovský
    3230. \r\n
    3231. Alexander Ejbekov
    3232. \r\n
    3233. 陈 昊
    3234. \r\n
    3235. Stefan Steinbauer
    3236. \r\n
    3237. Prasannajeet Pani
    3238. \r\n
    3239. KOBAYASHI SHIGEAKI

    3240. \r\n
    3241. steven zhao
    3242. \r\n
    3243. æ¨ çŽš
    3244. \r\n
    3245. Shahar Dolev
    3246. \r\n
    3247. Rafael dos Santos de Oliveira
    3248. \r\n
    3249. Vishal Tak
    3250. \r\n
    3251. Sai Chaitanya Akella
    3252. \r\n
    3253. Ryo Kishimoto
    3254. \r\n
    3255. Matthew McGraw
    3256. \r\n
    3257. Julian Sequeira
    3258. \r\n
    3259. Griffin Derryberry

    3260. \r\n
    3261. Bob Belderbos
    3262. \r\n
    3263. Guo Baiwei
    3264. \r\n
    3265. Kenneth Durril
    3266. \r\n
    3267. anthony fagan
    3268. \r\n
    3269. MathKnowledge
    3270. \r\n
    3271. Sarah Hodges
    3272. \r\n
    3273. Janos Szeman
    3274. \r\n
    3275. Markus Mueller
    3276. \r\n
    3277. John Mattera
    3278. \r\n
    3279. YU CHUEN HUANG

    3280. \r\n
    3281. Claudia Greenwell
    3282. \r\n
    3283. Predrag Pucar
    3284. \r\n
    3285. Tony Ly
    3286. \r\n
    3287. Mathieu Dupuy
    3288. \r\n
    3289. Franco Minucci
    3290. \r\n
    3291. Srikanth A
    3292. \r\n
    3293. Augustin Garcia
    3294. \r\n
    3295. Open Stack Foundation
    3296. \r\n
    3297. Christian Laforest
    3298. \r\n
    3299. Oliver Behm

    3300. \r\n
    3301. Stefan Turalski
    3302. \r\n
    3303. Tertius Rossouw
    3304. \r\n
    3305. Girish Devappa
    3306. \r\n
    3307. Benjamin Sergeant
    3308. \r\n
    3309. Derrick Jackson
    3310. \r\n
    3311. Alexander Graf
    3312. \r\n
    3313. Iraquitan Cordeiro Filho
    3314. \r\n
    3315. Sergio Monte Fernández
    3316. \r\n
    3317. Major William Hayden
    3318. \r\n
    3319. REGINALDO OLIVEIRA DE JESUS

    3320. \r\n
    3321. Claes Bergman
    3322. \r\n
    3323. U.S. Bank Foundation
    3324. \r\n
    3325. Prayash Mohapatra
    3326. \r\n
    3327. Tracy Helms
    3328. \r\n
    3329. Volodymyr Kirichinets
    3330. \r\n
    3331. Tyler Baldwin
    3332. \r\n
    3333. Robert Grant
    3334. \r\n
    3335. Fran Longueira
    3336. \r\n
    3337. cristina catinella
    3338. \r\n
    3339. Carlos Mendia González

    3340. \r\n
    3341. Brandon Macer
    3342. \r\n
    3343. James Lipsey
    3344. \r\n
    3345. Wim Vis
    3346. \r\n
    3347. Joshua Campbell
    3348. \r\n
    3349. Walter Tross
    3350. \r\n
    3351. Oluwadamilare Obayanju
    3352. \r\n
    3353. Aiden Sherwood
    3354. \r\n
    3355. Hobson Lane
    3356. \r\n
    3357. Luca Carlotto
    3358. \r\n
    3359. Jacqueline Nelson

    3360. \r\n
    3361. Carl Byer
    3362. \r\n
    3363. Соколов Сергей
    3364. \r\n
    3365. Thomas Capuano
    3366. \r\n
    3367. Joshua Kammeraad
    3368. \r\n
    3369. Ryan Wade
    3370. \r\n
    3371. Mamad Blais
    3372. \r\n
    3373. 晋 正东
    3374. \r\n
    3375. Dylan Zingler
    3376. \r\n
    3377. Dusan Kolic
    3378. \r\n
    3379. YourCause LLC

    3380. \r\n
    3381. Wells Fargo Community Support Campaign
    3382. \r\n
    3383. Stacey Sern
    3384. \r\n
    3385. LUIGI FRANCESCHETTI
    3386. \r\n
    3387. é½ æ¬£
    3388. \r\n
    3389. Miranda buehler
    3390. \r\n
    3391. Mark Martin
    3392. \r\n
    3393. Andrew Wilkey
    3394. \r\n
    3395. Kelby Stine
    3396. \r\n
    3397. Greg Blonder
    3398. \r\n
    3399. Thiesmann Lim

    3400. \r\n
    3401. Matthias Kirst
    3402. \r\n
    3403. Philippe Docourt
    3404. \r\n
    3405. Frederic FOIRY
    3406. \r\n
    3407. donald douglas
    3408. \r\n
    3409. Brad Montgomery
    3410. \r\n
    3411. Alain Lubin
    3412. \r\n
    3413. david baird
    3414. \r\n
    3415. Maelle Vance
    3416. \r\n
    3417. Supayut Raksuk
    3418. \r\n
    3419. Peter McCormick

    3420. \r\n
    3421. Derek Morrison
    3422. \r\n
    3423. Gary Kahn
    3424. \r\n
    3425. Sai Nudurupati
    3426. \r\n
    3427. Bryan Siepert
    3428. \r\n
    3429. Ramakrishna Reddy Pappula
    3430. \r\n
    3431. SANDRO MOCCI
    3432. \r\n
    3433. Wojciech Semik
    3434. \r\n
    3435. Margaret Aronsohn
    3436. \r\n
    3437. Juan Comesaña Fernández
    3438. \r\n
    3439. Jonathan Eckel

    3440. \r\n
    3441. DHAVAL PATEL
    3442. \r\n
    3443. Gregory Fuller
    3444. \r\n
    3445. Phyllis Dobbs
    3446. \r\n
    3447. David Wilson
    3448. \r\n
    3449. chiu ping kei
    3450. \r\n
    3451. Ander Zarketa Astigarraga
    3452. \r\n
    3453. Thomas Eichhorn
    3454. \r\n
    3455. David Chen
    3456. \r\n
    3457. Paul Cuda
    3458. \r\n
    3459. Keith Brooks

    3460. \r\n
    3461. Don Fitzpatrick
    3462. \r\n
    3463. edx Finance
    3464. \r\n
    3465. Otto Felix Winter
    3466. \r\n
    3467. Nataliia Serebryakova
    3468. \r\n
    3469. Christopher Lubinski
    3470. \r\n
    3471. Ewa Jodlowska
    3472. \r\n
    3473. Kerry Creech
    3474. \r\n
    3475. Briceida Mariscal
    3476. \r\n
    3477. nathaniel mccourtney
    3478. \r\n
    3479. Shun Chen

    3480. \r\n
    3481. Scott Gordon
    3482. \r\n
    3483. Sanchit Sharma
    3484. \r\n
    3485. Neutron Drive
    3486. \r\n
    3487. David Morse
    3488. \r\n
    3489. RYAN COOPER
    3490. \r\n
    3491. Vasilios Syrakis
    3492. \r\n
    3493. Adam Rosier
    3494. \r\n
    3495. Jennifer Miller
    3496. \r\n
    3497. Sam Thirugnanasampanthan
    3498. \r\n
    3499. Pablo Rodriguez

    3500. \r\n
    3501. Leland Johnson
    3502. \r\n
    3503. DIMITRIOS KADOGLOU
    3504. \r\n
    3505. Waleed Alhaider
    3506. \r\n
    3507. Jessica Ross
    3508. \r\n
    3509. Catherine Sawatzky
    3510. \r\n
    3511. Selamu Masebo
    3512. \r\n
    3513. Rory Hartong-Redden
    3514. \r\n
    3515. John Chandler
    3516. \r\n
    3517. David Niemi
    3518. \r\n
    3519. De Canniere Jean

    3520. \r\n
    3521. MARK HELLYER
    3522. \r\n
    3523. Barbara Miller
    3524. \r\n
    3525. John Stephens
    3526. \r\n
    3527. Daniel Riggs
    3528. \r\n
    3529. Maria Vergara
    3530. \r\n
    3531. Kathryn Cogert
    3532. \r\n
    3533. Paolo Anastagi
    3534. \r\n
    3535. Sebastian Porst
    3536. \r\n
    3537. Venkata Ramana
    3538. \r\n
    3539. Akhil Ravipati

    3540. \r\n
    3541. Brian Williams
    3542. \r\n
    3543. Paul Friedman
    3544. \r\n
    3545. Sabrina Spencer
    3546. \r\n
    3547. Dmitry Kisler
    3548. \r\n
    3549. Seamus Johnston
    3550. \r\n
    3551. Sumayya Essack
    3552. \r\n
    3553. Glenn Travis
    3554. \r\n
    3555. Andre Miras
    3556. \r\n
    3557. Adrián Chaves Fernández
    3558. \r\n
    3559. SurveyNgBayan

    3560. \r\n
    3561. John Q. Glasgow
    3562. \r\n
    3563. Alexandra Rosenbaum
    3564. \r\n
    3565. Aaron Wood
    3566. \r\n
    3567. Maria McLinn
    3568. \r\n
    3569. Douglas Lamar
    3570. \r\n
    3571. David Mauricio Delgado Ruiz
    3572. \r\n
    3573. Caleb Gosnell
    3574. \r\n
    3575. Andrew Woodward
    3576. \r\n
    3577. Bhaskar teja Yerneni
    3578. \r\n
    3579. Timothy White

    3580. \r\n
    3581. Aleksandar Veselinovic
    3582. \r\n
    3583. Плугин Ðндрей
    3584. \r\n
    3585. philippe silve
    3586. \r\n
    3587. w scott stornetta
    3588. \r\n
    3589. Ahsan Haq
    3590. \r\n
    3591. Mark Feinberg
    3592. \r\n
    3593. eBay
    3594. \r\n
    3595. Sven Rahmann
    3596. \r\n
    3597. Norman Elliott
    3598. \r\n
    3599. Tom Schultz

    3600. \r\n
    3601. Rodrigo Pereira Garcia
    3602. \r\n
    3603. Katrina Durance
    3604. \r\n
    3605. Kirk Strauser
    3606. \r\n
    3607. David Wood
    3608. \r\n
    3609. Ari Cristiano Raimundo
    3610. \r\n
    3611. Selena Flannery
    3612. \r\n
    3613. Russell Pope
    3614. \r\n
    3615. marlon keating
    3616. \r\n
    3617. Fatima Coronado
    3618. \r\n
    3619. David Cramer

    3620. \r\n
    3621. Thomas Alton
    3622. \r\n
    3623. Eloy Romero Alcalde
    3624. \r\n
    3625. Moshe Zadka
    3626. \r\n
    3627. Eryn Wells
    3628. \r\n
    3629. Dražen Lazarevicć
    3630. \r\n
    3631. Eric Matthes
    3632. \r\n
    3633. David Kurkov
    3634. \r\n
    3635. Alex Johnson
    3636. \r\n
    3637. Scott Bryce
    3638. \r\n
    3639. Quentin CAUDRON

    3640. \r\n
    3641. John DeRosa
    3642. \r\n
    3643. Edward Gormley
    3644. \r\n
    3645. Rizky Ariestiyansyah
    3646. \r\n
    3647. Michael Jolliffe
    3648. \r\n
    3649. Brett Vitaz
    3650. \r\n
    3651. Barbara McGovern
    3652. \r\n
    3653. Stephen Broumley
    3654. \r\n
    3655. Peggy Fisher
    3656. \r\n
    3657. Milen Genov
    3658. \r\n
    3659. Drew Walker

    3660. \r\n
    3661. Flavio Diomede
    3662. \r\n
    3663. Vitor Freitas e Souza
    3664. \r\n
    3665. Joseph McGrew
    3666. \r\n
    3667. sai krishna aravalli
    3668. \r\n
    3669. Jaime Garcia
    3670. \r\n
    3671. Галаганов Сергей
    3672. \r\n
    3673. Sumeet Kishnani
    3674. \r\n
    3675. Perry Randall
    3676. \r\n
    3677. David Thomson
    3678. \r\n
    3679. Sergi Puso Gallart

    3680. \r\n
    3681. SHALABH BHATNAGAR
    3682. \r\n
    3683. John Harris
    3684. \r\n
    3685. Conrad Thiele
    3686. \r\n
    3687. Tyrone Scott
    3688. \r\n
    3689. Emmitt Tibbitts
    3690. \r\n
    3691. PAMELA MCA'NULTY
    3692. \r\n
    3693. Jakob Adams
    3694. \r\n
    3695. Andreas Braun
    3696. \r\n
    3697. Davis Nunes de Mesquita
    3698. \r\n
    3699. Carles Pina Estany

    3700. \r\n
    3701. gorgonzo.la
    3702. \r\n
    3703. Kushal Das
    3704. \r\n
    3705. Kittipong Piyawanno
    3706. \r\n
    3707. Ewen McNeill
    3708. \r\n
    3709. William Clemens
    3710. \r\n
    3711. Mark Mikofski
    3712. \r\n
    3713. Julie Pichon
    3714. \r\n
    3715. Florian Bruhin
    3716. \r\n
    3717. Emily Moss
    3718. \r\n
    3719. Mudranik Technologies Private Limited

    3720. \r\n
    3721. S D Kennedy
    3722. \r\n
    3723. Kate Brigham
    3724. \r\n
    3725. Richard Jones
    3726. \r\n
    3727. David Knoll
    3728. \r\n
    3729. Marcus Williams
    3730. \r\n
    3731. Ryan T Bard
    3732. \r\n
    3733. Jessica Freasier
    3734. \r\n
    3735. Robert Muratore
    3736. \r\n
    3737. James Abel
    3738. \r\n
    3739. Rachel Sima

    3740. \r\n
    3741. Ondrej Zuffa
    3742. \r\n
    3743. Lee Supe
    3744. \r\n
    3745. Thomas Nuegyn
    3746. \r\n
    3747. 郭 喜涌
    3748. \r\n
    3749. F Douglas Baker
    3750. \r\n
    3751. José Gómez Vázquez
    3752. \r\n
    3753. Jaqueline soriano
    3754. \r\n
    3755. Juan David Gonzalez Cobas
    3756. \r\n
    3757. Ravishankar N R
    3758. \r\n
    3759. Annalee Flower Horne

    3760. \r\n
    3761. Питько Любовь
    3762. \r\n
    3763. Philipp Horn
    3764. \r\n
    3765. Siddarth Ganguri
    3766. \r\n
    3767. Rutger Stapelkamp
    3768. \r\n
    3769. Oscar Becerril Domínguez
    3770. \r\n
    3771. Khanh Nguyen
    3772. \r\n
    3773. Phil Simonson
    3774. \r\n
    3775. Efim Krakhalev
    3776. \r\n
    3777. Steven C Howell
    3778. \r\n
    3779. Kevan Swanberg

    3780. \r\n
    3781. Krishnan Swamy
    3782. \r\n
    3783. Gamal Crichton
    3784. \r\n
    3785. Soapify.ch
    3786. \r\n
    3787. Liza Daly
    3788. \r\n
    3789. Nick Geller
    3790. \r\n
    3791. James Bruzek
    3792. \r\n
    3793. Kristin Bassett
    3794. \r\n
    3795. Prema Roman
    3796. \r\n
    3797. Pramote Teerasetmanakul
    3798. \r\n
    3799. Amit Chapatwala

    3800. \r\n
    3801. Eisa Mohsen
    3802. \r\n
    3803. Mathieu Poussin
    3804. \r\n
    3805. Diego Amicabile
    3806. \r\n
    3807. Allison Fero
    3808. \r\n
    3809. Katrina Demulling
    3810. \r\n
    3811. Robert Graham
    3812. \r\n
    3813. Ying Li
    3814. \r\n
    3815. Erica Asai
    3816. \r\n
    3817. Peter Taveira
    3818. \r\n
    3819. Marissa Utterberg

    3820. \r\n
    3821. 林 準一
    3822. \r\n
    3823. VANESSA VAN GILDER
    3824. \r\n
    3825. Stephen Gross
    3826. \r\n
    3827. Stephanie Parrott
    3828. \r\n
    3829. Oliver Bestwalter
    3830. \r\n
    3831. Mark Lindberg
    3832. \r\n
    3833. Mario Corchero
    3834. \r\n
    3835. MARIA ISABEL DELGADO BABIANO
    3836. \r\n
    3837. Laura Drummer
    3838. \r\n
    3839. João Franco

    3840. \r\n
    3841. HANHO YOON
    3842. \r\n
    3843. Emmanuelle COLIN
    3844. \r\n
    3845. Dennis Gomer
    3846. \r\n
    3847. Daniel Thomas
    3848. \r\n
    3849. Cirrustack, ltd.
    3850. \r\n
    3851. Chrles Gilbert
    3852. \r\n
    3853. Christopher Kiraly
    3854. \r\n
    3855. Axai Soluciones Avanzadas, S.C.
    3856. \r\n
    3857. Alex Fogleman
    3858. \r\n
    3859. Craig Boman

    3860. \r\n
    3861. David Rogers
    3862. \r\n
    3863. James Mategko
    3864. \r\n
    3865. Hans Olav Melberg
    3866. \r\n
    3867. LUKMAN EDWINDRA
    3868. \r\n
    3869. ria baldevia
    3870. \r\n
    3871. gurudev devanla
    3872. \r\n
    3873. Thomas Zakrajsek
    3874. \r\n
    3875. Susmitha Kothapalli
    3876. \r\n
    3877. Sean Boisen
    3878. \r\n
    3879. Samantha Yeargin

    3880. \r\n
    3881. Paul Craven
    3882. \r\n
    3883. Melanie Crutchfield
    3884. \r\n
    3885. Manasa Patibandla
    3886. \r\n
    3887. Laura Beaufort
    3888. \r\n
    3889. Emma Willemsma
    3890. \r\n
    3891. Elizabeth Durflinger
    3892. \r\n
    3893. Dotte Dinnet, Inc.
    3894. \r\n
    3895. Chelsea Stapleton Cordasco
    3896. \r\n
    3897. Andrew Selzer
    3898. \r\n
    3899. Qumisha Goss

    3900. \r\n
    3901. Alan Williams
    3902. \r\n
    3903. Drazen Lucanin
    3904. \r\n
    3905. XIAO XIAO
    3906. \r\n
    3907. Wesley Smiley
    3908. \r\n
    3909. Liaw Wey-Han
    3910. \r\n
    3911. Daniel Allan
    3912. \r\n
    3913. Abhishek Keny
    3914. \r\n
    3915. Surya Jayanthi
    3916. \r\n
    3917. Studenten Net Twente
    3918. \r\n
    3919. ìœ¤ì„ ì´

    3920. \r\n
    3921. mingyu jo
    3922. \r\n
    3923. SEUNG HO KIM
    3924. \r\n
    3925. PARK JUN YONG PARK
    3926. \r\n
    3927. Junghyun Park
    3928. \r\n
    3929. Richard MacCutchan
    3930. \r\n
    3931. David Albone
    3932. \r\n
    3933. Patrick Burns
    3934. \r\n
    3935. Brian K Okken
    3936. \r\n
    3937. srikrishna ch
    3938. \r\n
    3939. Sean Oldham

    3940. \r\n
    3941. Daniel Ellis
    3942. \r\n
    3943. Bas Meijer
    3944. \r\n
    3945. Antonio Beltran
    3946. \r\n
    3947. James Traub
    3948. \r\n
    3949. Mark Fackler
    3950. \r\n
    3951. ashutosh bhatt
    3952. \r\n
    3953. UAN FRANCISCO Correoso
    3954. \r\n
    3955. Ravi Taneja
    3956. \r\n
    3957. John Harrison
    3958. \r\n
    3959. Ignacio Vergara Kausel

    3960. \r\n
    3961. Chris Rands
    3962. \r\n
    3963. Blackbaud Cares Center
    3964. \r\n
    3965. Roman Mogilatov
    3966. \r\n
    3967. Randall Rodakowski
    3968. \r\n
    3969. Mouse Vs Python
    3970. \r\n
    3971. Israel Fruchter
    3972. \r\n
    3973. Graham Wheeler
    3974. \r\n
    3975. Gaspar Modelo Howard
    3976. \r\n
    3977. Chris Lasher
    3978. \r\n
    3979. evren kutar

    3980. \r\n
    3981. Evan Hurley
    3982. \r\n
    3983. Alexander Lutchko
    3984. \r\n
    3985. Finan
    3986. \r\n
    3987. kate mosier
    3988. \r\n
    3989. Ville Säävuori
    3990. \r\n
    3991. Tal Einat
    3992. \r\n
    3993. John Keyes
    3994. \r\n
    3995. Bernd Schlapsi
    3996. \r\n
    3997. Mitch Jablonski
    3998. \r\n
    3999. Lauri Lepistö

    4000. \r\n
    4001. Sérgio Agostinho
    4002. \r\n
    4003. Pierre Augier
    4004. \r\n
    4005. Markus Banfi
    4006. \r\n
    4007. Csaba Magyar
    4008. \r\n
    4009. Bogdan Cordier
    4010. \r\n
    4011. Ankesh Kumar
    4012. \r\n
    4013. Alexandre Barrozo do Amaral Villares
    4014. \r\n
    4015. ToolBeats
    4016. \r\n
    4017. å¶ æ€ä¿Š
    4018. \r\n
    4019. Raj Shekhar

    4020. \r\n
    4021. Jörg Tremmel
    4022. \r\n
    4023. Huang Zhugang
    4024. \r\n
    4025. Bernardo Roschke
    4026. \r\n
    4027. Florent Viard
    4028. \r\n
    4029. Philip Roche
    4030. \r\n
    4031. Daniel Castillo Casanova
    4032. \r\n
    4033. æ¢ ç€š
    4034. \r\n
    4035. yohanes gultom
    4036. \r\n
    4037. lonetwin.net
    4038. \r\n
    4039. Vishnu Gopal

    4040. \r\n
    4041. Uriel Fernando Sandoval Pérez
    4042. \r\n
    4043. Sumudu Tennakoon
    4044. \r\n
    4045. Pro Wrestling Superstar
    4046. \r\n
    4047. Petr Moses
    4048. \r\n
    4049. Oliver Stapel
    4050. \r\n
    4051. Nuttaphon Nuanyaisrithong
    4052. \r\n
    4053. Nicholas Sweeting
    4054. \r\n
    4055. Matthew Lemon
    4056. \r\n
    4057. Manuel Solorzano
    4058. \r\n
    4059. Maik Figura

    4060. \r\n
    4061. M ET MME FREDERIC ROLAND
    4062. \r\n
    4063. Jose Pedro Valdes Herrera
    4064. \r\n
    4065. Jordan Dawe
    4066. \r\n
    4067. Daniel Verdugo Moreno
    4068. \r\n
    4069. CycleVault
    4070. \r\n
    4071. Craig Richardson
    4072. \r\n
    4073. Christine Waigl
    4074. \r\n
    4075. Christan Grant
    4076. \r\n
    4077. Atthaphong Limsupanark
    4078. \r\n
    4079. Attakorn Putwattana

    4080. \r\n
    4081. Ana Balica
    4082. \r\n
    4083. Aart Goossens
    4084. \r\n
    4085. Eric Palakovich Carr
    4086. \r\n
    4087. Daniel Brooks
    4088. \r\n
    4089. ปà¸à¸¡à¸žà¸‡à¸¨à¹Œ à¸à¸§à¸²à¸‡à¸—อง
    4090. \r\n
    4091. nadia karlinsky
    4092. \r\n
    4093. Wiennat Mongkulmann
    4094. \r\n
    4095. Vincent Jesús Bahena Serrano
    4096. \r\n
    4097. Surote Wongpaiboon
    4098. \r\n
    4099. Smital Desai

    4100. \r\n
    4101. Sivathanu Kumaraswamy
    4102. \r\n
    4103. Preechai Mekbungwan
    4104. \r\n
    4105. Pisacha Srinuan
    4106. \r\n
    4107. Nattawat Palakawong
    4108. \r\n
    4109. Lisa Ballard
    4110. \r\n
    4111. Gonzalo Andres Pena Castellanos
    4112. \r\n
    4113. David Thompson
    4114. \r\n
    4115. Daniel Clementi
    4116. \r\n
    4117. Yves Roy
    4118. \r\n
    4119. Oleksandr Allakhverdiyev

    4120. \r\n
    4121. Gilbert Forsyth
    4122. \r\n
    4123. Tomas Mrozek
    4124. \r\n
    4125. Leo Kreymborg
    4126. \r\n
    4127. Sasidhar Donaparthi
    4128. \r\n
    4129. Patrick Morris
    4130. \r\n
    4131. James Seden Smith
    4132. \r\n
    4133. Alan Hobesh
    4134. \r\n
    4135. Thejaswi Puthraya
    4136. \r\n
    4137. Gökmen Görgen
    4138. \r\n
    4139. Ronald Ridley

    4140. \r\n
    4141. Clemens Lange
    4142. \r\n
    4143. Joseph Montgomery
    4144. \r\n
    4145. Marc-Anthony Taylor
    4146. \r\n
    4147. Luke Clarke
    4148. \r\n
    4149. ПовалÑев ВаÑилий
    4150. \r\n
    4151. Ray McCarthy
    4152. \r\n
    4153. Marcus Sharp II
    4154. \r\n
    4155. Marcel Loher
    4156. \r\n
    4157. Gary Davis
    4158. \r\n
    4159. Dungjit Shiowattana

    4160. \r\n
    4161. Alain Ledon
    4162. \r\n
    4163. Yungchieh Chang
    4164. \r\n
    4165. ulf sjodin
    4166. \r\n
    4167. Rikard Westman
    4168. \r\n
    4169. Mancini Giampaolo
    4170. \r\n
    4171. Kay Schink
    4172. \r\n
    4173. Jordan Eremieff
    4174. \r\n
    4175. Jan Wagner
    4176. \r\n
    4177. Hamilton Goonan
    4178. \r\n
    4179. Gabriel Foo

    4180. \r\n
    4181. Denis Sergeev
    4182. \r\n
    4183. Anders Ballegaard
    4184. \r\n
    4185. Wouter De Coster
    4186. \r\n
    4187. Will McGugan
    4188. \r\n
    4189. Tony Friis
    4190. \r\n
    4191. Thomas Viner
    4192. \r\n
    4193. Shihao Xu
    4194. \r\n
    4195. Perica Zivkovic
    4196. \r\n
    4197. Paul Smith
    4198. \r\n
    4199. Motion Group

    4200. \r\n
    4201. Greg Roodt
    4202. \r\n
    4203. Gary Martin
    4204. \r\n
    4205. Carlos Pereira Atencio
    4206. \r\n
    4207. Anil Srikantham
    4208. \r\n
    4209. Andrés Delfino
    4210. \r\n
    4211. Daniel Godfrey
    4212. \r\n
    4213. Tomasz Kalata
    4214. \r\n
    4215. Steve Barnes
    4216. \r\n
    4217. Matthew Hayes
    4218. \r\n
    4219. Matej Tacer

    4220. \r\n
    4221. Joost Molenaar
    4222. \r\n
    4223. Elias Bonauer
    4224. \r\n
    4225. Druzhinin Pavel
    4226. \r\n
    4227. BigDataChromium Tech
    4228. \r\n
    4229. Alex Ward
    4230. \r\n
    4231. Lukas Rupp
    4232. \r\n
    4233. Reinhard Dämon
    4234. \r\n
    4235. nathan MUSTAKI
    4236. \r\n
    4237. Rodolfo Oliveira
    4238. \r\n
    4239. John Griffith

    4240. \r\n
    4241. S Holden
    4242. \r\n
    4243. Serendipity Accelerator
    4244. \r\n
    4245. Doug Fortner
    4246. \r\n
    4247. Daniel Watson
    4248. \r\n
    4249. Allen Seelye
    4250. \r\n
    4251. Daniel Quinn
    4252. \r\n
    4253. Charlie Gunyon
    4254. \r\n
    4255. Alvaro Lopez Garcia
    4256. \r\n
    4257. James Medd
    4258. \r\n
    4259. Claire Dodd

    4260. \r\n
    4261. Carlos Joel Delgado Pizarro
    4262. \r\n
    4263. Samuel Focht
    4264. \r\n
    4265. Ollie Mignot
    4266. \r\n
    4267. Hynek Schlawack
    4268. \r\n
    4269. Ben Kinsella
    4270. \r\n
    4271. Aviad Lori
    4272. \r\n
    4273. DataRobot, Inc.
    4274. \r\n
    4275. Colin Kern
    4276. \r\n
    4277. Paul Hoffman
    4278. \r\n
    4279. Alex Clemmer

    4280. \r\n
    4281. Magnus Brattlöf
    4282. \r\n
    4283. LB
    4284. \r\n
    4285. Vincenzo Demasi
    4286. \r\n
    4287. glenn waterman
    4288. \r\n
    4289. thom neale
    4290. \r\n
    4291. Robin Sjostrom
    4292. \r\n
    4293. Palmeroo Fund
    4294. \r\n
    4295. Steve Bandel
    4296. \r\n
    4297. Erik Doffagne
    4298. \r\n
    4299. Zehua Wei

    4300. \r\n
    4301. George Reilly
    4302. \r\n
    4303. Matthieu Amiguet
    4304. \r\n
    4305. æ¨ å®ˆä»
    4306. \r\n
    4307. william Debenham
    4308. \r\n
    4309. Evan Beese
    4310. \r\n
    4311. Patricia Tressel
    4312. \r\n
    4313. Nick Denny
    4314. \r\n
    4315. Luke Petschauer
    4316. \r\n
    4317. Jasmine Sandhu
    4318. \r\n
    4319. Thomas Pohl

    4320. \r\n
    4321. Daniel Godot
    4322. \r\n
    4323. Renee MacDonald
    4324. \r\n
    4325. NICOLAS LOPEZ CISNEROS
    4326. \r\n
    4327. Glen English
    4328. \r\n
    4329. Jaganadh Gopinadhan
    4330. \r\n
    4331. ActiveState
    4332. \r\n
    4333. Christopher Berg
    4334. \r\n
    4335. Jim Nisbet
    4336. \r\n
    4337. Dylan Herrada
    4338. \r\n
    4339. Marcus Nelson

    4340. \r\n
    4341. Elsa Birch Morgan
    4342. \r\n
    4343. Ettienne Montagner
    4344. \r\n
    4345. Steven Kneiser
    4346. \r\n
    4347. Henry Ferguson
    4348. \r\n
    4349. Martijn Jacobs
    4350. \r\n
    4351. Xunzhen Quan
    4352. \r\n
    4353. Patrik Reiske
    4354. \r\n
    4355. Niklas Sombert
    4356. \r\n
    4357. Juliana Arrighi
    4358. \r\n
    4359. Zhang Zhijian

    4360. \r\n
    4361. Matthias Kühl
    4362. \r\n
    4363. Gijsbert Anthony van der Linden
    4364. \r\n
    4365. å¤ éªŒè¯
    4366. \r\n
    4367. Salomon G Davila Jr
    4368. \r\n
    4369. Addgene, Inc.
    4370. \r\n
    4371. Nikolay Golub
    4372. \r\n
    4373. Hervé Mignot
    4374. \r\n
    4375. Jonas Salcedo
    4376. \r\n
    4377. Andrew Radin
    4378. \r\n
    4379. Jay Shery

    4380. \r\n
    4381. confirm IT solutions GmbH
    4382. \r\n
    4383. Joseph winland
    4384. \r\n
    4385. Mark Wincek
    4386. \r\n
    4387. Morgan Visnesky
    4388. \r\n
    4389. Chris Perkins
    4390. \r\n
    4391. Anomaly Software Pty Ltd
    4392. \r\n
    4393. RAMESH DORAISWAMY
    4394. \r\n
    4395. Eric Appelt
    4396. \r\n
    4397. zak kohler
    4398. \r\n
    4399. Fernanda Diomede

    4400. \r\n
    4401. Ryan Mack
    4402. \r\n
    4403. Hansel Dunlop
    4404. \r\n
    4405. Romeo Lorenzo
    4406. \r\n
    4407. Jesse Hughson
    4408. \r\n
    4409. Anurag Palreddy
    4410. \r\n
    4411. Greg Reda
    4412. \r\n
    4413. Bruno Inaja de Almeida Caimar
    4414. \r\n
    4415. Allan Downey
    4416. \r\n
    4417. Josephine amaldhas
    4418. \r\n
    4419. Taylor Martin

    4420. \r\n
    4421. Chris Schmautz
    4422. \r\n
    4423. Luis Miranda
    4424. \r\n
    4425. Benno Rice
    4426. \r\n
    4427. Calamia Enzo
    4428. \r\n
    4429. Fred Thiele
    4430. \r\n
    4431. 刘 明军
    4432. \r\n
    4433. Thomas Groshong
    4434. \r\n
    4435. David Foster
    4436. \r\n
    4437. Johnny Britt
    4438. \r\n
    4439. Jesse Emery

    4440. \r\n
    4441. Juan Manuel Cordova
    4442. \r\n
    4443. ROBERT KEPNER
    4444. \r\n
    4445. ÐлекÑандр Кузьменко
    4446. \r\n
    4447. Microsoft Matching Gifts
    4448. \r\n
    4449. Elizabeth Schweinsberg
    4450. \r\n
    4451. Peter Jakobsen
    4452. \r\n
    4453. Julien Salinas
    4454. \r\n
    4455. Кулаков Игорь
    4456. \r\n
    4457. Dmitry Vikhorev
    4458. \r\n
    4459. David Nicholson

    4460. \r\n
    4461. Tim Savage
    4462. \r\n
    4463. Tim Phillips
    4464. \r\n
    4465. Brandon Bouier
    4466. \r\n
    4467. Annemieke Janssen
    4468. \r\n
    4469. Evgeny Ivanov
    4470. \r\n
    4471. Calvin Hendryx-Parker
    4472. \r\n
    4473. Jaroslava Schovancova
    4474. \r\n
    4475. Veaceslav Doina
    4476. \r\n
    4477. Michal Krassowski
    4478. \r\n
    4479. Emilio Mari Coppola

    4480. \r\n
    4481. Robert Rickman
    4482. \r\n
    4483. Rebekah Stafford
    4484. \r\n
    4485. Jesus Martinez
    4486. \r\n
    4487. Michal Cihar
    4488. \r\n
    4489. KITE AG
    4490. \r\n
    4491. 潘 佳鑫
    4492. \r\n
    4493. DAN KATZUV
    4494. \r\n
    4495. YOGESH SIDDHAYYA
    4496. \r\n
    4497. Alexander Zhukov
    4498. \r\n
    4499. Prashanth Sirsagi

    4500. \r\n
    4501. Joseph Murray
    4502. \r\n
    4503. Oliver Obrien
    4504. \r\n
    4505. Rodolfo De Nadai
    4506. \r\n
    4507. Payoj Jain
    4508. \r\n
    4509. Daniel Gonzalez
    4510. \r\n
    4511. Joyell Bellinger
    4512. \r\n
    4513. Shivu H
    4514. \r\n
    4515. Kiran Kaki
    4516. \r\n
    4517. Georges Duverger
    4518. \r\n
    4519. Robert Haydt

    4520. \r\n
    4521. Earl Clark
    4522. \r\n
    4523. Bernard Chester
    4524. \r\n
    4525. Srichand Avala
    4526. \r\n
    4527. James Conti
    4528. \r\n
    4529. YU CHENG
    4530. \r\n
    4531. Spencer Tollefson
    4532. \r\n
    4533. DOUGLAS MAHUGH
    4534. \r\n
    4535. Sai Gunda
    4536. \r\n
    4537. CHONGLI DI
    4538. \r\n
    4539. Alexandra Pawlak

    4540. \r\n
    4541. David James Beitey
    4542. \r\n
    4543. K GALANIS
    4544. \r\n
    4545. Thane Williams
    4546. \r\n
    4547. Aaron R Seelye
    4548. \r\n
    4549. Vamsee Kasavajhala
    4550. \r\n
    4551. Samata Dutta
    4552. \r\n
    4553. Alexander Rice
    4554. \r\n
    4555. Nitesh Patel
    4556. \r\n
    4557. Peter Holm
    4558. \r\n
    4559. Khoa Tran

    4560. \r\n
    4561. Bibin Varghese
    4562. \r\n
    4563. Alexander Miranda
    4564. \r\n
    4565. Jacob Crotts
    4566. \r\n
    4567. ZaunerTech Ltd
    4568. \r\n
    4569. Timothy Beauchamp
    4570. \r\n
    4571. Richard Edwards
    4572. \r\n
    4573. Maui Craft Creations
    4574. \r\n
    4575. Matthew McCoy
    4576. \r\n
    4577. Khalid Siddiqui
    4578. \r\n
    4579. Kevin Zhou

    4580. \r\n
    4581. Karsten Aichholz
    4582. \r\n
    4583. Joel Herrick
    4584. \r\n
    4585. Jay Adams
    4586. \r\n
    4587. James Christopher Bare
    4588. \r\n
    4589. Evan Frisch
    4590. \r\n
    4591. Dmitri Bouianov
    4592. \r\n
    4593. Elizabeth Wiethoff
    4594. \r\n
    4595. Thomas Colvin
    4596. \r\n
    4597. Zoran Milic
    4598. \r\n
    4599. Camille Welcher

    4600. \r\n
    4601. Jacqueline Wilson
    4602. \r\n
    4603. Maher Lahmar
    4604. \r\n
    4605. Tom Brander
    4606. \r\n
    4607. Lily Li
    4608. \r\n
    4609. Lauren Williams
    4610. \r\n
    4611. Mike Miller
    4612. \r\n
    4613. Parthibaraj Karunanidhi
    4614. \r\n
    4615. Michael Gat
    4616. \r\n
    4617. oliver OBrien
    4618. \r\n
    4619. Loren Cardella

    4620. \r\n
    4621. Shelly Elizabeth Mitchell
    4622. \r\n
    4623. Just Passing By
    4624. \r\n
    4625. José Andrés Garita Flores
    4626. \r\n
    4627. James Ball
    4628. \r\n
    4629. Robert Wall
    4630. \r\n
    4631. XIAOJUN WANG
    4632. \r\n
    4633. Alexander C. S. Hendorf
    4634. \r\n
    4635. Bernhard Bodry
    4636. \r\n
    4637. Yanshuo Sun
    4638. \r\n
    4639. Clyde Zerba

    4640. \r\n
    4641. Alejandro Cavagna
    4642. \r\n
    4643. Ariel Ladegård
    4644. \r\n
    4645. Haitian Luo
    4646. \r\n
    4647. David Duxstad
    4648. \r\n
    4649. Jared Lynn
    4650. \r\n
    4651. Marcus Collins
    4652. \r\n
    4653. Lisa Marie Rosson
    4654. \r\n
    4655. Timothy Edwards
    4656. \r\n
    4657. Anahi Costa
    4658. \r\n
    4659. Carl Meyer

    4660. \r\n
    4661. Sidnet
    4662. \r\n
    4663. Qusai Karam
    4664. \r\n
    4665. Nick Fernandez
    4666. \r\n
    4667. ÐагорÑкий ÐлекÑей
    4668. \r\n
    4669. Brian K Boatright
    4670. \r\n
    4671. Linux Australia, Inc.
    4672. \r\n
    4673. Reinier de Blois
    4674. \r\n
    4675. Tigran Babaian
    4676. \r\n
    4677. Chad Dillingham
    4678. \r\n
    4679. Abdelkarim Ahroba

    4680. \r\n
    4681. Shannon Bedore
    4682. \r\n
    4683. Amanullah Ansari
    4684. \r\n
    4685. Kai I Chang
    4686. \r\n
    4687. Raz Steinmetz
    4688. \r\n
    4689. Keep Holdings, Inc.
    4690. \r\n
    4691. GreatBizTools, LLC
    4692. \r\n
    4693. Reginald Dugard
    4694. \r\n
    4695. Heath Robertson
    4696. \r\n
    4697. Bruno Oliveira
    4698. \r\n
    4699. Susan Hutner

    4700. \r\n
    4701. Kathleen Perez-Lopez
    4702. \r\n
    4703. Christine Rehm-Zola
    4704. \r\n
    4705. Renato Oliveira
    4706. \r\n
    4707. Justin McCammon
    4708. \r\n
    4709. paul sorenson
    4710. \r\n
    4711. Joel Grossman
    4712. \r\n
    4713. Elizabeth johnson
    4714. \r\n
    4715. Ben Roy
    4716. \r\n
    4717. Richard van Liessum
    4718. \r\n
    4719. Damian Southard

    4720. \r\n
    4721. Stacey Smith
    4722. \r\n
    4723. James Hutton
    4724. \r\n
    4725. Michael Larsson
    4726. \r\n
    4727. Christian Long
    4728. \r\n
    4729. Martin Leubner
    4730. \r\n
    4731. João Matos
    4732. \r\n
    4733. Jose Navarrete
    4734. \r\n
    4735. Roland Knapp
    4736. \r\n
    4737. Kelly McBride
    4738. \r\n
    4739. Daniel Porteous

    4740. \r\n
    4741. Stefan Drees
    4742. \r\n
    4743. Francesco Feregotto
    4744. \r\n
    4745. daniel obrien
    4746. \r\n
    4747. Chad Rifenberick
    4748. \r\n
    4749. Anything-Aviation
    4750. \r\n
    4751. Roland Henrie
    4752. \r\n
    4753. Adrian Chifor
    4754. \r\n
    4755. Andres Danter
    4756. \r\n
    4757. Anoop Chawla
    4758. \r\n
    4759. Zhong Zhuang

    4760. \r\n
    4761. Wang Tao
    4762. \r\n
    4763. Mauro Mitsuyuki Yamaguchi
    4764. \r\n
    4765. New Relic Inc.
    4766. \r\n
    4767. Em Barry
    4768. \r\n
    4769. Carol Wilson, LeadPages
    4770. \r\n
    4771. Young Lee
    4772. \r\n
    4773. Ian Maurer
    4774. \r\n
    4775. YOU SONGWEN
    4776. \r\n
    4777. Heikki Lehtinen
    4778. \r\n
    4779. Oriol Jimenez Cilleruelo

    4780. \r\n
    4781. James Gill
    4782. \r\n
    4783. James Browning
    4784. \r\n
    4785. Arthur Goldhammer
    4786. \r\n
    4787. Phillip Oldham
    4788. \r\n
    4789. Дмитрий БазильÑкий
    4790. \r\n
    4791. Jeff Nielsen
    4792. \r\n
    4793. Rachel Knowler
    4794. \r\n
    4795. Leah Hoogstra
    4796. \r\n
    4797. Laszlo Kiss-Kollar
    4798. \r\n
    4799. Gabrielle Simard-Moore

    4800. \r\n
    4801. Carl B Trachte
    4802. \r\n
    4803. Anthony DiCola
    4804. \r\n
    4805. salvador nunez
    4806. \r\n
    4807. juan Rodríguez uribe
    4808. \r\n
    4809. Dipika Bhattacharya
    4810. \r\n
    4811. Alexander Bock
    4812. \r\n
    4813. John Morrissey
    4814. \r\n
    4815. Young Sand
    4816. \r\n
    4817. Jose Alexsandro Sobral de Sobral de Freitas
    4818. \r\n
    4819. james mun

    4820. \r\n
    4821. James Warner
    4822. \r\n
    4823. Johnathon Laine Fox
    4824. \r\n
    4825. Bobby Compton
    4826. \r\n
    4827. Dave Jones
    4828. \r\n
    4829. Eric T Simandle
    4830. \r\n
    4831. Filip Tomic
    4832. \r\n
    4833. Hameed Gifford
    4834. \r\n
    4835. Sebastián Ramírez Magrí
    4836. \r\n
    4837. Naman Bajaj
    4838. \r\n
    4839. Иванов СтаниÑлав

    4840. \r\n
    4841. Roberta Eastman
    4842. \r\n
    4843. Rômulo Collopy Souza Carrijo
    4844. \r\n
    4845. Scott Irwin
    4846. \r\n
    4847. Sears Merritt
    4848. \r\n
    4849. Wang Hitachi
    4850. \r\n
    4851. Christian Frömmel
    4852. \r\n
    4853. Alejandro Sánchez Saldaña
    4854. \r\n
    4855. Boris Pavlovic
    4856. \r\n
    4857. Caktus Consulting Group
    4858. \r\n
    4859. Marcelo Lima Souza

    4860. \r\n
    4861. Pavlos Georgiou
    4862. \r\n
    4863. Gene Callahan
    4864. \r\n
    4865. David Williams
    4866. \r\n
    4867. Teerapat Jenrungrot
    4868. \r\n
    4869. Oliver E Cole
    4870. \r\n
    4871. Kalle Kietäväinen
    4872. \r\n
    4873. Andrew Angel
    4874. \r\n
    4875. Matteo Bertini
    4876. \r\n
    4877. Erwin van Meggelen
    4878. \r\n
    4879. Sheree Pennah

    4880. \r\n
    4881. Virginia White
    4882. \r\n
    4883. Lakshami Mahajan
    4884. \r\n
    4885. Ashish Patil
    4886. \r\n
    4887. Calvin Black
    4888. \r\n
    4889. Paul Garner
    4890. \r\n
    4891. Christoph Haas
    4892. \r\n
    4893. Aaron Straus
    4894. \r\n
    4895. 8 Dancing Elephants
    4896. \r\n
    4897. Jerry Segers Jr
    4898. \r\n
    4899. Wafeeq Zakariyya

    4900. \r\n
    4901. Bridgette Moore
    4902. \r\n
    4903. Deanne DiPietro
    4904. \r\n
    4905. Rakesh Guha
    4906. \r\n
    4907. Kay-Uwe Clemens
    4908. \r\n
    4909. Jenn Morton
    4910. \r\n
    4911. karolyi
    4912. \r\n
    4913. Yotam Manor
    4914. \r\n
    4915. Karthik Reddy Mekala
    4916. \r\n
    4917. Dustin Vaselaar
    4918. \r\n
    4919. Matthias Leeder

    4920. \r\n
    4921. Ard Mulders
    4922. \r\n
    4923. Sujit Ray
    4924. \r\n
    4925. Soeren Howe Gersager
    4926. \r\n
    4927. Sidharth Mallick
    4928. \r\n
    4929. Peter W Bachant
    4930. \r\n
    4931. Aida Shoydokova
    4932. \r\n
    4933. Jeff Kiefer
    4934. \r\n
    4935. Goncalo Alves
    4936. \r\n
    4937. Ravi Kotecha
    4938. \r\n
    4939. Manuel Frei

    4940. \r\n
    4941. Justin Hui
    4942. \r\n
    4943. ChannelRobot
    4944. \r\n
    4945. Steve Buckley
    4946. \r\n
    4947. PRASAD GODAVARTHI
    4948. \r\n
    4949. Semih Hazar
    4950. \r\n
    4951. Alex Gerdom
    4952. \r\n
    4953. Darjus Loktevic
    4954. \r\n
    4955. Govardhan Rao Sunkishela
    4956. \r\n
    4957. donald nathan
    4958. \r\n
    4959. Marcus Sharp

    4960. \r\n
    4961. Chris Petrilli
    4962. \r\n
    4963. Veit Heller
    4964. \r\n
    4965. Mickael Hubert
    4966. \r\n
    4967. JBD Solutions
    4968. \r\n
    4969. Marc Schmed
    4970. \r\n
    4971. michael dunn
    4972. \r\n
    4973. Polymath
    4974. \r\n
    4975. Blaise Laflamme
    4976. \r\n
    4977. Franziskus Nakajima
    4978. \r\n
    4979. Paolo Gotti

    4980. \r\n
    4981. mario alemi
    4982. \r\n
    4983. Scott Spangenberg
    4984. \r\n
    4985. Bill Pollock
    4986. \r\n
    4987. Chris Johnston
    4988. \r\n
    4989. Jeremy Carbaugh
    4990. \r\n
    4991. Kay Thust
    4992. \r\n
    4993. Eric Casteleijn
    4994. \r\n
    4995. Dauren Zholdasbayev
    4996. \r\n
    4997. Vladyslav Kartavets
    4998. \r\n
    4999. Jacob Snow

    5000. \r\n
    5001. Kevin Reed
    5002. \r\n
    5003. Diego Argueta
    5004. \r\n
    5005. Aaron J Olson
    5006. \r\n
    5007. William May
    5008. \r\n
    5009. Matthew Clapp
    5010. \r\n
    5011. Linus Jäger
    5012. \r\n
    5013. James Houghton
    5014. \r\n
    5015. Jannes Engelbrecht
    5016. \r\n
    5017. Jathan McCollum
    5018. \r\n
    5019. Anna Noetzel

    5020. \r\n
    5021. PyTennessee 2015
    5022. \r\n
    5023. John Vrbanac
    5024. \r\n
    5025. Austin Bingham
    5026. \r\n
    5027. Dmitrij Perminov
    5028. \r\n
    5029. Eric Vegors
    5030. \r\n
    5031. ENDO SATOSHI
    5032. \r\n
    5033. Slater Victoroff
    5034. \r\n
    5035. S Rahul Bose
    5036. \r\n
    5037. Radoslaw Skiba
    5038. \r\n
    5039. James Simmons

    5040. \r\n
    5041. BOB HOGG
    5042. \r\n
    5043. Donald Watkins
    5044. \r\n
    5045. Roy Hyunjin Han
    5046. \r\n
    5047. Antonio Cavallo
    5048. \r\n
    5049. Erik Storrs
    5050. \r\n
    5051. Devon Warren
    5052. \r\n
    5053. Wu Jing
    5054. \r\n
    5055. steven lindblad
    5056. \r\n
    5057. Godwin A. Effiong
    5058. \r\n
    5059. Scott Chamberlain

    5060. \r\n
    5061. Nicholas Chammas
    5062. \r\n
    5063. Michael Deeringer
    5064. \r\n
    5065. Ayesha Mendoza
    5066. \r\n
    5067. Chris Clifton
    5068. \r\n
    5069. ian frith
    5070. \r\n
    5071. Anthony Lupinetti
    5072. \r\n
    5073. Harry Park
    5074. \r\n
    5075. Cox Media Group
    5076. \r\n
    5077. Lawrence Michel
    5078. \r\n
    5079. david scott

    5080. \r\n
    5081. William Forster
    5082. \r\n
    5083. Rodrigo Senra
    5084. \r\n
    5085. Shannon Quinn
    5086. \r\n
    5087. Tyler Weber
    5088. \r\n
    5089. Robert Brockman
    5090. \r\n
    5091. James Long
    5092. \r\n
    5093. Anthony Liang
    5094. \r\n
    5095. Gaëtan HARTER
    5096. \r\n
    5097. Eldon Berg
    5098. \r\n
    5099. Mark Pilgrim

    5100. \r\n
    5101. Matthew McKinzie
    5102. \r\n
    5103. Mario Sergio Antunes
    5104. \r\n
    5105. ЛеÑÑŒ КонÑтантин
    5106. \r\n
    5107. Nicole Galaz
    5108. \r\n
    5109. Meghan Halton
    5110. \r\n
    5111. Dong Xiangqian
    5112. \r\n
    5113. chan kin
    5114. \r\n
    5115. zhan tao
    5116. \r\n
    5117. Craig Capodilupo
    5118. \r\n
    5119. Neal Pignatora

    5120. \r\n
    5121. confirm IT solutions
    5122. \r\n
    5123. William Larsen
    5124. \r\n
    5125. Ulrich Petri
    5126. \r\n
    5127. Jean Bredeche
    5128. \r\n
    5129. James Mazur
    5130. \r\n
    5131. Greg Smith
    5132. \r\n
    5133. Thomas gretten
    5134. \r\n
    5135. Lars Freier
    5136. \r\n
    5137. Kay Schluehr
    5138. \r\n
    5139. Vicky Tuite

    5140. \r\n
    5141. Robert Flansburgh
    5142. \r\n
    5143. 柳 æ¨
    5144. \r\n
    5145. Willem de Groot
    5146. \r\n
    5147. Robert Marchese
    5148. \r\n
    5149. Karl Byleen-Higley
    5150. \r\n
    5151. Tony Morrow
    5152. \r\n
    5153. Andrés Perez Albela Hernandez
    5154. \r\n
    5155. Chris Glick
    5156. \r\n
    5157. ROBERT B MCCLAIN JR
    5158. \r\n
    5159. Daniel Vaughan

    5160. \r\n
    5161. Maura Haley
    5162. \r\n
    5163. Rafael Römhild
    5164. \r\n
    5165. Paige Bailey
    5166. \r\n
    5167. DÄvis MoÅ¡enkovs
    5168. \r\n
    5169. Kristopher Nybakken
    5170. \r\n
    5171. NARENDRA DHARMAVARAPU
    5172. \r\n
    5173. keith schmaljohn
    5174. \r\n
    5175. mx21.com
    5176. \r\n
    5177. Michael Beasley
    5178. \r\n
    5179. Samuel Bishop

    5180. \r\n
    5181. Steve Cataline
    5182. \r\n
    5183. Jeff Knupp
    5184. \r\n
    5185. Andrew Hunt
    5186. \r\n
    5187. en zyme
    5188. \r\n
    5189. Liu Jie
    5190. \r\n
    5191. Marcio Rotta
    5192. \r\n
    5193. David Forgac
    5194. \r\n
    5195. Christian Plümer
    5196. \r\n
    5197. Geng ShunRong
    5198. \r\n
    5199. Bart Jeukendrup

    5200. \r\n
    5201. William Reiher
    5202. \r\n
    5203. Michael Dostal
    5204. \r\n
    5205. SPEL Technologies, Inc
    5206. \r\n
    5207. Tjada Nelson
    5208. \r\n
    5209. Matthew Switanek
    5210. \r\n
    5211. maufonfa
    5212. \r\n
    5213. Nicole Patock
    5214. \r\n
    5215. Christian Strozyk
    5216. \r\n
    5217. Mace Ojala
    5218. \r\n
    5219. cao wangjie

    5220. \r\n
    5221. MARY HILLESTAD
    5222. \r\n
    5223. Brandon Gallardo
    5224. \r\n
    5225. Ivan Montejo Garcia
    5226. \r\n
    5227. Robert Gellman
    5228. \r\n
    5229. Paweł Baranowski
    5230. \r\n
    5231. graham richards
    5232. \r\n
    5233. Joana Robles
    5234. \r\n
    5235. ARULOLI M
    5236. \r\n
    5237. Ion Bica
    5238. \r\n
    5239. Silicon Valley Community Foundation

    5240. \r\n
    5241. felipe melis
    5242. \r\n
    5243. elizabeth cleveland
    5244. \r\n
    5245. Sergio Campo
    5246. \r\n
    5247. Orlando Garcia
    5248. \r\n
    5249. Jessica Unrein
    5250. \r\n
    5251. Irma Kramer
    5252. \r\n
    5253. Hanna Landrus
    5254. \r\n
    5255. BADIA DAAMASH
    5256. \r\n
    5257. derek payton
    5258. \r\n
    5259. Viktoriya Savkina

    5260. \r\n
    5261. Tyler Evans
    5262. \r\n
    5263. Thomas Storey
    5264. \r\n
    5265. Tashay Green
    5266. \r\n
    5267. Stephanie Keske
    5268. \r\n
    5269. Rachel Kelly
    5270. \r\n
    5271. Patrick Boland
    5272. \r\n
    5273. DeadTiger
    5274. \r\n
    5275. Bay Grabowski
    5276. \r\n
    5277. Ask Solem Hoel
    5278. \r\n
    5279. Alyssa Swift

    5280. \r\n
    5281. Mike Pacer
    5282. \r\n
    5283. Jeffery Read
    5284. \r\n
    5285. Sheree Maria Pena
    5286. \r\n
    5287. Terral Jordan
    5288. \r\n
    5289. michelle majorie
    5290. \r\n
    5291. Joseph Chilcote
    5292. \r\n
    5293. Morgyn Stryker
    5294. \r\n
    5295. Joe Friedrich
    5296. \r\n
    5297. æ»æ¾¤ æˆäºº
    5298. \r\n
    5299. Craig Kelly

    5300. \r\n
    5301. billy williams
    5302. \r\n
    5303. Sarala Akella
    5304. \r\n
    5305. WebFilings
    5306. \r\n
    5307. Kyle Marten
    5308. \r\n
    5309. roberta gaines
    5310. \r\n
    5311. SI QIN MENG
    5312. \r\n
    5313. Don Webster
    5314. \r\n
    5315. Tharavy Douc
    5316. \r\n
    5317. Anthony Kuback
    5318. \r\n
    5319. Nolan Dyck

    5320. \r\n
    5321. Prerana Kanakia
    5322. \r\n
    5323. Patrick Melanson
    5324. \r\n
    5325. Thomas Niederberger
    5326. \r\n
    5327. Narcis Simu
    5328. \r\n
    5329. akshay lad
    5330. \r\n
    5331. gabriel meringolo
    5332. \r\n
    5333. Roberto Hernandez
    5334. \r\n
    5335. Carl Petter Levy
    5336. \r\n
    5337. Julio Luna Reynoso
    5338. \r\n
    5339. Michael Anderson

    5340. \r\n
    5341. Arun Rangarajan
    5342. \r\n
    5343. Osvaldo Dias dos Santos
    5344. \r\n
    5345. Bruce Benson
    5346. \r\n
    5347. Steven Mesiner
    5348. \r\n
    5349. XU ZIYU
    5350. \r\n
    5351. Hangyul Lee
    5352. \r\n
    5353. Dirk Kulawiak
    5354. \r\n
    5355. Christine Maki
    5356. \r\n
    5357. Thomas Mifflin
    5358. \r\n
    5359. Amy Nguyen

    5360. \r\n
    5361. 余 森彬
    5362. \r\n
    5363. Mark Webster
    5364. \r\n
    5365. VAN HAVRE YORIK
    5366. \r\n
    5367. Aretha Alemu
    5368. \r\n
    5369. joaquin berenguer
    5370. \r\n
    5371. Lydie Jacqueline
    5372. \r\n
    5373. Wen J. Chen
    5374. \r\n
    5375. Steven Susemihl
    5376. \r\n
    5377. Jason Duncan
    5378. \r\n
    5379. Brendon Keelan

    5380. \r\n
    5381. Wei Lee Woon
    5382. \r\n
    5383. Vishwanath Gupta
    5384. \r\n
    5385. Matthew McIntyre
    5386. \r\n
    5387. 陈 泳桦
    5388. \r\n
    5389. Richard Mfitumukiza
    5390. \r\n
    5391. Philip Stewart
    5392. \r\n
    5393. Gustavo Kunzel
    5394. \r\n
    5395. Alexandre Garel
    5396. \r\n
    5397. ProofDriven
    5398. \r\n
    5399. Pratham Singh

    5400. \r\n
    5401. Esteban Feldman
    5402. \r\n
    5403. Senokuchi Hiroshi
    5404. \r\n
    5405. Roman Gres
    5406. \r\n
    5407. Jonathan Dayton
    5408. \r\n
    5409. William Warren
    5410. \r\n
    5411. Rafael Fonseca
    5412. \r\n
    5413. Xie Shi
    5414. \r\n
    5415. gaylin larson
    5416. \r\n
    5417. David Lord
    5418. \r\n
    5419. Anton Neururer

    5420. \r\n
    5421. ЯроÑлав Ð
    5422. \r\n
    5423. Sune Wøller
    5424. \r\n
    5425. Le Hoai Nham
    5426. \r\n
    5427. ENZO CALAMIA
    5428. \r\n
    5429. Benjamin Lerner
    5430. \r\n
    5431. Ben Knudson
    5432. \r\n
    5433. Thijs Metsch
    5434. \r\n
    5435. Frank Wiles
    5436. \r\n
    5437. Simon PAYAN
    5438. \r\n
    5439. Peter Pelberg

    5440. \r\n
    5441. Greg Goebel
    5442. \r\n
    5443. Fidelity Charitable Gifts
    5444. \r\n
    5445. Hermann Schuster
    5446. \r\n
    5447. Talata
    5448. \r\n
    5449. Dana Mosley
    5450. \r\n
    5451. Laurent-Philippe Gros
    5452. \r\n
    5453. Tiago Boldt Sousa
    5454. \r\n
    5455. Daniel Wernicke
    5456. \r\n
    5457. nicole embrey
    5458. \r\n
    5459. Iulius-Ioan Curt

    5460. \r\n
    5461. Werner Heidelsperger
    5462. \r\n
    5463. Jeffrey Jacobs
    5464. \r\n
    5465. Михайленко Дмитрий
    5466. \r\n
    5467. Trevor Bell
    5468. \r\n
    5469. Tiago Possato
    5470. \r\n
    5471. Joan Marc Tuduri Cladera
    5472. \r\n
    5473. Ashley Wilson
    5474. \r\n
    5475. Ziqiang Chen
    5476. \r\n
    5477. Liam Schumm
    5478. \r\n
    5479. Martin Zuther

    5480. \r\n
    5481. annamma george
    5482. \r\n
    5483. Ben Love
    5484. \r\n
    5485. YIOTA ADAMOU
    5486. \r\n
    5487. Florian Sommer
    5488. \r\n
    5489. Rick King
    5490. \r\n
    5491. EuroPython 2013 Sponsored Massage
    5492. \r\n
    5493. MySelf
    5494. \r\n
    5495. Indradeep Biswas
    5496. \r\n
    5497. Xiaotao Zhang
    5498. \r\n
    5499. James Warnock

    5500. \r\n
    5501. Kenneth Smith
    5502. \r\n
    5503. 邹 å¥å†›
    5504. \r\n
    5505. Mike Guerette
    5506. \r\n
    5507. diego de freitas
    5508. \r\n
    5509. Ð”ÐµÐ½Ð¸Ñ Ð—Ð²ÐµÐ·Ð´Ð¾Ð²
    5510. \r\n
    5511. Hyun Goo Kang
    5512. \r\n
    5513. Clara Bennett
    5514. \r\n
    5515. James Ferrara
    5516. \r\n
    5517. Olivier PELLET-MANY
    5518. \r\n
    5519. Peter Martin

    5520. \r\n
    5521. devova
    5522. \r\n
    5523. Michael Gang
    5524. \r\n
    5525. Bharath Gundala
    5526. \r\n
    5527. Wally Fort
    5528. \r\n
    5529. Du Yining
    5530. \r\n
    5531. 郑 翔
    5532. \r\n
    5533. Philippe Gouin
    5534. \r\n
    5535. Matthew Bellis
    5536. \r\n
    5537. Kyle Kelley
    5538. \r\n
    5539. Banafsheh Khakipoor

    5540. \r\n
    5541. Frederick Alger
    5542. \r\n
    5543. Eric Beurre
    5544. \r\n
    5545. Bruno Deschenes
    5546. \r\n
    5547. John Pena
    5548. \r\n
    5549. Jan Wilhelm Münch
    5550. \r\n
    5551. bronson lowery
    5552. \r\n
    5553. Independent Software
    5554. \r\n
    5555. Wonseok Jang
    5556. \r\n
    5557. Some Fantastic Ltd
    5558. \r\n
    5559. Mayur Mahajan

    5560. \r\n
    5561. Ned Batchelder
    5562. \r\n
    5563. HIMENO KOUSEI
    5564. \r\n
    5565. Bishwa Giri
    5566. \r\n
    5567. Michael Biber
    5568. \r\n
    5569. BRET A. BENNETT
    5570. \r\n
    5571. Donna Bennet
    5572. \r\n
    5573. MARYE. OKERSON
    5574. \r\n
    5575. Theodorus Sluijs
    5576. \r\n
    5577. Jessica Lachewitz
    5578. \r\n
    5579. Rackspace

    5580. \r\n
    5581. 温 ç¦é“¨
    5582. \r\n
    5583. Jacob Westfall
    5584. \r\n
    5585. Michael Vacha
    5586. \r\n
    5587. Angelek Larkins
    5588. \r\n
    5589. carol McCann
    5590. \r\n
    5591. Moritz Schubert
    5592. \r\n
    5593. Renee Nichols
    5594. \r\n
    5595. Frederic Guilleux
    5596. \r\n
    5597. Tatyana Gladkova
    5598. \r\n
    5599. Li Yanming

    5600. \r\n
    5601. Derian Andersen
    5602. \r\n
    5603. Paul Keating
    5604. \r\n
    5605. Kenneth Stox
    5606. \r\n
    5607. Meng Da xing
    5608. \r\n
    5609. Greg Frazier
    5610. \r\n
    5611. Anton Ovchinnikov
    5612. \r\n
    5613. Michael Izenson
    5614. \r\n
    5615. Diana Jacobs
    5616. \r\n
    5617. Adrianna Irvin
    5618. \r\n
    5619. Pedro Lopes

    5620. \r\n
    5621. Karalyn Baca
    5622. \r\n
    5623. Sun Fulong
    5624. \r\n
    5625. Sprymix Inc.
    5626. \r\n
    5627. Simon Biewald
    5628. \r\n
    5629. Ryan Rubin
    5630. \r\n
    5631. Painted Pixel LLC
    5632. \r\n
    5633. Kyle Niemeyer
    5634. \r\n
    5635. Christopher Wolfe
    5636. \r\n
    5637. Kerrick Staley
    5638. \r\n
    5639. andrei mitiaev

    5640. \r\n
    5641. Luca Verginer
    5642. \r\n
    5643. MapMyFitness, Inc
    5644. \r\n
    5645. Andrew Gwozdziewycz
    5646. \r\n
    5647. Matvey Teplov
    5648. \r\n
    5649. wenhe lin
    5650. \r\n
    5651. Jonathan Evans
    5652. \r\n
    5653. Карпов Игорь
    5654. \r\n
    5655. Rik Wanders
    5656. \r\n
    5657. Fred Drueck
    5658. \r\n
    5659. David Peters

    5660. \r\n
    5661. MANOHAR KUMAR
    5662. \r\n
    5663. Arnold Coto Marcia
    5664. \r\n
    5665. John Shegonee
    5666. \r\n
    5667. Robert Spessard
    5668. \r\n
    5669. Susannah Flynn
    5670. \r\n
    5671. Hugo Genesse
    5672. \r\n
    5673. Sasidhar Reddy
    5674. \r\n
    5675. Robbie Lambert Byrd
    5676. \r\n
    5677. Chad Shryock
    5678. \r\n
    5679. Jason Luce

    5680. \r\n
    5681. Порочкин Дмитрий
    5682. \r\n
    5683. Gabel Media LLC
    5684. \r\n
    5685. Michael Burroughs
    5686. \r\n
    5687. Shayne Rossum
    5688. \r\n
    5689. Christian David Koltermann
    5690. \r\n
    5691. Brad Williams
    5692. \r\n
    5693. Nate Lawson
    5694. \r\n
    5695. Zurich Premium
    5696. \r\n
    5697. Laurel Makusztak
    5698. \r\n
    5699. Jan Sheehan

    5700. \r\n
    5701. Arnold van der Wal
    5702. \r\n
    5703. Martin Gfeller
    5704. \r\n
    5705. Daniel Cloud
    5706. \r\n
    5707. Asiri Fernando
    5708. \r\n
    5709. Matt Keagle
    5710. \r\n
    5711. Yoann Aubineau
    5712. \r\n
    5713. peter stroud
    5714. \r\n
    5715. Mher Petrosyan
    5716. \r\n
    5717. 劉 盈妤
    5718. \r\n
    5719. Doug Storbeck

    5720. \r\n
    5721. Cliff and Jayne Dyer
    5722. \r\n
    5723. e goetze
    5724. \r\n
    5725. James Mertz
    5726. \r\n
    5727. Michael McLaughlin
    5728. \r\n
    5729. Kassandra R Keeton
    5730. \r\n
    5731. Fran Fitzpatrick
    5732. \r\n
    5733. Grigoriy Kostyuk
    5734. \r\n
    5735. Jon Udell
    5736. \r\n
    5737. Katherine Scott
    5738. \r\n
    5739. Julie Knapp

    5740. \r\n
    5741. DAVID ŽIHALA
    5742. \r\n
    5743. Alfred Castaldi
    5744. \r\n
    5745. Gualter Ramalho Portella
    5746. \r\n
    5747. Ted Gaubert
    5748. \r\n
    5749. JEF Industries
    5750. \r\n
    5751. Ramakrishna Pappula
    5752. \r\n
    5753. Andrea Monti
    5754. \r\n
    5755. Jay Reyes
    5756. \r\n
    5757. jinsong wu
    5758. \r\n
    5759. WorkMob

    5760. \r\n
    5761. Eli Smith
    5762. \r\n
    5763. caitlin choban
    5764. \r\n
    5765. Brendan Adkins
    5766. \r\n
    5767. Alberto Caso Palomino
    5768. \r\n
    5769. Rahiel Kasim
    5770. \r\n
    5771. Luiz Carlos Irber Jr
    5772. \r\n
    5773. Andrew Bednar
    5774. \r\n
    5775. Sune Jepsen
    5776. \r\n
    5777. Hideaki Takahashi
    5778. \r\n
    5779. Kulakov Igor

    5780. \r\n
    5781. Natalie Serebryakova
    5782. \r\n
    5783. Jesse Truscott
    5784. \r\n
    5785. Martin Micheltorena Urdaniz
    5786. \r\n
    5787. Razoo Foundation
    5788. \r\n
    5789. Steven Larson
    5790. \r\n
    5791. Matthew Cox
    5792. \r\n
    5793. Patrick Donahue
    5794. \r\n
    5795. Chris Heisel
    5796. \r\n
    5797. Tian He
    5798. \r\n
    5799. 张 明素

    5800. \r\n
    5801. 36monkeys Marcin Sztolcman
    5802. \r\n
    5803. Chris Davis
    5804. \r\n
    5805. João Teixeira
    5806. \r\n
    5807. Julien Pinget
    5808. \r\n
    5809. Paweł Adamek
    5810. \r\n
    5811. Andreas M�ller
    5812. \r\n
    5813. å¼  ç­–
    5814. \r\n
    5815. Kathleen MacInnis
    5816. \r\n
    5817. Jamiel Almeida
    5818. \r\n
    5819. Foote Family Fund

    5820. \r\n
    5821. Mary Orazem
    5822. \r\n
    5823. Digistump LLC
    5824. \r\n
    5825. Willette Barnett
    5826. \r\n
    5827. Tijs Teulings
    5828. \r\n
    5829. joseph bokongo
    5830. \r\n
    5831. Valtteri Mäkelä
    5832. \r\n
    5833. Chris Andrews
    5834. \r\n
    5835. Tonya Ramsey
    5836. \r\n
    5837. Patrick Laban
    5838. \r\n
    5839. Brittany Nelson

    5840. \r\n
    5841. The Capital Group Companies Charitable Fund
    5842. \r\n
    5843. RAFAEL TORRES RAMIREZ
    5844. \r\n
    5845. Juan José D'Ambrosio
    5846. \r\n
    5847. Robert Meyer
    5848. \r\n
    5849. Emily Quinn Finney
    5850. \r\n
    5851. Martin Banduch
    5852. \r\n
    5853. å´ å“ˆå“ˆ
    5854. \r\n
    5855. Jonathan Kamens
    5856. \r\n
    5857. Bruce Harrington
    5858. \r\n
    5859. Ganesh Murdeshwar

    5860. \r\n
    5861. CUSTOM MADE VENTURES, CORP
    5862. \r\n
    5863. Joseph Dasenbrock
    5864. \r\n
    5865. Alexander Kagioglu
    5866. \r\n
    5867. Mahesh Ramchandani
    5868. \r\n
    5869. Dewey Wallace
    5870. \r\n
    5871. Nancy Koroloff
    5872. \r\n
    5873. Donald Morrison
    5874. \r\n
    5875. Michael Kennedy
    5876. \r\n
    5877. Joseph Jerva
    5878. \r\n
    5879. Akshay Singh

    5880. \r\n
    5881. Samantha Ketts
    5882. \r\n
    5883. Trihandoyo Soesilo
    5884. \r\n
    5885. New Relic
    5886. \r\n
    5887. Matt Wensing
    5888. \r\n
    5889. James Bartek
    5890. \r\n
    5891. Vipul Borikar
    5892. \r\n
    5893. Van Pelt, Yi & James LLP
    5894. \r\n
    5895. Peter Fein
    5896. \r\n
    5897. Charles Stanhope
    5898. \r\n
    5899. Understanding Systems, Inc

    5900. \r\n
    5901. Stuart Fast
    5902. \r\n
    5903. Yann Kaiser
    5904. \r\n
    5905. Joe Lewis
    5906. \r\n
    5907. Graeme Phillipson
    5908. \r\n
    5909. XPIENT
    5910. \r\n
    5911. Sarah
    5912. \r\n
    5913. Caroline Harbitz
    5914. \r\n
    5915. Daniel Gonzalez Ibeas
    5916. \r\n
    5917. Oliver D�ring
    5918. \r\n
    5919. TEDxNashville

    5920. \r\n
    5921. Ralf Schwarz
    5922. \r\n
    5923. Edward Vogel
    5924. \r\n
    5925. Chester D Hosmer
    5926. \r\n
    5927. Eric Saxby
    5928. \r\n
    5929. Nikita Korneev
    5930. \r\n
    5931. Jason Soja
    5932. \r\n
    5933. Gilberto Goncalves
    5934. \r\n
    5935. Chris Newman
    5936. \r\n
    5937. Keegan McAllister
    5938. \r\n
    5939. Adam Venturella

    5940. \r\n
    5941. Timothy Perisho
    5942. \r\n
    5943. Eduardo Coll
    5944. \r\n
    5945. AARON OLSON
    5946. \r\n
    5947. Hans Sebastian
    5948. \r\n
    5949. Fabrizio Romano
    5950. \r\n
    5951. Salesforce Foundation / Raj Rajamanickam
    5952. \r\n
    5953. Mark Groen
    5954. \r\n
    5955. Ashish Ram
    5956. \r\n
    5957. Keith Nelson
    5958. \r\n
    5959. Antoine Trudel

    5960. \r\n
    5961. Charles Herbert
    5962. \r\n
    5963. Henrik Christiansen
    5964. \r\n
    5965. Salar Satti
    5966. \r\n
    5967. Eigenvalue Corporation
    5968. \r\n
    5969. Seunghyo Seo
    5970. \r\n
    5971. Tobi Bosede
    5972. \r\n
    5973. IMT Insurance Company
    5974. \r\n
    5975. Marian Meinhard
    5976. \r\n
    5977. Chris Adams
    5978. \r\n
    5979. Prometheus Research, LLC

    5980. \r\n
    5981. Naumov Stepan
    5982. \r\n
    5983. Erik Vandekieft
    5984. \r\n
    5985. Zachary Gulde
    5986. \r\n
    5987. Scott Brown
    5988. \r\n
    5989. Andrew Santos
    5990. \r\n
    5991. Esteban Pardo Sanchez
    5992. \r\n
    5993. Verwoorders & Dutveul
    5994. \r\n
    5995. Mary Catherine Cornick
    5996. \r\n
    5997. Chaim Krause
    5998. \r\n
    5999. Steve Burkholder

    6000. \r\n
    6001. Daniel Lindsley
    6002. \r\n
    6003. Коновалов Вениамин
    6004. \r\n
    6005. Jentzen Mooney
    6006. \r\n
    6007. Alexey Novgorodov
    6008. \r\n
    6009. Todd Smith
    6010. \r\n
    6011. Jessica Mizzi
    6012. \r\n
    6013. Erin Keith
    6014. \r\n
    6015. Emerton Infosystems
    6016. \r\n
    6017. Dylan Righi
    6018. \r\n
    6019. Destiny Gaines

    6020. \r\n
    6021. Apple Inc.
    6022. \r\n
    6023. kristofer white
    6024. \r\n
    6025. Suprita Shankar
    6026. \r\n
    6027. Shu Zong Chen
    6028. \r\n
    6029. Ryan Handy
    6030. \r\n
    6031. Cameron Cairns
    6032. \r\n
    6033. Giovanni Di Milia
    6034. \r\n
    6035. Ryan Heffernan
    6036. \r\n
    6037. Oskar Zabik
    6038. \r\n
    6039. Nicholas Buihner

    6040. \r\n
    6041. Megan Hemmila
    6042. \r\n
    6043. Matthew Olsen
    6044. \r\n
    6045. Luiz Irber
    6046. \r\n
    6047. Daniel Miller
    6048. \r\n
    6049. Anna Hull
    6050. \r\n
    6051. FlipKey
    6052. \r\n
    6053. Kyle Kingsbury
    6054. \r\n
    6055. Jeremy Blow
    6056. \r\n
    6057. Alex Good
    6058. \r\n
    6059. Albert Danial

    6060. \r\n
    6061. Warren Friedrich
    6062. \r\n
    6063. Florian Brezina
    6064. \r\n
    6065. William Benter
    6066. \r\n
    6067. Ian Cordasco
    6068. \r\n
    6069. Erica Woodcock
    6070. \r\n
    6071. Steve Dower
    6072. \r\n
    6073. Étienne Gilli
    6074. \r\n
    6075. Terry Smith
    6076. \r\n
    6077. Boris Sadkhin
    6078. \r\n
    6079. Julian de Convenent

    6080. \r\n
    6081. Marek Goslicki
    6082. \r\n
    6083. Inseo Hwang
    6084. \r\n
    6085. Travis Howse
    6086. \r\n
    6087. Rebecca Lerner
    6088. \r\n
    6089. Lee Pau San
    6090. \r\n
    6091. Samuel Villamonte Grimaldo
    6092. \r\n
    6093. George Kowalski
    6094. \r\n
    6095. Bryon Roche
    6096. \r\n
    6097. Stefanos Chalkidis
    6098. \r\n
    6099. Aalap Shah

    6100. \r\n
    6101. Byung Wook Seoh
    6102. \r\n
    6103. Jeremy Hylton
    6104. \r\n
    6105. Amolak Sandhu
    6106. \r\n
    6107. Steven Krengel
    6108. \r\n
    6109. Shivakumar Melmangalam
    6110. \r\n
    6111. Janet Riley
    6112. \r\n
    6113. Cynthia Birnbaum
    6114. \r\n
    6115. Aaron Becker
    6116. \r\n
    6117. Gabriel Boorse
    6118. \r\n
    6119. Adrian Weisberg

    6120. \r\n
    6121. Peter Kruskall
    6122. \r\n
    6123. Chuan Yang
    6124. \r\n
    6125. Chris Adams
    6126. \r\n
    6127. Bruce Eckel
    6128. \r\n
    6129. Anze Pecar
    6130. \r\n
    6131. Joao Matos
    6132. \r\n
    6133. Brian Johnson
    6134. \r\n
    6135. Benjamin Zaitlen
    6136. \r\n
    6137. Steve Wang
    6138. \r\n
    6139. Thomas Rothamel

    6140. \r\n
    6141. Taneka Everett
    6142. \r\n
    6143. Sri Harsha Pamu
    6144. \r\n
    6145. Brian Corbin
    6146. \r\n
    6147. Baptiste Mispelon
    6148. \r\n
    6149. Brenno Lemos Melquiades dos Santos
    6150. \r\n
    6151. Gary M Selzer
    6152. \r\n
    6153. R and R Emmons Fund
    6154. \r\n
    6155. Peter Eckhoff
    6156. \r\n
    6157. Aleksander Kogut
    6158. \r\n
    6159. Stephane ESTEVE

    6160. \r\n
    6161. iFixit
    6162. \r\n
    6163. Fabula C.R. Thomas
    6164. \r\n
    6165. Katherine Summers
    6166. \r\n
    6167. Larry Rosenstein
    6168. \r\n
    6169. Daniel Buchoff
    6170. \r\n
    6171. alicia Cutillo
    6172. \r\n
    6173. Robert Baumann
    6174. \r\n
    6175. Richard King
    6176. \r\n
    6177. Samantha Goldberg
    6178. \r\n
    6179. Daniel Olejarz

    6180. \r\n
    6181. Carl Shek
    6182. \r\n
    6183. Rory Rory Finnegan
    6184. \r\n
    6185. Steven Richards
    6186. \r\n
    6187. John Kuster
    6188. \r\n
    6189. Timothy Wakeling
    6190. \r\n
    6191. Arik Gelman
    6192. \r\n
    6193. Christopher White
    6194. \r\n
    6195. DAN HARTDEGEN
    6196. \r\n
    6197. David Stokes
    6198. \r\n
    6199. James Hafford

    6200. \r\n
    6201. Exality Corporation
    6202. \r\n
    6203. Russel Wheelwright
    6204. \r\n
    6205. Richard Hornbaker
    6206. \r\n
    6207. Roxanne Johnson
    6208. \r\n
    6209. Jan Murre
    6210. \r\n
    6211. Alexis Layton
    6212. \r\n
    6213. Bryan Haardt
    6214. \r\n
    6215. Guilherme Bessa Rezende
    6216. \r\n
    6217. Annapoornima Koppad
    6218. \r\n
    6219. Chris Saunders

    6220. \r\n
    6221. David W. Johnson
    6222. \r\n
    6223. George Collins
    6224. \r\n
    6225. Huang Yu-Heng
    6226. \r\n
    6227. Jason C Lutz
    6228. \r\n
    6229. Nicolas Allemand
    6230. \r\n
    6231. Brien Wheeler
    6232. \r\n
    6233. Marco Lai
    6234. \r\n
    6235. stephanie samson
    6236. \r\n
    6237. Brandon Gallardo Alvarado
    6238. \r\n
    6239. Team Otter

    6240. \r\n
    6241. Nicola Larosa
    6242. \r\n
    6243. Akash Shende
    6244. \r\n
    6245. Liu Yunqing
    6246. \r\n
    6247. TEDxNashville Inc.
    6248. \r\n
    6249. Leilani V. De Guzman
    6250. \r\n
    6251. Kevin Marsh
    6252. \r\n
    6253. Tomo Popovic
    6254. \r\n
    6255. Edward Schipul
    6256. \r\n
    6257. Jackson Isaac
    6258. \r\n
    6259. Alexandre Figura

    6260. \r\n
    6261. sebastien duthil
    6262. \r\n
    6263. Johannes Linke
    6264. \r\n
    6265. Shantanoo Mahajan
    6266. \r\n
    6267. Gaetan Faucher
    6268. \r\n
    6269. Michael Zielinski
    6270. \r\n
    6271. Victoria Porter
    6272. \r\n
    6273. Parthan Sundararajan Ramanujam
    6274. \r\n
    6275. Christopher Bagdanov
    6276. \r\n
    6277. Christian Hattemer
    6278. \r\n
    6279. Jan Kral

    6280. \r\n
    6281. Larisa Maletz
    6282. \r\n
    6283. Mahesh Fofandi
    6284. \r\n
    6285. Thomas Mortimer-Jones
    6286. \r\n
    6287. Ron Rubin
    6288. \r\n
    6289. Kanaka Shetty
    6290. \r\n
    6291. Lisa Doherty
    6292. \r\n
    6293. Andrés García García
    6294. \r\n
    6295. Rachel Sanders
    6296. \r\n
    6297. Jonah Bossewitch
    6298. \r\n
    6299. WONG Kenneth

    6300. \r\n
    6301. Brian Kreeger
    6302. \r\n
    6303. Thomas Nichols
    6304. \r\n
    6305. Коротеев МакÑим
    6306. \r\n
    6307. Nicolas Geoffroy
    6308. \r\n
    6309. Directemployers Association, Inc.
    6310. \r\n
    6311. Clear Ballot Group
    6312. \r\n
    6313. Ricardo Ichizo
    6314. \r\n
    6315. Michał Bultrowicz
    6316. \r\n
    6317. Jonathan Verrecchia
    6318. \r\n
    6319. David DAHAN

    6320. \r\n
    6321. Mikuláš Poul
    6322. \r\n
    6323. Daniel Rusek
    6324. \r\n
    6325. Mehmet Ali Akmanalp
    6326. \r\n
    6327. Hong MinHee
    6328. \r\n
    6329. Florian Schweikert
    6330. \r\n
    6331. Consuelo Arellano
    6332. \r\n
    6333. PG&E Corporation Foundation
    6334. \r\n
    6335. Aaron Burgess
    6336. \r\n
    6337. Gary Soli
    6338. \r\n
    6339. oliver priester

    6340. \r\n
    6341. Aurimas Pranskevicius
    6342. \r\n
    6343. Daniel Riti
    6344. \r\n
    6345. Nile Geisinger
    6346. \r\n
    6347. Zsolt Ero
    6348. \r\n
    6349. Christopher Simpson
    6350. \r\n
    6351. Michael Tracy
    6352. \r\n
    6353. Law Patrick
    6354. \r\n
    6355. Samuel Okpara
    6356. \r\n
    6357. Michael Bernhard Arp Sørensen
    6358. \r\n
    6359. Naftali Harris

    6360. \r\n
    6361. Yevgeniy Vyacheslavovich Shchemelev
    6362. \r\n
    6363. Dan Dunn
    6364. \r\n
    6365. James Pearson
    6366. \r\n
    6367. Juan Shishido
    6368. \r\n
    6369. Frédéric Maciaszek
    6370. \r\n
    6371. Siddharth Asnani
    6372. \r\n
    6373. Matthew Lefkowitz
    6374. \r\n
    6375. Michael Mattioli
    6376. \r\n
    6377. Philip Adler
    6378. \r\n
    6379. Christopher Campbell

    6380. \r\n
    6381. Jennifer Howard
    6382. \r\n
    6383. Graydon Hoare
    6384. \r\n
    6385. Senan Kelly
    6386. \r\n
    6387. Heroku
    6388. \r\n
    6389. Kyle Scarmardo
    6390. \r\n
    6391. Leah Soriaga
    6392. \r\n
    6393. Louis Filardi
    6394. \r\n
    6395. Anna Wszeborowska
    6396. \r\n
    6397. Daniel Bokor
    6398. \r\n
    6399. Paul Tagliamonte

    6400. \r\n
    6401. Julie Buchan
    6402. \r\n
    6403. Aroldo Souza-Leite
    6404. \r\n
    6405. Jason blum
    6406. \r\n
    6407. Troy Ponthieux
    6408. \r\n
    6409. John Fitch
    6410. \r\n
    6411. Jose Alexsandro Sobral de Freitas
    6412. \r\n
    6413. Andrew Kittredge
    6414. \r\n
    6415. Tomasz Przydatek HEIMA
    6416. \r\n
    6417. Leah Jones
    6418. \r\n
    6419. Joseph Cardenas

    6420. \r\n
    6421. Bill Schroeder
    6422. \r\n
    6423. Ian Bellamy
    6424. \r\n
    6425. Ilya Karasev
    6426. \r\n
    6427. Радченко ИльÑ
    6428. \r\n
    6429. Matthew Montgomery
    6430. \r\n
    6431. Jacques Woodcock
    6432. \r\n
    6433. Bertrand Cachet
    6434. \r\n
    6435. Storybird Inc.
    6436. \r\n
    6437. Glenn Franxman
    6438. \r\n
    6439. Rick Hubbard

    6440. \r\n
    6441. Stephen Howard McMahon
    6442. \r\n
    6443. МаÑловÑкий Ðртём
    6444. \r\n
    6445. Ben Hughes
    6446. \r\n
    6447. Reggie Dugard
    6448. \r\n
    6449. Alon Altman
    6450. \r\n
    6451. Google Matching Gifts
    6452. \r\n
    6453. Thomas Stratton
    6454. \r\n
    6455. Abhijit Patkar
    6456. \r\n
    6457. Cabinet dentaire Fran�ois RICHARD
    6458. \r\n
    6459. Bingyan Liu

    6460. \r\n
    6461. EuroPython 2012 Sponsored Massage
    6462. \r\n
    6463. Angie's List
    6464. \r\n
    6465. Domi Barton
    6466. \r\n
    6467. Djoko Soelarno A
    6468. \r\n
    6469. Patrick Winkler
    6470. \r\n
    6471. Allen Riddell
    6472. \r\n
    6473. Daniel Williams
    6474. \r\n
    6475. Daniel Greenfeld
    6476. \r\n
    6477. Fernando Gutierrez
    6478. \r\n
    6479. Robert B Liverman

    6480. \r\n
    6481. Marcelo Grafulha Vanti
    6482. \r\n
    6483. Cezary Statkiewicz
    6484. \r\n
    6485. Bar Goueta
    6486. \r\n
    6487. Henrik Kramsh�j
    6488. \r\n
    6489. Michael Schultz
    6490. \r\n
    6491. CENTRO SUPERIOR IUDICEM INNOVA PROFESIONAL CENTRO TECNICO
    6492. \r\n
    6493. Robert Kluin
    6494. \r\n
    6495. Pradhan Kumar
    6496. \r\n
    6497. Tarek Ziade
    6498. \r\n
    6499. Roman Danilov

    6500. \r\n
    6501. Wallace McMartin
    6502. \r\n
    6503. Dave Rankin
    6504. \r\n
    6505. Reed O'Brien
    6506. \r\n
    6507. Julien Thebault
    6508. \r\n
    6509. William Thibodeau
    6510. \r\n
    6511. Toshichika Fujita
    6512. \r\n
    6513. Maxime Guerreiro
    6514. \r\n
    6515. Kiril Reznikovsky
    6516. \r\n
    6517. Noah Kantrowitz
    6518. \r\n
    6519. James Bennett

    6520. \r\n
    6521. Continuum Analytics, Inc.
    6522. \r\n
    6523. Jessica Mong
    6524. \r\n
    6525. Christa Humber
    6526. \r\n
    6527. Adam Glasall
    6528. \r\n
    6529. Li Xiang
    6530. \r\n
    6531. Nils Pascal Illenseer
    6532. \r\n
    6533. Thumbtack, Inc.
    6534. \r\n
    6535. Chan Tin Tsun
    6536. \r\n
    6537. Paul Honig
    6538. \r\n
    6539. Steve Heyman

    6540. \r\n
    6541. พิชัย เลิศวชิรà¸à¸¸à¸¥
    6542. \r\n
    6543. Paul McLanahan
    6544. \r\n
    6545. Caroline Simpson
    6546. \r\n
    6547. Erika Klein
    6548. \r\n
    6549. Chris Bradfield
    6550. \r\n
    6551. John Kotz
    6552. \r\n
    6553. eBay Matching Gifts
    6554. \r\n
    6555. Dmitry Chichkov
    6556. \r\n
    6557. Colin Alston
    6558. \r\n
    6559. Tim Martin

    6560. \r\n
    6561. William Alexander
    6562. \r\n
    6563. pierre gronlier
    6564. \r\n
    6565. Ryan Kulla
    6566. \r\n
    6567. Daniil Boykis
    6568. \r\n
    6569. PyCon Donation
    6570. \r\n
    6571. brian wickman
    6572. \r\n
    6573. Josivaldo G. Silva
    6574. \r\n
    6575. Flavio B Diomede
    6576. \r\n
    6577. Brian Lee Costlow
    6578. \r\n
    6579. DIMITRIOS MAKROPOULOS

    6580. \r\n
    6581. Chris Shenton
    6582. \r\n
    6583. Morten Lind
    6584. \r\n
    6585. Jim Palmer
    6586. \r\n
    6587. Benjamin Crom
    6588. \r\n
    6589. Elizabeth Rush
    6590. \r\n
    6591. Steven Myint
    6592. \r\n
    6593. Lakshminarayana Motamarri
    6594. \r\n
    6595. Marcelo Moreira de Mello
    6596. \r\n
    6597. Mohamed Khalil
    6598. \r\n
    6599. Richard Beier

    6600. \r\n
    6601. Nicola Iarocci
    6602. \r\n
    6603. Lukas Prokop
    6604. \r\n
    6605. Thomas Heller
    6606. \r\n
    6607. ryan kulla
    6608. \r\n
    6609. Tian Zhi
    6610. \r\n
    6611. aaron henderson
    6612. \r\n
    6613. Bob
    6614. \r\n
    6615. Stephan Deibel
    6616. \r\n
    6617. Shannon Behrens
    6618. \r\n
    6619. R Michael Perry

    6620. \r\n
    6621. Alexander Coco
    6622. \r\n
    6623. Jesse Dubay
    6624. \r\n
    6625. Greg Toombs
    6626. \r\n
    6627. Rupesh Pradhan
    6628. \r\n
    6629. ETIENNE SALIEZ
    6630. \r\n
    6631. Isaac Gerg
    6632. \r\n
    6633. Philippe Gauthier
    6634. \r\n
    6635. Jim Sturdivant
    6636. \r\n
    6637. Richard Floyd
    6638. \r\n
    6639. Stein Palmer

    6640. \r\n
    6641. Eric Bauer
    6642. \r\n
    6643. Joseph Pyott
    6644. \r\n
    6645. Kitware, Inc.
    6646. \r\n
    6647. Christopher Simpkins
    6648. \r\n
    6649. Revolution Systems, LLC
    6650. \r\n
    6651. Liene Verzemnieks
    6652. \r\n
    6653. Josh Marshall
    6654. \r\n
    6655. Alexander Gaynor
    6656. \r\n
    6657. åˆ å­è±ª
    6658. \r\n
    6659. Samar Agrawal

    6660. \r\n
    6661. David Cleary
    6662. \r\n
    6663. SpiderOak, Inc
    6664. \r\n
    6665. Jason K�lker
    6666. \r\n
    6667. Will Shanks
    6668. \r\n
    6669. Vincent LEFOULON
    6670. \r\n
    6671. Yannick Gingras
    6672. \r\n
    6673. Nassim Gannoun
    6674. \r\n
    6675. Judith Repp
    6676. \r\n
    6677. Firelight Webware LLC
    6678. \r\n
    6679. Víðir Valberg Gudmundsson

    6680. \r\n
    6681. John Barbuto
    6682. \r\n
    6683. Sean Quinn
    6684. \r\n
    6685. Rachid Belaid
    6686. \r\n
    6687. wangsitan wangsitan
    6688. \r\n
    6689. Michael Gasser
    6690. \r\n
    6691. 温 业民
    6692. \r\n
    6693. Johnathan Lee Bingham
    6694. \r\n
    6695. Gruschow Foundation
    6696. \r\n
    6697. Ruslan Kiyanchuk
    6698. \r\n
    6699. Paweł Adamczak

    6700. \r\n
    6701. Frazer McLean
    6702. \r\n
    6703. Christine Rehm
    6704. \r\n
    6705. Jonathan Hill
    6706. \r\n
    6707. Stuart Levinson
    6708. \r\n
    6709. Francisco Gracia
    6710. \r\n
    6711. Karsten Franke
    6712. \r\n
    6713. LI BO
    6714. \r\n
    6715. Simply Maco
    6716. \r\n
    6717. albert kim
    6718. \r\n
    6719. Gabriel Camargo

    6720. \r\n
    6721. Greg Albrecht
    6722. \r\n
    6723. chernomirdin macuvele
    6724. \r\n
    6725. Nagarjuna Venna
    6726. \r\n
    6727. Mathieu Leduc-Hamel
    6728. \r\n
    6729. Daniel Pope
    6730. \r\n
    6731. Rob Kennedy
    6732. \r\n
    6733. Jon Seger
    6734. \r\n
    6735. Raul Taranu
    6736. \r\n
    6737. Michael Greene
    6738. \r\n
    6739. Katheryn Farris

    6740. \r\n
    6741. Grayson Chao
    6742. \r\n
    6743. Yuyin Him
    6744. \r\n
    6745. Nick Lang
    6746. \r\n
    6747. Christopher Neugebauer
    6748. \r\n
    6749. Curt Fiedler
    6750. \r\n
    6751. Lacey Williams
    6752. \r\n
    6753. Jon Henner
    6754. \r\n
    6755. kevin spleid
    6756. \r\n
    6757. Lisa Crispin
    6758. \r\n
    6759. Leah Culver

    6760. \r\n
    6761. Jay Parlar
    6762. \r\n
    6763. Catherine Allman
    6764. \r\n
    6765. William Lubanovic
    6766. \r\n
    6767. Simon LALIMAN
    6768. \r\n
    6769. Jeremy Lujan
    6770. \r\n
    6771. TOYOTA DAIGO
    6772. \r\n
    6773. George Schneeloch
    6774. \r\n
    6775. William Rutledge
    6776. \r\n
    6777. John Camara
    6778. \r\n
    6779. Manfred Huber

    6780. \r\n
    6781. Yannick Breton
    6782. \r\n
    6783. Delta-X Research Inc
    6784. \r\n
    6785. Ricardo Cerqueira
    6786. \r\n
    6787. Benjamin Paxton
    6788. \r\n
    6789. Ray M Leyva
    6790. \r\n
    6791. Stacy Cunningham
    6792. \r\n
    6793. Scott Burns
    6794. \r\n
    6795. Heinz Pommer
    6796. \r\n
    6797. Bikineyev Shamil
    6798. \r\n
    6799. Melissa Cirtain

    6800. \r\n
    6801. WILLIAM COWAN
    6802. \r\n
    6803. Kimberley Lawrence
    6804. \r\n
    6805. æ¨ æ²ç‘
    6806. \r\n
    6807. Jim Paul Belgado
    6808. \r\n
    6809. 陈 群
    6810. \r\n
    6811. Taehun Kim
    6812. \r\n
    6813. Seth Rosen
    6814. \r\n
    6815. Pro Flex
    6816. \r\n
    6817. John Niemi
    6818. \r\n
    6819. mathieu perrenoud

    6820. \r\n
    6821. Gabriel Pirvan
    6822. \r\n
    6823. christian horne
    6824. \r\n
    6825. Annie-Claude C�t�
    6826. \r\n
    6827. lucas alves
    6828. \r\n
    6829. christian bergmann
    6830. \r\n
    6831. Aimee Langmaid
    6832. \r\n
    6833. Michael Schramke
    6834. \r\n
    6835. Lev Trubach
    6836. \r\n
    6837. Paul McNett
    6838. \r\n
    6839. James Dozier

    6840. \r\n
    6841. Arthur Gibson
    6842. \r\n
    6843. Stefan Hesse
    6844. \r\n
    6845. ZHANG FEI
    6846. \r\n
    6847. Micheal Beatty
    6848. \r\n
    6849. Barry Pederson
    6850. \r\n
    6851. Yao Heling
    6852. \r\n
    6853. Rory Campbell-Lange
    6854. \r\n
    6855. Ayun Park
    6856. \r\n
    6857. Marko Antoncic
    6858. \r\n
    6859. Michelle Funk

    6860. \r\n
    6861. Dr. Doris Helene Fuertinger
    6862. \r\n
    6863. Michael 227 Satinwood Avenue Taylor
    6864. \r\n
    6865. Lorenzo Franceschini
    6866. \r\n
    6867. John Mullin
    6868. \r\n
    6869. Mihkel Tael
    6870. \r\n
    6871. Aprigo, Inc.
    6872. \r\n
    6873. Gil Zimmermann
    6874. \r\n
    6875. paul haeberli
    6876. \r\n
    6877. Eric Ma
    6878. \r\n
    6879. Gianni-Lauritz Grubert

    6880. \r\n
    6881. Cristian Catellani
    6882. \r\n
    6883. Andrew Winterman
    6884. \r\n
    6885. Lisa Miller
    6886. \r\n
    6887. Evan Gary
    6888. \r\n
    6889. Paul Mountford
    6890. \r\n
    6891. Aaron Held
    6892. \r\n
    6893. Joshua Tauberer
    6894. \r\n
    6895. Joon Suk Lee
    6896. \r\n
    6897. Darrin McCarthy
    6898. \r\n
    6899. Lina Wadi

    6900. \r\n
    6901. Bogdan Sergiu Dragos
    6902. \r\n
    6903. Stefan Bergmann
    6904. \r\n
    6905. Jose Estevez
    6906. \r\n
    6907. Fidel Leon
    6908. \r\n
    6909. Alicia Valin
    6910. \r\n
    6911. 樊 æ•
    6912. \r\n
    6913. Adrian Belanger
    6914. \r\n
    6915. Olaf Kayser
    6916. \r\n
    6917. Stephen McCrea
    6918. \r\n
    6919. Bent Claus Christian Kj�r

    6920. \r\n
    6921. Wyatt Walter
    6922. \r\n
    6923. Maxime Lorant
    6924. \r\n
    6925. Peter Hoz�k
    6926. \r\n
    6927. Courtney Correll
    6928. \r\n
    6929. Michael Auritt
    6930. \r\n
    6931. John O'Brien
    6932. \r\n
    6933. Louis-Bertrand Varin
    6934. \r\n
    6935. Metametrics
    6936. \r\n
    6937. RICHARD ALTIMAS
    6938. \r\n
    6939. Timothy Allen

    6940. \r\n
    6941. Zhao Zhang
    6942. \r\n
    6943. sukhmandeep sandhu
    6944. \r\n
    6945. Robert Kemmetmueller
    6946. \r\n
    6947. Regina Dowdell
    6948. \r\n
    6949. steve ulrich
    6950. \r\n
    6951. Alejandro Cabrera
    6952. \r\n
    6953. Zhuodong He
    6954. \r\n
    6955. Terry Simons
    6956. \r\n
    6957. avi maman
    6958. \r\n
    6959. Jonathan Haddad

    6960. \r\n
    6961. Microsoft Matching Gifts Program
    6962. \r\n
    6963. EuroPython 2011 Sponsored Massage
    6964. \r\n
    6965. Jamie McArdle
    6966. \r\n
    6967. Sean True
    6968. \r\n
    6969. Gabriel Trautmann
    6970. \r\n
    6971. Маланчев КонÑтантин
    6972. \r\n
    6973. Lars-Olav Pettersen
    6974. \r\n
    6975. Xavier Monfort Faure
    6976. \r\n
    6977. Carol Willing
    6978. \r\n
    6979. Alexander Dorsk

    6980. \r\n
    6981. Derek Willis
    6982. \r\n
    6983. MICHAEL PEMBERTON
    6984. \r\n
    6985. Robert Tian
    6986. \r\n
    6987. Kenneth Love
    6988. \r\n
    6989. Nenad Andric
    6990. \r\n
    6991. Alec Mitchell
    6992. \r\n
    6993. Bert de Miranda
    6994. \r\n
    6995. Tagschema
    6996. \r\n
    6997. Aleksandra Klapcinska
    6998. \r\n
    6999. Raul Garza

    7000. \r\n
    7001. Philip Huggins
    7002. \r\n
    7003. Content Creature
    7004. \r\n
    7005. ì§€ì˜ ìœ¤
    7006. \r\n
    7007. Olga Botvinnik
    7008. \r\n
    7009. Kelly Shalk
    7010. \r\n
    7011. Joel Garza
    7012. \r\n
    7013. Stephen Childs
    7014. \r\n
    7015. JiYun Kim
    7016. \r\n
    7017. Roman Gladkov
    7018. \r\n
    7019. Ryan Derry

    7020. \r\n
    7021. david Larsen
    7022. \r\n
    7023. George Cook
    7024. \r\n
    7025. Zachary Voase
    7026. \r\n
    7027. Richard Ruh
    7028. \r\n
    7029. Adam Lindsay
    7030. \r\n
    7031. Paolo Di Paolantonio
    7032. \r\n
    7033. Panya Suwan
    7034. \r\n
    7035. Nigel Dunn
    7036. \r\n
    7037. Brian Robinson
    7038. \r\n
    7039. Anthony Munro

    7040. \r\n
    7041. Sebastien Renard
    7042. \r\n
    7043. Todd Minehardt
    7044. \r\n
    7045. Thomas Nesbit
    7046. \r\n
    7047. New Relic, Inc.
    7048. \r\n
    7049. Addy Yeow
    7050. \r\n
    7051. Benjamin Sloboda
    7052. \r\n
    7053. Berard Patrick McLaughlin
    7054. \r\n
    7055. Django Software Foundation
    7056. \r\n
    7057. Mark Groves
    7058. \r\n
    7059. William Henry Lyne

    7060. \r\n
    7061. The UNIX Man Consulting, LLC
    7062. \r\n
    7063. Edgar Aroutiounian
    7064. \r\n
    7065. Antonio Tapia
    7066. \r\n
    7067. William Lyne
    7068. \r\n
    7069. David Smatlak
    7070. \r\n
    7071. Charles Reynolds
    7072. \r\n
    7073. Richard Shea
    7074. \r\n
    7075. Menno Smits
    7076. \r\n
    7077. Miriam Lauter
    7078. \r\n
    7079. Jeong-Hee Kang

    7080. \r\n
    7081. Ruben Rodriguez
    7082. \r\n
    7083. Milan Prpic
    7084. \r\n
    7085. Elburz Sorkhabi
    7086. \r\n
    7087. Daniel Harris
    7088. \r\n
    7089. Andrew Gorcester
    7090. \r\n
    7091. Harlan Hile
    7092. \r\n
    7093. PyCon Ireland
    7094. \r\n
    7095. 周 维
    7096. \r\n
    7097. DMITRIY PERLOW
    7098. \r\n
    7099. Robert Meagher

    7100. \r\n
    7101. Timo W�rsch
    7102. \r\n
    7103. Deborah Nicholson
    7104. \r\n
    7105. W GEENE
    7106. \r\n
    7107. GiryaScope Kettlebell
    7108. \r\n
    7109. Luke Crouch
    7110. \r\n
    7111. Jack Diederich
    7112. \r\n
    7113. Vijay Phadke
    7114. \r\n
    7115. Nemanja Kundovic
    7116. \r\n
    7117. Noé Alberto Reyes Guerra
    7118. \r\n
    7119. Robert Kestner

    7120. \r\n
    7121. R Gulati
    7122. \r\n
    7123. Yoav Shapira
    7124. \r\n
    7125. EuroPython 2010 Sponsored Massage
    7126. \r\n
    7127. Christopher Ritter
    7128. \r\n
    7129. Pierrick Boitel
    7130. \r\n
    7131. Karl Obermeyer
    7132. \r\n
    7133. Spokane Data Recovery
    7134. \r\n
    7135. Jesus Del Carpio
    7136. \r\n
    7137. Stephen Waterbury
    7138. \r\n
    7139. Michelle Tran

    7140. \r\n
    7141. Jorge Lav�n Gonz�lez
    7142. \r\n
    7143. Bart den Ouden
    7144. \r\n
    7145. Robyn Wagner, Esq.
    7146. \r\n
    7147. 潘 永之
    7148. \r\n
    7149. Kurt Griffiths
    7150. \r\n
    7151. Mathieu Guay-Paquet
    7152. \r\n
    7153. Jeong-Hwan Kwak
    7154. \r\n
    7155. Rogelio Nájera Rodríguez
    7156. \r\n
    7157. Alexander Perkins
    7158. \r\n
    7159. Howard Haimovitch

    7160. \r\n
    7161. Жильцов Дмитрий
    7162. \r\n
    7163. Julian Krause
    7164. \r\n
    7165. Erin Shellman
    7166. \r\n
    7167. Paul Krieger
    7168. \r\n
    7169. Dysart Creative
    7170. \r\n
    7171. Stephen McDonald
    7172. \r\n
    7173. Harold Smith
    7174. \r\n
    7175. Marcel Dahle
    7176. \r\n
    7177. Habib Khan
    7178. \r\n
    7179. Taras Voinarovskyi

    7180. \r\n
    7181. Firas Wehbe
    7182. \r\n
    7183. R David Coryell
    7184. \r\n
    7185. Jason Centino
    7186. \r\n
    7187. Patrick Stegmann
    7188. \r\n
    7189. Тихонов Юлий
    7190. \r\n
    7191. Jakub Ruzicka
    7192. \r\n
    7193. mazhalai chellathurai
    7194. \r\n
    7195. Andrew Ritz
    7196. \r\n
    7197. Steven Buss
    7198. \r\n
    7199. Matt Zimmerman

    7200. \r\n
    7201. MR C R FOOTE
    7202. \r\n
    7203. David Rasch
    7204. \r\n
    7205. å´ æ˜Šå¤©
    7206. \r\n
    7207. William Duncan
    7208. \r\n
    7209. adam sah
    7210. \r\n
    7211. Dan Horn
    7212. \r\n
    7213. Asang Dani
    7214. \r\n
    7215. Rocky Meza
    7216. \r\n
    7217. Sean Bradley
    7218. \r\n
    7219. Angel Hernandez

    7220. \r\n
    7221. Joseph Mulhern
    7222. \r\n
    7223. Ricardo Banffy
    7224. \r\n
    7225. Ruairi Newman
    7226. \r\n
    7227. Samy Zafrany
    7228. \r\n
    7229. Steven Landman
    7230. \r\n
    7231. David K Lam
    7232. \r\n
    7233. Mauricio Cleveland
    7234. \r\n
    7235. Jodi Havranek
    7236. \r\n
    7237. Amir Tarighat
    7238. \r\n
    7239. Christopher George Abiad

    7240. \r\n
    7241. Jennifer Selby
    7242. \r\n
    7243. Python Extra
    7244. \r\n
    7245. Alexey Nedyuzhev
    7246. \r\n
    7247. ThoughtAfter LLC
    7248. \r\n
    7249. Peter J Farrell
    7250. \r\n
    7251. Matthew Woodward
    7252. \r\n
    7253. Gnanaprabhu Gnanam
    7254. \r\n
    7255. Jeremy Kelley
    7256. \r\n
    7257. Eric Chou
    7258. \r\n
    7259. Frank Hillier

    7260. \r\n
    7261. Christian Theune
    7262. \r\n
    7263. Erick Oliveira
    7264. \r\n
    7265. Brian Costlow
    7266. \r\n
    7267. Christine Bullock
    7268. \r\n
    7269. Harold Vogel
    7270. \r\n
    7271. William Zingler
    7272. \r\n
    7273. Brian Curtin
    7274. \r\n
    7275. peter ford
    7276. \r\n
    7277. Sasha Mendez
    7278. \r\n
    7279. Marcus Bertrand

    7280. \r\n
    7281. Stephen Spector
    7282. \r\n
    7283. Gagan Sikri
    7284. \r\n
    7285. Leslie Salazar
    7286. \r\n
    7287. Lee Kulberda
    7288. \r\n
    7289. Jeffrey Butler
    7290. \r\n
    7291. Christopher Santoro
    7292. \r\n
    7293. Susan Walker
    7294. \r\n
    7295. Mtthew Kyle
    7296. \r\n
    7297. Mark Molitor
    7298. \r\n
    7299. Margaret Hartmann

    7300. \r\n
    7301. Brendan McGeehan
    7302. \r\n
    7303. Shannon Hook
    7304. \r\n
    7305. Jacqueline Hawkins
    7306. \r\n
    7307. Linda Daniels
    7308. \r\n
    7309. Karl Martino
    7310. \r\n
    7311. Cortney Buffington
    7312. \r\n
    7313. Myopia Music
    7314. \r\n
    7315. Bryan Grimes
    7316. \r\n
    7317. Potato
    7318. \r\n
    7319. Philip Simmons

    7320. \r\n
    7321. Harish Sethu
    7322. \r\n
    7323. Denise Tremblay
    7324. \r\n
    7325. David Grizzanti
    7326. \r\n
    7327. Shashwat Anand
    7328. \r\n
    7329. Grant Bowman
    7330. \r\n
    7331. Arthur Neuman
    7332. \r\n
    7333. Allie Meng
    7334. \r\n
    7335. Euan Hayward
    7336. \r\n
    7337. Gerard SWINNEN
    7338. \r\n
    7339. Thomas Janofsky

    7340. \r\n
    7341. Roy Racer
    7342. \r\n
    7343. Orly Zeewy
    7344. \r\n
    7345. James Shulman
    7346. \r\n
    7347. sally vassalotti
    7348. \r\n
    7349. Kara Rennert
    7350. \r\n
    7351. Dana Bauer
    7352. \r\n
    7353. Loic Duros
    7354. \r\n
    7355. Mark Schulhof
    7356. \r\n
    7357. Amanda Clark
    7358. \r\n
    7359. riccardo ghetta

    7360. \r\n
    7361. Pierre Vernier
    7362. \r\n
    7363. Pierre BOIZOT
    7364. \r\n
    7365. Andreas Fackler
    7366. \r\n
    7367. David Martinez
    7368. \r\n
    7369. Mark Sunnucks
    7370. \r\n
    7371. Tristan Harward
    7372. \r\n
    7373. Mathias Bavay
    7374. \r\n
    7375. Johan Appelgren
    7376. \r\n
    7377. Inovica Ltd
    7378. \r\n
    7379. Edward Hodapp

    7380. \r\n
    7381. Bruno BARBIER
    7382. \r\n
    7383. Josh Sarver
    7384. \r\n
    7385. Helge Aksdal
    7386. \r\n
    7387. Todd Ogin
    7388. \r\n
    7389. Esir Pavel
    7390. \r\n
    7391. Pedro Luis Garc�a Alonso
    7392. \r\n
    7393. Alyssa Batula
    7394. \r\n
    7395. Vlasenko Andrey
    7396. \r\n
    7397. Chris Thorpe
    7398. \r\n
    7399. Nathan Miller

    7400. \r\n
    7401. Adrian Lasconi
    7402. \r\n
    7403. Tyler McGinnis
    7404. \r\n
    7405. Jason Sexauer
    7406. \r\n
    7407. Donna St. Louis
    7408. \r\n
    7409. Sean Kennedy
    7410. \r\n
    7411. Liza Chen
    7412. \r\n
    7413. Jane Eisenstein
    7414. \r\n
    7415. Ethan McCreadie
    7416. \r\n
    7417. Chad Nelson
    7418. \r\n
    7419. Steven Burnett

    7420. \r\n
    7421. Eric Vernichon
    7422. \r\n
    7423. Yelena Kushleyeva
    7424. \r\n
    7425. Sarah Gray
    7426. \r\n
    7427. John Campbell
    7428. \r\n
    7429. Casey Thomas
    7430. \r\n
    7431. Briana Morgan
    7432. \r\n
    7433. Shantanu Mahajan
    7434. \r\n
    7435. Comic Vs. Audience
    7436. \r\n
    7437. Mark Schrauwen
    7438. \r\n
    7439. Howard R Hansen

    7440. \r\n
    7441. Manuel Martinez
    7442. \r\n
    7443. DVASS SP and DVINC
    7444. \r\n
    7445. Afonso Haruo Carnielli Mukai
    7446. \r\n
    7447. Bulent Sahin
    7448. \r\n
    7449. Gregory Edwards
    7450. \r\n
    7451. Dmitry Ovchinnikov
    7452. \r\n
    7453. Neil Abrahams
    7454. \r\n
    7455. Ðполлов Юрий
    7456. \r\n
    7457. Richard Ames
    7458. \r\n
    7459. Ingmar Lei�e

    7460. \r\n
    7461. Simon Arlott
    7462. \r\n
    7463. Thiago Avelino
    7464. \r\n
    7465. Stephen Bridgett
    7466. \r\n
    7467. Reford Still
    7468. \r\n
    7469. anatoly techtonik
    7470. \r\n
    7471. Andrew Thomas
    7472. \r\n
    7473. Lukas Blakk
    7474. \r\n
    7475. Thomas Hermann Handtmann
    7476. \r\n
    7477. Brody Robertson
    7478. \r\n
    7479. Jongho Lee

    7480. \r\n
    7481. Nick Coghlan
    7482. \r\n
    7483. 张 邦全
    7484. \r\n
    7485. Rachel Sanders
    7486. \r\n
    7487. Richard Harding
    7488. \r\n
    7489. Pieter van der Walt
    7490. \r\n
    7491. James King
    7492. \r\n
    7493. robert messemer
    7494. \r\n
    7495. john morrow
    7496. \r\n
    7497. emily williamson
    7498. \r\n
    7499. aurynn shaw

    7500. \r\n
    7501. William Smith
    7502. \r\n
    7503. Ted Landis
    7504. \r\n
    7505. Shilpa Apte
    7506. \r\n
    7507. Sarah Kelley
    7508. \r\n
    7509. Rebecca Standig
    7510. \r\n
    7511. Moon Limb
    7512. \r\n
    7513. Matthew Drover
    7514. \r\n
    7515. Maria Teresa Gim�nez Fayos
    7516. \r\n
    7517. Marcin Swiatek
    7518. \r\n
    7519. Kristofer White

    7520. \r\n
    7521. Katherine Daniels
    7522. \r\n
    7523. Jyrki Pulliainen
    7524. \r\n
    7525. Janina Szkut
    7526. \r\n
    7527. Filip Sufitchi
    7528. \r\n
    7529. Fernando Masanori Ashikaga
    7530. \r\n
    7531. Clinton Roy
    7532. \r\n
    7533. Cindy Pallares-Quezada
    7534. \r\n
    7535. Cara Jo Miller
    7536. \r\n
    7537. Cameron Maske
    7538. \r\n
    7539. Anja boskovic

    7540. \r\n
    7541. Andrea Villanes
    7542. \r\n
    7543. John delos Reyes
    7544. \r\n
    7545. Timo Rossi
    7546. \r\n
    7547. Tyler Neylon
    7548. \r\n
    7549. Sævar
    7550. \r\n
    7551. Riccardo Vianello
    7552. \r\n
    7553. Erez Gottlieb
    7554. \r\n
    7555. Erik Bray
    7556. \r\n
    7557. greg albrecht
    7558. \r\n
    7559. Christophe Courtois

    7560. \r\n
    7561. Erik Rahlen
    7562. \r\n
    7563. James Luscher
    7564. \r\n
    7565. Gerry Piaget
    7566. \r\n
    7567. WebReply Inc
    7568. \r\n
    7569. Matthew Spencer
    7570. \r\n
    7571. Silvers Networks LLC
    7572. \r\n
    7573. John Baldwin
    7574. \r\n
    7575. jani sanjaya
    7576. \r\n
    7577. Daniel Zemke
    7578. \r\n
    7579. Paul Baines

    7580. \r\n
    7581. Bob Skala
    7582. \r\n
    7583. Grigoriy Krimer
    7584. \r\n
    7585. woog, jennifer
    7586. \r\n
    7587. Leo Franchi
    7588. \r\n
    7589. Katel LeDu
    7590. \r\n
    7591. Andreas H�rpfer
    7592. \r\n
    7593. Joshua Gourneau
    7594. \r\n
    7595. Mark Colby
    7596. \r\n
    7597. Chris Overfield
    7598. \r\n
    7599. Harry

    7600. \r\n
    7601. Matt Sayler
    7602. \r\n
    7603. Jonathan Katz
    7604. \r\n
    7605. Eric Sipple
    7606. \r\n
    7607. Ognian Dimitrov Ivanov
    7608. \r\n
    7609. Joaqu�n Planells Lerma
    7610. \r\n
    7611. Jannis Leidel
    7612. \r\n
    7613. Alain Carbonneau
    7614. \r\n
    7615. Sebastian Graf
    7616. \r\n
    7617. МуÑин Булат
    7618. \r\n
    7619. Matt Olsen

    7620. \r\n
    7621. Hugo Montoya Diaz
    7622. \r\n
    7623. Kenneth Armstrong
    7624. \r\n
    7625. Sandro Skansi
    7626. \r\n
    7627. Gustavo Lima da Luz
    7628. \r\n
    7629. Darren Fix
    7630. \r\n
    7631. Jens Thomas
    7632. \r\n
    7633. Fei Qi
    7634. \r\n
    7635. Shavkat Nizamov
    7636. \r\n
    7637. Steven Jonker
    7638. \r\n
    7639. Diana Clarke

    7640. \r\n
    7641. Resonon, Inc
    7642. \r\n
    7643. Aaron Lav
    7644. \r\n
    7645. Simon Beckerman
    7646. \r\n
    7647. Токарев Михаил
    7648. \r\n
    7649. Sam Vilain
    7650. \r\n
    7651. Mark Anderson
    7652. \r\n
    7653. ÐлекÑандр ЗаÑц
    7654. \r\n
    7655. Rocha Management LLC
    7656. \r\n
    7657. Patrick EVRARD
    7658. \r\n
    7659. Dwight Hubbard

    7660. \r\n
    7661. Adam Albrechtas
    7662. \r\n
    7663. Josip Delic
    7664. \r\n
    7665. Derek McWilliams
    7666. \r\n
    7667. Jonathan Leicher
    7668. \r\n
    7669. Ryan Webb
    7670. \r\n
    7671. Ranjith Reddy Deena Bandulu
    7672. \r\n
    7673. Jason Kelly
    7674. \r\n
    7675. Mike Allen
    7676. \r\n
    7677. SARAVANAN SIVASWAMY
    7678. \r\n
    7679. Eduardo Barros

    7680. \r\n
    7681. Elettrocomm Sas di Lagan� e Cordioli
    7682. \r\n
    7683. Zane Bassett
    7684. \r\n
    7685. Evergreen Online Limited
    7686. \r\n
    7687. Sharon Wong
    7688. \r\n
    7689. Kostakov Andrey
    7690. \r\n
    7691. JESSICA MCKELLAR
    7692. \r\n
    7693. Gabriel Rodr�guez Alberich
    7694. \r\n
    7695. Ivelin Djantov
    7696. \r\n
    7697. robert mcdonald
    7698. \r\n
    7699. 王 文沛

    7700. \r\n
    7701. Maximo Pech Jaramillo
    7702. \r\n
    7703. Åukasz Mierzwa
    7704. \r\n
    7705. Григорий КоÑтюк
    7706. \r\n
    7707. Richard Blumberg
    7708. \r\n
    7709. See Wei Ooi
    7710. \r\n
    7711. Saurabh Belsare
    7712. \r\n
    7713. Rob Nichols
    7714. \r\n
    7715. Samuel Allen
    7716. \r\n
    7717. Joseph Copp
    7718. \r\n
    7719. 刘 凯

    7720. \r\n
    7721. Maxime GRANDCOLAS
    7722. \r\n
    7723. Seung Hyo Seo
    7724. \r\n
    7725. Pete Higgins
    7726. \r\n
    7727. Niclas Darville
    7728. \r\n
    7729. Maia Bittner
    7730. \r\n
    7731. Jane Ruffino
    7732. \r\n
    7733. Guy Hindle
    7734. \r\n
    7735. Ari Blenkhorn
    7736. \r\n
    7737. Zhiming Wang
    7738. \r\n
    7739. Andreas Dr Riemann

    7740. \r\n
    7741. Diana Clarke
    7742. \r\n
    7743. joe copp
    7744. \r\n
    7745. Michael Sch�nw�lder
    7746. \r\n
    7747. Jozef Maceka
    7748. \r\n
    7749. young lee
    7750. \r\n
    7751. Ievgenii Vdovenko
    7752. \r\n
    7753. Alex Couper
    7754. \r\n
    7755. Bryan Lane
    7756. \r\n
    7757. Ranjan Grover
    7758. \r\n
    7759. Alex Vorndran

    7760. \r\n
    7761. Jean Shanks
    7762. \r\n
    7763. Andreas Jung
    7764. \r\n
    7765. Justin Myers
    7766. \r\n
    7767. Alfredo Kojima
    7768. \r\n
    7769. Barron Snyder
    7770. \r\n
    7771. ALFONSO BACIERO ADRADOS
    7772. \r\n
    7773. Matthew Boehm
    7774. \r\n
    7775. James Reese
    7776. \r\n
    7777. Maarten Zaanen
    7778. \r\n
    7779. Wolfram Wiedner

    7780. \r\n
    7781. Parinya Rungrodesuwan
    7782. \r\n
    7783. Luis Osa
    7784. \r\n
    7785. Arnd Ludwig
    7786. \r\n
    7787. Mark Draelos
    7788. \r\n
    7789. Thomas Hochstein
    7790. \r\n
    7791. Pablo RUTH
    7792. \r\n
    7793. Julien Konczak
    7794. \r\n
    7795. Eino Makitalo
    7796. \r\n
    7797. Frank Demarco
    7798. \r\n
    7799. Sebastian Tennant

    7800. \r\n
    7801. Peter Landgren
    7802. \r\n
    7803. Eric Mill
    7804. \r\n
    7805. Cole Yarbor
    7806. \r\n
    7807. McGilvra Engineering
    7808. \r\n
    7809. Mark Shroyer
    7810. \r\n
    7811. Nancy Abi Root
    7812. \r\n
    7813. Max Lekomcev
    7814. \r\n
    7815. Grishkin Maxim
    7816. \r\n
    7817. Fadi Samara
    7818. \r\n
    7819. Eddie Penninkhof

    7820. \r\n
    7821. Demeshkin Ivan
    7822. \r\n
    7823. Andr�s Veres-Szentkir�lyi
    7824. \r\n
    7825. wolfgang teschner
    7826. \r\n
    7827. Sanjay Velamparambil
    7828. \r\n
    7829. Rome Reginelli
    7830. \r\n
    7831. Marco Caresia
    7832. \r\n
    7833. Christian Bergman
    7834. \r\n
    7835. Bronislaw Kozicki
    7836. \r\n
    7837. Ian Hopkinson
    7838. \r\n
    7839. guillaume percepied

    7840. \r\n
    7841. Ricardo Barberis
    7842. \r\n
    7843. Mitja Tavcar
    7844. \r\n
    7845. Miguel Vaz
    7846. \r\n
    7847. Bernard Weiss
    7848. \r\n
    7849. LUKAS KRAEHENBUEHL
    7850. \r\n
    7851. David Nelson
    7852. \r\n
    7853. Винников ÐлекÑандр
    7854. \r\n
    7855. Vlads Sukevicus
    7856. \r\n
    7857. Teemu Haapoja
    7858. \r\n
    7859. Steven Wolf

    7860. \r\n
    7861. Simon Hayward
    7862. \r\n
    7863. Shchagin Alexander
    7864. \r\n
    7865. Robert Leider
    7866. \r\n
    7867. Philip Turmel
    7868. \r\n
    7869. Oliv Schacher
    7870. \r\n
    7871. Oleg Peil
    7872. \r\n
    7873. Nicholas Clark
    7874. \r\n
    7875. Nathan Waterman
    7876. \r\n
    7877. Mark Koudritsky
    7878. \r\n
    7879. Lorna Mitchell

    7880. \r\n
    7881. Jose L Rodriguez Cuesta
    7882. \r\n
    7883. Joerg Maeder
    7884. \r\n
    7885. Joerg Baach
    7886. \r\n
    7887. Jay Nayegandhi
    7888. \r\n
    7889. Gonzalo Rojas Landsberger
    7890. \r\n
    7891. Ethan White
    7892. \r\n
    7893. Corin Froese
    7894. \r\n
    7895. Callum Donaldson
    7896. \r\n
    7897. Eric Floehr
    7898. \r\n
    7899. Roy Leith

    7900. \r\n
    7901. Richard Hindle
    7902. \r\n
    7903. ProLogiTech
    7904. \r\n
    7905. Matt Schmidt
    7906. \r\n
    7907. Lorenzo Lucherini
    7908. \r\n
    7909. Jonas Cleve
    7910. \r\n
    7911. Joel Landsteiner
    7912. \r\n
    7913. Christoph Heer
    7914. \r\n
    7915. Salvatore Ragucci
    7916. \r\n
    7917. Tobias Wellnitz
    7918. \r\n
    7919. NodePing LLC

    7920. \r\n
    7921. Charlie Clark
    7922. \r\n
    7923. Charles Cheever
    7924. \r\n
    7925. Digi Communications Ltd
    7926. \r\n
    7927. Michael Taylor
    7928. \r\n
    7929. Michal Toman
    7930. \r\n
    7931. æ™ ç„¶
    7932. \r\n
    7933. Patricia Bothwell
    7934. \r\n
    7935. James Cox
    7936. \r\n
    7937. Natalie Carrier
    7938. \r\n
    7939. Diarmuid Bourke

    7940. \r\n
    7941. Hole System
    7942. \r\n
    7943. Gregory Roodt
    7944. \r\n
    7945. Andrew Lenards
    7946. \r\n
    7947. Vicky Twomey-Lee
    7948. \r\n
    7949. Goran Širola
    7950. \r\n
    7951. Jordan Kay
    7952. \r\n
    7953. Michael Twomey
    7954. \r\n
    7955. Anthony Michael Scopatz
    7956. \r\n
    7957. Radhakrishna Dudella
    7958. \r\n
    7959. John Tough

    7960. \r\n
    7961. Taavi Burns
    7962. \r\n
    7963. Левченко Михаил
    7964. \r\n
    7965. Nemil Dalal
    7966. \r\n
    7967. John Transue
    7968. \r\n
    7969. Michael Schlottke
    7970. \r\n
    7971. Nandan Vaidya
    7972. \r\n
    7973. Kathleen LaVallee
    7974. \r\n
    7975. Justin Hugon
    7976. \r\n
    7977. Josh Roppo
    7978. \r\n
    7979. Bjarne Hansen

    7980. \r\n
    7981. Arun Visvanathan
    7982. \r\n
    7983. Pat Benson
    7984. \r\n
    7985. A.M.S.E. SPRL
    7986. \r\n
    7987. Luke Gotszling
    7988. \r\n
    7989. Shane Feely
    7990. \r\n
    7991. Joseph Reagle
    7992. \r\n
    7993. Gabriel-Girip Pirvan
    7994. \r\n
    7995. Vanitha Raja
    7996. \r\n
    7997. Palaka,Inc.
    7998. \r\n
    7999. Lysenkov Ilya

    8000. \r\n
    8001. Sally Joy Hall
    8002. \r\n
    8003. Laura Akerman
    8004. \r\n
    8005. Maru Newby
    8006. \r\n
    8007. Keith Pincombe
    8008. \r\n
    8009. Ian McGregor
    8010. \r\n
    8011. Andrey Kazantsev
    8012. \r\n
    8013. Richard Donkin
    8014. \r\n
    8015. Eric Renkey
    8016. \r\n
    8017. Deukey Lee
    8018. \r\n
    8019. Nancy Melucci

    8020. \r\n
    8021. matt venn
    8022. \r\n
    8023. Simone Accascina
    8024. \r\n
    8025. SoundLand.org
    8026. \r\n
    8027. Stefan Drees
    8028. \r\n
    8029. Jaime Marqu�nez Ferr�ndiz
    8030. \r\n
    8031. steven smith
    8032. \r\n
    8033. Doug Philips
    8034. \r\n
    8035. Max Proft
    8036. \r\n
    8037. Xin Xie
    8038. \r\n
    8039. ТурковÑкий Ðртем

    8040. \r\n
    8041. Paul An
    8042. \r\n
    8043. David Macara
    8044. \r\n
    8045. Lekomcev Max
    8046. \r\n
    8047. Christina Long
    8048. \r\n
    8049. Wingware
    8050. \r\n
    8051. Richard Weldon
    8052. \r\n
    8053. Yücel KILIÇ
    8054. \r\n
    8055. Ales Meglic
    8056. \r\n
    8057. David Cook
    8058. \r\n
    8059. Jenkins Aviles

    8060. \r\n
    8061. FreshBooks
    8062. \r\n
    8063. John M. Camara
    8064. \r\n
    8065. Deelip Chatterjee
    8066. \r\n
    8067. Enevie Mullone
    8068. \r\n
    8069. Nathan Gautrey
    8070. \r\n
    8071. Blitware Technology Inc.
    8072. \r\n
    8073. Kuang ZE HUI
    8074. \r\n
    8075. Charles Merriam
    8076. \r\n
    8077. Mark Eichin
    8078. \r\n
    8079. James Helms

    8080. \r\n
    8081. Tadhg O'Reilly
    8082. \r\n
    8083. Sam Hearn
    8084. \r\n
    8085. MATREP LIMITED
    8086. \r\n
    8087. Mark Verleg
    8088. \r\n
    8089. Bartenev Valentin
    8090. \r\n
    8091. Andrew Sutton
    8092. \r\n
    8093. Georg Stillfried
    8094. \r\n
    8095. Juan Riquelme Gonzalez
    8096. \r\n
    8097. Yoshikazu Yokotani
    8098. \r\n
    8099. Yuriy Skalko

    8100. \r\n
    8101. Susan Kleinmann
    8102. \r\n
    8103. Plasstech
    8104. \r\n
    8105. Alberto Ridolfi
    8106. \r\n
    8107. Paul Routley
    8108. \r\n
    8109. Mehdi Laouichi
    8110. \r\n
    8111. Yury Yurevich
    8112. \r\n
    8113. Olivier Duquesne
    8114. \r\n
    8115. Francisco Martin Brugue
    8116. \r\n
    8117. Stefan Schmidbauer
    8118. \r\n
    8119. Joe Short

    8120. \r\n
    8121. Justin Gomes
    8122. \r\n
    8123. Andrew Hedges
    8124. \r\n
    8125. David Lam
    8126. \r\n
    8127. Allyn Raskind
    8128. \r\n
    8129. Yuri Samsoniuk
    8130. \r\n
    8131. Emil Obermayr
    8132. \r\n
    8133. Oleksandr Khutoretskyy
    8134. \r\n
    8135. Michael Goulbourn
    8136. \r\n
    8137. Chris Alden
    8138. \r\n
    8139. Benjamin ESTRABAUD

    8140. \r\n
    8141. Alice Lieutier
    8142. \r\n
    8143. Marc Abramowitz
    8144. \r\n
    8145. Igor Yegorov
    8146. \r\n
    8147. Sebastian Mitterle
    8148. \r\n
    8149. Jae Hyun Ahn
    8150. \r\n
    8151. Michael Kallay
    8152. \r\n
    8153. Daniel Lemos
    8154. \r\n
    8155. Barry Scheepers
    8156. \r\n
    8157. Heling Yao
    8158. \r\n
    8159. Shannon Moore

    8160. \r\n
    8161. Raphael Costales
    8162. \r\n
    8163. Theodore J Dziuba
    8164. \r\n
    8165. Daniel Azhar
    8166. \r\n
    8167. VALERIE DACIW
    8168. \r\n
    8169. ruben robles
    8170. \r\n
    8171. Henry Haugland
    8172. \r\n
    8173. Florian N�ding
    8174. \r\n
    8175. Jeff Self
    8176. \r\n
    8177. Albert Kim
    8178. \r\n
    8179. DMITRY DEMBINSKY

    8180. \r\n
    8181. Onkar Bhardwaj
    8182. \r\n
    8183. Kelly Painter
    8184. \r\n
    8185. Neil Tallim
    8186. \r\n
    8187. John Woods
    8188. \r\n
    8189. Barry C. and Suzel Deer
    8190. \r\n
    8191. R David Murray
    8192. \r\n
    8193. Brad Francis
    8194. \r\n
    8195. Lindsley Daniel
    8196. \r\n
    8197. Parham Saidi
    8198. \r\n
    8199. Taher Haveliwala

    8200. \r\n
    8201. Orde Saunders
    8202. \r\n
    8203. Jaakko Vallo
    8204. \r\n
    8205. Stijn Ghesquiere
    8206. \r\n
    8207. Micah Koleoso Software
    8208. \r\n
    8209. Leonardo Santos
    8210. \r\n
    8211. John Garrett
    8212. \r\n
    8213. James Siebe
    8214. \r\n
    8215. James Morgan
    8216. \r\n
    8217. David Braude
    8218. \r\n
    8219. Daniel Simon

    8220. \r\n
    8221. Coffeesprout ICT services
    8222. \r\n
    8223. CC
    8224. \r\n
    8225. Adam Oberbeck
    8226. \r\n
    8227. Sandra Keller
    8228. \r\n
    8229. MIKHAIL KSENZOV
    8230. \r\n
    8231. Karl J Smith
    8232. \r\n
    8233. Jonas Obrist
    8234. \r\n
    8235. Irina Kats
    8236. \r\n
    8237. Christopher Roach
    8238. \r\n
    8239. brett peppe

    8240. \r\n
    8241. Leonidas Kapassakalis
    8242. \r\n
    8243. Wolfhalton.info
    8244. \r\n
    8245. Dominique Corpataux
    8246. \r\n
    8247. KenTyde
    8248. \r\n
    8249. Fachrian Nugraha
    8250. \r\n
    8251. LUTFI ALTIN
    8252. \r\n
    8253. Arach Tchoupani
    8254. \r\n
    8255. Accense Technology, Inc.
    8256. \r\n
    8257. Doug Hellmann
    8258. \r\n
    8259. Paweł Rozlach

    8260. \r\n
    8261. Zaber Technologies Inc
    8262. \r\n
    8263. Conor Cox
    8264. \r\n
    8265. Michael S Lubandi
    8266. \r\n
    8267. Exoweb
    8268. \r\n
    8269. Dan Silvers
    8270. \r\n
    8271. kevin cho
    8272. \r\n
    8273. Timothy Murphy
    8274. \r\n
    8275. Amaury Rodriguez
    8276. \r\n
    8277. Grant Olsen
    8278. \r\n
    8279. Allan Saddi

    8280. \r\n
    8281. Jonathan Sprague
    8282. \r\n
    8283. UnHa Kim
    8284. \r\n
    8285. MIGUEL A RODRIGUEZ TARNO
    8286. \r\n
    8287. Michael Lamb
    8288. \r\n
    8289. Stewart Adam
    8290. \r\n
    8291. Billy Tobon
    8292. \r\n
    8293. Igor Bodlak
    8294. \r\n
    8295. geoffrey jost
    8296. \r\n
    8297. Marc Falzon
    8298. \r\n
    8299. Chris Guidry

    8300. \r\n
    8301. Tom Johnson
    8302. \r\n
    8303. Stephen Etheridge
    8304. \r\n
    8305. Antoine Phelouzat
    8306. \r\n
    8307. Joachim Koerfer
    8308. \r\n
    8309. Simon Cross
    8310. \r\n
    8311. Michael Berens
    8312. \r\n
    8313. Domenico Wielgosz
    8314. \r\n
    8315. Cornelius K�lbel
    8316. \r\n
    8317. Blair Cameron Bonnett
    8318. \r\n
    8319. Alexandre Bergeron

    8320. \r\n
    8321. Umberto Mascia
    8322. \r\n
    8323. Fulvio Casali
    8324. \r\n
    8325. Christoph Wolf
    8326. \r\n
    8327. Christoph Schilling
    8328. \r\n
    8329. Yannick M�heut
    8330. \r\n
    8331. Josh Johnson
    8332. \r\n
    8333. Tomas Kral
    8334. \r\n
    8335. Julius Schlosburg
    8336. \r\n
    8337. Joao Batista
    8338. \r\n
    8339. Gabriel Santonja

    8340. \r\n
    8341. Fran�ois Bianco
    8342. \r\n
    8343. SRAM
    8344. \r\n
    8345. �lan Cr�stoffer e Sousa
    8346. \r\n
    8347. Зотов ÐлекÑей
    8348. \r\n
    8349. sonia el hedri
    8350. \r\n
    8351. andr� renaut
    8352. \r\n
    8353. YAKOVLEV ALEKSEY
    8354. \r\n
    8355. Timo Bezjak
    8356. \r\n
    8357. Tim Lossen
    8358. \r\n
    8359. Suren Karapetyan

    8360. \r\n
    8361. Philip Gillißen
    8362. \r\n
    8363. Omri Barel
    8364. \r\n
    8365. Niels de Leeuw
    8366. \r\n
    8367. Nicholas Paulik
    8368. \r\n
    8369. Jonathan Cole
    8370. \r\n
    8371. Jeremie tarot
    8372. \r\n
    8373. Dofri Jonsson
    8374. \r\n
    8375. Christian Becker
    8376. \r\n
    8377. Alfred Mechsner
    8378. \r\n
    8379. Alex Pulver

    8380. \r\n
    8381. Thomas Norris
    8382. \r\n
    8383. Johan Hjelm
    8384. \r\n
    8385. Jilles de Wit
    8386. \r\n
    8387. James Grant
    8388. \r\n
    8389. Damien ULRICH
    8390. \r\n
    8391. Memset Ltd
    8392. \r\n
    8393. Tom Nute
    8394. \r\n
    8395. tell-k
    8396. \r\n
    8397. Carl Decker
    8398. \r\n
    8399. Mark Lee

    8400. \r\n
    8401. Ricardo Amador
    8402. \r\n
    8403. Jason Moore
    8404. \r\n
    8405. Michael Richard
    8406. \r\n
    8407. Brian Fein
    8408. \r\n
    8409. Beni Cherniavsky-Paskin
    8410. \r\n
    8411. Daniel
    8412. \r\n
    8413. takakuwakeisoku
    8414. \r\n
    8415. Photoboof
    8416. \r\n
    8417. Austin Thornton
    8418. \r\n
    8419. Atsuo Ishimoto

    8420. \r\n
    8421. William Hayes
    8422. \r\n
    8423. Nick Pellitteri
    8424. \r\n
    8425. 张 酉夫
    8426. \r\n
    8427. Tom Bajoras, Art & Logic
    8428. \r\n
    8429. Keith Nelson
    8430. \r\n
    8431. Snoball, Inc.
    8432. \r\n
    8433. Ian Farm
    8434. \r\n
    8435. Dominique Pitt
    8436. \r\n
    8437. Rocio Askew
    8438. \r\n
    8439. RENATA BRANDAO

    8440. \r\n
    8441. Manuel wang
    8442. \r\n
    8443. Alberta Parkhurst
    8444. \r\n
    8445. BMC Atrium
    8446. \r\n
    8447. 廖 文豪
    8448. \r\n
    8449. Andrew McMillan
    8450. \r\n
    8451. Pierre-Antoine Carnot
    8452. \r\n
    8453. Alessandro Gazzetta
    8454. \r\n
    8455. Jordi Masip Riera
    8456. \r\n
    8457. pol moragas corredor
    8458. \r\n
    8459. David Glick

    8460. \r\n
    8461. Richard House
    8462. \r\n
    8463. XIONG RONGZHENG
    8464. \r\n
    8465. Thomas Elfstr�m
    8466. \r\n
    8467. Aron Ahmadia
    8468. \r\n
    8469. daniel eaton
    8470. \r\n
    8471. Ruben Robles
    8472. \r\n
    8473. Morten Lind Petersen
    8474. \r\n
    8475. Chee Chuen Sim
    8476. \r\n
    8477. BIKASH PRADHAN
    8478. \r\n
    8479. Christie Koehler

    8480. \r\n
    8481. Ben Dickson
    8482. \r\n
    8483. Malia McClure
    8484. \r\n
    8485. Nancy Broughton
    8486. \r\n
    8487. Andrew Aylward
    8488. \r\n
    8489. Hugo Bourinbayar
    8490. \r\n
    8491. Gian Luca Ruggero
    8492. \r\n
    8493. Evgeniya Larina
    8494. \r\n
    8495. Tommy Bozeman
    8496. \r\n
    8497. Ole D Jensen
    8498. \r\n
    8499. Aaron Robson

    8500. \r\n
    8501. Anna Ravenscroft
    8502. \r\n
    8503. Paul McGinnis
    8504. \r\n
    8505. Laura Pyne
    8506. \r\n
    8507. Chris McDonough
    8508. \r\n
    8509. Sutyrin Pavel
    8510. \r\n
    8511. Sean Bleier
    8512. \r\n
    8513. Jorge Alberch Gracia
    8514. \r\n
    8515. Timothy Wiseman
    8516. \r\n
    8517. Ignas ButÄ—nas
    8518. \r\n
    8519. dirk bergstrom

    8520. \r\n
    8521. Batterfly Industries
    8522. \r\n
    8523. Neil Martinko
    8524. \r\n
    8525. Tobias Diekershoff
    8526. \r\n
    8527. Owen Williams
    8528. \r\n
    8529. Ngoc Nguyen
    8530. \r\n
    8531. YAKHONTOV DMITRY
    8532. \r\n
    8533. Jacques de Selliers
    8534. \r\n
    8535. Thomas Guettler
    8536. \r\n
    8537. Thomas Wallutis
    8538. \r\n
    8539. Daniel Michelon De Carli

    8540. \r\n
    8541. Wilhelm Brasch
    8542. \r\n
    8543. Javier Alani Ogea
    8544. \r\n
    8545. matthew attwood
    8546. \r\n
    8547. Seshadri Raja
    8548. \r\n
    8549. Lukas Vacek
    8550. \r\n
    8551. LibreStickers
    8552. \r\n
    8553. JUNJI NAKANISHI
    8554. \r\n
    8555. Shinya Okano
    8556. \r\n
    8557. Alef Farah
    8558. \r\n
    8559. Eric Werth

    8560. \r\n
    8561. Shashank Sharma
    8562. \r\n
    8563. Michael D. Healy
    8564. \r\n
    8565. Vanja Cvelbar
    8566. \r\n
    8567. Karl Barkei
    8568. \r\n
    8569. Mike Albert
    8570. \r\n
    8571. Andrey Popp
    8572. \r\n
    8573. Brad Lumley
    8574. \r\n
    8575. Daniel Rill
    8576. \r\n
    8577. Szymon Krzanowski
    8578. \r\n
    8579. Christian Lpez Alarcn

    8580. \r\n
    8581. Benjamin Smith
    8582. \r\n
    8583. Corey Goldberg
    8584. \r\n
    8585. Roberto Gal
    8586. \r\n
    8587. Ioannis Krommydas
    8588. \r\n
    8589. Ferdinand Silva
    8590. \r\n
    8591. Charles Norton
    8592. \r\n
    8593. Pam Eveland
    8594. \r\n
    8595. PEDRO JARA VIGUERAS
    8596. \r\n
    8597. Nate Swanberg
    8598. \r\n
    8599. Wolfgang Doll

    8600. \r\n
    8601. Юдинцев Владимир
    8602. \r\n
    8603. Alex Morega
    8604. \r\n
    8605. Kurtis Rader
    8606. \r\n
    8607. Alan Cima
    8608. \r\n
    8609. Benoit Delville
    8610. \r\n
    8611. Tomer Nosrati
    8612. \r\n
    8613. Leo VAN DER VELDEN
    8614. \r\n
    8615. Luke Tymowski
    8616. \r\n
    8617. Kunal Gupta
    8618. \r\n
    8619. Lawrence Hayes

    8620. \r\n
    8621. Ryan Gorman
    8622. \r\n
    8623. Matt Terry
    8624. \r\n
    8625. Thomas Peikert
    8626. \r\n
    8627. Claudio Campos
    8628. \r\n
    8629. Ole Wengler
    8630. \r\n
    8631. Mary Chipman
    8632. \r\n
    8633. rama krishna kapilavai
    8634. \r\n
    8635. Chingis Dugarzhapov
    8636. \r\n
    8637. Ammar Khaku
    8638. \r\n
    8639. Vern Ceder

    8640. \r\n
    8641. SafPlusPlus
    8642. \r\n
    8643. Rich Signell
    8644. \r\n
    8645. Robert Dennison
    8646. \r\n
    8647. Timmy Yee
    8648. \r\n
    8649. Jayne wang
    8650. \r\n
    8651. Zlatko Duric
    8652. \r\n
    8653. Marlon van der Linde
    8654. \r\n
    8655. Jacob Perkins
    8656. \r\n
    8657. Diogo Pinto
    8658. \r\n
    8659. Yoshifumi Yamaguchi

    8660. \r\n
    8661. Mark Redar
    8662. \r\n
    8663. 刘 原旭
    8664. \r\n
    8665. ÐовоÑелов Ðнтон
    8666. \r\n
    8667. Python Spa
    8668. \r\n
    8669. KOLTIGUN ANTON
    8670. \r\n
    8671. Gareth Sime
    8672. \r\n
    8673. Alexandru Budin
    8674. \r\n
    8675. Nick Semenkovich (semenko)
    8676. \r\n
    8677. Kamil Sarkowicz
    8678. \r\n
    8679. Muhametfazilovich Radik

    8680. \r\n
    8681. Pieter-Jan Dewitte
    8682. \r\n
    8683. Ariel Ruiz
    8684. \r\n
    8685. TIMOTHY TENNYSON
    8686. \r\n
    8687. Peter Sutherland
    8688. \r\n
    8689. Mauricio Correa
    8690. \r\n
    8691. BERNARD Olivier
    8692. \r\n
    8693. EDUARDO LOPEZ SANCHEZ
    8694. \r\n
    8695. Barry Marshall
    8696. \r\n
    8697. Nishant Mehta
    8698. \r\n
    8699. RIPE NCC

    8700. \r\n
    8701. è¾» 真å¾
    8702. \r\n
    8703. S�bastien Capt
    8704. \r\n
    8705. Jonathan Schneider
    8706. \r\n
    8707. Kinev Alexey Vadimovich
    8708. \r\n
    8709. Yoren GAFFARY
    8710. \r\n
    8711. Marla Parker
    8712. \r\n
    8713. Gladys Michaels
    8714. \r\n
    8715. Robert Edwards
    8716. \r\n
    8717. Gilles Adda
    8718. \r\n
    8719. Carlos Mazon

    8720. \r\n
    8721. Paul W Stein
    8722. \r\n
    8723. EuroPython Conference Dinner (sponsored massage)
    8724. \r\n
    8725. Sacred Sircle Marketing
    8726. \r\n
    8727. Mary Frances Hunter
    8728. \r\n
    8729. House of Laudanum, Australia
    8730. \r\n
    8731. Konstantin Kondrashov
    8732. \r\n
    8733. Christoph Heitkamp
    8734. \r\n
    8735. Matt Hagy
    8736. \r\n
    8737. Brent Brian
    8738. \r\n
    8739. Jasper Visser

    8740. \r\n
    8741. Bartosz Debski
    8742. \r\n
    8743. john mitchell
    8744. \r\n
    8745. Carlo Pirchio
    8746. \r\n
    8747. Andriy Tarasenko
    8748. \r\n
    8749. MAN YONG LEE
    8750. \r\n
    8751. Edgardo Rafael Medrano
    8752. \r\n
    8753. Nitkalya Wiriyanuparb
    8754. \r\n
    8755. Thomas Hartmann
    8756. \r\n
    8757. Paul Nelson
    8758. \r\n
    8759. Oleg Kushynskyy

    8760. \r\n
    8761. Lo�c Grobol
    8762. \r\n
    8763. KOROSTELEV TIMOFEY
    8764. \r\n
    8765. Ivan Brkanac
    8766. \r\n
    8767. GELASE MANTSIELA
    8768. \r\n
    8769. Clive van Hilten
    8770. \r\n
    8771. Роман Фартушный
    8772. \r\n
    8773. Миронов ÐлекÑей
    8774. \r\n
    8775. КорженевÑкий Ðртём
    8776. \r\n
    8777. Демидов Ðндрей
    8778. \r\n
    8779. Vladislav Zorov

    8780. \r\n
    8781. Vincent Mangelschots
    8782. \r\n
    8783. Tilmann Gläser
    8784. \r\n
    8785. Thomas B�cker
    8786. \r\n
    8787. Stian Drobak
    8788. \r\n
    8789. Steven Young
    8790. \r\n
    8791. Stephen Gray
    8792. \r\n
    8793. Samuel Bri�re
    8794. \r\n
    8795. Przemek Bryndza
    8796. \r\n
    8797. Pierre Virgile Prinetti
    8798. \r\n
    8799. Nicolas H�ft

    8800. \r\n
    8801. Mohammad Atif
    8802. \r\n
    8803. Matthias Prager
    8804. \r\n
    8805. Kęstutis Mizara
    8806. \r\n
    8807. Konvalyuk Anton
    8808. \r\n
    8809. Knut Remi L�vli
    8810. \r\n
    8811. Kirienko Denis
    8812. \r\n
    8813. Kevin Renskers
    8814. \r\n
    8815. Keith Astoria
    8816. \r\n
    8817. Kaloyan Raev
    8818. \r\n
    8819. Jonathan Brandvein

    8820. \r\n
    8821. HookUpPower
    8822. \r\n
    8823. Henrique Pereira
    8824. \r\n
    8825. Gary Jarocha
    8826. \r\n
    8827. Fabio Natali
    8828. \r\n
    8829. Emil Nicolaie Perhinschi
    8830. \r\n
    8831. Daniele Palmese
    8832. \r\n
    8833. Clifford Lindsay
    8834. \r\n
    8835. Andre Peeters
    8836. \r\n
    8837. Lee Cannon
    8838. \r\n
    8839. Vivek Ramavajjala

    8840. \r\n
    8841. Sadomov Evgeny
    8842. \r\n
    8843. Nikolaus Rath
    8844. \r\n
    8845. Michael Grazebrook
    8846. \r\n
    8847. Matthew Cahn
    8848. \r\n
    8849. Christian Romero
    8850. \r\n
    8851. Barry Norton
    8852. \r\n
    8853. Alessandro Fanna
    8854. \r\n
    8855. Mark Kovach
    8856. \r\n
    8857. Jose Hasemann
    8858. \r\n
    8859. Kevin Davenport

    8860. \r\n
    8861. Brian T. Edgar
    8862. \r\n
    8863. Andreas Haerpfer
    8864. \r\n
    8865. Edward Swartz
    8866. \r\n
    8867. nazmi Postacioglu
    8868. \r\n
    8869. J.T. Presta
    8870. \r\n
    8871. Юрий ЛаÑтов
    8872. \r\n
    8873. Ken McNamara
    8874. \r\n
    8875. Michael Etts
    8876. \r\n
    8877. Kirill Issakov
    8878. \r\n
    8879. Dektyarev Mikhail

    8880. \r\n
    8881. Matthew Goodman
    8882. \r\n
    8883. bill hackler
    8884. \r\n
    8885. Team 2ch
    8886. \r\n
    8887. pycon.ca
    8888. \r\n
    8889. Aleksandrs Orlovs
    8890. \r\n
    8891. Dilum Aluthge
    8892. \r\n
    8893. Tobias Ammann
    8894. \r\n
    8895. Ben Regenspan
    8896. \r\n
    8897. Michal Gajda
    8898. \r\n
    8899. Mansour Farghaly

    8900. \r\n
    8901. Michael Bachelder
    8902. \r\n
    8903. Joshua Sorenson
    8904. \r\n
    8905. Paul Gorelick
    8906. \r\n
    8907. kracekumar
    8908. \r\n
    8909. Monica He
    8910. \r\n
    8911. Попп Сергей
    8912. \r\n
    8913. Ezio Melotti
    8914. \r\n
    8915. James Dennis
    8916. \r\n
    8917. Leif Hunneman
    8918. \r\n
    8919. Edward Hebert Jr

    8920. \r\n
    8921. Johann Markl
    8922. \r\n
    8923. Asier Zorrilla Lozano
    8924. \r\n
    8925. noam flam
    8926. \r\n
    8927. Kapil Thangavelu
    8928. \r\n
    8929. Justin High
    8930. \r\n
    8931. Charles King
    8932. \r\n
    8933. mtgeek
    8934. \r\n
    8935. Massimo Di Pierro
    8936. \r\n
    8937. Fred Cirera
    8938. \r\n
    8939. Gabriele Inghirami

    8940. \r\n
    8941. Michael Steffeck
    8942. \r\n
    8943. Nikolay Khodov
    8944. \r\n
    8945. Toby Ho
    8946. \r\n
    8947. Daniel Tehranian
    8948. \r\n
    8949. Phil Hardaker
    8950. \r\n
    8951. Edward Blake
    8952. \r\n
    8953. Rodrigo Hoffmann Domingos
    8954. \r\n
    8955. TANESHA JORDAN
    8956. \r\n
    8957. Ohio Valley Energy
    8958. \r\n
    8959. Nordic Software, Inc.

    8960. \r\n
    8961. Sophia Collier
    8962. \r\n
    8963. Cristian Marinescu
    8964. \r\n
    8965. Kangtao Chuang
    8966. \r\n
    8967. Ren� RIBAUD
    8968. \r\n
    8969. E. Blake Peterson
    8970. \r\n
    8971. Roman Andreev
    8972. \r\n
    8973. Mikhaylo Gavrylov
    8974. \r\n
    8975. Miguel Angel Martinez Hernandez
    8976. \r\n
    8977. Gabriel
    8978. \r\n
    8979. Minesh B. Amin

    8980. \r\n
    8981. 今津 充正
    8982. \r\n
    8983. Mirus Research
    8984. \r\n
    8985. Joseph Kottke
    8986. \r\n
    8987. DAIGO TOYOTA
    8988. \r\n
    8989. Marcelo de Sena Lacerda
    8990. \r\n
    8991. Jan Blankenburgh
    8992. \r\n
    8993. Michael Rigdon
    8994. \r\n
    8995. SUNNY K
    8996. \r\n
    8997. Kyran Dale
    8998. \r\n
    8999. Albert O'Connor

    9000. \r\n
    9001. Matthew Blomquist
    9002. \r\n
    9003. æŽ ç¿ç¿
    9004. \r\n
    9005. Seppo kivij�rvi
    9006. \r\n
    9007. ExoAnalytic Solutions
    9008. \r\n
    9009. Luca Bergamini
    9010. \r\n
    9011. Berker PeksaÄŸ
    9012. \r\n
    9013. Kelsey Hightower
    9014. \r\n
    9015. Michael Dowdy
    9016. \r\n
    9017. Gregus Mihai
    9018. \r\n
    9019. Scott Bucher

    9020. \r\n
    9021. Tomasz Paczkowski
    9022. \r\n
    9023. Aleksandra Sendecka
    9024. \r\n
    9025. Richard Leland
    9026. \r\n
    9027. James Farrimond
    9028. \r\n
    9029. PARIS COLLINS
    9030. \r\n
    9031. Nishant Puranik
    9032. \r\n
    9033. Pamela Stephens
    9034. \r\n
    9035. Michal Stankoviansky
    9036. \r\n
    9037. Nicholas Weinhold
    9038. \r\n
    9039. Lyle Scott III

    9040. \r\n
    9041. James Garrison
    9042. \r\n
    9043. Sidney Cave
    9044. \r\n
    9045. Hishiv Shah
    9046. \r\n
    9047. Eric Walstad
    9048. \r\n
    9049. Jan Hapala
    9050. \r\n
    9051. Sebastian K�hler
    9052. \r\n
    9053. John D Blischak
    9054. \r\n
    9055. robert king
    9056. \r\n
    9057. Michael Garba
    9058. \r\n
    9059. Brian Schreffler

    9060. \r\n
    9061. Adebayo Opadeyi
    9062. \r\n
    9063. dechico marc
    9064. \r\n
    9065. Marissa Huang
    9066. \r\n
    9067. David Ripton
    9068. \r\n
    9069. Wei Wei
    9070. \r\n
    9071. Uriel Fernando Sandoval P�rez
    9072. \r\n
    9073. Don Bush
    9074. \r\n
    9075. Miju Han
    9076. \r\n
    9077. Terry Bates
    9078. \r\n
    9079. Wolfgang Blickle

    9080. \r\n
    9081. Vihaan Majety
    9082. \r\n
    9083. Matias Bustamante
    9084. \r\n
    9085. Kevin Crothers
    9086. \r\n
    9087. Konstantin Scheumann
    9088. \r\n
    9089. Joschka Wanke
    9090. \r\n
    9091. Eduardo San Miguel Garcia
    9092. \r\n
    9093. Ian Wilson
    9094. \r\n
    9095. Myrna Morales
    9096. \r\n
    9097. Michiel Bakker
    9098. \r\n
    9099. sean bleier

    9100. \r\n
    9101. Megan Means
    9102. \r\n
    9103. Dennis Jelinek
    9104. \r\n
    9105. Aeracode
    9106. \r\n
    9107. ООО \"СинÐпп Софтвер\"
    9108. \r\n
    9109. Marvin Rabe
    9110. \r\n
    9111. Lau Wai Chung
    9112. \r\n
    9113. yasemen karakoc
    9114. \r\n
    9115. clement roblot
    9116. \r\n
    9117. Vlad Iulian Schnakovszki
    9118. \r\n
    9119. Tino Mehlmann

    9120. \r\n
    9121. Rene Pilz
    9122. \r\n
    9123. Max Eliaser
    9124. \r\n
    9125. Mattias Lundberg
    9126. \r\n
    9127. Matteo Pasotti
    9128. \r\n
    9129. James Paige
    9130. \r\n
    9131. Felix Pleșoianu
    9132. \r\n
    9133. Fang Yang
    9134. \r\n
    9135. Eleonor Vinicius Dudel Mayer
    9136. \r\n
    9137. Bogdan Vatulya
    9138. \r\n
    9139. julien faivre

    9140. \r\n
    9141. Yuzhi Liu
    9142. \r\n
    9143. Thomas Sch�ssler
    9144. \r\n
    9145. Marc Haase
    9146. \r\n
    9147. Maurycy Pietrzak
    9148. \r\n
    9149. Threepress Consulting Inc.
    9150. \r\n
    9151. Beau Lyddon
    9152. \r\n
    9153. EDUARDO TADEU FELIPE LEMPE
    9154. \r\n
    9155. Alexander Moiseenko
    9156. \r\n
    9157. Robert Love
    9158. \r\n
    9159. Rodney Hardrick

    9160. \r\n
    9161. Donald Curtis
    9162. \r\n
    9163. Dan Stephenson
    9164. \r\n
    9165. grizlupo
    9166. \r\n
    9167. Patrik Hersenius
    9168. \r\n
    9169. Orne Brocaar
    9170. \r\n
    9171. Chris Kelly
    9172. \r\n
    9173. Uniblue Systems Ltd
    9174. \r\n
    9175. Altas Web Design
    9176. \r\n
    9177. Dan Medley
    9178. \r\n
    9179. K Hart Insight2Action

    9180. \r\n
    9181. Florian Vogt
    9182. \r\n
    9183. Guillermo Barreiro
    9184. \r\n
    9185. Inspection Help, LLC
    9186. \r\n
    9187. Yang Zhaohui
    9188. \r\n
    9189. julio berdote
    9190. \r\n
    9191. Matt Lott
    9192. \r\n
    9193. Devin Jacobs
    9194. \r\n
    9195. Jim Hess
    9196. \r\n
    9197. Gwen Conley
    9198. \r\n
    9199. Kent Churchill

    9200. \r\n
    9201. In Spec, Inc.
    9202. \r\n
    9203. GmonE! GPS Tracking System
    9204. \r\n
    9205. Ronald
    9206. \r\n
    9207. Mike Tracy
    9208. \r\n
    9209. Hakan Ozkirim
    9210. \r\n
    9211. imo.im
    9212. \r\n
    9213. pakingan jeffrey
    9214. \r\n
    9215. Robert Liverman
    9216. \r\n
    9217. Anurag Panda
    9218. \r\n
    9219. Chi F. Chen

    9220. \r\n
    9221. baba kane
    9222. \r\n
    9223. Christian Metz
    9224. \r\n
    9225. Yixi Zhang
    9226. \r\n
    9227. Python Ireland
    9228. \r\n
    9229. josef hoffman
    9230. \r\n
    9231. shelia ash
    9232. \r\n
    9233. CodeModLabs LLC
    9234. \r\n
    9235. Macizoft
    9236. \r\n
    9237. Iman Haamid
    9238. \r\n
    9239. Sharan Sharalaya

    9240. \r\n
    9241. agathe battestini
    9242. \r\n
    9243. Tom Bennett
    9244. \r\n
    9245. bspinor
    9246. \r\n
    9247. Paul Scherf
    9248. \r\n
    9249. Wilhelm Kleiminger
    9250. \r\n
    9251. Allen George
    9252. \r\n
    9253. Steven Grubb
    9254. \r\n
    9255. Karl Schleicher
    9256. \r\n
    9257. Chen Ruo Fei
    9258. \r\n
    9259. Russell Folks

    9260. \r\n
    9261. 稲田 直哉
    9262. \r\n
    9263. Jeffrey Meyer
    9264. \r\n
    9265. JPBX Systems Solutions
    9266. \r\n
    9267. Paul Felix
    9268. \r\n
    9269. Eran Rechter
    9270. \r\n
    9271. Campbell-Lange Workshop
    9272. \r\n
    9273. David O'Brennan
    9274. \r\n
    9275. Adobe Inc. Matching Gift
    9276. \r\n
    9277. Martin Eggen
    9278. \r\n
    9279. Brian Howell

    9280. \r\n
    9281. 森 å¥ä¸€
    9282. \r\n
    9283. Suzuki Tomohiro
    9284. \r\n
    9285. Matthew Marshall
    9286. \r\n
    9287. Konstantin Tretyakov
    9288. \r\n
    9289. Ernest Oppetit
    9290. \r\n
    9291. The Power of 9
    9292. \r\n
    9293. Suzie Etchart
    9294. \r\n
    9295. 今井 一幾
    9296. \r\n
    9297. Christopher Grebs
    9298. \r\n
    9299. Juan David Gomez

    9300. \r\n
    9301. Clinton James
    9302. \r\n
    9303. PyConUK (sponsored massage)
    9304. \r\n
    9305. saurav agarwal
    9306. \r\n
    9307. John Shaffstall
    9308. \r\n
    9309. Bill Zingler
    9310. \r\n
    9311. Nick Joyce
    9312. \r\n
    9313. Marek Lach
    9314. \r\n
    9315. Konstantin Mosesov
    9316. \r\n
    9317. Nilovna Bascunan-Vasquez
    9318. \r\n
    9319. Sablin Dmitry

    9320. \r\n
    9321. Marian Sigler
    9322. \r\n
    9323. Jared Nuzzolillo
    9324. \r\n
    9325. David Vannucci
    9326. \r\n
    9327. Ari Flinkman
    9328. \r\n
    9329. Erland Nordin
    9330. \r\n
    9331. MBA Sciences, Inc
    9332. \r\n
    9333. Xiang Xin Luo
    9334. \r\n
    9335. Markus Wulff
    9336. \r\n
    9337. Sherman Wilcox
    9338. \r\n
    9339. Manfred Moitzi

    9340. \r\n
    9341. ANDRE ROBERGE
    9342. \r\n
    9343. Huan Do
    9344. \r\n
    9345. Kyle Stephens
    9346. \r\n
    9347. Philip Dexter
    9348. \r\n
    9349. Kenneth Platt
    9350. \r\n
    9351. Eduardo Ribeiro
    9352. \r\n
    9353. Bob Ippolito
    9354. \r\n
    9355. Cedric Drolet
    9356. \r\n
    9357. Arian van Dorsten
    9358. \r\n
    9359. ALBERTAS PADRIEZAS

    9360. \r\n
    9361. Varghese Philip
    9362. \r\n
    9363. Richard Ross
    9364. \r\n
    9365. Michael Albert
    9366. \r\n
    9367. Alessandro de Manzano
    9368. \r\n
    9369. Junghoon Kim
    9370. \r\n
    9371. Arezqui Belaid
    9372. \r\n
    9373. anurak hansuk
    9374. \r\n
    9375. RAVI KRISHNAPPA
    9376. \r\n
    9377. John Szakmeister
    9378. \r\n
    9379. Michael Groh

    9380. \r\n
    9381. Tracy Hinds
    9382. \r\n
    9383. Ryan Franklin
    9384. \r\n
    9385. wang xiao
    9386. \r\n
    9387. Ellina Petukhova
    9388. \r\n
    9389. NEIL PASSAGE
    9390. \r\n
    9391. DistroWatch.com
    9392. \r\n
    9393. Penny Rand
    9394. \r\n
    9395. tony cervantes
    9396. \r\n
    9397. Yuichi Nishiyama
    9398. \r\n
    9399. Atlantes Global Ltd

    9400. \r\n
    9401. RedHeLL-Hosting
    9402. \r\n
    9403. BitAlyze ApS Morten Zilmer
    9404. \r\n
    9405. Warren Thom
    9406. \r\n
    9407. Kai Groner
    9408. \r\n
    9409. Robert Morton
    9410. \r\n
    9411. Evan Phelan
    9412. \r\n
    9413. Saketh Bhamidipati
    9414. \r\n
    9415. Carlos Valiente
    9416. \r\n
    9417. Johan Lammens
    9418. \r\n
    9419. Fernando Fco Toro Rueda

    9420. \r\n
    9421. Alext
    9422. \r\n
    9423. Pablo Recio Quijano
    9424. \r\n
    9425. Dillon Korman
    9426. \r\n
    9427. Andrew Poynter
    9428. \r\n
    9429. OSMININ MAKSIM
    9430. \r\n
    9431. Theodore Pollari
    9432. \r\n
    9433. Gregory Bolstad
    9434. \r\n
    9435. David Loop
    9436. \r\n
    9437. Brett Anderson
    9438. \r\n
    9439. Randy Wiser

    9440. \r\n
    9441. John Eiler
    9442. \r\n
    9443. SATOSHI ARAI
    9444. \r\n
    9445. Mirco Tracolli
    9446. \r\n
    9447. Simon Ellis
    9448. \r\n
    9449. Rushi Agrawal
    9450. \r\n
    9451. Douglas Ireton
    9452. \r\n
    9453. Juan Pablo Ca�as Arboleda
    9454. \r\n
    9455. Bertha Jacobs
    9456. \r\n
    9457. chris harris
    9458. \r\n
    9459. Johnny Franks

    9460. \r\n
    9461. Oleg Zverkov
    9462. \r\n
    9463. Jonathan B. David
    9464. \r\n
    9465. Douglas Hellmann
    9466. \r\n
    9467. S7 Labs
    9468. \r\n
    9469. Jeffrey Jones
    9470. \r\n
    9471. Arjun Chennu
    9472. \r\n
    9473. Robin Pruss
    9474. \r\n
    9475. Samuel Safyan
    9476. \r\n
    9477. Pierce McMartin
    9478. \r\n
    9479. Wendal Chen

    9480. \r\n
    9481. Roger Hamlett
    9482. \r\n
    9483. Harold Bordy
    9484. \r\n
    9485. Walker Hale IV
    9486. \r\n
    9487. John Sabini
    9488. \r\n
    9489. Uday Kumar
    9490. \r\n
    9491. Jeffery Self
    9492. \r\n
    9493. Alexey Zinoviev
    9494. \r\n
    9495. Andrew Godwin
    9496. \r\n
    9497. John Benediktsson
    9498. \r\n
    9499. Paolo Scuro

    9500. \r\n
    9501. Man-Yong Lee
    9502. \r\n
    9503. JET
    9504. \r\n
    9505. Amit Belani
    9506. \r\n
    9507. john parrott
    9508. \r\n
    9509. Will Becker
    9510. \r\n
    9511. alex
    9512. \r\n
    9513. Jack Hagge
    9514. \r\n
    9515. SIDNEY WALKER
    9516. \r\n
    9517. Vancouver Python and Zope User Group
    9518. \r\n
    9519. H�gni Wennerstr�m

    9520. \r\n
    9521. S�bastien Volle
    9522. \r\n
    9523. CHARALAMPOS SAPERAS
    9524. \r\n
    9525. Alois Kuu Poodle
    9526. \r\n
    9527. SteepRock
    9528. \r\n
    9529. Juju, Inc.
    9530. \r\n
    9531. Andrea Barberio
    9532. \r\n
    9533. Hiroshi Yajima
    9534. \r\n
    9535. Aditya Joshi
    9536. \r\n
    9537. RAWSHAN MURADOV
    9538. \r\n
    9539. aonlazio

    9540. \r\n
    9541. Stephen Whalley
    9542. \r\n
    9543. INIKUP
    9544. \r\n
    9545. Marian Borca
    9546. \r\n
    9547. Reynold Chery
    9548. \r\n
    9549. Robert Hawk
    9550. \r\n
    9551. Eli Bendersky
    9552. \r\n
    9553. John Cox
    9554. \r\n
    9555. J. Andrew Poth
    9556. \r\n
    9557. Chen YenHung
    9558. \r\n
    9559. Hanover Technology Group

    9560. \r\n
    9561. james adams
    9562. \r\n
    9563. Windel Bouwman
    9564. \r\n
    9565. Rune Strand
    9566. \r\n
    9567. Ivo Danihelka
    9568. \r\n
    9569. Oyster Hotel Reviews
    9570. \r\n
    9571. Matt Palmer
    9572. \r\n
    9573. Christian Rocheleau
    9574. \r\n
    9575. Mario Fernandez
    9576. \r\n
    9577. Hariharan Jayaram
    9578. \r\n
    9579. Jordi Masip i Riera

    9580. \r\n
    9581. Michael Bauer
    9582. \r\n
    9583. Interet Corporation
    9584. \r\n
    9585. Brian Gershon
    9586. \r\n
    9587. Andre Bellafronte
    9588. \r\n
    9589. Cynthia Andre
    9590. \r\n
    9591. Andrew Casias
    9592. \r\n
    9593. H�kan Terelius
    9594. \r\n
    9595. Jason Whitlark
    9596. \r\n
    9597. Bogdan Luca
    9598. \r\n
    9599. Nicola Larosa

    9600. \r\n
    9601. Antonio Pedrosa
    9602. \r\n
    9603. Peter Scheie
    9604. \r\n
    9605. Benjamin Li
    9606. \r\n
    9607. Kenny Requa
    9608. \r\n
    9609. Jinsong Wu
    9610. \r\n
    9611. Jim Wilcoxson
    9612. \r\n
    9613. Quincy Yarde
    9614. \r\n
    9615. Mattias Sundblad
    9616. \r\n
    9617. Juan Pedro Fisanotti
    9618. \r\n
    9619. Jan-Jaap Driessen

    9620. \r\n
    9621. Matthew Lewis
    9622. \r\n
    9623. Jon Levy
    9624. \r\n
    9625. Noah Aklilu
    9626. \r\n
    9627. Lyles Art Gallery
    9628. \r\n
    9629. Roman Susi
    9630. \r\n
    9631. James Tauber
    9632. \r\n
    9633. David Turvene
    9634. \r\n
    9635. Brian Lyttle
    9636. \r\n
    9637. Andrea Pelizzari
    9638. \r\n
    9639. David J Harris

    9640. \r\n
    9641. Chad Cooper
    9642. \r\n
    9643. Roger Vossler
    9644. \r\n
    9645. francesco berni
    9646. \r\n
    9647. Fredrik Ohlin
    9648. \r\n
    9649. Levi Haupert
    9650. \r\n
    9651. Dan Jacka
    9652. \r\n
    9653. Douglas Budd
    9654. \r\n
    9655. 邹 业盛
    9656. \r\n
    9657. Levi Culver
    9658. \r\n
    9659. Stanislav Bazhenov

    9660. \r\n
    9661. Vasiliy Fomin
    9662. \r\n
    9663. Alan Drozd
    9664. \r\n
    9665. Dmitry Denisiuk
    9666. \r\n
    9667. Skylar Saveland
    9668. \r\n
    9669. Lex Lindsey
    9670. \r\n
    9671. РаевÑкий Кирилл
    9672. \r\n
    9673. Mohammad Yusuf Syafroni Karim
    9674. \r\n
    9675. Mikita Hradovich
    9676. \r\n
    9677. Syd Logan
    9678. \r\n
    9679. alessio garofalo

    9680. \r\n
    9681. Vlad Ionescu
    9682. \r\n
    9683. bucho
    9684. \r\n
    9685. Muharem Hrnjadovic
    9686. \r\n
    9687. carlos coronado
    9688. \r\n
    9689. Arturo Medina Jim�nez
    9690. \r\n
    9691. Andr Augusto
    9692. \r\n
    9693. Ðндрей ÐÑ€Ñенин
    9694. \r\n
    9695. Nicholas Joyce
    9696. \r\n
    9697. Mike Bauer
    9698. \r\n
    9699. Roger Powell

    9700. \r\n
    9701. Jose Iv�n L�pez Su�rez
    9702. \r\n
    9703. Alex&Anna
    9704. \r\n
    9705. å§œ é¹
    9706. \r\n
    9707. Juan Velasco Mieses
    9708. \r\n
    9709. Benjamin H Smith
    9710. \r\n
    9711. Mark Krautheim
    9712. \r\n
    9713. Tres Seaver
    9714. \r\n
    9715. Two Sigma Investments, LLC
    9716. \r\n
    9717. 曹 阳
    9718. \r\n
    9719. Ashley Kirk

    9720. \r\n
    9721. Peyroux J.Alexandre
    9722. \r\n
    9723. KC Johnson
    9724. \r\n
    9725. Vagif Hasanov
    9726. \r\n
    9727. Rene Schweiger
    9728. \r\n
    9729. Jesper Bernoee
    9730. \r\n
    9731. Jason Robinson
    9732. \r\n
    9733. Benny Bergsell
    9734. \r\n
    9735. Enrique Davis
    9736. \r\n
    9737. Manuel Verlaat
    9738. \r\n
    9739. Hassan Zawiah

    9740. \r\n
    9741. Deniz Kural
    9742. \r\n
    9743. Chris Sederqvist
    9744. \r\n
    9745. George Sakkis
    9746. \r\n
    9747. Rezha Julio Arly Pradana
    9748. \r\n
    9749. Ben Charrow
    9750. \r\n
    9751. Jens Meyer
    9752. \r\n
    9753. Fire Crow
    9754. \r\n
    9755. Michael Foord
    9756. \r\n
    9757. Jorge Rivero
    9758. \r\n
    9759. Luca Sabatini

    9760. \r\n
    9761. Kevin Wang
    9762. \r\n
    9763. Babak Badaei
    9764. \r\n
    9765. Andrew Webster
    9766. \r\n
    9767. Akira Kitada
    9768. \r\n
    9769. Aggie L. Choi
    9770. \r\n
    9771. Eric Natolini
    9772. \r\n
    9773. Hans-Georg Boden
    9774. \r\n
    9775. Charles Miller
    9776. \r\n
    9777. Kevin Hazzard
    9778. \r\n
    9779. Michael Bentley

    9780. \r\n
    9781. Adrian Vazquez
    9782. \r\n
    9783. Szilveszter Farkas
    9784. \r\n
    9785. Alex Dreyer
    9786. \r\n
    9787. Chris Petrich
    9788. \r\n
    9789. Till Keyling
    9790. \r\n
    9791. atusi nakamura
    9792. \r\n
    9793. tjin bui min
    9794. \r\n
    9795. Brian Loomis
    9796. \r\n
    9797. Evgeny Fadeev
    9798. \r\n
    9799. Geoffrey Hing

    9800. \r\n
    9801. Ankur Kumar
    9802. \r\n
    9803. Phil Curtiss
    9804. \r\n
    9805. КонÑтантин ЗемлÑк
    9806. \r\n
    9807. Edwin van der Velden
    9808. \r\n
    9809. SourceForge, Inc.
    9810. \r\n
    9811. Kurt Grandis
    9812. \r\n
    9813. Noah Gift
    9814. \r\n
    9815. Neil Joshi
    9816. \r\n
    9817. Gene
    9818. \r\n
    9819. Raidlogs

    9820. \r\n
    9821. David Garc�a Alonso
    9822. \r\n
    9823. William Roscoe
    9824. \r\n
    9825. Allebrum
    9826. \r\n
    9827. Heather Spealman
    9828. \r\n
    9829. Sardorbek Pulatov
    9830. \r\n
    9831. NAOFUMI SAKAGUCHI
    9832. \r\n
    9833. Lauren C. Dandridge
    9834. \r\n
    9835. Cerise Cauthron
    9836. \r\n
    9837. Joelle BRUEL
    9838. \r\n
    9839. Paolo

    9840. \r\n
    9841. Eric Sorensen
    9842. \r\n
    9843. Dirkjan Ochtman
    9844. \r\n
    9845. Maximillian Dornseif
    9846. \r\n
    9847. PythonForum.Org
    9848. \r\n
    9849. Pallav Negi
    9850. \r\n
    9851. Praveen I V
    9852. \r\n
    9853. Steve O'Brien
    9854. \r\n
    9855. Cedric Small
    9856. \r\n
    9857. Dawns
    9858. \r\n
    9859. JIN HYEON WOO

    9860. \r\n
    9861. Renato Pereira
    9862. \r\n
    9863. Billy Boone
    9864. \r\n
    9865. Charles Hollingsworth
    9866. \r\n
    9867. Woosha IT
    9868. \r\n
    9869. Scott Turnbull
    9870. \r\n
    9871. Andrew Garner
    9872. \r\n
    9873. Kaan AKSIT
    9874. \r\n
    9875. Made in Hawaii USA
    9876. \r\n
    9877. Michael Stubbs
    9878. \r\n
    9879. Christopher Blunck

    9880. \r\n
    9881. Tengiz Sharafiev
    9882. \r\n
    9883. Carrie Black
    9884. \r\n
    9885. Stepan Wagner
    9886. \r\n
    9887. Matthew Sacks
    9888. \r\n
    9889. Kristaps Buliņš
    9890. \r\n
    9891. Stephen Cooper
    9892. \r\n
    9893. Terry Phillips
    9894. \r\n
    9895. Mary Pelepchuk
    9896. \r\n
    9897. Lesli Olding
    9898. \r\n
    9899. Artem Godlevskyy

    9900. \r\n
    9901. Jeff Forcier
    9902. \r\n
    9903. George VanArsdale
    9904. \r\n
    9905. the cvs2svn developers
    9906. \r\n
    9907. Slavko Radman
    9908. \r\n
    9909. Michael Trier
    9910. \r\n
    9911. S J Nixon
    9912. \r\n
    9913. David Zakariaie
    9914. \r\n
    9915. Charles M Palmer
    9916. \r\n
    9917. Salil Kulkarni
    9918. \r\n
    9919. Roger Pack

    9920. \r\n
    9921. Brian Munroe
    9922. \r\n
    9923. Keith Rudkin P/L ATF Rudkin Trading Trust
    9924. \r\n
    9925. Doug Woods
    9926. \r\n
    9927. Matt Mahaney
    9928. \r\n
    9929. David Gallwey
    9930. \r\n
    9931. Jeff Flanders
    9932. \r\n
    9933. 兼山 元太
    9934. \r\n
    9935. Masakazu Ejiri
    9936. \r\n
    9937. Melanie Fox
    9938. \r\n
    9939. Stephanus Henzi

    9940. \r\n
    9941. Gregory Meno
    9942. \r\n
    9943. Scott Hassan
    9944. \r\n
    9945. enQuira, Inc.
    9946. \r\n
    9947. Robert Ramsdell
    9948. \r\n
    9949. Tarik Sabanovic
    9950. \r\n
    9951. Katsuhiko Kawai
    9952. \r\n
    9953. Alexandre Carbonell
    9954. \r\n
    9955. Andres Martinez
    9956. \r\n
    9957. James Hancock
    9958. \r\n
    9959. PMP Certification

    9960. \r\n
    9961. R. David Murray
    9962. \r\n
    9963. Thomas Crawley
    9964. \r\n
    9965. Chris Bennett
    9966. \r\n
    9967. David Peckham
    9968. \r\n
    9969. Ludwig Ries
    9970. \r\n
    9971. Friedrich Forstner
    9972. \r\n
    9973. Omidyar Network
    9974. \r\n
    9975. Dillon Hicks
    9976. \r\n
    9977. Olivier Friard
    9978. \r\n
    9979. Joseph Tevaarwerk

    9980. \r\n
    9981. jack leene
    9982. \r\n
    9983. Alex de Landgraaf
    9984. \r\n
    9985. Snowflake-sl
    9986. \r\n
    9987. DR F F Robb
    9988. \r\n
    9989. masashi yoshida
    9990. \r\n
    9991. Jason Jerome
    9992. \r\n
    9993. Mike Rolish
    9994. \r\n
    9995. Michal Bartoszkiewicz
    9996. \r\n
    9997. OLEG OVCHINNIKOV
    9998. \r\n
    9999. duncan ablitt

    10000. \r\n
    10001. Nino Lopez
    10002. \r\n
    10003. Paul Dubois
    10004. \r\n
    10005. Shaoduo Xie China
    10006. \r\n
    10007. Karun Dambiec
    10008. \r\n
    10009. Sarosh Sultan Khwaja
    10010. \r\n
    10011. Lars P Mathiassen
    10012. \r\n
    10013. Larry Bugbee
    10014. \r\n
    10015. YCFlame
    10016. \r\n
    10017. Robinson P Tryon
    10018. \r\n
    10019. Robert Black

    10020. \r\n
    10021. noppaon songsawasd
    10022. \r\n
    10023. Graeme Glass
    10024. \r\n
    10025. jebat ayam
    10026. \r\n
    10027. david fuard
    10028. \r\n
    10029. Brian Jinwright
    10030. \r\n
    10031. Karyn Barnes
    10032. \r\n
    10033. Raymond Hettinger
    10034. \r\n
    10035. Robin D Bruce
    10036. \r\n
    10037. musheng chen
    10038. \r\n
    10039. Ricardo Nunes Cerqueira

    10040. \r\n
    10041. Linda Hall
    10042. \r\n
    10043. M. Dale Keith
    10044. \r\n
    10045. Andrew Shearer
    10046. \r\n
    10047. Andy Kopra
    10048. \r\n
    10049. jim Andersson
    10050. \r\n
    10051. Cyrus Gross
    10052. \r\n
    10053. Rick Floyd
    10054. \r\n
    10055. ISAAC RAMNATH
    10056. \r\n
    10057. Simple Station
    10058. \r\n
    10059. Joshua Banton

    10060. \r\n
    10061. Sebastien Capt
    10062. \r\n
    10063. Iru Hwang
    10064. \r\n
    10065. Affiliated Commerce
    10066. \r\n
    10067. Wilton de O Garcia
    10068. \r\n
    10069. josh livni
    10070. \r\n
    10071. Nikolay Ivanov
    10072. \r\n
    10073. orçun avşar
    10074. \r\n
    10075. derin
    10076. \r\n
    10077. St Matthew eAccounting
    10078. \r\n
    10079. Alan Daniels

    10080. \r\n
    10081. David Avraamides
    10082. \r\n
    10083. Gregory Trubetskoy
    10084. \r\n
    10085. Yohei Sasaki
    10086. \r\n
    10087. Travis Bear
    10088. \r\n
    10089. 周 文喆
    10090. \r\n
    10091. kilo
    10092. \r\n
    10093. Will Boyce
    10094. \r\n
    10095. Orcun Avsar
    10096. \r\n
    10097. Ed Sweeney
    10098. \r\n
    10099. Chris Gemignani

    10100. \r\n
    10101. Earl Strassberger
    10102. \r\n
    10103. Michael Rolish
    10104. \r\n
    10105. Stephen C Waterbury
    10106. \r\n
    10107. Mr Robert C Ramsdell III
    10108. \r\n
    10109. Samuel John
    10110. \r\n
    10111. Kevin Sandifer
    10112. \r\n
    10113. Computer Line Associates
    10114. \r\n
    10115. Edward Corns
    10116. \r\n
    10117. ZipTicker
    10118. \r\n
    10119. Nichols Software, Inc.

    10120. \r\n
    10121. Robert Parnes
    10122. \r\n
    10123. Caleb Nidey
    10124. \r\n
    10125. OSDN / VA Software
    10126. \r\n
    10127. NSW Rural Doctors Network
    10128. \r\n
    10129. Ramon Sant Igarreta
    10130. \r\n
    10131. Alin Hanghiuc
    10132. \r\n
    10133. Lyle Dingus
    10134. \r\n
    10135. Rahul Viswanathan
    10136. \r\n
    10137. Lijst.com
    10138. \r\n
    10139. Mitch Chapman

    10140. \r\n
    10141. mercurial-ja
    10142. \r\n
    10143. Tyler Rimstad
    10144. \r\n
    10145. Catherine Arlett
    10146. \r\n
    10147. Stefan K�gl
    10148. \r\n
    10149. Andrew
    10150. \r\n
    10151. Bradley Allen
    10152. \r\n
    10153. Evan Luine
    10154. \r\n
    10155. TALHA KARABIYIK
    10156. \r\n
    10157. Pradeep Gowda
    10158. \r\n
    10159. Arnaud DELLU

    10160. \r\n
    10161. Dimitar Balinov
    10162. \r\n
    10163. Chitpol
    10164. \r\n
    10165. Vojtěch Rylko
    10166. \r\n
    10167. Anton Sipos
    10168. \r\n
    10169. Guido van Rossum
    10170. \r\n
    10171. Jonathan March
    10172. \r\n
    10173. Jeffrey Wilcox
    10174. \r\n
    10175. Skandar De Anaya
    10176. \r\n
    10177. Clifford Gruen
    10178. \r\n
    10179. NVP

    10180. \r\n
    10181. Ruth Peterson
    10182. \r\n
    10183. James Dukarm
    10184. \r\n
    10185. Lincoln
    10186. \r\n
    10187. Blanford Robinson
    10188. \r\n
    10189. Rigel Trajano
    10190. \r\n
    10191. Paul Johnson
    10192. \r\n
    10193. Kevin R Crothers
    10194. \r\n
    10195. Simon Forman
    10196. \r\n
    10197. Zope Corporation
    10198. \r\n
    10199. Robert Cole

    10200. \r\n
    10201. Anton G.
    10202. \r\n
    10203. Mark Nenadov
    10204. \r\n
    10205. Kerry King
    10206. \r\n
    10207. Gerd Woetzel
    10208. \r\n
    10209. Oluwatosin Sodipe
    10210. \r\n
    10211. Blok
    10212. \r\n
    10213. 胡 知锋
    10214. \r\n
    10215. David Rovardi
    10216. \r\n
    10217. Tasuku SUENAGA a.k.a. gunyarakun
    10218. \r\n
    10219. Filipe AlvesFerreira

    10220. \r\n
    10221. Mr Thomas A Crawley
    10222. \r\n
    10223. Marc Dechico
    10224. \r\n
    10225. Christopher David Blunck Esq
    10226. \r\n
    10227. Robert F. Hossley
    10228. \r\n
    10229. Fredrick Gruman
    10230. \r\n
    10231. Stefan Scholl
    10232. \r\n
    10233. Roy H Han
    10234. \r\n
    10235. Ariel Nunez
    10236. \r\n
    10237. Christopher J Cook
    10238. \r\n
    10239. David Moran Anton

    10240. \r\n
    10241. Elizabeth Paton-Simpson
    10242. \r\n
    10243. Marian Deaconescu
    10244. \r\n
    10245. HenkJan van der Pol
    10246. \r\n
    10247. Browsershots
    10248. \r\n
    10249. Sarah Fortune
    10250. \r\n
    10251. Scott J Irwin
    10252. \r\n
    10253. Mr Brian Lyttle
    10254. \r\n
    10255. Mr Bill Zingler
    10256. \r\n
    10257. Mark C Jones
    10258. \r\n
    10259. Benjamin Zweig

    10260. \r\n
    10261. Buğra Okçu
    10262. \r\n
    10263. Alexandr Puzeyev
    10264. \r\n
    10265. Alan McIntyre
    10266. \r\n
    10267. Leendert Geffen
    10268. \r\n
    10269. Larry Jones
    10270. \r\n
    10271. Zettai.net
    10272. \r\n
    10273. Marvin Paul
    10274. \r\n
    10275. Elson Rodriguez
    10276. \r\n
    10277. Mike Cariaso
    10278. \r\n
    10279. Tim Sharpe

    10280. \r\n
    10281. Jonathan Schmidt
    10282. \r\n
    10283. Alberta Liquor and Gaming Commission
    10284. \r\n
    10285. Jan Kanis
    10286. \r\n
    10287. IOANNIS GIFTAKIS
    10288. \r\n
    10289. Misato Takahashi
    10290. \r\n
    10291. Fabien Schwob
    10292. \r\n
    10293. Michael Rotondo
    10294. \r\n
    10295. Adam Breashers
    10296. \r\n
    10297. Patrick Brooks
    10298. \r\n
    10299. David Slate

    10300. \r\n
    10301. Akihiro Takizawa
    10302. \r\n
    10303. David K Friedman
    10304. \r\n
    10305. Zingler & Associates, Inc.
    10306. \r\n
    10307. Clarke Wittstruck
    10308. \r\n
    10309. Bob Heida
    10310. \r\n
    10311. William Metz
    10312. \r\n
    10313. Matthew Costello
    10314. \r\n
    10315. Diego Havenstein
    10316. \r\n
    10317. Peter Ziobrzynski
    10318. \r\n
    10319. Sandro Dutra

    10320. \r\n
    10321. informatica 3dart di Diego Masciolini
    10322. \r\n
    10323. Whil Hentzen
    10324. \r\n
    10325. Eileen Quintero
    10326. \r\n
    10327. Radek Å enfeld
    10328. \r\n
    10329. Drew Mason-Laurence
    10330. \r\n
    10331. John van Uitregt
    10332. \r\n
    10333. Holden Web LLC
    10334. \r\n
    10335. Carsten Lindner
    10336. \r\n
    10337. Zed A Shaw
    10338. \r\n
    10339. Stephen Carmona

    10340. \r\n
    10341. Mr Brian E Magill
    10342. \r\n
    10343. Mr Thomas Herve
    10344. \r\n
    10345. K. Larsen
    10346. \r\n
    10347. Shawn Storie
    10348. \r\n
    10349. Damon Jordan
    10350. \r\n
    10351. Ed Grether
    10352. \r\n
    10353. mr peter harris
    10354. \r\n
    10355. Steven H. Rogers
    10356. \r\n
    10357. Kamal Gill
    10358. \r\n
    10359. Caren Roberty

    10360. \r\n
    10361. Mr Eric L Shropshire
    10362. \r\n
    10363. Ken Dere
    10364. \r\n
    10365. Ioan Vlad
    10366. \r\n
    10367. matt perpick
    10368. \r\n
    10369. Mike Bayer
    10370. \r\n
    10371. Mr Earl Strassberger
    10372. \r\n
    10373. Lee Murach
    10374. \r\n
    10375. Brian Blazer
    10376. \r\n
    10377. Wayne Sutton
    10378. \r\n
    10379. Albert Hopkins

    10380. \r\n
    10381. Roy Smith
    10382. \r\n
    10383. Ilguiz Latypov
    10384. \r\n
    10385. sa puushkofik
    10386. \r\n
    10387. Lisa Goldsberry
    10388. \r\n
    10389. Mr Warren R Thom
    10390. \r\n
    10391. Mail-Archive, Inc.
    10392. \r\n
    10393. 晓冬 牛
    10394. \r\n
    10395. Masahiro Fukuda
    10396. \r\n
    10397. Andy Stark
    10398. \r\n
    10399. Mr Rodney Drenth

    10400. \r\n
    10401. Mr Jeff Flanders
    10402. \r\n
    10403. Mr Jason Whitlark
    10404. \r\n
    10405. Gerard C Blais
    10406. \r\n
    10407. Jorge Monteiro
    10408. \r\n
    10409. Mr Luke Powers
    10410. \r\n
    10411. Daniel Young
    10412. \r\n
    10413. Srinidhi Venkatesh
    10414. \r\n
    10415. Wenzhe Zhou
    10416. \r\n
    10417. Trelgol
    10418. \r\n
    10419. Brian J. Mahoney

    10420. \r\n
    10421. Fernando Cuevas JR
    10422. \r\n
    10423. B&D Building
    10424. \r\n
    10425. Elegant Stitches
    10426. \r\n
    10427. Santiago Suarez Ordonez
    10428. \r\n
    10429. Susan Forman
    10430. \r\n
    10431. Iris Goosen
    10432. \r\n
    10433. Phil Helms
    10434. \r\n
    10435. David Niskanen
    10436. \r\n
    10437. AdytumSolutions, Inc.
    10438. \r\n
    10439. Nancy Rice Bott

    10440. \r\n
    10441. LD Landis
    10442. \r\n
    10443. Net100 Partners Ltd
    10444. \r\n
    10445. Yichun Wang
    10446. \r\n
    10447. laka
    10448. \r\n
    10449. Alec Bennett
    10450. \r\n
    10451. Lincoln Frye
    10452. \r\n
    10453. Kashya (Ronnie Maor)
    10454. \r\n
    10455. Forrest Voight
    10456. \r\n
    10457. Charles Woods
    10458. \r\n
    10459. Peter Schinkel

    10460. \r\n
    10461. Andrew Lientz and Chelsea Shure
    10462. \r\n
    10463. Shigeru Maruyama
    10464. \r\n
    10465. Lester Carr
    10466. \r\n
    10467. Jure Vrscaj
    10468. \r\n
    10469. Theo Thomas
    10470. \r\n
    10471. Kirk Ireson
    10472. \r\n
    10473. Gordon Tillman
    10474. \r\n
    10475. Samuel Schulenburg
    10476. \r\n
    10477. Jeremy Dunck
    10478. \r\n
    10479. nathan Jones

    10480. \r\n
    10481. Stuart Ellis
    10482. \r\n
    10483. Satoshi Abe
    10484. \r\n
    10485. Mark Pape
    10486. \r\n
    10487. Kendall Whitesell
    10488. \r\n
    10489. Charles Mead
    10490. \r\n
    10491. Microsoft LNC
    10492. \r\n
    10493. Thomas Herve
    10494. \r\n
    10495. Narupon Chattrapiban
    10496. \r\n
    10497. Chad Whitacre
    10498. \r\n
    10499. Mr Chris P McDonough

    10500. \r\n
    10501. Edward m. Blake
    10502. \r\n
    10503. Istvan Albert
    10504. \r\n
    10505. Rich M. Krauter
    10506. \r\n
    10507. Mr Shannon -jj Behrens
    10508. \r\n
    10509. Larry Rutledge
    10510. \r\n
    10511. Scott Sheffield
    10512. \r\n
    10513. Barry Miller
    10514. \r\n
    10515. Takuo Yonezawa
    10516. \r\n
    10517. Jeff Kowalczyk
    10518. \r\n
    10519. Ian King

    10520. \r\n
    10521. Gary Culp
    10522. \r\n
    10523. СеваÑтьÑн Рабдано
    10524. \r\n
    10525. David Finch
    10526. \r\n
    10527. Xiao Liang
    10528. \r\n
    10529. Aaron Rhodes
    10530. \r\n
    10531. Mel Vincent
    10532. \r\n
    10533. Massimo Bassi
    10534. \r\n
    10535. DOTS
    10536. \r\n
    10537. Omar El-Domeiri
    10538. \r\n
    10539. Axiomfire

    10540. \r\n
    10541. James Gray
    10542. \r\n
    10543. Gerard CBlais
    10544. \r\n
    10545. Contradix Corporation
    10546. \r\n
    10547. Minghong Lin
    10548. \r\n
    10549. Ubaldo Bulla
    10550. \r\n
    10551. Robert L. Gabardy
    10552. \r\n
    10553. Edward M Kent
    10554. \r\n
    10555. Sarah Lambert
    10556. \r\n
    10557. Jan Decaluwe
    10558. \r\n
    10559. Michael H Jeffries Living Trust

    10560. \r\n
    10561. Howard Jones
    10562. \r\n
    10563. Uldis Bojars
    10564. \r\n
    10565. Didier THOMAS
    10566. \r\n
    10567. David Koonce
    10568. \r\n
    10569. Mike Arnott
    10570. \r\n
    10571. Michael Boroditsky
    10572. \r\n
    10573. Ian Caven
    10574. \r\n
    10575. Yusei TAHARA
    10576. \r\n
    10577. Wiilliam Neil Howell
    10578. \r\n
    10579. American Transport, Inc.

    10580. \r\n
    10581. Tetsuya Kitahata
    10582. \r\n
    10583. Cingular Matching Gift Center
    10584. \r\n
    10585. Luiz Felipe Eneas
    10586. \r\n
    10587. PEIWEI WU
    10588. \r\n
    10589. Randy Stulce
    10590. \r\n
    10591. Marshall Thompson
    10592. \r\n
    10593. Constantinos Laitsas
    10594. \r\n
    10595. Rich M.Krauter
    10596. \r\n
    10597. Harold Moss
    10598. \r\n
    10599. bodo august schnabel

    10600. \r\n
    10601. Wallace P. McMartin
    10602. \r\n
    10603. Shin Takeyama
    10604. \r\n
    10605. frank mahony
    10606. \r\n
    10607. RICARDO CERQUEIRA
    10608. \r\n
    10609. Jules Allen
    10610. \r\n
    10611. Yuuki Kikuchi
    10612. \r\n
    10613. Andrew Clark
    10614. \r\n
    10615. Dorothy Heim
    10616. \r\n
    10617. Christopher and Julie Blunck
    10618. \r\n
    10619. Andrew Groom

    10620. \r\n
    10621. Walt Buehring
    10622. \r\n
    10623. Clark C. Evans
    10624. \r\n
    10625. charles hightower
    10626. \r\n
    10627. Jostein Skaar
    10628. \r\n
    10629. Amir Bakhtiar
    10630. \r\n
    10631. Daniel Ogden
    10632. \r\n
    10633. Andrew Ittner
    10634. \r\n
    10635. mark borges
    10636. \r\n
    10637. David Kraus
    10638. \r\n
    10639. David Goodger

    10640. \r\n
    10641. Patrick Maupin
    10642. \r\n
    10643. Jusup Budiyasa
    10644. \r\n
    10645. Glenn Parker
    10646. \r\n
    10647. Higinio Cachola
    10648. \r\n
    10649. W.T. Bridgman
    10650. \r\n
    10651. Bernhard Sch�ler
    10652. \r\n
    10653. Robert M. Emmons
    10654. \r\n
    10655. Sami Badawi
    10656. \r\n
    10657. charles a. hightower
    10658. \r\n
    10659. Thomas J Lucas

    10660. \r\n
    10661. Hans-Werner Bartels
    10662. \r\n
    10663. David A. and Cindy L. Byrne
    10664. \r\n
    10665. Grant Whiting
    10666. \r\n
    10667. Gene Ha
    10668. \r\n
    10669. Peggy Baker
    10670. \r\n
    10671. andrew sommerville
    10672. \r\n
    10673. Rostislav Cerovsky
    10674. \r\n
    10675. Astor M Castelo
    10676. \r\n
    10677. Armin Rigo
    10678. \r\n
    10679. James Conant

    10680. \r\n
    10681. Carl Phillips
    10682. \r\n
    10683. William, H Cozad
    10684. \r\n
    10685. Robin K. Friedrich
    10686. \r\n
    10687. Ivor Ellis
    10688. \r\n
    10689. Beverly Yahr
    10690. \r\n
    10691. Doug Blanding
    10692. \r\n
    10693. Jesse Costales
    10694. \r\n
    10695. Brenda Pruett
    10696. \r\n
    10697. Eric Florenzano
    10698. \r\n
    10699. St�phane KLEIN

    10700. \r\n
    10701. Rad Widmer
    10702. \r\n
    10703. George Paci
    10704. \r\n
    10705. Rob Nelson
    10706. \r\n
    10707. Theodore Gielow
    10708. \r\n
    10709. Fabio Bovelacci
    10710. \r\n
    10711. Peter Hamilton
    10712. \r\n
    10713. The Incredible Pear
    10714. \r\n
    10715. Christina Stevens
    10716. \r\n
    10717. Noah Aboussafy (IT Goes Click)
    10718. \r\n
    10719. Arthur Kjos

    10720. \r\n
    10721. Greg Lindstrom
    10722. \r\n
    10723. Andrew Engle
    10724. \r\n
    10725. Thomas Bennett
    10726. \r\n
    10727. Egil R�yeng
    10728. \r\n
    10729. Angela Roberts
    10730. \r\n
    10731. Bradley J. Allen
    10732. \r\n
    10733. Lupegi Liao / Chiung-i Huang
    10734. \r\n
    10735. Eugene Mazur
    10736. \r\n
    10737. Randall E Ivener
    10738. \r\n
    10739. Pete Soper

    10740. \r\n
    10741. Daniel Garman
    10742. \r\n
    10743. William T. Bridgman
    10744. \r\n
    10745. Mike LeonGuerrero
    10746. \r\n
    10747. C-Ring Systems, Inc.
    10748. \r\n
    10749. Bob Burke
    10750. \r\n
    10751. Lynn C. Rees
    10752. \r\n
    10753. Les Matheson
    10754. \r\n
    10755. Judy Miller
    10756. \r\n
    10757. Jim Draper
    10758. \r\n
    10759. Robert Brewer

    10760. \r\n
    10761. Mike Thompson
    10762. \r\n
    10763. John Rhodes
    10764. \r\n
    10765. Douglas J Fort
    10766. \r\n
    10767. Jeff Suttles
    10768. \r\n
    10769. Andrew Doran
    10770. \r\n
    10771. Thomas Hodgson
    10772. \r\n
    10773. David Freedman
    10774. \r\n
    10775. David Hancock
    10776. \r\n
    10777. Carl Banks
    10778. \r\n
    10779. Marco Napolitano

    10780. \r\n
    10781. Dave Jones
    10782. \r\n
    10783. KGS Electronics
    10784. \r\n
    10785. Tony Cappellini
    10786. \r\n
    10787. Mike Beachy
    10788. \r\n
    10789. Julien Poissonnier
    10790. \r\n
    10791. Open Source Appls Foundation
    10792. \r\n
    10793. D. I. Hoenicke
    10794. \r\n
    10795. Wesleyt Witten
    10796. \r\n
    10797. Steven Zatz (Joan Lesnick)
    10798. \r\n
    10799. Jaime Peschiera

    10800. \r\n
    10801. Heikki J Toivonen
    10802. \r\n
    10803. Manfred Hanenkamp
    10804. \r\n
    10805. Irmen de Jong
    10806. \r\n
    10807. Bernhard Engelskircher
    10808. \r\n
    10809. Charles Richmond
    10810. \r\n
    10811. Reed Simpson
    10812. \r\n
    10813. Thomas Birsic
    10814. \r\n
    10815. Charles McIntire
    10816. \r\n
    10817. Brian van den Broek
    10818. \r\n
    10819. Roland Reumerman

    10820. \r\n
    10821. Vecta Exploration
    10822. \r\n
    10823. John Coker
    10824. \r\n
    10825. Kyle Sullivan
    10826. \r\n
    10827. Enigmatics
    10828. \r\n
    10829. Samuel Wilson
    10830. \r\n
    10831. Sebastian Erben
    10832. \r\n
    10833. Sebastjan
    10834. \r\n
    10835. Chris Thomas
    10836. \r\n
    10837. Beatrice During
    10838. \r\n
    10839. Don Spaulding II

    10840. \r\n
    10841. alan falk
    10842. \r\n
    10843. Petra Dr. Hayder-Eibl
    10844. \r\n
    10845. Steve Holden
    10846. \r\n
    10847. Will Leaman
    10848. \r\n
    10849. Dennis Furbush
    10850. \r\n
    10851. Hieu Hoang
    10852. \r\n
    10853. Michael Gwilliam
    10854. \r\n
    10855. Robert Emmons
    10856. \r\n
    10857. Gaurav DCosta
    10858. \r\n
    10859. Robert Zimmermann

    10860. \r\n
    10861. Greg Chapman
    10862. \r\n
    10863. Daniel Clark
    10864. \r\n
    10865. Jay Breda
    10866. \r\n
    10867. Stephen Jakubowski
    10868. \r\n
    10869. Ollie Rutherfurd
    10870. \r\n
    10871. veth guevarra
    10872. \r\n
    10873. John Pinner
    10874. \r\n
    10875. Thomas Verghese
    10876. \r\n
    10877. Matthew Ross
    10878. \r\n
    10879. Tim Douglas

    10880. \r\n
    10881. Nichols Software
    10882. \r\n
    10883. George Wills
    10884. \r\n
    10885. Lynn C Rees
    10886. \r\n
    10887. Paul Akerhielm
    10888. \r\n
    10889. Jeffrey Allen
    10890. \r\n
    10891. Tracy Ruggles
    10892. \r\n
    10893. Oleksandr Tyutyunnyk
    10894. \r\n
    10895. Ralph S Miller
    10896. \r\n
    10897. Steve Bailey
    10898. \r\n
    10899. Eric V. Smith

    10900. \r\n
    10901. Monash University Tea Room
    10902. \r\n
    10903. Mark D Borges
    10904. \r\n
    10905. Dermot Doran
    10906. \r\n
    10907. Val Bykovsky
    10908. \r\n
    10909. Alan Mitchell
    10910. \r\n
    10911. Michael Beachy
    10912. \r\n
    10913. Cn'V Corvette Sales
    10914. \r\n
    10915. charles a hightower
    10916. \r\n
    10917. Society for American Archaeology
    10918. \r\n
    10919. Fred Allen

    10920. \r\n
    10921. Kazuya Fukamachi
    10922. \r\n
    10923. Tom Suzuki
    10924. \r\n
    10925. HAROLD RICHARDSON
    10926. \r\n
    10927. Basil Rouskas
    10928. \r\n
    10929. Aaron Nauman
    10930. \r\n
    10931. Todd Engle
    10932. \r\n
    10933. Robert N. Cordy
    10934. \r\n
    10935. Alfred Forster
    10936. \r\n
    10937. samik chakraborty
    10938. \r\n
    10939. Gordon Hemminger

    10940. \r\n
    10941. Kevin Altis
    10942. \r\n
    10943. Matthew Ranostay
    10944. \r\n
    10945. Johan Hahn
    10946. \r\n
    10947. Cimarron Taylor
    10948. \r\n
    10949. Adi Miller
    10950. \r\n
    10951. James Ross
    10952. \r\n
    10953. richard rosenberg
    10954. \r\n
    10955. Bruce Harrison
    10956. \r\n
    10957. Audun Vaaler
    10958. \r\n
    10959. Gatecrash

    10960. \r\n
    10961. Brian Bilbrey
    10962. \r\n
    10963. Gray Ward
    10964. \r\n
    10965. Thomas Varghese
    10966. \r\n
    10967. Yusei Tahara
    10968. \r\n
    10969. Sloan Brooks
    10970. \r\n
    10971. John LaTorre
    10972. \r\n
    10973. Richard Monroe
    10974. \r\n
    10975. Arthur Siegel
    10976. \r\n
    10977. Vicente Otero Santiago
    10978. \r\n
    10979. camilla palmer

    10980. \r\n
    10981. Mick Bryant
    10982. \r\n
    10983. Dr. S. Kudva, M.D.
    10984. \r\n
    10985. Phil Stressel, Sr.
    10986. \r\n
    10987. Yvonne Mohrbacher
    10988. \r\n
    10989. Erik Dahl
    10990. \r\n
    10991. Martin Nohr
    10992. \r\n
    10993. Paul McGuire
    10994. \r\n
    10995. George Montanaro
    10996. \r\n
    10997. Lex Berezhny
    10998. \r\n
    10999. Keller & Fuller, Inc.

    11000. \r\n
    11001. David Hatcher
    11002. \r\n
    11003. Susan Dean
    11004. \r\n
    11005. Chad Harrington
    11006. \r\n
    11007. Richard & Susan Ames
    11008. \r\n
    11009. Thomas Kaufmann
    11010. \r\n
    11011. ObeliskConsulting, Inc.
    11012. \r\n
    11013. James R. Hall-Morrison
    11014. \r\n
    11015. Richard Emslie
    11016. \r\n
    11017. Madeline Gleich
    11018. \r\n
    11019. Vincent Wehren

    11020. \r\n
    11021. William Donais
    11022. \r\n
    11023. Leo Lawrenson
    11024. \r\n
    11025. James Kehoe
    11026. \r\n
    11027. Altasoft
    11028. \r\n
    11029. CD Baby
    11030. \r\n
    11031. Ka-Ping Yee
    11032. \r\n
    11033. Andriy Kravchuk
    11034. \r\n
    11035. John Jarvis
    11036. \r\n
    11037. James McManus
    11038. \r\n
    11039. Mike Spencer

    11040. \r\n
    11041. Gheorghe Gheorghiu
    11042. \r\n
    11043. Scott Haas
    11044. \r\n
    11045. Greg Barr
    11046. \r\n
    11047. Vincent Roy
    11048. \r\n
    11049. OSDN / VA Software (athompso)
    11050. \r\n
    11051. Robert & Kay, Inc
    11052. \r\n
    11053. Michael McCafferty
    11054. \r\n
    11055. John Barker
    11056. \r\n
    11057. Scott Leerssen
    11058. \r\n
    11059. OSDN / VA Software (mckemie)

    11060. \r\n
    11061. Jeffrey Smith
    11062. \r\n
    11063. Robert Jeppesen
    11064. \r\n
    11065. Dominick Franzini
    11066. \r\n
    11067. Rodrigo Rodrigues
    11068. \r\n
    11069. Ron Willard
    11070. \r\n
    11071. Neundorfer, Inc.
    11072. \r\n
    11073. Farrel Buchinsky
    11074. \r\n
    11075. Marcos Sanchez Provencio
    11076. \r\n
    11077. Hans-Martin Hess
    11078. \r\n
    11079. Patricia Kingsley

    11080. \r\n
    11081. Timothy Smith
    11082. \r\n
    11083. Bruce Nehlsen
    11084. \r\n
    11085. Stefan Niederhauser
    11086. \r\n
    11087. Lawrence Landis
    11088. \r\n
    11089. fie raymon
    11090. \r\n
    11091. Mark Nias
    11092. \r\n
    11093. Max Wilbert
    11094. \r\n
    11095. Iftikhar Haq
    11096. \r\n
    11097. Elizabeth Hogan
    11098. \r\n
    11099. David Givers

    11100. \r\n
    11101. Roman Suzuki
    11102. \r\n
    11103. Roger Upole
    11104. \r\n
    11105. Paul Bonneau
    11106. \r\n
    11107. Craig Downing
    11108. \r\n
    11109. Roy Cline
    11110. \r\n
    11111. Jon Bartelson
    11112. \r\n
    11113. Franco Mastroddi
    11114. \r\n
    11115. Torsten K�hnel
    11116. \r\n
    11117. Daniele Berti
    11118. \r\n
    11119. David Carroll

    11120. \r\n
    11121. li jun zheng
    11122. \r\n
    11123. Donnal Walter
    11124. \r\n
    11125. Michael Jacquot
    11126. \r\n
    11127. NETWORKOLOGIST
    11128. \r\n
    11129. Kyle Brunskill
    11130. \r\n
    11131. Tim Godfrey
    11132. \r\n
    11133. Libor Foltynek
    11134. \r\n
    11135. Ataman Software, Inc
    11136. \r\n
    11137. Joel Hall
    11138. \r\n
    11139. Bernard Delmee

    11140. \r\n
    11141. Harrison Chauncey
    11142. \r\n
    11143. Donald Harper
    11144. \r\n
    11145. Thomas Zarecki
    11146. \r\n
    11147. Leslie Olding
    11148. \r\n
    11149. Paul F. DuBois
    11150. \r\n
    11151. A.M. Kuchling
    11152. \r\n
    11153. Robert Bryant
    11154. \r\n
    11155. Robert Maynard
    11156. \r\n
    11157. Otto Pichlhoefer
    11158. \r\n
    11159. Duane Kaufman

    11160. \r\n
    11161. Mark McEahern
    11162. \r\n
    11163. Hordern House Rare Books
    11164. \r\n
    11165. Alden Hart
    11166. \r\n
    11167. Paul Winkler
    11168. \r\n
    11169. Lawrence D Landis
    11170. \r\n
    11171. Stephen Maharam
    11172. \r\n
    11173. Jim Stone
    11174. \r\n
    11175. Grant Harris
    11176. \r\n
    11177. Dale Potter
    11178. \r\n
    11179. Martin Seibert

    11180. \r\n
    11181. Wolfgang Demisch
    11182. \r\n
    11183. David Niergarth
    11184. \r\n
    11185. ed van sicklin
    11186. \r\n
    11187. Martin Spear
    11188. \r\n
    11189. Robert Cordy
    11190. \r\n
    11191. High Tech Trading Company
    11192. \r\n
    11193. Its Your Turn, Inc.
    11194. \r\n
    11195. Bill Sconce
    11196. \r\n
    11197. George Runyan
    11198. \r\n
    11199. Tobias Geiger

    11200. \r\n
    11201. Jason Hitch
    11202. \r\n
    11203. Peter Hansen
    11204. \r\n
    11205. Daniel Garber
    11206. \r\n
    11207. Jeff Griffith
    11208. \r\n
    11209. Mike Hansen
    11210. \r\n
    11211. Kevin Meboe
    11212. \r\n
    11213. Peter Haines
    11214. \r\n
    11215. Matt Campbell
    11216. \r\n
    11217. JS Wild
    11218. \r\n
    11219. marco gillies

    11220. \r\n
    11221. Charles
    11222. \r\n
    11223. Eskander Kazim
    11224. \r\n
    11225. Pete Adams
    11226. \r\n
    11227. Katherine Kennedy
    11228. \r\n
    11229. Russell Ruckman
    11230. \r\n
    11231. Jim Lyles
    11232. \r\n
    11233. Daniel Gordon
    11234. \r\n
    11235. Christopher Kirkpatrick
    11236. \r\n
    11237. Stephen Tremel
    11238. \r\n
    11239. Debra Abberton

    11240. \r\n
    11241. Chai C Ang
    11242. \r\n
    11243. William Stuart
    11244. \r\n
    11245. Simon Michael
    11246. \r\n
    11247. Joseph J. Pamer
    11248. \r\n
    11249. Dan Downing
    11250. \r\n
    11251. John seward
    11252. \r\n
    11253. S Willison
    11254. \r\n
    11255. Nichalas Enser
    11256. \r\n
    11257. Robert Purbrick
    11258. \r\n
    11259. Vineet Jain

    11260. \r\n
    11261. David Eriksson
    11262. \r\n
    11263. Robert Howard
    11264. \r\n
    11265. Evan Jones
    11266. \r\n
    11267. Brian McKenna
    11268. \r\n
    11269. David Pentecost
    11270. \r\n
    11271. Bernd Kunrath
    11272. \r\n
    11273. Roger Eaton
    11274. \r\n
    11275. M. Khan
    11276. \r\n
    11277. Piers Lauder
    11278. \r\n
    11279. Bonnie Kosanke

    11280. \r\n
    11281. Sebastian Wilhelmi
    11282. \r\n
    11283. Chad W Whitacre
    11284. \r\n
    11285. Ian Cook
    11286. \r\n
    11287. James Edwards
    11288. \r\n
    11289. Lada Adamic
    11290. \r\n
    11291. Sue Doersch
    11292. \r\n
    11293. John Welch
    11294. \r\n
    11295. Albert Martinez
    11296. \r\n
    11297. Mike Coward
    11298. \r\n
    11299. Tracy Woodrow

    11300. \r\n
    11301. David Packard
    11302. \r\n
    11303. Bob Watson
    11304. \r\n
    11305. Yun Huang Yong
    11306. \r\n
    11307. Larry McElderry
    11308. \r\n
    11309. Trevor Owen
    11310. \r\n
    11311. Steven Cooper
    11312. \r\n
    11313. Richard Honigsbaum
    11314. \r\n
    11315. Michael Chermside
    11316. \r\n
    11317. Gotpetsonline
    11318. \r\n
    11319. Michael Newhouse

    11320. \r\n
    11321. Scott Mitchell
    11322. \r\n
    11323. Michael James Hoy
    11324. \r\n
    11325. Philip H. Stressel, Sr.
    11326. \r\n
    11327. Clay Shirky
    11328. \r\n
    11329. John M. Copacino
    11330. \r\n
    11331. Jesse Brandeburg
    11332. \r\n
    11333. Andrew Todd
    11334. \r\n
    11335. B J Naughton III
    11336. \r\n
    11337. Mario La Valva
    11338. \r\n
    11339. OSDN / VA Software (gerryf)

    11340. \r\n
    11341. Mike Jaynes
    11342. \r\n
    11343. Travis Oliphant
    11344. \r\n
    11345. Daniel McLaughlin
    11346. \r\n
    11347. William King
    11348. \r\n
    11349. Dennis Coates
    11350. \r\n
    11351. Neal Norwitz
    11352. \r\n
    11353. Brian J. Gough
    11354. \r\n
    11355. defrance
    11356. \r\n
    11357. Judy Ross
    11358. \r\n
    11359. Dirk Meissner

    11360. \r\n
    11361. netmarkhome.com
    11362. \r\n
    11363. Nicholas S Jacobson
    11364. \r\n
    11365. Allie Lierman
    11366. \r\n
    11367. Dian Chesney
    11368. \r\n
    11369. Kazuhiro Sado
    11370. \r\n
    11371. Oliver Rutherfurd
    11372. \r\n
    11373. Jeffrey Johnson
    11374. \r\n
    11375. Glenn Williams
    11376. \r\n
    11377. Pinner John
    11378. \r\n
    11379. Albert Lilley

    11380. \r\n
    11381. Steven Alderson
    11382. \r\n
    11383. Allan Clarke
    11384. \r\n
    11385. Sandra Li
    11386. \r\n
    11387. Anthony Hawes
    11388. \r\n
    11389. Virginia Keech
    11390. \r\n
    11391. Tahoe Donner Association
    11392. \r\n
    11393. Vineet Singh
    11394. \r\n
    11395. Michael Butts
    11396. \r\n
    11397. Emile van Sebille
    11398. \r\n
    11399. Walter H Rauser

    11400. \r\n
    11401. Kevin Jacobs
    11402. \r\n
    11403. Joel Mandel
    11404. \r\n
    11405. Jean-Paul Calderone
    11406. \r\n
    11407. Glenn Gifford
    11408. \r\n
    11409. Robert Driscoll
    11410. \r\n
    11411. Dynapower Corporation
    11412. \r\n
    11413. Gordon Fang
    11414. \r\n
    11415. Gary DiNofrio
    11416. \r\n
    11417. Brian Pratt
    11418. \r\n
    11419. Meedio LLC

    11420. \r\n
    11421. Bob Pegan
    11422. \r\n
    11423. John Hodges
    11424. \r\n
    11425. Michael Sears
    11426. \r\n
    11427. Avigdor Sagi
    11428. \r\n
    11429. Gregory Wilson
    11430. \r\n
    11431. Dick Jones
    11432. \r\n
    11433. Susan Gleason
    11434. \r\n
    11435. Adytumsolutions
    11436. \r\n
    11437. Thomas E. Brosseau
    11438. \r\n
    11439. Douglas Sharp

    11440. \r\n
    11441. Ken Leonard
    11442. \r\n
    11443. Matthew Voight
    11444. \r\n
    11445. Downright Software LLC
    11446. \r\n
    11447. John Burkey
    11448. \r\n
    11449. Marco Mazzi
    11450. \r\n
    11451. omi
    11452. \r\n
    11453. Joel Carlson
    11454. \r\n
    11455. Pescom Research
    11456. \r\n
    11457. Nicholas G. Constantin
    11458. \r\n
    11459. Pontus Skold

    11460. \r\n
    11461. James McKiel
    11462. \r\n
    11463. William M Hesse
    11464. \r\n
    11465. Howard Lev
    11466. \r\n
    11467. Runsun Pan
    11468. \r\n
    11469. James Graham
    11470. \r\n
    11471. Roger Milton
    11472. \r\n
    11473. Christian Muirhead
    11474. \r\n
    11475. Jose Nunez
    11476. \r\n
    11477. Justin Vincent
    11478. \r\n
    11479. Jeri Steele

    11480. \r\n
    11481. William J Clabby
    11482. \r\n
    11483. Steven Scott
    11484. \r\n
    11485. Daniel Garner
    11486. \r\n
    11487. Keith Loose
    11488. \r\n
    11489. Roger Herzler
    11490. \r\n
    11491. Roger Walters
    11492. \r\n
    11493. Hakan R Esme
    11494. \r\n
    11495. Charles Cech
    11496. \r\n
    11497. Lockergnome
    11498. \r\n
    11499. Robert Stapp

    11500. \r\n
    11501. Marilyn Savory
    11502. \r\n
    11503. Brian Duncan
    11504. \r\n
    11505. Dave Mathiesen
    11506. \r\n
    11507. Wade Wagner
    11508. \r\n
    11509. Frederick Lim
    11510. \r\n
    11511. Ian T Kohl
    11512. \r\n
    11513. Gordon Weakliem
    11514. \r\n
    11515. Charles Erignac
    11516. \r\n
    11517. Lynette Moore
    11518. \r\n
    11519. nhok nhok

    11520. \r\n
    11521. Taed Wynnell
    11522. \r\n
    11523. Anthony Auretto
    11524. \r\n
    11525. Richard Moxley
    11526. \r\n
    11527. Rocky Bivens
    11528. \r\n
    11529. Lora Lee Mueller
    11530. \r\n
    11531. James Arnett
    11532. \r\n
    11533. greg Ward
    11534. \r\n
    11535. Matthew Dixon Cowles
    11536. \r\n
    11537. Lesmes Gonzalez Valles
    11538. \r\n
    11539. Patrick O'Flaherty

    11540. \r\n
    11541. Bas van der Meer
    11542. \r\n
    11543. Peyton McCullough
    11544. \r\n
    11545. Alvar & Associates
    11546. \r\n
    11547. George Pelletier
    11548. \r\n
    11549. Stewart Dugan
    11550. \r\n
    11551. Michael Bergmann
    11552. \r\n
    11553. Cameron Photography
    11554. \r\n
    11555. Fred Persson
    11556. \r\n
    11557. Sassan Hassassian
    11558. \r\n
    11559. Wael Al Ali

    11560. \r\n
    11561. Yeon-Ki Kim
    11562. \r\n
    11563. Leigh Klotz
    11564. \r\n
    11565. Roch Leduc
    11566. \r\n
    11567. Stephen P Gallagher
    11568. \r\n
    11569. Richard Karnesky
    11570. \r\n
    11571. Paul Gibson
    11572. \r\n
    11573. Advanced Industrial Automation
    11574. \r\n
    11575. Kim Nyberg
    11576. \r\n
    11577. Britta Jessen
    11578. \r\n
    11579. Tom Goodell

    11580. \r\n
    11581. David Butcher
    11582. \r\n
    11583. Shearer Software, Inc.
    11584. \r\n
    11585. Lorilei Thompson
    11586. \r\n
    11587. Rudy Spevacek
    11588. \r\n
    11589. Steve Chouinard
    11590. \r\n
    11591. Zoid Technologies, LLC.
    11592. \r\n
    11593. Michelle Weclsk
    11594. \r\n
    11595. Pierre Robitaille
    11596. \r\n
    11597. Javier Fernandez
    11598. \r\n
    11599. Kenley Lamaute

    11600. \r\n
    11601. Harry Freeman
    11602. \r\n
    11603. Jens Diemer
    11604. \r\n
    11605. William Pry
    11606. \r\n
    11607. Chris Cogdon
    11608. \r\n
    11609. Jim Hamill
    11610. \r\n
    11611. John Paradiso & Associates
    11612. \r\n
    11613. Michael Myers
    11614. \r\n
    11615. Ryan Rodgers
    11616. \r\n
    11617. Nancy Tindle
    11618. \r\n
    11619. Martin Drew

    11620. \r\n
    11621. Anjan Bacchu
    11622. \r\n
    11623. Richard Staff
    11624. \r\n
    11625. David Fox
    11626. \r\n
    11627. Simon Vans-Colina
    11628. \r\n
    11629. John Muller
    11630. \r\n
    11631. Jeff Davis
    11632. \r\n
    11633. Dana Graves
    11634. \r\n
    11635. Christopher G Walker
    11636. \r\n
    11637. Simon Perkins
    11638. \r\n
    11639. Sprint Tax, Inc.

    11640. \r\n
    11641. Carola Fuchs
    11642. \r\n
    11643. OSDN / VA Software (aportale)
    11644. \r\n
    11645. Wayne
    11646. \r\n
    11647. Jim Weber
    11648. \r\n
    11649. Luke Woollard
    11650. \r\n
    11651. Ludovico Magnocavallo
    11652. \r\n
    11653. John Byrd
    11654. \r\n
    11655. Donley Parmentier
    11656. \r\n
    11657. Dan Scherer
    11658. \r\n
    11659. George Cotsikis

    11660. \r\n
    11661. Suzette Benjamin
    11662. \r\n
    11663. Anne Verret-Speck
    11664. \r\n
    11665. Thomas Chused
    11666. \r\n
    11667. Michael Sock
    11668. \r\n
    11669. Marco Roxas
    11670. \r\n
    11671. Burning Blue Audio
    11672. \r\n
    11673. Michael Abajian
    11674. \r\n
    11675. Simon Heywood
    11676. \r\n
    11677. Gregory Crosswhite
    11678. \r\n
    11679. Bruce Pearson

    11680. \r\n
    11681. Max M Rasmussen
    11682. \r\n
    11683. Web Wizard Design
    11684. \r\n
    11685. Patrick Hart
    11686. \r\n
    11687. Bjarke Dahl Ebert
    11688. \r\n
    11689. Arya Connett
    11690. \r\n
    11691. Ryan Keppel
    11692. \r\n
    11693. Aniket Sheth
    11694. \r\n
    11695. William Kennedy
    11696. \r\n
    11697. Frank Laughlin III
    11698. \r\n
    11699. Ahmad Zakir Jaafar

    11700. \r\n
    11701. Richard Perez
    11702. \r\n
    11703. David Palme
    11704. \r\n
    11705. Andreas Schmeidl
    11706. \r\n
    11707. Kyle Degraaf
    11708. \r\n
    11709. Steve Lamb
    11710. \r\n
    11711. Christopher Armstrong
    11712. \r\n
    11713. Yi-Ling Wu
    11714. \r\n
    11715. John Bley
    11716. \r\n
    11717. Roy Morley
    11718. \r\n
    11719. Adam Cripps

    11720. \r\n
    11721. Trina R Owens
    11722. \r\n
    11723. Robert Jason
    11724. \r\n
    11725. Steven Sprouse
    11726. \r\n
    11727. Oded Degani
    11728. \r\n
    11729. Wayne Wei
    11730. \r\n
    11731. Tim Wilson
    11732. \r\n
    11733. Roger Green
    11734. \r\n
    11735. Marie Royea
    11736. \r\n
    11737. Lairhaven Enterprises
    11738. \r\n
    11739. David Tucker

    11740. \r\n
    11741. Henry E Melgarejo
    11742. \r\n
    11743. Ramesh Ratan
    11744. \r\n
    11745. Guido Bugmann
    11746. \r\n
    11747. Lazaro Bello
    11748. \r\n
    11749. Kenneth Hardy
    11750. \r\n
    11751. John Kinney
    11752. \r\n
    11753. Hans-Christoph Hoepker
    11754. \r\n
    11755. Edward Lipsett
    11756. \r\n
    11757. Philippe Leyvraz
    11758. \r\n
    11759. Allen Jackson

    11760. \r\n
    11761. Suzie Boulos
    11762. \r\n
    11763. Brian Armand
    11764. \r\n
    11765. JT Gale
    11766. \r\n
    11767. David Colbeth
    11768. \r\n
    11769. Dave Faloon
    11770. \r\n
    11771. Roger Pueyo Centelles
    11772. \r\n
    11773. Rodrigo Vieira
    11774. \r\n
    11775. Richard Karsmakers
    11776. \r\n
    11777. Bob Eckert
    11778. \r\n
    11779. Mark Interrante

    11780. \r\n
    11781. Matthew Siegler
    11782. \r\n
    11783. Jonathan Simms
    11784. \r\n
    11785. Mark Guidroz
    11786. \r\n
    11787. Daniele Scalzi
    11788. \r\n
    11789. Paul Nordstrom
    11790. \r\n
    11791. Sylvia Zhang
    11792. \r\n
    11793. George B Smith
    11794. \r\n
    11795. Vincent Bielke
    11796. \r\n
    11797. Terry Reedy
    11798. \r\n
    11799. Luka Horvatic

    11800. \r\n
    11801. William C Carr
    11802. \r\n
    11803. Paul Hartley
    11804. \r\n
    11805. Klaus H�ppner
    11806. \r\n
    11807. Chris Cooper
    11808. \r\n
    11809. Robert Simmonds
    11810. \r\n
    11811. Douglas Warner
    11812. \r\n
    11813. Ahmed Daniyal
    11814. \r\n
    11815. David Yee
    11816. \r\n
    11817. Randy Ryan
    11818. \r\n
    11819. A. J. Bolton

    11820. \r\n
    11821. JAMROC
    11822. \r\n
    11823. Javier Girado
    11824. \r\n
    11825. Gino Castellano
    11826. \r\n
    11827. Mark Bennett
    11828. \r\n
    11829. Emma Spurgeon
    11830. \r\n
    11831. george succi
    11832. \r\n
    11833. Teresa Morrison
    11834. \r\n
    11835. Benedict Falegan
    11836. \r\n
    11837. Letitia Moller
    11838. \r\n
    11839. Affero

    11840. \r\n
    11841. Robert Vargas
    11842. \r\n
    11843. Mark Hammond
    11844. \r\n
    11845. Roberto Ferrero
    11846. \r\n
    11847. CLYDE K. HARVEY
    11848. \r\n
    " + } + }, + { + "model": "boxes.box", + "pk": 102, + "fields": { + "created": "2020-10-05T17:33:33.157Z", + "updated": "2022-05-17T17:22:45.210Z", + "label": "downloads-active-releases", + "content": "
    \r\n Python version\r\n Maintenance status\r\n First released\r\n End of support\r\n Release schedule\r\n
    \r\n
      \r\n
    1. \r\n 3.10\r\n bugfix\r\n 2021-10-04\r\n 2026-10\r\n PEP 619\r\n
    2. \r\n
    3. \r\n 3.9\r\n security\r\n 2020-10-05\r\n 2025-10\r\n PEP 596\r\n
    4. \r\n
    5. \r\n 3.8\r\n security\r\n 2019-10-14\r\n 2024-10\r\n PEP 569\r\n
    6. \r\n
    7. \r\n 3.7\r\n security\r\n 2018-06-27\r\n 2023-06-27\r\n PEP 537\r\n
    8. \r\n
    9. \r\n 2.7\r\n end-of-life\r\n 2010-07-03\r\n 2020-01-01\r\n PEP 373\r\n
    10. \r\n
    ", + "content_markup_type": "html", + "_content_rendered": "
    \r\n Python version\r\n Maintenance status\r\n First released\r\n End of support\r\n Release schedule\r\n
    \r\n
      \r\n
    1. \r\n 3.10\r\n bugfix\r\n 2021-10-04\r\n 2026-10\r\n PEP 619\r\n
    2. \r\n
    3. \r\n 3.9\r\n security\r\n 2020-10-05\r\n 2025-10\r\n PEP 596\r\n
    4. \r\n
    5. \r\n 3.8\r\n security\r\n 2019-10-14\r\n 2024-10\r\n PEP 569\r\n
    6. \r\n
    7. \r\n 3.7\r\n security\r\n 2018-06-27\r\n 2023-06-27\r\n PEP 537\r\n
    8. \r\n
    9. \r\n 2.7\r\n end-of-life\r\n 2010-07-03\r\n 2020-01-01\r\n PEP 373\r\n
    10. \r\n
    " + } + }, + { + "model": "boxes.box", + "pk": 103, + "fields": { + "created": "2020-11-16T19:26:40.396Z", + "updated": "2022-01-07T18:18:25.425Z", + "label": "sponsorship-application", + "content": "

    Sponsor the PSF

    \r\n\r\n

    Thank you for sponsoring the PSF! Please see below our menu of sponsorship options, and select a sponsorship package or customize the benefits that make the most sense for your organization.

    \r\n\r\n

    How to use this page:

    \r\n\r\n
      \r\n
    1. \r\n Select a Sponsorship Package
      \r\n Select your sponsorship level using the radio buttons below. You may customize your package by unchecking highlights items or checking available items outside your sponsorship package.\r\n
    2. \r\n
    3. \r\n Add-ons
      \r\n Select any add-on benefits.\r\n
    4. \r\n
    5. \r\n Submit your application
      \r\n Submit using the button at the bottom of this page, and your selections will be displayed. Sign in or create a python.org account to submit your application.\r\n
    6. \r\n
    7. \r\n Finalize
      \r\n PSF staff will reach out to you to confirm and finalize.\r\n
    8. \r\n
    \r\n\r\n

    If you would like us to walk you through the new program, email sponsors@python.org

    \r\n\r\n

    Thank you for making a difference in the Python ecosystem!Sponsor the PSF\r\n\r\n

    Thank you for sponsoring the PSF! Please see below our menu of sponsorship options, and select a sponsorship package or customize the benefits that make the most sense for your organization.

    \r\n\r\n

    How to use this page:

    \r\n\r\n
      \r\n
    1. \r\n Select a Sponsorship Package
      \r\n Select your sponsorship level using the radio buttons below. You may customize your package by unchecking highlights items or checking available items outside your sponsorship package.\r\n
    2. \r\n
    3. \r\n Add-ons
      \r\n Select any add-on benefits.\r\n
    4. \r\n
    5. \r\n Submit your application
      \r\n Submit using the button at the bottom of this page, and your selections will be displayed. Sign in or create a python.org account to submit your application.\r\n
    6. \r\n
    7. \r\n Finalize
      \r\n PSF staff will reach out to you to confirm and finalize.\r\n
    8. \r\n
    \r\n\r\n

    If you would like us to walk you through the new program, email sponsors@python.org

    \r\n\r\n

    Thank you for making a difference in the Python ecosystem!Sponsors\r\n\r\n

    Visionary sponsors like Google help to host Python downloads.

    \r\n", + "content_markup_type": "html", + "_content_rendered": "

    Sponsors

    \r\n\r\n

    Visionary sponsors like Google help to host Python downloads.

    \r\n" + } + }, + { + "model": "boxes.box", + "pk": 105, + "fields": { + "created": "2021-03-02T19:54:47.914Z", + "updated": "2021-04-15T20:30:53.148Z", + "label": "jobs-sponsors", + "content": "

    Job Board Sponsors

    \r\n\r\n
    \r\n\r\n
    \r\n \"Slack\r\n
    \r\n\r\n
    \r\n \"Facebook/Instagram\r\n
    \r\n\r\n
    \r\n \"Capital\r\n
    \r\n\r\n
    \r\n \"Microsoft\r\n
    \r\n\r\n
    \r\n \"Edgestream\r\n
    \r\n\r\n
    \r\n \"Salesforce\r\n
    \r\n\r\n
    \r\n Bloomberg\r\n
    \r\n\r\n
    \r\n \"Google\r\n
    \r\n\r\n
    \r\n \"Red\r\n
    \r\n\r\n
    \r\n \"Cockroach\r\n
    \r\n\r\n
    \r\n \"Corning\r\n
    \r\n\r\n\r\n\r\n\r\n\r\n
    \r\n\r\n
    \r\n

    \r\nSponsor the PSF\r\n

    ", + "content_markup_type": "html", + "_content_rendered": "

    Job Board Sponsors

    \r\n\r\n
    \r\n\r\n
    \r\n \"Slack\r\n
    \r\n\r\n
    \r\n \"Facebook/Instagram\r\n
    \r\n\r\n
    \r\n \"Capital\r\n
    \r\n\r\n
    \r\n \"Microsoft\r\n
    \r\n\r\n
    \r\n \"Edgestream\r\n
    \r\n\r\n
    \r\n \"Salesforce\r\n
    \r\n\r\n
    \r\n Bloomberg\r\n
    \r\n\r\n
    \r\n \"Google\r\n
    \r\n\r\n
    \r\n \"Red\r\n
    \r\n\r\n
    \r\n \"Cockroach\r\n
    \r\n\r\n
    \r\n \"Corning\r\n
    \r\n\r\n\r\n\r\n\r\n\r\n
    \r\n\r\n
    \r\n

    \r\nSponsor the PSF\r\n

    " + } + }, + { + "model": "boxes.box", + "pk": 106, + "fields": { + "created": "2022-07-21T17:13:06.334Z", + "updated": "2022-07-21T17:13:06.337Z", + "label": "sponsorship-application-closed", + "content": "

    Sponsor the PSF

    \r\n\r\n

    Thank you for your interest in sponsoring the PSF!

    \r\n\r\n

    Our menu of sponsorship options, packages, and customizations are currently being revised.

    \r\n\r\n

    Check back soon for our updated sponsorship options for 2023!

    ", + "content_markup_type": "html", + "_content_rendered": "

    Sponsor the PSF

    \r\n\r\n

    Thank you for your interest in sponsoring the PSF!

    \r\n\r\n

    Our menu of sponsorship options, packages, and customizations are currently being revised.

    \r\n\r\n

    Check back soon for our updated sponsorship options for 2023!

    " + } + } ] diff --git a/fixtures/flags.json b/fixtures/flags.json new file mode 100644 index 000000000..45164844f --- /dev/null +++ b/fixtures/flags.json @@ -0,0 +1,42 @@ +[ +{ + "model": "waffle.flag", + "pk": 1, + "fields": { + "name": "psf_membership", + "everyone": null, + "percent": null, + "testing": true, + "superusers": true, + "staff": false, + "authenticated": false, + "languages": "", + "rollout": false, + "note": "This flag is used to show the PSF Basic and Advanced member registration process.", + "created": "2015-06-05T09:47:03Z", + "modified": "2017-03-22T01:45:42.077Z", + "groups": [], + "users": [] + } +}, +{ + "model": "waffle.flag", + "pk": 2, + "fields": { + "name": "sponsorship-applications-open", + "everyone": true, + "percent": null, + "testing": false, + "superusers": false, + "staff": false, + "authenticated": false, + "languages": "", + "rollout": false, + "note": "Controls if the application form and benefits \"menu\" is visible at https://www.python.org/sponsors/application/\r\n\r\nThe contents of the page when applications are closed is modifiable at https://www.python.org/admin/boxes/box/106/change/", + "created": "2022-07-21T17:16:05Z", + "modified": "2022-07-21T17:24:06.747Z", + "groups": [], + "users": [] + } +} +] diff --git a/fixtures/sponsors.json b/fixtures/sponsors.json index edc3a98db..6cdc1ff29 100644 --- a/fixtures/sponsors.json +++ b/fixtures/sponsors.json @@ -1 +1,2984 @@ -[{"model": "sponsors.sponsorshippackage", "pk": 1, "fields": {"order": 0, "name": "Principal", "sponsorship_amount": 150000}}, {"model": "sponsors.sponsorshippackage", "pk": 2, "fields": {"order": 1, "name": "Diamond", "sponsorship_amount": 70000}}, {"model": "sponsors.sponsorshippackage", "pk": 3, "fields": {"order": 2, "name": "Platinum", "sponsorship_amount": 50000}}, {"model": "sponsors.sponsorshippackage", "pk": 4, "fields": {"order": 3, "name": "Gold", "sponsorship_amount": 25000}}, {"model": "sponsors.sponsorshippackage", "pk": 5, "fields": {"order": 4, "name": "Silver", "sponsorship_amount": 10000}}, {"model": "sponsors.sponsorshippackage", "pk": 6, "fields": {"order": 5, "name": "Bronze", "sponsorship_amount": 5000}}, {"model": "sponsors.sponsorshippackage", "pk": 7, "fields": {"order": 6, "name": "Copper", "sponsorship_amount": 2500}}, {"model": "sponsors.sponsorshipprogram", "pk": 1, "fields": {"order": 0, "name": "Foundation", "description": ""}}, {"model": "sponsors.sponsorshipprogram", "pk": 2, "fields": {"order": 1, "name": "PyCon", "description": ""}}, {"model": "sponsors.sponsorshipprogram", "pk": 3, "fields": {"order": 2, "name": "PyPI", "description": ""}}, {"model": "sponsors.sponsorshipbenefit", "pk": 28, "fields": {"order": 27, "name": "Logo in a prominent position on the PyPI project detail page", "description": "", "program": 3, "package_only": true, "new": false, "internal_description": "", "internal_value": 25000, "capacity": null, "soft_capacity": false, "packages": [1, 2], "conflicts": [40, 41, 42]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 29, "fields": {"order": 28, "name": "Logo on the PyPI footer", "description": "", "program": 3, "package_only": true, "new": false, "internal_description": "", "internal_value": 10000, "capacity": null, "soft_capacity": false, "packages": [1, 2, 3, 4], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 30, "fields": {"order": 29, "name": "Logo and write up on the PyPI sponsors page", "description": "", "program": 3, "package_only": true, "new": false, "internal_description": "", "internal_value": 5000, "capacity": null, "soft_capacity": false, "packages": [1, 2, 3, 4], "conflicts": [35]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 31, "fields": {"order": 30, "name": "Individual blog post on the Python Software Foundation blog", "description": "", "program": 3, "package_only": true, "new": false, "internal_description": "", "internal_value": 5000, "capacity": null, "soft_capacity": false, "packages": [1, 2], "conflicts": [34]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 32, "fields": {"order": 31, "name": "Quarterly thank you tweet from @ThePSF", "description": "", "program": 3, "package_only": true, "new": false, "internal_description": "", "internal_value": 2500, "capacity": null, "soft_capacity": false, "packages": [1, 2, 3], "conflicts": [36, 39]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 33, "fields": {"order": 32, "name": "Quarterly thank you tweet from @pypi", "description": "", "program": 3, "package_only": true, "new": false, "internal_description": "", "internal_value": 2500, "capacity": null, "soft_capacity": false, "packages": [1, 2, 3], "conflicts": [37, 38]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 34, "fields": {"order": 35, "name": "Inclusion in a blog post on the Python Software Foundation blog,", "description": "", "program": 3, "package_only": false, "new": false, "internal_description": null, "internal_value": 2500, "capacity": null, "soft_capacity": false, "packages": [3, 4, 5], "conflicts": [31]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 35, "fields": {"order": 36, "name": "Logo on the PyPI sponsors page", "description": "", "program": 3, "package_only": false, "new": false, "internal_description": null, "internal_value": 1500, "capacity": null, "soft_capacity": false, "packages": [5, 6], "conflicts": [30]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 36, "fields": {"order": 38, "name": "Bi-yearly thank you tweet from @ThePSF", "description": "", "program": 3, "package_only": false, "new": false, "internal_description": null, "internal_value": 1000, "capacity": null, "soft_capacity": false, "packages": [5], "conflicts": [32, 39]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 37, "fields": {"order": 39, "name": "Bi-yearly thank you tweet from @pypi", "description": "", "program": 3, "package_only": false, "new": false, "internal_description": null, "internal_value": 1000, "capacity": null, "soft_capacity": false, "packages": [5], "conflicts": [33, 38]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 38, "fields": {"order": 40, "name": "Single thank you tweet from @pypi Twitter account (on initial", "description": "", "program": 3, "package_only": false, "new": false, "internal_description": null, "internal_value": 500, "capacity": null, "soft_capacity": false, "packages": [6], "conflicts": [33, 37]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 39, "fields": {"order": 41, "name": "Single thank you tweet from @ThePSF Twitter account (on initial", "description": "", "program": 3, "package_only": false, "new": false, "internal_description": null, "internal_value": 500, "capacity": null, "soft_capacity": false, "packages": [6], "conflicts": [32, 36]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 40, "fields": {"order": 33, "name": "Logo on high rotation in a prominent position on the PyPI projec", "description": "", "program": 3, "package_only": false, "new": false, "internal_description": "", "internal_value": 10000, "capacity": null, "soft_capacity": false, "packages": [3], "conflicts": [28, 41, 42]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 41, "fields": {"order": 34, "name": "Logo on medium rotation in a prominent position on the PyPI proj", "description": "", "program": 3, "package_only": false, "new": false, "internal_description": null, "internal_value": 5000, "capacity": null, "soft_capacity": false, "packages": [4], "conflicts": [28, 40, 42]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 42, "fields": {"order": 37, "name": "Logo on low rotation in a prominent position on the PyPI project", "description": "", "program": 3, "package_only": false, "new": false, "internal_description": null, "internal_value": 1000, "capacity": null, "soft_capacity": false, "packages": [5], "conflicts": [28, 40, 41]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 43, "fields": {"order": 0, "name": "Plenary address", "description": "Three minutes, recorded or live", "program": 2, "package_only": true, "new": false, "internal_description": "", "internal_value": 9500, "capacity": 4, "soft_capacity": false, "packages": [1], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 44, "fields": {"order": 1, "name": "Logo on conference welcome page", "description": "Visible to all registered attendees attending PyCon", "program": 2, "package_only": false, "new": false, "internal_description": "", "internal_value": 4000, "capacity": 4, "soft_capacity": true, "packages": [1], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 45, "fields": {"order": 2, "name": "Inclusion in pre-conference attendee email", "description": "Inclusion in 1 pre-conference attendee email. 2 emails are sent by PyCon staff and are shared with registered attendees only. This cannot be linked to commercial sites. Can be jobs, blogs, events, but not sales related", "program": 2, "package_only": true, "new": false, "internal_description": "", "internal_value": 4000, "capacity": 8, "soft_capacity": false, "packages": [1, 2], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 46, "fields": {"order": 3, "name": "Post Survey Question", "description": "Opportunity to add 1 question to the post event attendee survey. Follow-up reporting will be provided with survey results. NEW FOR 2021", "program": 2, "package_only": false, "new": false, "internal_description": "", "internal_value": 1000, "capacity": 8, "soft_capacity": true, "packages": [1, 2], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 47, "fields": {"order": 4, "name": "PyCon Blog Post", "description": "Originally written post highlighting use of Python", "program": 2, "package_only": true, "new": false, "internal_description": "", "internal_value": 1500, "capacity": 4, "soft_capacity": false, "packages": [1], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 48, "fields": {"order": 5, "name": "Track naming rights", "description": "Name and logo rights for one of the PyCon talk tracks", "program": 2, "package_only": false, "new": false, "internal_description": "", "internal_value": 2000, "capacity": 4, "soft_capacity": false, "packages": [1], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 49, "fields": {"order": 6, "name": "Sponsor Workshop", "description": "\"Sponsor workshop (recording or live) added to schedule.\r\nRecording added to the PyCon YouTube channel\"", "program": 2, "package_only": false, "new": false, "internal_description": "", "internal_value": 5000, "capacity": 8, "soft_capacity": true, "packages": [1, 2], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 50, "fields": {"order": 7, "name": "Retweet from @ThePSF", "description": "Social Media Retweet: @thePSF will retweet 1 post provided by the sponsor. Timing will be determined by the PyCon team.", "program": 2, "package_only": false, "new": true, "internal_description": "", "internal_value": 1500, "capacity": 8, "soft_capacity": false, "packages": [1, 2], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 51, "fields": {"order": 8, "name": "Sponsor slide between PyCon sessions", "description": "All assets will be rotated. This could be a static slide or a short recording similar to a commercial", "program": 2, "package_only": false, "new": false, "internal_description": "", "internal_value": 3000, "capacity": 8, "soft_capacity": true, "packages": [1, 2], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 52, "fields": {"order": 9, "name": "Mention in the PyCon Newsletter", "description": "Newsletter is sent ~5 times and goes to us.pycon.org account holders.", "program": 2, "package_only": true, "new": false, "internal_description": "Principal x 3\r\nDiamond x 2\r\nPlatinum x 1", "internal_value": 2000, "capacity": null, "soft_capacity": false, "packages": [1, 2, 3], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 53, "fields": {"order": 10, "name": "Virtual Booth", "description": "live, demos, chat, interviews, Participate in Virtual \u201cSwag Bag\u201d, whatever", "program": 2, "package_only": true, "new": false, "internal_description": "", "internal_value": 10000, "capacity": null, "soft_capacity": false, "packages": [1, 2, 3, 4, 5], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 54, "fields": {"order": 11, "name": "Meet with the Steering Council", "description": "Opportunity to meet with the Steering Council to discuss technical aspects of Python or feedback you may have for the Steering Council. The health and sustainability of Python is critical to many organizations and we want to make sure community needs are heard and noted.", "program": 1, "package_only": true, "new": true, "internal_description": "", "internal_value": 9500, "capacity": 4, "soft_capacity": true, "packages": [1], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 55, "fields": {"order": 12, "name": "Meet with the PSF Board of Directors", "description": "Opportunity to meet with the PSF Board of Directors to discuss a topic of your choosing. The health and sustainability of our community is important to many organizations and we want to make sure community needs are heard and noted.", "program": 1, "package_only": false, "new": true, "internal_description": "", "internal_value": 5000, "capacity": 4, "soft_capacity": true, "packages": [1], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 56, "fields": {"order": 13, "name": "Four Ads in the PSF Newsletter", "description": "4 ads throughout the year, newsletter is published every other month", "program": 1, "package_only": false, "new": false, "internal_description": "", "internal_value": 7000, "capacity": 4, "soft_capacity": true, "packages": [1], "conflicts": [60]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 57, "fields": {"order": 14, "name": "Blog and Social Media Community Visibility", "description": "1 original blog post on the PSF blog highlighting sponsor\u2019s use of Python. Quarterly social media thank you of your sponsorship via @ThePSF", "program": 1, "package_only": false, "new": false, "internal_description": "", "internal_value": 2500, "capacity": 4, "soft_capacity": true, "packages": [1], "conflicts": [61]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 58, "fields": {"order": 15, "name": "docs.python.org recognition", "description": "Logo listed on docs.python.org pages for one year", "program": 1, "package_only": false, "new": false, "internal_description": "", "internal_value": 2500, "capacity": 4, "soft_capacity": true, "packages": [1], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 59, "fields": {"order": 17, "name": "Logo Listed on PSF blog", "description": "Logo will be placed in the header and visible for one year", "program": 1, "package_only": false, "new": false, "internal_description": "", "internal_value": 2000, "capacity": 8, "soft_capacity": true, "packages": [1, 2], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 60, "fields": {"order": 18, "name": "Two Ads in the PSF Newsletter", "description": "2 ads throughout the year, newsletter is published every other month", "program": 1, "package_only": false, "new": false, "internal_description": "", "internal_value": 5000, "capacity": 4, "soft_capacity": true, "packages": [2], "conflicts": [56]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 61, "fields": {"order": 19, "name": "Social Media Community Visibility 3/yr", "description": "Social media promotion 3 times/year of your sponsorship via @ThePSF", "program": 1, "package_only": false, "new": false, "internal_description": "", "internal_value": 2000, "capacity": 4, "soft_capacity": true, "packages": [2], "conflicts": [57]}}, {"model": "sponsors.sponsorshipbenefit", "pk": 62, "fields": {"order": 20, "name": "Social Media Community Visibility 2/yr", "description": "Bi-annual social media promotion of your sponsorship via @ThePSF", "program": 1, "package_only": false, "new": false, "internal_description": "", "internal_value": 1500, "capacity": 8, "soft_capacity": true, "packages": [3], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 63, "fields": {"order": 16, "name": "jobs.python.org support", "description": "logo listed jobs.python.org for one year", "program": 1, "package_only": false, "new": false, "internal_description": "", "internal_value": 1000, "capacity": 8, "soft_capacity": true, "packages": [2, 3], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 64, "fields": {"order": 21, "name": "Logo on python.org sponsors page", "description": "listed in order of level", "program": 1, "package_only": false, "new": false, "internal_description": "", "internal_value": 1000, "capacity": null, "soft_capacity": false, "packages": [1, 2, 3, 4, 5, 6, 7], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 65, "fields": {"order": 22, "name": "Level supporter badge", "description": "Can be placed on your website, social media promotion, and/or at events", "program": 1, "package_only": false, "new": false, "internal_description": "", "internal_value": 1000, "capacity": null, "soft_capacity": false, "packages": [1, 2, 3, 4, 5, 6, 7], "conflicts": []}}, {"model": "sponsors.sponsorshipbenefit", "pk": 66, "fields": {"order": 23, "name": "Promotion of Python case study", "description": "Any case studies posted on python.org will get promoted on social media and community mailing lists", "program": 1, "package_only": true, "new": false, "internal_description": "", "internal_value": null, "capacity": null, "soft_capacity": false, "packages": [1, 2, 3, 4, 5, 6, 7], "conflicts": []}}, {"model": "sponsors.sponsor", "pk": 4, "fields": {"created": "2014-02-20T00:39:19.959Z", "updated": "2014-02-20T00:41:17.426Z", "creator": 29, "last_modified_by": 29, "company": 3, "content": "", "content_markup_type": "restructuredtext", "is_published": true, "_content_rendered": "", "featured": false}}] \ No newline at end of file +[ +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 2, + "fields": { + "order": 17, + "name": "Meet with the PSF Board of Directors", + "description": "Opportunity to meet with the PSF Board of Directors to discuss a topic of your choosing. The health and sustainability of our community is important to many organizations and we want to make sure community needs are heard and noted.", + "program": 1, + "package_only": true, + "new": true, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 5000, + "capacity": 4, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 4, + "fields": { + "order": 25, + "name": "Logo on python.org/downloads/", + "description": "Logo added to python.org/downloads/. 4.4 million distinct users visit this page every month!", + "program": 4, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 15000, + "capacity": 4, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 24, + "fields": { + "order": 14, + "name": "Mention in the PSF Newsletter", + "description": "Mentions in the PSF newsletter that is published every other month.", + "program": 1, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 7000, + "capacity": 4, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 25, + "fields": { + "order": 16, + "name": "Original Blog Post", + "description": "1 original blog post on the PSF blog highlighting sponsor\u2019s use of Python.", + "program": 1, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 2500, + "capacity": 4, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 26, + "fields": { + "order": 15, + "name": "Logo listed on PSF blog", + "description": "Logo will be placed in the header on the blog home page (pyfound.blogspot.com) and visible for one year. The PSF blog receives about 72,000 views per month(4,126,948 all time)", + "program": 1, + "package_only": true, + "new": true, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 2000, + "capacity": 8, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 29, + "fields": { + "order": 13, + "name": "jobs.python.org support", + "description": "Logo listed on jobs.python.org for one year", + "program": 1, + "package_only": true, + "new": true, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 1000, + "capacity": 8, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 30, + "fields": { + "order": 12, + "name": "Community visibility on social media", + "description": "Social media promotion of your sponsorship via @ThePSF\r\n4 - Visionary and Sustainability\r\n3 - Maintaining\r\n2 - Contributing and Supporting\r\n1 - Partner", + "program": 1, + "package_only": false, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 1500, + "capacity": 8, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 31, + "fields": { + "order": 11, + "name": "Logo on python.org", + "description": "Logo linked to sponsor designated URL posted on https://www.python.org/psf/sponsors/\r\nListed in order of package level", + "program": 1, + "package_only": false, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 1000, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 32, + "fields": { + "order": 10, + "name": "Level supporter badge", + "description": "PSF provides a supporter icon that should be displayed on sponsor website, social media accounts and events. A way to show support for the Python community.", + "program": 1, + "package_only": false, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 1000, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 33, + "fields": { + "order": 8, + "name": "Promotion of Python case study", + "description": "Write a case study showcasing your use of Python. Any case studies posted on python.org will be promoted on social media and community mailing lists.", + "program": 1, + "package_only": false, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 1000, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 35, + "fields": { + "order": 40, + "name": "Logo on the PyPI footer", + "description": "https://pypi.org/", + "program": 3, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 2000, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 36, + "fields": { + "order": 39, + "name": "Individual PSF blog post about PyPI use", + "description": "PSF and sponsor will work on a blog to be posted on pyfound.blogspot.org.", + "program": 3, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 1500, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 38, + "fields": { + "order": 37, + "name": "Logo in a prominent position on the PyPI project detail page", + "description": "Company logo will be added to a prominent location on PyPI project pages", + "program": 3, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 5000, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 40, + "fields": { + "order": 36, + "name": "Inclusion in a PSF blog about PyPI use with other sponsors", + "description": "Blog on pyfound.blogspot.org to be written by PSF staff", + "program": 3, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 1500, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 42, + "fields": { + "order": 4, + "name": "Logo on the PyPI sponsors page", + "description": "Company logo will be added to a sponsor page on pypi.org/", + "program": 3, + "package_only": false, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 1000, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 44, + "fields": { + "order": 27, + "name": "Joint press release with the PSF", + "description": "PSF and sponsor will work together to create a press release.", + "program": 4, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 10000, + "capacity": 4, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 45, + "fields": { + "order": 28, + "name": "CPython Dev Sprint Recognition", + "description": "Sponsor will receive recognition at the intro and wrap up of the sprint, plus social media mentions.\r\nSponsor will also be recognized in the virtual event and in the post event blog.", + "program": 4, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 10000, + "capacity": 4, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 46, + "fields": { + "order": 29, + "name": "Logo recognition on devguide.python.org/", + "description": "Logo added to devguide.python.org/. Many core developers and mentees use this resource daily.", + "program": 4, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 5000, + "capacity": 4, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 47, + "fields": { + "order": 30, + "name": "Meet with the Python Steering Council", + "description": "Opportunity to meet with the Steering Council to discuss technical aspects of Python or feedback you may have, or just a Q&A with the Steering Council. The health and sustainability of Python is critical to many organizations and we want to make sure community needs are heard and noted.", + "program": 4, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 9500, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 48, + "fields": { + "order": 30, + "name": "docs.python.org recognition", + "description": "Logo listed on docs.python.org pages for one year.", + "program": 4, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 2500, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 49, + "fields": { + "order": 31, + "name": "Language Summit recognition", + "description": "Sponsor will receive recognition at the intro and wrap up of the event, one social media mention, and recognition in post event blog.", + "program": 4, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 5000, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 57, + "fields": { + "order": 47, + "name": "Social Media Promotion", + "description": "Social Media promotion of your sponsorship on @PyPI", + "program": 3, + "package_only": false, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 1500, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 58, + "fields": { + "order": 0, + "name": "Booth space in Exhibit Hall", + "description": "Booth in Expo Hall starting Thursday for Opening Reception, all day Friday, and Saturday. Limited availability, first come first served. Visionary and Sustainability sponsors have access to up to 20x30, Maintaining up to 20x20, Contributing and Supporting up to 20x10, and Partner up to 10x10.", + "program": 5, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 10000, + "capacity": 3, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 62, + "fields": { + "order": 27, + "name": "Complimentary lead retrieval", + "description": "Complimentary lead retrieval license for use during PyCon US", + "program": 5, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 200, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 63, + "fields": { + "order": 28, + "name": "Highlight in attendee email", + "description": "Highlight of PyCon US content in the attendee emails sent to all registered attendees", + "program": 5, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 5000, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 64, + "fields": { + "order": 3, + "name": "Full conference passes", + "description": "Full conference pass includes Opening Reception and all content Friday, Saturday and Sunday", + "program": 5, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 700, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 65, + "fields": { + "order": 29, + "name": "Expo Hall only staff passes", + "description": "Expo Hall only passes include access to Expo Hall only (includes Opening Reception, breakfast and lunch Friday, Saturday and Sunday)", + "program": 5, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 75, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 66, + "fields": { + "order": 31, + "name": "Sponsor Workshops", + "description": "One Sponsor Workshop, 45 minutes presentation on Thursday, April 28th.\r\n\r\nCapacity limit of 12 workshops", + "program": 5, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 8000, + "capacity": 12, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 68, + "fields": { + "order": 32, + "name": "Sponsor Greeting in General Session", + "description": "Three minute live greeting for PyCon US Attendees during General Sessions.", + "program": 5, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 8000, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 69, + "fields": { + "order": 33, + "name": "Full-Color Slide", + "description": "One full-color slide to be used in rotation in general session & all breakout rooms in between talks, will be displayed between sessions.", + "program": 5, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 3000, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 70, + "fields": { + "order": 1, + "name": "Logo highlight in PyCon US News", + "description": "4 mentions, sent monthly to all users that opted-in for PyCon News", + "program": 5, + "package_only": false, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 2000, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 71, + "fields": { + "order": 9, + "name": "Job listing and Job fair table", + "description": "Included in sponsorship is a job fair table in the Expo Hall for the Job Fair including a job listing on us.pycon.org jobs fair page. An Expo Only pass is required for staff (includes breakfast and lunch)", + "program": 5, + "package_only": false, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 5000, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 72, + "fields": { + "order": 34, + "name": "Private Job Fair Interview Room", + "description": "Private interview room available to recruiting team during Job Fair on Sunday.", + "program": 5, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 5000, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 73, + "fields": { + "order": 35, + "name": "Additional Expo Hall Only Passes", + "description": "Up to 5 additional Expo Hall Only staff passes available at $75.00 each. A voucher code will be provided for the quantity requested and each staff member will be required to register and pay the discounted ticket cost individually.", + "program": 5, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 75, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 74, + "fields": { + "order": 2, + "name": "Listing on PyCon US website", + "description": "Sponsor designation and listing on us.pycon.org", + "program": 5, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 1000, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 75, + "fields": { + "order": 37, + "name": "Social Media promotion", + "description": "Promotion of sponsorshp on @pycon Twitter.", + "program": 5, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 1500, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 76, + "fields": { + "order": 38, + "name": "Donation opportunity in PyLadies Auction", + "description": "Provide a donation for the PyLadies Auction", + "program": 5, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 2000, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 77, + "fields": { + "order": 36, + "name": "Additional full conference passes", + "description": "Up to 10 additional passes available at a 25% discount off the regular corporate rate. A voucher code will be provided for the quantity requested and each staff member will be required to register and pay the discounted ticket cost individually.", + "program": 5, + "package_only": true, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 562, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 78, + "fields": { + "order": 48, + "name": "Open Source Project Booth", + "description": "PyCon US 2022 is offering a certain number of F/OSS Projects complimentary booths. Select this option to apply for one of the booths if your group is working on a project in open source. Acceptance notifications will be sent no later than February 24, 2022", + "program": 5, + "package_only": false, + "new": false, + "unavailable": false, + "a_la_carte": true, + "internal_description": "PyCon US 2022 is offering a certain number of F/OSS Projects complimentary booths. Select this option to apply for one of the booths if your group is working on a project in open source. Acceptance notifications will be sent in February 2022", + "internal_value": null, + "capacity": 10, + "soft_capacity": false, + "year": 2022, + "packages": [], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 79, + "fields": { + "order": 50, + "name": "Registration Sponsor", + "description": "$10,000 with capacity for 2 sponsors\r\nOpportunity to provide an item for attendees as they check-in that promotes sustainability. Logo placed on registration display. Social Media Promotion.", + "program": 5, + "package_only": false, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 10000, + "capacity": 2, + "soft_capacity": false, + "year": 2022, + "packages": [], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 80, + "fields": { + "order": 51, + "name": "Opening Reception Sponsor", + "description": "$5,000 with capacity of 2 sponsors.\r\nWelcome sign displayed at entrance of the Opening Reception. Social media promotion", + "program": 5, + "package_only": false, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 5000, + "capacity": 2, + "soft_capacity": false, + "year": 2022, + "packages": [], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 82, + "fields": { + "order": 49, + "name": "Job Fair Table", + "description": "Select this option to participate only in the Job Fair - May 1, 2022 in Salt Lake City\r\n\r\n$3,000 per table\r\nIncludes (2) Job Fair registration passes(includes lunch), listing on the Jobs Fair page on us.pycon.org", + "program": 5, + "package_only": false, + "new": false, + "unavailable": false, + "a_la_carte": true, + "internal_description": "", + "internal_value": 3000, + "capacity": null, + "soft_capacity": false, + "year": 2022, + "packages": [], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 83, + "fields": { + "order": 52, + "name": "Captioning Sponsor", + "description": "$2,000 \r\nLogo placement on us.pycon.org, social media promotion", + "program": 5, + "package_only": false, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 2000, + "capacity": 2, + "soft_capacity": false, + "year": 2022, + "packages": [], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 84, + "fields": { + "order": 53, + "name": "PyLadies Auction Sponsor", + "description": "$3,000 \r\nwelcome at the Auction, logo placement on us.pycon.org, social media promotion", + "program": 5, + "package_only": false, + "new": false, + "unavailable": true, + "a_la_carte": false, + "internal_description": "", + "internal_value": 3000, + "capacity": 2, + "soft_capacity": false, + "year": 2022, + "packages": [], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 85, + "fields": { + "order": 54, + "name": "PyLadies Luncheon Sponsor", + "description": "$2,000 sponsorship cost\r\nLogo placement on us.pycon.org, social media promotion", + "program": 5, + "package_only": false, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 2000, + "capacity": 2, + "soft_capacity": false, + "year": 2022, + "packages": [], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 86, + "fields": { + "order": 55, + "name": "PSF Member Lunch Sponsor", + "description": "$2,000 with capacity for 2 sponsors\r\nlogo placement on us.pycon.org, social media promotion", + "program": 5, + "package_only": false, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 2000, + "capacity": 2, + "soft_capacity": false, + "year": 2022, + "packages": [], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.sponsorshipbenefit", + "pk": 87, + "fields": { + "order": 56, + "name": "PyCon US Travel Grant Sponsor", + "description": "$2,000 with capacity for 4 sponsors\r\nLogo placement on us.pycon.org, social media promotion", + "program": 5, + "package_only": false, + "new": false, + "unavailable": false, + "a_la_carte": false, + "internal_description": "", + "internal_value": 2000, + "capacity": 4, + "soft_capacity": false, + "year": 2022, + "packages": [], + "legal_clauses": [], + "conflicts": [] + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 26, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 62 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 27, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 62 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 28, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 62 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 29, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 64 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 30, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 64 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 31, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 64 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 32, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 64 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 33, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 64 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 34, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 64 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 35, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 64 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 36, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 64 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 37, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 65 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 38, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 65 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 39, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 65 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 40, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 65 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 41, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 65 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 42, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 65 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 43, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 75 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 44, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 75 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 45, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 75 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 46, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 75 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 47, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 75 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 48, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 75 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 49, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 75 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 51, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "logoplacementconfiguration" + ], + "benefit": 31 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 52, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "logoplacementconfiguration" + ], + "benefit": 38 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 53, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "logoplacementconfiguration" + ], + "benefit": 74 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 54, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "emailtargetableconfiguration" + ], + "benefit": 74 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 55, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "emailtargetableconfiguration" + ], + "benefit": 74 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 87, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "logoplacementconfiguration" + ], + "benefit": 29 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 88, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "logoplacementconfiguration" + ], + "benefit": 4 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 89, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 24 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 90, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 24 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 91, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 24 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 92, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "requiredtextassetconfiguration" + ], + "benefit": 63 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 93, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 73 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 94, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 73 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 95, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 73 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 96, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 73 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 97, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 73 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 98, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 73 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 99, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 77 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 100, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 77 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 101, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 77 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 102, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 77 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 103, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 77 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 104, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 77 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 105, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 77 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 106, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "providedtextassetconfiguration" + ], + "benefit": 64 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 107, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "providedtextassetconfiguration" + ], + "benefit": 65 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 108, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "providedtextassetconfiguration" + ], + "benefit": 77 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 109, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "providedtextassetconfiguration" + ], + "benefit": 73 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 110, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "requiredtextassetconfiguration" + ], + "benefit": 68 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 111, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "requiredimgassetconfiguration" + ], + "benefit": 69 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 112, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "requiredresponseassetconfiguration" + ], + "benefit": 71 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 113, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "requiredresponseassetconfiguration" + ], + "benefit": 66 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 114, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "providedfileassetconfiguration" + ], + "benefit": 58 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 115, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "providedfileassetconfiguration" + ], + "benefit": 58 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 116, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "providedfileassetconfiguration" + ], + "benefit": 71 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 117, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "providedfileassetconfiguration" + ], + "benefit": 31 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 118, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "providedfileassetconfiguration" + ], + "benefit": 33 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 119, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "requiredtextassetconfiguration" + ], + "benefit": 71 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 120, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "providedtextassetconfiguration" + ], + "benefit": 66 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 121, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "logoplacementconfiguration" + ], + "benefit": 42 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 122, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 64 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 123, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 65 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 124, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "providedtextassetconfiguration" + ], + "benefit": 82 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 125, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "providedtextassetconfiguration" + ], + "benefit": 71 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 126, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "requiredresponseassetconfiguration" + ], + "benefit": 72 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 128, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 64 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 129, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 65 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 130, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 77 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 131, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "tieredquantityconfiguration" + ], + "benefit": 77 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 132, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "requiredresponseassetconfiguration" + ], + "benefit": 76 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 161, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "providedfileassetconfiguration" + ], + "benefit": 58 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 162, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "providedfileassetconfiguration" + ], + "benefit": 62 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 163, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "emailtargetableconfiguration" + ], + "benefit": 58 + } +}, +{ + "model": "sponsors.benefitfeatureconfiguration", + "pk": 164, + "fields": { + "polymorphic_ctype": [ + "sponsors", + "emailtargetableconfiguration" + ], + "benefit": 87 + } +}, +{ + "model": "sponsors.logoplacementconfiguration", + "pk": 51, + "fields": { + "publisher": "psf", + "logo_place": "sponsors", + "link_to_sponsors_page": false, + "describe_as_sponsor": false + } +}, +{ + "model": "sponsors.logoplacementconfiguration", + "pk": 52, + "fields": { + "publisher": "pypi", + "logo_place": "sidebar", + "link_to_sponsors_page": true, + "describe_as_sponsor": true + } +}, +{ + "model": "sponsors.logoplacementconfiguration", + "pk": 53, + "fields": { + "publisher": "pycon", + "logo_place": "sponsors", + "link_to_sponsors_page": false, + "describe_as_sponsor": false + } +}, +{ + "model": "sponsors.logoplacementconfiguration", + "pk": 87, + "fields": { + "publisher": "psf", + "logo_place": "jobs", + "link_to_sponsors_page": false, + "describe_as_sponsor": false + } +}, +{ + "model": "sponsors.logoplacementconfiguration", + "pk": 88, + "fields": { + "publisher": "psf", + "logo_place": "download", + "link_to_sponsors_page": false, + "describe_as_sponsor": false + } +}, +{ + "model": "sponsors.logoplacementconfiguration", + "pk": 121, + "fields": { + "publisher": "pypi", + "logo_place": "sponsors", + "link_to_sponsors_page": true, + "describe_as_sponsor": true + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 26, + "fields": { + "package": 1, + "quantity": 2 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 27, + "fields": { + "package": 2, + "quantity": 2 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 28, + "fields": { + "package": 3, + "quantity": 1 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 29, + "fields": { + "package": 1, + "quantity": 25 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 30, + "fields": { + "package": 2, + "quantity": 22 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 31, + "fields": { + "package": 3, + "quantity": 18 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 32, + "fields": { + "package": 4, + "quantity": 15 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 33, + "fields": { + "package": 5, + "quantity": 10 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 34, + "fields": { + "package": 6, + "quantity": 5 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 35, + "fields": { + "package": 7, + "quantity": 2 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 36, + "fields": { + "package": 8, + "quantity": 1 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 37, + "fields": { + "package": 1, + "quantity": 10 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 38, + "fields": { + "package": 2, + "quantity": 10 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 39, + "fields": { + "package": 3, + "quantity": 8 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 40, + "fields": { + "package": 4, + "quantity": 8 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 41, + "fields": { + "package": 5, + "quantity": 5 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 42, + "fields": { + "package": 6, + "quantity": 5 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 43, + "fields": { + "package": 1, + "quantity": 2 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 44, + "fields": { + "package": 2, + "quantity": 2 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 45, + "fields": { + "package": 3, + "quantity": 2 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 46, + "fields": { + "package": 4, + "quantity": 1 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 47, + "fields": { + "package": 5, + "quantity": 1 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 48, + "fields": { + "package": 6, + "quantity": 1 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 49, + "fields": { + "package": 7, + "quantity": 1 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 89, + "fields": { + "package": 1, + "quantity": 4 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 90, + "fields": { + "package": 2, + "quantity": 4 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 91, + "fields": { + "package": 3, + "quantity": 2 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 93, + "fields": { + "package": 1, + "quantity": 5 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 94, + "fields": { + "package": 2, + "quantity": 5 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 95, + "fields": { + "package": 3, + "quantity": 5 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 96, + "fields": { + "package": 4, + "quantity": 5 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 97, + "fields": { + "package": 5, + "quantity": 5 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 98, + "fields": { + "package": 6, + "quantity": 5 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 99, + "fields": { + "package": 1, + "quantity": 10 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 100, + "fields": { + "package": 2, + "quantity": 10 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 101, + "fields": { + "package": 3, + "quantity": 10 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 102, + "fields": { + "package": 4, + "quantity": 10 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 103, + "fields": { + "package": 5, + "quantity": 10 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 104, + "fields": { + "package": 6, + "quantity": 10 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 105, + "fields": { + "package": 7, + "quantity": 10 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 122, + "fields": { + "package": 9, + "quantity": 2 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 123, + "fields": { + "package": 9, + "quantity": 2 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 128, + "fields": { + "package": 11, + "quantity": 2 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 129, + "fields": { + "package": 11, + "quantity": 2 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 130, + "fields": { + "package": 9, + "quantity": 2 + } +}, +{ + "model": "sponsors.tieredquantityconfiguration", + "pk": 131, + "fields": { + "package": 11, + "quantity": 2 + } +}, +{ + "model": "sponsors.emailtargetableconfiguration", + "pk": 54, + "fields": {} +}, +{ + "model": "sponsors.emailtargetableconfiguration", + "pk": 55, + "fields": {} +}, +{ + "model": "sponsors.emailtargetableconfiguration", + "pk": 163, + "fields": {} +}, +{ + "model": "sponsors.emailtargetableconfiguration", + "pk": 164, + "fields": {} +}, +{ + "model": "sponsors.requiredimgassetconfiguration", + "pk": 111, + "fields": { + "related_to": "sponsorship", + "internal_name": "pycon-static-slide", + "label": "Your slide for display between sessions.", + "help_text": "Deadline to provide graphics for full-color ad to be used in rotation in general session and all breakout rooms in between talk tracks.", + "due_date": "2022-04-08", + "min_width": 1024, + "max_width": 4096, + "min_height": 768, + "max_height": 3072 + } +}, +{ + "model": "sponsors.requiredtextassetconfiguration", + "pk": 92, + "fields": { + "related_to": "sponsorship", + "internal_name": "Attendee Email Text", + "due_date": "2022-03-21", + "label": "Some text from you to share in the attendee email", + "help_text": "2-3 sentences of PyCon US offerings to share with attendees. Can include links to talks, workshops, or websites.", + "max_length": null + } +}, +{ + "model": "sponsors.requiredtextassetconfiguration", + "pk": 110, + "fields": { + "related_to": "sponsorship", + "internal_name": "sponsor-greeting-details", + "due_date": "2022-04-08", + "label": "Name of speaker who will give your 3 minute greeting.", + "help_text": "We need this to review ahead of live presentation.", + "max_length": null + } +}, +{ + "model": "sponsors.requiredtextassetconfiguration", + "pk": 119, + "fields": { + "related_to": "sponsorship", + "internal_name": "pycon-2022-job-listing", + "due_date": "2022-04-18", + "label": "Job listing for us.pycon.org Jobs page.", + "help_text": "Your job listing for us.pycon.org. Markdown will be supported, see https://www.markdownguide.org/cheat-sheet/ for how to add links and structure to your job listing.", + "max_length": null + } +}, +{ + "model": "sponsors.requiredresponseassetconfiguration", + "pk": 112, + "fields": { + "related_to": "sponsorship", + "internal_name": "pycon-confirm-job-fair-participation", + "label": "Will you be participating in the onsite Job Fair?", + "help_text": "Deadline to confirm participation for the Job Fair", + "due_date": "2022-04-01" + } +}, +{ + "model": "sponsors.requiredresponseassetconfiguration", + "pk": 113, + "fields": { + "related_to": "sponsorship", + "internal_name": "pycon-confirm-sponsor-workshop-participation", + "label": "Will you be presenting an in-person Sponsor Workshop?", + "help_text": "Deadline to confirm Sponsor Workshop participation.", + "due_date": "2022-02-22" + } +}, +{ + "model": "sponsors.requiredresponseassetconfiguration", + "pk": 126, + "fields": { + "related_to": "sponsorship", + "internal_name": "PyCon-private-job-fair-interview-room", + "label": "Will you be utilizing a private Job Fair interview room?", + "help_text": "Deadline to confirm private Job Fair interview room", + "due_date": "2022-04-18" + } +}, +{ + "model": "sponsors.requiredresponseassetconfiguration", + "pk": 132, + "fields": { + "related_to": "sponsorship", + "internal_name": "PyLadies-auction-donation-form", + "label": "Will you be donating items to the PyLadies Auction?", + "help_text": "Please submit your donations via this form by April 22, 2022: https://docs.google.com/forms/d/e/1FAIpQLSfZvo48BxEv41Vnwn7GlxQ-RGjJsybKR1sz47osAUPfknaMGw/viewform", + "due_date": "2022-04-22" + } +}, +{ + "model": "sponsors.providedtextassetconfiguration", + "pk": 106, + "fields": { + "related_to": "sponsorship", + "internal_name": "full_conference_passes_code", + "shared": false, + "label": "Complimentary Full Conference Registration Voucher", + "help_text": "Provide this to your team who are attending Full Conference, provides complimentary registration.", + "shared_text": "" + } +}, +{ + "model": "sponsors.providedtextassetconfiguration", + "pk": 107, + "fields": { + "related_to": "sponsorship", + "internal_name": "expo_hall_only_passes_code", + "shared": false, + "label": "Complimentary Expo Hall Only Registration Voucher", + "help_text": "Provide this to your team who are only attending to staff your Expo Hall booth, provides complimentary registration.", + "shared_text": "" + } +}, +{ + "model": "sponsors.providedtextassetconfiguration", + "pk": 108, + "fields": { + "related_to": "sponsorship", + "internal_name": "additional_full_conference_passes_code", + "shared": false, + "label": "Discounted Additional Full Conference Registration Voucher Code", + "help_text": "Provide this to your team who are attending Full Conference, provides a 25% discounted corporate registration at $525. Pay when completing registration..", + "shared_text": "" + } +}, +{ + "model": "sponsors.providedtextassetconfiguration", + "pk": 109, + "fields": { + "related_to": "sponsorship", + "internal_name": "additional_expo_hall_only_passes_code", + "shared": false, + "label": "Discounted Additional Expo Hall Only Registration Voucher", + "help_text": "Provide this to your team who are only attending to staff your Expo Hall booth, provides discounted registration.", + "shared_text": null + } +}, +{ + "model": "sponsors.providedtextassetconfiguration", + "pk": 120, + "fields": { + "related_to": "sponsorship", + "internal_name": "pycon-sponsor-workshop-pretalx-submission", + "shared": true, + "label": "Sponsor Workshop Pretalx Submission Link", + "help_text": "Please have speakers submit speaker info, workshop title, and brief description to Pretalx by February 22, 2022. Speakers will need to make an account using the same email address that they will use to register for the conference on us.pycon.org", + "shared_text": "https://pretalx.com/pycon-2022/cfp" + } +}, +{ + "model": "sponsors.providedtextassetconfiguration", + "pk": 124, + "fields": { + "related_to": "sponsorship", + "internal_name": "pycon-2022-job-fair-table-number", + "shared": false, + "label": "Job Fair Table Number Assignment", + "help_text": "", + "shared_text": "" + } +}, +{ + "model": "sponsors.providedtextassetconfiguration", + "pk": 125, + "fields": { + "related_to": "sponsorship", + "internal_name": "pycon-us-2022-job-fair-table-number", + "shared": false, + "label": "Job Fair Table Number Assignment", + "help_text": "", + "shared_text": "" + } +}, +{ + "model": "sponsors.providedfileassetconfiguration", + "pk": 114, + "fields": { + "related_to": "sponsorship", + "internal_name": "pycon-2022-exhibitor-kit", + "shared": true, + "label": "Pycon 2022 Exhibitor Kit", + "help_text": "PDF password is \"2022pyconus\"", + "shared_file": "2022-PYCON-Exhibitor-Kit-3.pdf" + } +}, +{ + "model": "sponsors.providedfileassetconfiguration", + "pk": 115, + "fields": { + "related_to": "sponsorship", + "internal_name": "pycon-2022-expo-hall-floorplan", + "shared": true, + "label": "PyCon 2022 Expo Hall Floor Plan", + "help_text": "Email sponsors@python.org with the Expo Hall booth number you would like to select. Booth selection is on a first come first served basis.", + "shared_file": "PyCon_US_2022_Booth_Selections_i9yCIaz.pdf" + } +}, +{ + "model": "sponsors.providedfileassetconfiguration", + "pk": 116, + "fields": { + "related_to": "sponsorship", + "internal_name": "pycon-2022-job-fair-kit", + "shared": true, + "label": "PyCon 2022 Job Fair Participant Kit", + "help_text": "", + "shared_file": "2022-PYCON-Job-Fair-Kit.pdf" + } +}, +{ + "model": "sponsors.providedfileassetconfiguration", + "pk": 117, + "fields": { + "related_to": "sponsor", + "internal_name": "sponsor-dashboard-instructions", + "shared": false, + "label": "Sponsor Dashboard Access Instructions", + "help_text": "", + "shared_file": "How_to_Manage_your_Sponsorship_Dashboard_ag7UE6o.pdf" + } +}, +{ + "model": "sponsors.providedfileassetconfiguration", + "pk": 118, + "fields": { + "related_to": "sponsorship", + "internal_name": "PSF-style-guide-case-studies", + "shared": true, + "label": "Python Case Study Style Guide", + "help_text": "Refer to this document for guidelines for your Python case study submission", + "shared_file": "PSF_style_guide_for_case_studies_and_success_stories-v2.pdf" + } +}, +{ + "model": "sponsors.providedfileassetconfiguration", + "pk": 161, + "fields": { + "related_to": "sponsorship", + "internal_name": "pycon-2022-expo-pass-lead-retrieval", + "shared": true, + "label": "Lead Retrieval", + "help_text": "Follow these instructions to purchase lead retrieval license for PyCon US 2022", + "shared_file": "PyCon_US_2022_Lead_Retrieval.pdf" + } +}, +{ + "model": "sponsors.providedfileassetconfiguration", + "pk": 162, + "fields": { + "related_to": "sponsorship", + "internal_name": "pycon-us-2022-comlimentary-lead-retreival", + "shared": true, + "label": "Complimentary Lead Retrieval", + "help_text": "Follow these instructions to claim your Expo Pass Exhibitor Profile. Do not purchase lead retrieval, you will receive your promo code via email and will enter this code into Expo Pass to receive your complimentary lead retrieval license.", + "shared_file": "PyCon_US_2022_Lead_Retrieval_HrY96co.pdf" + } +}, +{ + "model": "sponsors.sponsorshippackage", + "pk": 1, + "fields": { + "order": 0, + "name": "Visionary", + "sponsorship_amount": 150000, + "advertise": true, + "logo_dimension": 350, + "slug": "visionary", + "year": 2022 + } +}, +{ + "model": "sponsors.sponsorshippackage", + "pk": 2, + "fields": { + "order": 1, + "name": "Sustainability", + "sponsorship_amount": 90000, + "advertise": true, + "logo_dimension": 300, + "slug": "sustainability", + "year": 2022 + } +}, +{ + "model": "sponsors.sponsorshippackage", + "pk": 3, + "fields": { + "order": 2, + "name": "Maintaining", + "sponsorship_amount": 60000, + "advertise": true, + "logo_dimension": 300, + "slug": "maintaining", + "year": 2022 + } +}, +{ + "model": "sponsors.sponsorshippackage", + "pk": 4, + "fields": { + "order": 3, + "name": "Contributing", + "sponsorship_amount": 30000, + "advertise": true, + "logo_dimension": 275, + "slug": "contributing", + "year": 2022 + } +}, +{ + "model": "sponsors.sponsorshippackage", + "pk": 5, + "fields": { + "order": 4, + "name": "Supporting", + "sponsorship_amount": 15000, + "advertise": true, + "logo_dimension": 250, + "slug": "supporting", + "year": 2022 + } +}, +{ + "model": "sponsors.sponsorshippackage", + "pk": 6, + "fields": { + "order": 5, + "name": "Partner", + "sponsorship_amount": 10000, + "advertise": true, + "logo_dimension": 225, + "slug": "partner", + "year": 2022 + } +}, +{ + "model": "sponsors.sponsorshippackage", + "pk": 7, + "fields": { + "order": 6, + "name": "Participating", + "sponsorship_amount": 3750, + "advertise": true, + "logo_dimension": 225, + "slug": "participating", + "year": 2022 + } +}, +{ + "model": "sponsors.sponsorshippackage", + "pk": 8, + "fields": { + "order": 7, + "name": "Associate", + "sponsorship_amount": 1500, + "advertise": true, + "logo_dimension": 175, + "slug": "associate", + "year": 2022 + } +}, +{ + "model": "sponsors.sponsorshippackage", + "pk": 9, + "fields": { + "order": 8, + "name": "Open Source and Community", + "sponsorship_amount": 0, + "advertise": false, + "logo_dimension": 175, + "slug": "open-source-and-community", + "year": 2022 + } +}, +{ + "model": "sponsors.sponsorshippackage", + "pk": 10, + "fields": { + "order": 9, + "name": "A La Carte Only", + "sponsorship_amount": 0, + "advertise": false, + "logo_dimension": 175, + "slug": "a-la-carte-only", + "year": 2022 + } +}, +{ + "model": "sponsors.sponsorshippackage", + "pk": 11, + "fields": { + "order": 10, + "name": "PyCon Startup Row", + "sponsorship_amount": 0, + "advertise": false, + "logo_dimension": 175, + "slug": "pycon-startup-row", + "year": 2022 + } +}, +{ + "model": "sponsors.sponsorshipprogram", + "pk": 1, + "fields": { + "order": 0, + "name": "Foundation", + "description": "" + } +}, +{ + "model": "sponsors.sponsorshipprogram", + "pk": 3, + "fields": { + "order": 2, + "name": "PyPI", + "description": "" + } +}, +{ + "model": "sponsors.sponsorshipprogram", + "pk": 4, + "fields": { + "order": 3, + "name": "Core Development", + "description": "" + } +}, +{ + "model": "sponsors.sponsorshipprogram", + "pk": 5, + "fields": { + "order": 1, + "name": "PyCon US 2022", + "description": "" + } +} +] diff --git a/fixtures/users.json b/fixtures/users.json new file mode 100644 index 000000000..a4f578fd1 --- /dev/null +++ b/fixtures/users.json @@ -0,0 +1,74 @@ +[ +{ + "model": "users.user", + "pk": 1, + "fields": { + "password": "pbkdf2_sha256$150000$TAqxQ4O0uzV2$3lgFMdRiaBnaUfXtjSRlA/9HzMwYa2ThD38AmTzGYEs=", + "last_login": "2022-08-01T18:52:54.206Z", + "is_superuser": true, + "username": "admin", + "first_name": "", + "last_name": "", + "email": "admin@example.com", + "is_staff": true, + "is_active": true, + "date_joined": "2022-08-01T18:52:39.307Z", + "bio": "", + "bio_markup_type": "markdown", + "search_visibility": 1, + "_bio_rendered": "", + "email_privacy": 2, + "public_profile": true, + "groups": [], + "user_permissions": [] + } +}, +{ + "model": "users.user", + "pk": 2, + "fields": { + "password": "pbkdf2_sha256$150000$TAqxQ4O0uzV2$3lgFMdRiaBnaUfXtjSRlA/9HzMwYa2ThD38AmTzGYEs=", + "last_login": "2022-08-01T18:54:51.727Z", + "is_superuser": false, + "username": "user", + "first_name": "", + "last_name": "", + "email": "user@example.com", + "is_staff": false, + "is_active": true, + "date_joined": "2022-08-01T18:54:10.023Z", + "bio": "", + "bio_markup_type": "markdown", + "search_visibility": 1, + "_bio_rendered": "", + "email_privacy": 2, + "public_profile": true, + "groups": [], + "user_permissions": [] + } +}, +{ + "model": "account.emailaddress", + "pk": 1, + "fields": { + "user": [ + "admin" + ], + "email": "admin@example.com", + "verified": true, + "primary": true + } +}, +{ + "model": "account.emailaddress", + "pk": 2, + "fields": { + "user": [ + "user" + ], + "email": "user@example.com", + "verified": true, + "primary": true + } +} +] diff --git a/pydotorg/settings/base.py b/pydotorg/settings/base.py index ba6a35ce3..702eaa364 100644 --- a/pydotorg/settings/base.py +++ b/pydotorg/settings/base.py @@ -202,6 +202,7 @@ 'rest_framework.authtoken', 'django_filters', 'polymorphic', + 'django_extensions', ] # Fixtures diff --git a/pydotorg/settings/local.py b/pydotorg/settings/local.py index 61c98583d..4ecbe35aa 100644 --- a/pydotorg/settings/local.py +++ b/pydotorg/settings/local.py @@ -64,7 +64,8 @@ CACHES = { 'default': { - 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', + 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', + 'LOCATION': 'pythondotorg-local-cache', } } diff --git a/sponsors/admin.py b/sponsors/admin.py index 5b91baf47..8c8ce5d7f 100644 --- a/sponsors/admin.py +++ b/sponsors/admin.py @@ -18,10 +18,14 @@ from sponsors.models.benefits import RequiredAssetMixin from sponsors import views_admin from sponsors.forms import SponsorshipReviewAdminForm, SponsorBenefitAdminInlineForm, RequiredImgAssetConfigurationForm, \ - SponsorshipBenefitAdminForm + SponsorshipBenefitAdminForm, CloneApplicationConfigForm from cms.admin import ContentManageableModelAdmin +def get_url_base_name(Model): + return f"{Model._meta.app_label}_{Model._meta.model_name}" + + class AssetsInline(GenericTabularInline): model = GenericAsset extra = 0 @@ -113,7 +117,7 @@ class SponsorshipBenefitAdmin(PolymorphicInlineSupportMixin, OrderedModelAdmin): "internal_value", "move_up_down_links", ] - list_filter = ["program", "package_only", "packages", "new", "a_la_carte", "unavailable"] + list_filter = ["program", "year", "package_only", "packages", "new", "a_la_carte", "unavailable"] search_fields = ["name"] form = SponsorshipBenefitAdminForm @@ -150,11 +154,12 @@ class SponsorshipBenefitAdmin(PolymorphicInlineSupportMixin, OrderedModelAdmin): def get_urls(self): urls = super().get_urls() + base_name = get_url_base_name(self.model) my_urls = [ path( "/update-related-sponsorships", self.admin_site.admin_view(self.update_related_sponsorships), - name="sponsors_sponsorshipbenefit_update_related", + name=f"{base_name}_update_related", ), ] return my_urls + urls @@ -166,8 +171,8 @@ def update_related_sponsorships(self, *args, **kwargs): @admin.register(SponsorshipPackage) class SponsorshipPackageAdmin(OrderedModelAdmin): ordering = ("order",) - list_display = ["name", "advertise", "move_up_down_links"] - list_filter = ["advertise"] + list_display = ["name", "year", "advertise", "move_up_down_links"] + list_filter = ["advertise", "year"] search_fields = ["name"] def get_readonly_fields(self, request, obj=None): @@ -294,12 +299,13 @@ class SponsorshipAdmin(admin.ModelAdmin): "sponsor", "status", "package", + "year", "applied_on", "approved_on", "start_date", "end_date", ] - list_filter = [SponsorshipStatusListFilter, "package", TargetableEmailBenefitsFilter] + list_filter = [SponsorshipStatusListFilter, "package", "year", TargetableEmailBenefitsFilter] actions = ["send_notifications"] fieldsets = [ ( @@ -311,6 +317,7 @@ class SponsorshipAdmin(admin.ModelAdmin): "status", "package", "sponsorship_fee", + "year", "get_estimated_cost", "start_date", "end_date", @@ -407,6 +414,9 @@ def get_readonly_fields(self, request, obj): extra = ["start_date", "end_date", "package", "level_name", "sponsorship_fee"] readonly_fields.extend(extra) + if obj.year: + readonly_fields.append("year") + return readonly_fields def sponsor_link(self, obj): @@ -436,33 +446,34 @@ def get_contract(self, obj): def get_urls(self): urls = super().get_urls() + base_name = get_url_base_name(self.model) my_urls = [ path( "/reject", # TODO: maybe it would be better to create a specific # group or permission to review sponsorship applications self.admin_site.admin_view(self.reject_sponsorship_view), - name="sponsors_sponsorship_reject", + name=f"{base_name}_reject", ), path( "/approve-existing", self.admin_site.admin_view(self.approve_signed_sponsorship_view), - name="sponsors_sponsorship_approve_existing_contract", + name=f"{base_name}_approve_existing_contract", ), path( "/approve", self.admin_site.admin_view(self.approve_sponsorship_view), - name="sponsors_sponsorship_approve", + name=f"{base_name}_approve", ), path( "/enable-edit", self.admin_site.admin_view(self.rollback_to_editing_view), - name="sponsors_sponsorship_rollback_to_edit", + name=f"{base_name}_rollback_to_edit", ), path( "/list-assets", self.admin_site.admin_view(self.list_uploaded_assets_view), - name="sponsors_sponsorship_list_uploaded_assets", + name=f"{base_name}_list_uploaded_assets", ), ] return my_urls + urls @@ -588,6 +599,87 @@ def list_uploaded_assets_view(self, request, pk): return views_admin.list_uploaded_assets(self, request, pk) +@admin.register(SponsorshipCurrentYear) +class SponsorshipCurrentYearAdmin(admin.ModelAdmin): + list_display = ["year", "links", "other_years"] + change_list_template = "sponsors/admin/sponsors_sponsorshipcurrentyear_changelist.html" + + def has_add_permission(self, *args, **kwargs): + return False + + def has_delete_permission(self, *args, **kwargs): + return False + + def get_urls(self): + urls = super().get_urls() + base_name = get_url_base_name(self.model) + my_urls = [ + path( + "clone-year-config", + self.admin_site.admin_view(self.clone_application_config), + name=f"{base_name}_clone", + ), + ] + return my_urls + urls + + def links(self, obj): + clone_form = CloneApplicationConfigForm() + configured_years = clone_form.configured_years + + application_url = reverse("select_sponsorship_application_benefits") + benefits_url = reverse("admin:sponsors_sponsorshipbenefit_changelist") + packages_url = reverse("admin:sponsors_sponsorshippackage_changelist") + preview_label = 'View sponsorship application' + year = obj.year + html = "
      " + preview_querystring = f"config_year={year}" + preview_url = f"{application_url}?{preview_querystring}" + filter_querystring = f"year={year}" + year_benefits_url = f"{benefits_url}?{filter_querystring}" + year_packages_url = f"{benefits_url}?{filter_querystring}" + + html += f"
    • List packages" + html += f"
    • List benefits" + html += f"
    • {preview_label}" + html += "
    " + return mark_safe(html) + links.short_description = "Links" + + def other_years(self, obj): + clone_form = CloneApplicationConfigForm() + configured_years = clone_form.configured_years + try: + configured_years.remove(obj.year) + except ValueError: + pass + if not configured_years: + return "---" + + application_url = reverse("select_sponsorship_application_benefits") + benefits_url = reverse("admin:sponsors_sponsorshipbenefit_changelist") + packages_url = reverse("admin:sponsors_sponsorshippackage_changelist") + preview_label = 'View sponsorship application form for this year' + html = "
      " + for year in configured_years: + preview_querystring = f"config_year={year}" + preview_url = f"{application_url}?{preview_querystring}" + filter_querystring = f"year={year}" + year_benefits_url = f"{benefits_url}?{filter_querystring}" + year_packages_url = f"{benefits_url}?{filter_querystring}" + + html += f"
    • {year}:" + html += "
    • " + html += "
    " + return mark_safe(html) + other_years.short_description = "Other configured years" + + def clone_application_config(self, request): + return views_admin.clone_application_config(self, request) + @admin.register(LegalClause) class LegalClauseModelAdmin(OrderedModelAdmin): list_display = ["internal_name"] @@ -596,6 +688,7 @@ class LegalClauseModelAdmin(OrderedModelAdmin): @admin.register(Contract) class ContractModelAdmin(admin.ModelAdmin): change_form_template = "sponsors/admin/contract_change_form.html" + list_filter = ["sponsorship__year"] list_display = [ "id", "sponsorship", @@ -711,26 +804,27 @@ def get_sponsorship_url(self, obj): def get_urls(self): urls = super().get_urls() + base_name = get_url_base_name(self.model) my_urls = [ path( "/preview", self.admin_site.admin_view(self.preview_contract_view), - name="sponsors_contract_preview", + name=f"{base_name}_preview", ), path( "/send", self.admin_site.admin_view(self.send_contract_view), - name="sponsors_contract_send", + name=f"{base_name}_send", ), path( "/execute", self.admin_site.admin_view(self.execute_contract_view), - name="sponsors_contract_execute", + name=f"{base_name}_execute", ), path( "/nullify", self.admin_site.admin_view(self.nullify_contract_view), - name="sponsors_contract_nullify", + name=f"{base_name}_nullify", ), ] return my_urls + urls diff --git a/sponsors/forms.py b/sponsors/forms.py index 819acd2ab..471f44659 100644 --- a/sponsors/forms.py +++ b/sponsors/forms.py @@ -22,7 +22,7 @@ SponsorEmailNotificationTemplate, RequiredImgAssetConfiguration, BenefitFeature, - SPONSOR_TEMPLATE_HELP_TEXT, + SPONSOR_TEMPLATE_HELP_TEXT, SponsorshipCurrentYear, ) @@ -55,24 +55,26 @@ class SponsorshipsBenefitsForm(forms.Form): Form to enable user to select packages, benefits and add-ons during the sponsorship application submission. """ - package = forms.ModelChoiceField( - queryset=SponsorshipPackage.objects.list_advertisables(), - widget=forms.RadioSelect(), - required=False, - empty_label=None, - ) - add_ons_benefits = PickSponsorshipBenefitsField( - required=False, - queryset=SponsorshipBenefit.objects.add_ons().select_related("program"), - ) - a_la_carte_benefits = PickSponsorshipBenefitsField( - required=False, - queryset=SponsorshipBenefit.objects.a_la_carte().select_related("program"), - ) def __init__(self, *args, **kwargs): + year = kwargs.pop("year", SponsorshipCurrentYear.get_year()) super().__init__(*args, **kwargs) - benefits_qs = SponsorshipBenefit.objects.with_packages().select_related( + self.fields["package"] = forms.ModelChoiceField( + queryset=SponsorshipPackage.objects.from_year(year).list_advertisables(), + widget=forms.RadioSelect(), + required=False, + empty_label=None, + ) + self.fields["add_ons_benefits"] = PickSponsorshipBenefitsField( + required=False, + queryset=SponsorshipBenefit.objects.from_year(year).add_ons().select_related("program"), + ) + self.fields["a_la_carte_benefits"] = PickSponsorshipBenefitsField( + required=False, + queryset=SponsorshipBenefit.objects.from_year(year).a_la_carte().select_related("program"), + ) + + benefits_qs = SponsorshipBenefit.objects.from_year(year).with_packages().select_related( "program" ) @@ -684,3 +686,47 @@ def clean(self): raise forms.ValidationError(error) return cleaned_data + + +class CloneApplicationConfigForm(forms.Form): + from_year = forms.ChoiceField( + required=True, + help_text="From which year you want to clone the benefits and packages.", + choices=[] + ) + target_year = forms.IntegerField( + required=True, + help_text="The year of the resulting new sponsorship application configuration." + ) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + benefits_years = list(SponsorshipBenefit.objects.values_list("year", flat=True).distinct()) + packages_years = list(SponsorshipPackage.objects.values_list("year", flat=True).distinct()) + choices = [(y, y) for y in sorted(set(benefits_years + packages_years), reverse=True) if y] + self.fields["from_year"].choices = choices + + @property + def configured_years(self): + return [c[0] for c in self.fields["from_year"].choices] + + def clean_target_year(self): + data = self.cleaned_data["target_year"] + if data > 2050: + raise forms.ValidationError("The target year can't be bigger than 2050.") + return data + + def clean_from_year(self): + return int(self.cleaned_data["from_year"]) + + def clean(self): + from_year = self.cleaned_data.get("from_year") + target_year = self.cleaned_data.get("target_year") + + if from_year and target_year: + if target_year < from_year: + raise forms.ValidationError("The target year must be greater the one used as source.") + elif target_year in self.configured_years: + raise forms.ValidationError(f"The year {target_year} already have a valid confguration.") + + return self.cleaned_data diff --git a/sponsors/migrations/0076_auto_20220728_1550.py b/sponsors/migrations/0076_auto_20220728_1550.py new file mode 100644 index 000000000..7c0abb0fd --- /dev/null +++ b/sponsors/migrations/0076_auto_20220728_1550.py @@ -0,0 +1,64 @@ +# Generated by Django 2.2.24 on 2022-07-28 15:50 + +from django.db import migrations +import django.db.models.manager + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0075_auto_20220303_2023'), + ] + + operations = [ + migrations.AlterModelOptions( + name='benefitfeature', + options={'base_manager_name': 'non_polymorphic', 'verbose_name': 'Benefit Feature', 'verbose_name_plural': 'Benefit Features'}, + ), + migrations.AlterModelOptions( + name='genericasset', + options={'base_manager_name': 'non_polymorphic', 'verbose_name': 'Asset', 'verbose_name_plural': 'Assets'}, + ), + migrations.AlterModelManagers( + name='benefitfeature', + managers=[ + ('objects', django.db.models.manager.Manager()), + ('non_polymorphic', django.db.models.manager.Manager()), + ], + ), + migrations.AlterModelManagers( + name='fileasset', + managers=[ + ('objects', django.db.models.manager.Manager()), + ('non_polymorphic', django.db.models.manager.Manager()), + ], + ), + migrations.AlterModelManagers( + name='genericasset', + managers=[ + ('objects', django.db.models.manager.Manager()), + ('non_polymorphic', django.db.models.manager.Manager()), + ], + ), + migrations.AlterModelManagers( + name='imgasset', + managers=[ + ('objects', django.db.models.manager.Manager()), + ('non_polymorphic', django.db.models.manager.Manager()), + ], + ), + migrations.AlterModelManagers( + name='responseasset', + managers=[ + ('objects', django.db.models.manager.Manager()), + ('non_polymorphic', django.db.models.manager.Manager()), + ], + ), + migrations.AlterModelManagers( + name='textasset', + managers=[ + ('objects', django.db.models.manager.Manager()), + ('non_polymorphic', django.db.models.manager.Manager()), + ], + ), + ] diff --git a/sponsors/migrations/0077_sponsorshipcurrentyear.py b/sponsors/migrations/0077_sponsorshipcurrentyear.py new file mode 100644 index 000000000..b99721f42 --- /dev/null +++ b/sponsors/migrations/0077_sponsorshipcurrentyear.py @@ -0,0 +1,21 @@ +# Generated by Django 2.2.24 on 2022-07-28 15:58 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0076_auto_20220728_1550'), + ] + + operations = [ + migrations.CreateModel( + name='SponsorshipCurrentYear', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('year', models.PositiveIntegerField(validators=[django.core.validators.MinValueValidator(limit_value=2022, message='The min year value is 2022.'), django.core.validators.MaxValueValidator(limit_value=2050, message='The max year value is 2050.')])), + ], + ), + ] diff --git a/sponsors/migrations/0078_init_current_year_singleton.py b/sponsors/migrations/0078_init_current_year_singleton.py new file mode 100644 index 000000000..dc12554f7 --- /dev/null +++ b/sponsors/migrations/0078_init_current_year_singleton.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.24 on 2022-07-28 16:04 + +from django.db import migrations + + +def populate_singleton(apps, schema_editor): + SponsorshipCurrentYear = apps.get_model("sponsors.SponsorshipCurrentYear") + SponsorshipCurrentYear.objects.get_or_create(id=1, defaults={"year": 2022}) + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0077_sponsorshipcurrentyear'), + ] + + operations = [ + migrations.RunPython(populate_singleton, migrations.RunPython.noop) + ] diff --git a/sponsors/migrations/0079_index_to_force_singleton.py b/sponsors/migrations/0079_index_to_force_singleton.py new file mode 100644 index 000000000..3472950c0 --- /dev/null +++ b/sponsors/migrations/0079_index_to_force_singleton.py @@ -0,0 +1,31 @@ +# Generated by Django 2.2.24 on 2022-07-28 16:20 + +from django.db import migrations + + +# This commands creates a unique index on the table but not on top of a column, but on the value true. +# That way, every time we try to insert in this table, the unique constraint will be violated because +# the row trying to be inserted will have the same true value for this index, thus, not unique. +CREATE_SINGLETON_INDEX = """ +CREATE UNIQUE INDEX "sponsorship_current_year_singleton_idx" +ON \"sponsors_sponsorshipcurrentyear\" ((true)); +""".strip() + +DROP_SINGLETON_INDEX = """ +DROP INDEX IF EXISTS "sponsorship_current_year_singleton_idx"; +""".strip() + + +class Migration(migrations.Migration): + atomic = False + + dependencies = [ + ('sponsors', '0078_init_current_year_singleton'), + ] + + operations = [ + migrations.RunSQL( + sql=CREATE_SINGLETON_INDEX, + reverse_sql=DROP_SINGLETON_INDEX + ), + ] diff --git a/sponsors/migrations/0080_auto_20220728_1644.py b/sponsors/migrations/0080_auto_20220728_1644.py new file mode 100644 index 000000000..c099c2aea --- /dev/null +++ b/sponsors/migrations/0080_auto_20220728_1644.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.24 on 2022-07-28 16:44 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0079_index_to_force_singleton'), + ] + + operations = [ + migrations.AlterModelOptions( + name='sponsorshipcurrentyear', + options={'verbose_name': 'Active Year', 'verbose_name_plural': 'Active Year'}, + ), + migrations.AlterField( + model_name='sponsorshipcurrentyear', + name='year', + field=models.PositiveIntegerField(help_text='Every new sponsorship application will be considered as an application from to the active year.', validators=[django.core.validators.MinValueValidator(limit_value=2022, message='The min year value is 2022.'), django.core.validators.MaxValueValidator(limit_value=2050, message='The max year value is 2050.')]), + ), + ] diff --git a/sponsors/migrations/0081_sponsorship_application_year.py b/sponsors/migrations/0081_sponsorship_application_year.py new file mode 100644 index 000000000..0dcbe05bf --- /dev/null +++ b/sponsors/migrations/0081_sponsorship_application_year.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.24 on 2022-07-29 16:02 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0080_auto_20220728_1644'), + ] + + operations = [ + migrations.AddField( + model_name='sponsorship', + name='application_year', + field=models.PositiveIntegerField(null=True, validators=[django.core.validators.MinValueValidator(limit_value=2022, message='The min year value is 2022.'), django.core.validators.MaxValueValidator(limit_value=2050, message='The max year value is 2050.')]), + ), + ] diff --git a/sponsors/migrations/0082_auto_20220729_1613.py b/sponsors/migrations/0082_auto_20220729_1613.py new file mode 100644 index 000000000..116b4a011 --- /dev/null +++ b/sponsors/migrations/0082_auto_20220729_1613.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.24 on 2022-07-29 16:13 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0081_sponsorship_application_year'), + ] + + operations = [ + migrations.RenameField( + model_name='sponsorship', + old_name='application_year', + new_name='year', + ), + ] diff --git a/sponsors/migrations/0083_auto_20220729_1624.py b/sponsors/migrations/0083_auto_20220729_1624.py new file mode 100644 index 000000000..ff6b2ab85 --- /dev/null +++ b/sponsors/migrations/0083_auto_20220729_1624.py @@ -0,0 +1,24 @@ +# Generated by Django 2.2.24 on 2022-07-29 16:24 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0082_auto_20220729_1613'), + ] + + operations = [ + migrations.AddField( + model_name='sponsorshipbenefit', + name='year', + field=models.PositiveIntegerField(null=True, validators=[django.core.validators.MinValueValidator(limit_value=2022, message='The min year value is 2022.'), django.core.validators.MaxValueValidator(limit_value=2050, message='The max year value is 2050.')]), + ), + migrations.AddField( + model_name='sponsorshippackage', + name='year', + field=models.PositiveIntegerField(null=True, validators=[django.core.validators.MinValueValidator(limit_value=2022, message='The min year value is 2022.'), django.core.validators.MaxValueValidator(limit_value=2050, message='The max year value is 2050.')]), + ), + ] diff --git a/sponsors/migrations/0084_init_configured_objs_year.py b/sponsors/migrations/0084_init_configured_objs_year.py new file mode 100644 index 000000000..75b761d72 --- /dev/null +++ b/sponsors/migrations/0084_init_configured_objs_year.py @@ -0,0 +1,33 @@ +# Generated by Django 2.2.24 on 2022-07-29 16:28 + +from django.db import migrations + +def populate_with_current_year(apps, schema_editor): + SponsorshipPackage = apps.get_model("sponsors", "SponsorshipPackage") + SponsorshipBenefit = apps.get_model("sponsors", "SponsorshipBenefit") + SponsorshipCurrentYear = apps.get_model("sponsors", "SponsorshipCurrentYear") + + year = SponsorshipCurrentYear.objects.get().year + + SponsorshipPackage.objects.all().update(year=year) + SponsorshipBenefit.objects.all().update(year=year) + + +def reset_current_year(apps, schema_editor): + SponsorshipPackage = apps.get_model("sponsors", "SponsorshipPackage") + SponsorshipBenefit = apps.get_model("sponsors", "SponsorshipBenefit") + + SponsorshipPackage.objects.all().update(year=None) + SponsorshipBenefit.objects.all().update(year=None) + + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0083_auto_20220729_1624'), + ] + + operations = [ + migrations.RunPython(populate_with_current_year, reset_current_year) + ] diff --git a/sponsors/migrations/0085_auto_20220730_0945.py b/sponsors/migrations/0085_auto_20220730_0945.py new file mode 100644 index 000000000..ad86168c4 --- /dev/null +++ b/sponsors/migrations/0085_auto_20220730_0945.py @@ -0,0 +1,29 @@ +# Generated by Django 2.2.24 on 2022-07-30 09:45 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0084_init_configured_objs_year'), + ] + + operations = [ + migrations.AlterField( + model_name='sponsorship', + name='year', + field=models.PositiveIntegerField(db_index=True, null=True, validators=[django.core.validators.MinValueValidator(limit_value=2022, message='The min year value is 2022.'), django.core.validators.MaxValueValidator(limit_value=2050, message='The max year value is 2050.')]), + ), + migrations.AlterField( + model_name='sponsorshipbenefit', + name='year', + field=models.PositiveIntegerField(db_index=True, null=True, validators=[django.core.validators.MinValueValidator(limit_value=2022, message='The min year value is 2022.'), django.core.validators.MaxValueValidator(limit_value=2050, message='The max year value is 2050.')]), + ), + migrations.AlterField( + model_name='sponsorshippackage', + name='year', + field=models.PositiveIntegerField(db_index=True, null=True, validators=[django.core.validators.MinValueValidator(limit_value=2022, message='The min year value is 2022.'), django.core.validators.MaxValueValidator(limit_value=2050, message='The max year value is 2050.')]), + ), + ] diff --git a/sponsors/models/__init__.py b/sponsors/models/__init__.py index 3562da620..51f2886dd 100644 --- a/sponsors/models/__init__.py +++ b/sponsors/models/__init__.py @@ -12,5 +12,6 @@ LogoPlacement, EmailTargetable, TieredQuantity, RequiredImgAsset, RequiredImgAssetConfiguration, \ RequiredTextAssetConfiguration, RequiredTextAsset, RequiredResponseAssetConfiguration, RequiredResponseAsset, \ ProvidedTextAssetConfiguration, ProvidedTextAsset, ProvidedFileAssetConfiguration, ProvidedFileAsset -from .sponsorship import Sponsorship, SponsorshipProgram, SponsorshipBenefit, Sponsorship, SponsorshipPackage +from .sponsorship import Sponsorship, SponsorshipProgram, SponsorshipBenefit, Sponsorship, SponsorshipPackage, \ + SponsorshipCurrentYear from .contract import LegalClause, Contract, signed_contract_random_path diff --git a/sponsors/models/benefits.py b/sponsors/models/benefits.py index c6984897b..d0223c2b6 100644 --- a/sponsors/models/benefits.py +++ b/sponsors/models/benefits.py @@ -138,6 +138,14 @@ def create_benefit_feature(self, sponsor_benefit, **kwargs): return benefit_feature + def get_clone_kwargs(self, new_benefit): + kwargs = super().get_clone_kwargs(new_benefit) + kwargs["internal_name"] = f"{self.internal_name}_{new_benefit.year}" + due_date = kwargs.get("due_date") + if due_date: + kwargs["due_date"] = due_date.replace(year=new_benefit.year) + return kwargs + class Meta: abstract = True @@ -307,10 +315,9 @@ def benefit_feature_class(self): """ raise NotImplementedError - def get_benefit_feature_kwargs(self, **kwargs): + def get_cfg_kwargs(self, **kwargs): """ - Return kwargs dict to initialize the benefit feature. - If the benefit should not be created, return None instead. + Return kwargs dict with default config data """ # Get all fields from benefit feature configuration base model base_fields = set(BenefitFeatureConfiguration._meta.get_fields()) @@ -322,9 +329,24 @@ def get_benefit_feature_kwargs(self, **kwargs): # since this field only exists in child models if BenefitFeatureConfiguration is getattr(field, 'related_model', None): continue + # Skip if field config is being externally overwritten + elif field.name in kwargs: + continue kwargs[field.name] = getattr(self, field.name) return kwargs + def get_benefit_feature_kwargs(self, **kwargs): + """ + Return kwargs dict to initialize the benefit feature. + If the benefit should not be created, return None instead. + """ + return self.get_cfg_kwargs(**kwargs) + + def get_clone_kwargs(self, new_benefit): + kwargs = self.get_cfg_kwargs() + kwargs["benefit"] = new_benefit + return kwargs + def get_benefit_feature(self, **kwargs): """ Returns an instance of a configured type of BenefitFeature @@ -347,6 +369,13 @@ def create_benefit_feature(self, sponsor_benefit, **kwargs): feature.save() return feature + def clone(self, sponsorship_benefit): + """ + Clones this configuration for another sponsorship benefit + """ + cfg_kwargs = self.get_clone_kwargs(sponsorship_benefit) + return self.__class__.objects.get_or_create(**cfg_kwargs) + class LogoPlacementConfiguration(BaseLogoPlacement, BenefitFeatureConfiguration): """ @@ -391,6 +420,11 @@ def display_modifier(self, name, **kwargs): return name return f"{name} ({self.quantity})" + def get_clone_kwargs(self, new_benefit): + kwargs = super().get_clone_kwargs(new_benefit) + kwargs["package"], _ = self.package.clone(year=new_benefit.year) + return kwargs + class EmailTargetableConfiguration(BaseEmailTargetable, BenefitFeatureConfiguration): """ diff --git a/sponsors/models/contract.py b/sponsors/models/contract.py index 9c4185560..3b22de9f3 100644 --- a/sponsors/models/contract.py +++ b/sponsors/models/contract.py @@ -39,6 +39,14 @@ class LegalClause(OrderedModel): def __str__(self): return f"Clause: {self.internal_name}" + def clone(self): + return LegalClause.objects.create( + internal_name=self.internal_name, + clause=self.clause, + notes=self.notes, + order=self.order, + ) + class Meta(OrderedModel.Meta): pass diff --git a/sponsors/models/managers.py b/sponsors/models/managers.py index 1fc39915a..df318a498 100644 --- a/sponsors/models/managers.py +++ b/sponsors/models/managers.py @@ -1,5 +1,6 @@ +from django.db import IntegrityError from django.db.models import Count -from ordered_model.models import OrderedModelManager +from ordered_model.models import OrderedModelManager, OrderedModelQuerySet from django.db.models import Q, Subquery from django.db.models.query import QuerySet from django.utils import timezone @@ -50,6 +51,12 @@ def includes_benefit_feature(self, feature_model): return self.filter(id__in=Subquery(benefit_qs.values_list('sponsorship_id', flat=True))) +class SponsorshipCurrentYearQuerySet(QuerySet): + + def delete(self): + raise IntegrityError("Singleton object cannot be delete. Try updating it instead.") + + class SponsorContactQuerySet(QuerySet): def get_primary_contact(self, sponsor): contact = self.filter(sponsor=sponsor, primary=True).first() @@ -74,7 +81,7 @@ def filter_by_contact_types(self, primary=False, administrative=False, accountin return self.filter(query) -class SponsorshipBenefitManager(OrderedModelManager): +class SponsorshipBenefitQuerySet(OrderedModelQuerySet): def with_conflicts(self): return self.exclude(conflicts__isnull=True) @@ -94,11 +101,27 @@ def with_packages(self): .order_by("-num_packages", "order") ) + def from_year(self, year): + return self.filter(year=year) -class SponsorshipPackageManager(OrderedModelManager): + def from_current_year(self): + from sponsors.models import SponsorshipCurrentYear + current_year = SponsorshipCurrentYear.get_year() + return self.from_year(current_year) + + +class SponsorshipPackageQuerySet(OrderedModelQuerySet): def list_advertisables(self): return self.filter(advertise=True) + def from_year(self, year): + return self.filter(year=year) + + def from_current_year(self): + from sponsors.models import SponsorshipCurrentYear + current_year = SponsorshipCurrentYear.get_year() + return self.from_year(current_year) + class BenefitFeatureQuerySet(PolymorphicQuerySet): diff --git a/sponsors/models/sponsorship.py b/sponsors/models/sponsorship.py index 8aa176319..5d23b1cda 100644 --- a/sponsors/models/sponsorship.py +++ b/sponsors/models/sponsorship.py @@ -6,8 +6,10 @@ from django.conf import settings from django.contrib.contenttypes.fields import GenericRelation +from django.core.cache import cache from django.core.exceptions import ObjectDoesNotExist -from django.db import models, transaction +from django.core.validators import MinValueValidator, MaxValueValidator +from django.db import models, transaction, IntegrityError from django.db.models import Subquery, Sum from django.template.defaultfilters import truncatechars from django.urls import reverse @@ -20,16 +22,22 @@ from sponsors.exceptions import SponsorWithExistingApplicationException, InvalidStatusException, \ SponsorshipInvalidDateRangeException from sponsors.models.assets import GenericAsset -from sponsors.models.managers import SponsorshipPackageManager, SponsorshipBenefitManager, SponsorshipQuerySet +from sponsors.models.managers import SponsorshipPackageQuerySet, SponsorshipBenefitQuerySet, \ + SponsorshipQuerySet, SponsorshipCurrentYearQuerySet from sponsors.models.benefits import TieredQuantityConfiguration from sponsors.models.sponsors import SponsorBenefit +YEAR_VALIDATORS = [ + MinValueValidator(limit_value=2022, message="The min year value is 2022."), + MaxValueValidator(limit_value=2050, message="The max year value is 2050."), +] + class SponsorshipPackage(OrderedModel): """ Represent default packages of benefits (visionary, sustainability etc) """ - objects = SponsorshipPackageManager() + objects = SponsorshipPackageQuerySet.as_manager() name = models.CharField(max_length=64) sponsorship_amount = models.PositiveIntegerField() @@ -40,6 +48,7 @@ class SponsorshipPackage(OrderedModel): "page") slug = models.SlugField(db_index=True, blank=False, null=False, help_text="Internal identifier used " "to reference this package.") + year = models.PositiveIntegerField(null=True, validators=YEAR_VALIDATORS, db_index=True) def __str__(self): return self.name @@ -89,6 +98,21 @@ def get_user_customization(self, benefits): "removed_by_user": pkg_benefits - benefits, } + def clone(self, year: int): + """ + Generate a clone of the current package, but for a custom year + """ + defaults = { + "name": self.name, + "sponsorship_amount": self.sponsorship_amount, + "advertise": self.advertise, + "logo_dimension": self.logo_dimension, + "order": self.order, + } + return SponsorshipPackage.objects.get_or_create( + slug=self.slug, year=year, defaults=defaults + ) + class SponsorshipProgram(OrderedModel): """ @@ -140,6 +164,7 @@ class Sponsorship(models.Model): approved_on = models.DateField(null=True, blank=True) rejected_on = models.DateField(null=True, blank=True) finalized_on = models.DateField(null=True, blank=True) + year = models.PositiveIntegerField(null=True, validators=YEAR_VALIDATORS, db_index=True) for_modified_package = models.BooleanField( default=False, @@ -208,6 +233,7 @@ def new(cls, sponsor, benefits, package=None, submited_by=None): package=package, sponsorship_fee=None if not package else package.sponsorship_amount, for_modified_package=for_modified_package, + year=SponsorshipCurrentYear.get_year(), ) for benefit in benefits: @@ -342,7 +368,7 @@ class SponsorshipBenefit(OrderedModel): package and program. """ - objects = SponsorshipBenefitManager() + objects = SponsorshipBenefitQuerySet.as_manager() # Public facing name = models.CharField( @@ -433,6 +459,7 @@ class SponsorshipBenefit(OrderedModel): verbose_name="Conflicts", help_text="For benefits that conflict with one another,", ) + year = models.PositiveIntegerField(null=True, validators=YEAR_VALIDATORS, db_index=True) NEW_MESSAGE = "New benefit this year!" PACKAGE_ONLY_MESSAGE = "Benefit only available as part of a sponsor package" @@ -489,5 +516,76 @@ def name_for_display(self, package=None): def has_tiers(self): return self.features_config.instance_of(TieredQuantityConfiguration).count() > 0 + @transaction.atomic + def clone(self, year: int): + """ + Generate a clone of the current benefit and its related objects, + but for a custom year + """ + defaults = { + "description": self.description, + "program": self.program, + "package_only": self.package_only, + "new": self.new, + "unavailable": self.unavailable, + "a_la_carte": self.a_la_carte, + "internal_description": self.internal_description, + "internal_value": self.internal_value, + "capacity": self.capacity, + "soft_capacity": self.soft_capacity, + "order": self.order, + } + new_benefit, created = SponsorshipBenefit.objects.get_or_create( + name=self.name, year=year, defaults=defaults + ) + + # if new, all related objects should be cloned too + if created: + pkgs = [p.clone(year)[0] for p in self.packages.all()] + new_benefit.packages.add(*pkgs) + clauses = [lc.clone() for lc in self.legal_clauses.all()] + new_benefit.legal_clauses.add(*clauses) + for cfg in self.features_config.all(): + cfg.clone(new_benefit) + + return new_benefit, created + class Meta(OrderedModel.Meta): pass + + +class SponsorshipCurrentYear(models.Model): + """ + This model is a singleton and is used to control the active year to be used for new sponsorship applications. + The sponsorship_current_year_singleton_idx introduced by migration 0079 in sponsors app + enforces the singleton at DB level. + """ + CACHE_KEY = "current_year" + objects = SponsorshipCurrentYearQuerySet.as_manager() + + year = models.PositiveIntegerField( + validators=YEAR_VALIDATORS, + help_text="Every new sponsorship application will be considered as an application from to the active year." + ) + + def __str__(self): + return f"Active year: {self.year}." + + def delete(self, *args, **kwargs): + raise IntegrityError("Singleton object cannot be delete. Try updating it instead.") + + def save(self, *args, **kwargs): + cache.delete(self.CACHE_KEY) + return super().save(*args, **kwargs) + + @classmethod + def get_year(cls): + year = cache.get(cls.CACHE_KEY) + if not year: + year = cls.objects.get().year + cache.set(cls.CACHE_KEY, year, timeout=None) + return year + + class Meta: + verbose_name = "Active Year" + verbose_name_plural = "Active Year" diff --git a/sponsors/notifications.py b/sponsors/notifications.py index 71ffed3e2..196cc94b6 100644 --- a/sponsors/notifications.py +++ b/sponsors/notifications.py @@ -125,91 +125,53 @@ def get_attachments(self, context): return [(f"Contract.{ext}", content, f"application/{app_type}")] -class SponsorshipApprovalLogger(): +def add_log_entry(request, object, acton_flag, message): + return LogEntry.objects.log_action( + user_id=request.user.id, + content_type_id=ContentType.objects.get_for_model(type(object)).pk, + object_id=object.pk, + object_repr=str(object), + action_flag=acton_flag, + change_message=message + ) + + +class SponsorshipApprovalLogger: def notify(self, request, sponsorship, contract, **kwargs): - LogEntry.objects.log_action( - user_id=request.user.id, - content_type_id=ContentType.objects.get_for_model(Sponsorship).pk, - object_id=sponsorship.pk, - object_repr=str(sponsorship), - action_flag=CHANGE, - change_message="Sponsorship Approval" - ) - LogEntry.objects.log_action( - user_id=request.user.id, - content_type_id=ContentType.objects.get_for_model(Contract).pk, - object_id=contract.pk, - object_repr=str(contract), - action_flag=ADDITION, - change_message="Created After Sponsorship Approval" - ) + add_log_entry(request, sponsorship, CHANGE, "Sponsorship Approval") + add_log_entry(request, contract, ADDITION, "Created After Sponsorship Approval") -class SentContractLogger(): +class SentContractLogger: def notify(self, request, contract, **kwargs): - LogEntry.objects.log_action( - user_id=request.user.id, - content_type_id=ContentType.objects.get_for_model(Contract).pk, - object_id=contract.pk, - object_repr=str(contract), - action_flag=CHANGE, - change_message="Contract Sent" - ) + add_log_entry(request, contract, CHANGE, "Contract Sent") -class ExecutedContractLogger(): +class ExecutedContractLogger: def notify(self, request, contract, **kwargs): - LogEntry.objects.log_action( - user_id=request.user.id, - content_type_id=ContentType.objects.get_for_model(Contract).pk, - object_id=contract.pk, - object_repr=str(contract), - action_flag=CHANGE, - change_message="Contract Executed" - ) + add_log_entry(request, contract, CHANGE, "Contract Executed") -class ExecutedExistingContractLogger(): +class ExecutedExistingContractLogger: def notify(self, request, contract, **kwargs): - LogEntry.objects.log_action( - user_id=request.user.id, - content_type_id=ContentType.objects.get_for_model(Contract).pk, - object_id=contract.pk, - object_repr=str(contract), - action_flag=CHANGE, - change_message="Existing Contract Uploaded and Executed" - ) + add_log_entry(request, contract, CHANGE, "Existing Contract Uploaded and Executed") -class NullifiedContractLogger(): +class NullifiedContractLogger: def notify(self, request, contract, **kwargs): - LogEntry.objects.log_action( - user_id=request.user.id, - content_type_id=ContentType.objects.get_for_model(Contract).pk, - object_id=contract.pk, - object_repr=str(contract), - action_flag=CHANGE, - change_message="Contract Nullified" - ) + add_log_entry(request, contract, CHANGE, "Contract Nullified") -class SendSponsorNotificationLogger(): +class SendSponsorNotificationLogger: def notify(self, notification, sponsorship, contact_types, request, **kwargs): contacts = ", ".join(contact_types) msg = f"Notification '{notification.internal_name}' was sent to contacts: {contacts}" - LogEntry.objects.log_action( - user_id=request.user.id, - content_type_id=ContentType.objects.get_for_model(Sponsorship).pk, - object_id=sponsorship.pk, - object_repr=str(sponsorship), - action_flag=CHANGE, - change_message=msg - ) + add_log_entry(request, sponsorship, CHANGE, msg) class RefreshSponsorshipsCache: @@ -230,3 +192,10 @@ def get_email_context(self, **kwargs): context = super().get_email_context(**kwargs) context["required_assets"] = BenefitFeature.objects.from_sponsorship(context["sponsorship"]).required_assets() return context + + +class ClonedResourcesLogger: + + def notify(self, request, resource, from_year, **kwargs): + msg = f"Cloned from {from_year} sponsorship application config" + add_log_entry(request, resource, ADDITION, msg) diff --git a/sponsors/tests/test_forms.py b/sponsors/tests/test_forms.py index 8e960e71d..c40074fd7 100644 --- a/sponsors/tests/test_forms.py +++ b/sponsors/tests/test_forms.py @@ -13,46 +13,70 @@ SponsorBenefit, Sponsorship, SponsorshipsListForm, - SendSponsorshipNotificationForm, SponsorRequiredAssetsForm, SponsorshipBenefitAdminForm, + SendSponsorshipNotificationForm, SponsorRequiredAssetsForm, SponsorshipBenefitAdminForm, CloneApplicationConfigForm, ) from sponsors.models import SponsorshipBenefit, SponsorContact, RequiredTextAssetConfiguration, \ - RequiredImgAssetConfiguration, ImgAsset, RequiredTextAsset, SponsorshipPackage + RequiredImgAssetConfiguration, ImgAsset, RequiredTextAsset, SponsorshipPackage, SponsorshipCurrentYear from .utils import get_static_image_file_as_upload from ..models.enums import AssetsRelatedTo class SponsorshipsBenefitsFormTests(TestCase): def setUp(self): + self.current_year = SponsorshipCurrentYear.get_year() self.psf = baker.make("sponsors.SponsorshipProgram", name="PSF") self.wk = baker.make("sponsors.SponsorshipProgram", name="Working Group") self.program_1_benefits = baker.make( - SponsorshipBenefit, program=self.psf, _quantity=3 + SponsorshipBenefit, program=self.psf, _quantity=3, year=self.current_year ) self.program_2_benefits = baker.make( - SponsorshipBenefit, program=self.wk, _quantity=5 + SponsorshipBenefit, program=self.wk, _quantity=5, year=self.current_year + ) + self.package = baker.make( + "sponsors.SponsorshipPackage", advertise=True, year=self.current_year ) - self.package = baker.make("sponsors.SponsorshipPackage", advertise=True) self.package.benefits.add(*self.program_1_benefits) self.package.benefits.add(*self.program_2_benefits) # packages without associated packages - self.add_ons = baker.make(SponsorshipBenefit, program=self.psf, _quantity=2) + self.add_ons = baker.make( + SponsorshipBenefit, program=self.psf, _quantity=2, year=self.current_year + ) # a la carte benefits - self.a_la_carte = baker.make(SponsorshipBenefit, program=self.psf, a_la_carte=True, _quantity=2) + self.a_la_carte = baker.make( + SponsorshipBenefit, program=self.psf, a_la_carte=True, _quantity=2, year=self.current_year + ) - def test_specific_field_to_select_add_ons(self): + def test_specific_field_to_select_add_ons_by_year(self): + prev_year = self.current_year - 1 + from_prev_year = baker.make( + SponsorshipBenefit, program=self.psf, _quantity=2, year=prev_year + ) + # current year by default form = SponsorshipsBenefitsForm() - choices = list(form.fields["add_ons_benefits"].choices) - self.assertEqual(len(self.add_ons), len(choices)) for benefit in self.add_ons: self.assertIn(benefit.id, [c[0] for c in choices]) - def test_benefits_organized_by_program(self): - form = SponsorshipsBenefitsForm() + form = SponsorshipsBenefitsForm(year=prev_year) + choices = list(form.fields["add_ons_benefits"].choices) + self.assertEqual(len(self.add_ons), len(choices)) + for benefit in from_prev_year: + self.assertIn(benefit.id, [c[0] for c in choices]) + def test_benefits_from_current_year_organized_by_program(self): + older_psf = baker.make( + SponsorshipBenefit, program=self.psf, _quantity=3, year=self.current_year - 1 + ) + older_wk = baker.make( + SponsorshipBenefit, program=self.wk, _quantity=5, year=self.current_year - 1 + ) + self.package.benefits.add(*older_psf) + self.package.benefits.add(*older_wk) + + form = SponsorshipsBenefitsForm() field1, field2 = sorted(form.benefits_programs, key=lambda f: f.name) self.assertEqual("benefits_psf", field1.name) @@ -69,18 +93,33 @@ def test_benefits_organized_by_program(self): for benefit in self.program_2_benefits: self.assertIn(benefit.id, [c[0] for c in choices]) - def test_specific_field_to_select_a_la_carte_benefits(self): - form = SponsorshipsBenefitsForm() + def test_specific_field_to_select_a_la_carte_benefits_by_year(self): + prev_year = self.current_year - 1 + # a la carte benefits + prev_benefits = baker.make( + SponsorshipBenefit, program=self.psf, a_la_carte=True, _quantity=2, year=prev_year + ) + # Current year by default + form = SponsorshipsBenefitsForm() choices = list(form.fields["a_la_carte_benefits"].choices) - self.assertEqual(len(self.a_la_carte), len(choices)) for benefit in self.a_la_carte: self.assertIn(benefit.id, [c[0] for c in choices]) - def test_package_list_only_advertisable_ones(self): - ads_pkgs = baker.make('SponsorshipPackage', advertise=True, _quantity=2) + # Current year by default + form = SponsorshipsBenefitsForm(year=prev_year) + choices = list(form.fields["a_la_carte_benefits"].choices) + self.assertEqual(len(self.a_la_carte), len(choices)) + for benefit in prev_benefits: + self.assertIn(benefit.id, [c[0] for c in choices]) + + def test_package_list_only_advertisable_ones_from_current_year(self): + ads_pkgs = baker.make( + 'SponsorshipPackage', advertise=True, _quantity=2, year=self.current_year + ) baker.make('SponsorshipPackage', advertise=False) + baker.make('SponsorshipPackage', advertise=False, year=self.current_year) form = SponsorshipsBenefitsForm() field = form.fields.get("package") @@ -140,7 +179,7 @@ def test_benefits_conflicts_helper_property(self): self.assertEqual(map[b.id], [benefit_2.id]) def test_invalid_form_if_any_conflict(self): - benefit_1 = baker.make("sponsors.SponsorshipBenefit", program=self.wk) + benefit_1 = baker.make("sponsors.SponsorshipBenefit", program=self.wk, year=self.current_year) benefit_1.conflicts.add(*self.program_1_benefits) self.package.benefits.add(benefit_1) @@ -189,12 +228,12 @@ def test_package_only_benefit_without_package_should_not_validate(self): def test_package_only_benefit_with_wrong_package_should_not_validate(self): SponsorshipBenefit.objects.all().update(package_only=True) - package = baker.make("sponsors.SponsorshipPackage", advertise=True) + package = baker.make("sponsors.SponsorshipPackage", advertise=True, year=self.current_year) package.benefits.add(*SponsorshipBenefit.objects.all()) data = { "benefits_psf": [self.program_1_benefits[0]], - "package": baker.make("sponsors.SponsorshipPackage", advertise=True).id, # other package + "package": baker.make("sponsors.SponsorshipPackage", advertise=True, year=self.current_year).id, # other package } form = SponsorshipsBenefitsForm(data=data) @@ -747,13 +786,13 @@ def setUp(self): self.program = baker.make("sponsors.SponsorshipProgram") def test_required_fields(self): - required = {"name", "program"} + required = {"name", "program", "year"} form = SponsorshipBenefitAdminForm(data={}) self.assertFalse(form.is_valid()) self.assertEqual(set(form.errors), required) def test_a_la_carte_benefit_cannot_have_package(self): - data = {"name": "benefit", "program": self.program.pk, "a_la_carte": True} + data = {"name": "benefit", "program": self.program.pk, "a_la_carte": True, "year": 2023} form = SponsorshipBenefitAdminForm(data=data) self.assertTrue(form.is_valid()) @@ -762,3 +801,53 @@ def test_a_la_carte_benefit_cannot_have_package(self): form = SponsorshipBenefitAdminForm(data=data) self.assertFalse(form.is_valid()) self.assertIn("__all__", form.errors) + + +class CloneApplicationConfigFormTests(TestCase): + + def setUp(self): + baker.make(SponsorshipBenefit, year=2022) + baker.make(SponsorshipPackage, year=2023) + + def test_required_fields(self): + req_fields = {"from_year", "target_year"} + form = CloneApplicationConfigForm(data={}) + self.assertFalse(form.is_valid()) + self.assertEqual(req_fields, set(form.errors)) + + def test_from_year_should_list_configured_years_as_possible_choices(self): + expected = [(2023, 2023), (2022, 2022)] + form = CloneApplicationConfigForm() + from_years = form.fields["from_year"].choices + self.assertEqual(expected, from_years) + self.assertEqual([2023, 2022], form.configured_years) + + def test_target_must_be_greater_than_from_year(self): + # lower + data = {"from_year": 2023, "target_year": 2020} + form = CloneApplicationConfigForm(data=data) + self.assertFalse(form.is_valid()) + self.assertIn("__all__", form.errors) + # greater + data = {"from_year": 2023, "target_year": 2024} + form = CloneApplicationConfigForm(data=data) + self.assertTrue(form.is_valid()) + self.assertEqual(2023, form.cleaned_data["from_year"]) + self.assertEqual(2024, form.cleaned_data["target_year"]) + + def test_target_cannot_be_an_already_configured_year(self): + # the same + data = {"from_year": 2022, "target_year": 2023} + form = CloneApplicationConfigForm(data=data) + self.assertFalse(form.is_valid()) + self.assertIn("__all__", form.errors) + + def test_target_year_has_2050_as_an_upper_boundary(self): + data = {"from_year": 2023, "target_year": 2050} + form = CloneApplicationConfigForm(data=data) + self.assertTrue(form.is_valid()) + + data = {"from_year": 2023, "target_year": 2051} + form = CloneApplicationConfigForm(data=data) + self.assertFalse(form.is_valid()) + self.assertIn("target_year", form.errors) diff --git a/sponsors/tests/test_managers.py b/sponsors/tests/test_managers.py index 68f2b0a0d..432389663 100644 --- a/sponsors/tests/test_managers.py +++ b/sponsors/tests/test_managers.py @@ -5,7 +5,7 @@ from django.test import TestCase from ..models import Sponsorship, SponsorBenefit, LogoPlacement, TieredQuantity, RequiredTextAsset, RequiredImgAsset, \ - BenefitFeature, SponsorshipPackage, SponsorshipBenefit + BenefitFeature, SponsorshipPackage, SponsorshipBenefit, SponsorshipCurrentYear from sponsors.models.enums import LogoPlacementChoices, PublisherChoices @@ -149,9 +149,10 @@ class SponsorshipBenefitManagerTests(TestCase): def setUp(self): package = baker.make(SponsorshipPackage) - self.regular_benefit = baker.make(SponsorshipBenefit) + current_year = SponsorshipCurrentYear.get_year() + self.regular_benefit = baker.make(SponsorshipBenefit, year=current_year) self.regular_benefit.packages.add(package) - self.add_on = baker.make(SponsorshipBenefit) + self.add_on = baker.make(SponsorshipBenefit, year=current_year-1) self.a_la_carte = baker.make(SponsorshipBenefit, a_la_carte=True) def test_add_ons_queryset(self): @@ -163,3 +164,21 @@ def test_a_la_carte_queryset(self): qs = SponsorshipBenefit.objects.a_la_carte() self.assertEqual(1, qs.count()) self.assertIn(self.a_la_carte, qs) + + def test_filter_benefits_by_current_year(self): + qs = SponsorshipBenefit.objects.all().from_current_year() + self.assertEqual(1, qs.count()) + self.assertIn(self.regular_benefit, qs) + + +class SponsorshipPackageManagerTests(TestCase): + + def test_filter_packages_by_current_year(self): + current_year = SponsorshipCurrentYear.get_year() + active_package = baker.make(SponsorshipPackage, year=current_year) + baker.make(SponsorshipPackage, year=current_year - 1) + + qs = SponsorshipPackage.objects.all().from_current_year() + + self.assertEqual(1, qs.count()) + self.assertIn(active_package, qs) diff --git a/sponsors/tests/test_models.py b/sponsors/tests/test_models.py index 0737ee189..0dad14bef 100644 --- a/sponsors/tests/test_models.py +++ b/sponsors/tests/test_models.py @@ -1,4 +1,7 @@ from datetime import date, timedelta + +from django.core.cache import cache +from django.db import IntegrityError from model_bakery import baker, seq from django import forms @@ -20,7 +23,7 @@ SponsorshipPackage, TieredQuantity, TieredQuantityConfiguration, RequiredImgAssetConfiguration, RequiredImgAsset, ImgAsset, - RequiredTextAssetConfiguration, RequiredTextAsset, TextAsset + RequiredTextAssetConfiguration, RequiredTextAsset, TextAsset, SponsorshipCurrentYear ) from ..exceptions import ( SponsorWithExistingApplicationException, @@ -28,7 +31,8 @@ InvalidStatusException, ) from sponsors.models.enums import PublisherChoices, LogoPlacementChoices, AssetsRelatedTo -from ..models.benefits import RequiredAssetMixin, BaseRequiredImgAsset, BenefitFeature, BaseRequiredTextAsset +from ..models.benefits import RequiredAssetMixin, BaseRequiredImgAsset, BenefitFeature, BaseRequiredTextAsset, \ + EmailTargetableConfiguration class SponsorshipBenefitModelTests(TestCase): @@ -111,6 +115,7 @@ def test_create_new_sponsorship(self): ) self.assertTrue(sponsorship.pk) sponsorship.refresh_from_db() + current_year = SponsorshipCurrentYear.get_year() self.assertEqual(sponsorship.submited_by, self.user) self.assertEqual(sponsorship.sponsor, self.sponsor) @@ -126,6 +131,7 @@ def test_create_new_sponsorship(self): self.assertIsNone(sponsorship.agreed_fee) self.assertIsNone(sponsorship.package) self.assertTrue(sponsorship.for_modified_package) + self.assertEqual(sponsorship.year, current_year) self.assertEqual(sponsorship.benefits.count(), len(self.benefits)) for benefit in self.benefits: @@ -294,6 +300,56 @@ def test_display_agreed_fee_for_approved_and_finalized_status(self): self.assertEqual(sponsorship.agreed_fee, 2000) +class SponsorshipCurrentYearTests(TestCase): + + def test_singleton_object_is_loaded_by_default(self): + curr_year = SponsorshipCurrentYear.objects.get() + self.assertEqual(1, curr_year.pk) + self.assertEqual(2022, curr_year.year) + + def test_make_sure_we_cannot_add_new_current_years(self): + self.assertTrue(SponsorshipCurrentYear.objects.get()) + with self.assertRaises(IntegrityError) as context: + baker.make(SponsorshipCurrentYear, id=2) + + self.assertIn("sponsorship_current_year_singleton_idx", str(context.exception)) + + def test_singleton_object_cannot_be_deleted(self): + curr_year = SponsorshipCurrentYear.objects.get() + with self.assertRaises(IntegrityError) as context: + curr_year.delete() + + self.assertIn("Singleton object cannot be delete. Try updating it instead.", str(context.exception)) + + with self.assertRaises(IntegrityError) as context: + SponsorshipCurrentYear.objects.all().delete() + + self.assertIn("Singleton object cannot be delete. Try updating it instead.", str(context.exception)) + + def test_current_year_is_cached(self): + # cleans cached from previous test runs + cache.clear() + + # first time: no cache + with self.assertNumQueries(1): + year = SponsorshipCurrentYear.get_year() + + self.assertEqual(year, cache.get(SponsorshipCurrentYear.CACHE_KEY)) + # second time: cache hit + with self.assertNumQueries(0): + SponsorshipCurrentYear.get_year() + + curr_year = SponsorshipCurrentYear.objects.get() + # update should clear cache + curr_year.year = 2024 + curr_year.save() + with self.assertNumQueries(1): + self.assertEqual(2024, SponsorshipCurrentYear.get_year()) + + # cleans cached for next test runs + cache.clear() + + class SponsorshipPackageTests(TestCase): def setUp(self): self.package = baker.make("sponsors.SponsorshipPackage") @@ -358,6 +414,24 @@ def test_user_customization_if_missing_benefit_with_conflict_from_one_or_more_co customization = self.package.has_user_customization(benefits) self.assertTrue(customization) + def test_clone_package_to_next_year(self): + pkg = baker.make(SponsorshipPackage, year=2022, advertise=True, logo_dimension=300) + pkg_2023, created = pkg.clone(year=2023) + self.assertTrue(created) + self.assertTrue(pkg_2023.pk) + self.assertEqual(2023, pkg_2023.year) + self.assertEqual(pkg.name, pkg_2023.name) + self.assertEqual(pkg.order, pkg_2023.order) + self.assertEqual(pkg.sponsorship_amount, pkg_2023.sponsorship_amount) + self.assertEqual(True, pkg_2023.advertise) + self.assertEqual(300, pkg_2023.logo_dimension) + self.assertEqual(pkg.slug, pkg_2023.slug) + + def test_clone_does_not_repeate_already_cloned_package(self): + pkg_2023, created = self.package.clone(year=2023) + repeated_pkg_2023, created = self.package.clone(year=2023) + self.assertFalse(created) + self.assertEqual(pkg_2023.pk, repeated_pkg_2023.pk) class SponsorContactModelTests(TestCase): def test_get_primary_contact_for_sponsor(self): @@ -716,6 +790,90 @@ def test_reset_attributes_recreate_features_but_keeping_previous_values(self): self.assertEqual(asset.label, "New text") self.assertEqual(asset.value, "foo") + def test_clone_benefit_regular_attributes_to_a_new_year(self): + benefit = baker.make( + SponsorshipBenefit, + name='Benefit', + description="desc", + program__name="prog", + package_only=False, + new=True, + unavailable=True, + a_la_carte=True, + internal_description="internal desc", + internal_value=300, + capacity=100, + soft_capacity=True, + year=2022 + ) + benefit_2023, created = benefit.clone(year=2023) + self.assertTrue(created) + self.assertEqual("Benefit", benefit_2023.name) + self.assertEqual("desc", benefit_2023.description) + self.assertEqual(benefit.program, benefit_2023.program) + self.assertFalse(benefit_2023.package_only) + self.assertTrue(benefit_2023.new) + self.assertTrue(benefit_2023.unavailable) + self.assertTrue(benefit_2023.a_la_carte) + self.assertEqual("internal desc", benefit_2023.internal_description) + self.assertEqual(300, benefit_2023.internal_value) + self.assertEqual(100, benefit_2023.capacity) + self.assertTrue(benefit_2023.soft_capacity) + self.assertEqual(2023, benefit_2023.year) + self.assertEqual(benefit.order, benefit_2023.order) + + def test_clone_benefit_should_be_idempotent(self): + benefit_2023, created = self.sponsorship_benefit.clone(year=2023) + repeated, created = self.sponsorship_benefit.clone(year=2023) + self.assertFalse(created) + self.assertEqual(benefit_2023.pk, repeated.pk) + + def test_clone_related_objects_as_well(self): + pkgs = baker.make(SponsorshipPackage, _quantity=2) + clauses = baker.make(LegalClause, _quantity=2) + self.sponsorship_benefit.legal_clauses.add(*clauses) + self.sponsorship_benefit.packages.add(*pkgs) + + benefit_2023, _ = self.sponsorship_benefit.clone(2023) + benefit_2023.refresh_from_db() + + self.assertEqual(4, SponsorshipPackage.objects.count()) + self.assertEqual(2023, benefit_2023.packages.values_list("year", flat=True).distinct().first()) + self.assertEqual(4, LegalClause.objects.count()) + self.assertEqual(2, benefit_2023.legal_clauses.count()) + + def test_clone_benefit_feature_configurations(self): + cfg_1 = baker.make( + LogoPlacementConfiguration, + publisher = PublisherChoices.FOUNDATION, + logo_place = LogoPlacementChoices.FOOTER, + benefit=self.sponsorship_benefit + ) + cfg_2 = baker.make( + RequiredTextAssetConfiguration, + related_to=AssetsRelatedTo.SPONSOR.value, + internal_name="config_name", + benefit=self.sponsorship_benefit + ) + + benefit_2023, _ = self.sponsorship_benefit.clone(2023) + + self.assertEqual(2, LogoPlacementConfiguration.objects.count()) + self.assertEqual(2, RequiredTextAssetConfiguration.objects.count()) + self.assertEqual(1, RequiredTextAssetConfiguration.objects.filter(benefit=benefit_2023).count()) + self.assertEqual(1, RequiredTextAssetConfiguration.objects.filter(benefit=benefit_2023).count()) + + +class LegalClauseTests(TestCase): + + def test_clone_legal_clause(self): + clause = baker.make(LegalClause) + new_clause = clause.clone() + self.assertEqual(clause.internal_name, new_clause.internal_name) + self.assertEqual(clause.clause, new_clause.clause) + self.assertEqual(clause.notes, new_clause.notes) + self.assertEqual(clause.order, new_clause.order) + ########### # Email notification tests @@ -798,11 +956,26 @@ def test_display_modifier_returns_same_name(self): name = 'Benefit' self.assertEqual(name, self.config.display_modifier(name)) + def test_clone_configuration_for_new_sponsorship_benefit(self): + sp_benefit = baker.make(SponsorshipBenefit) + + new_cfg, created = self.config.clone(sp_benefit) + + self.assertTrue(created) + self.assertEqual(2, LogoPlacementConfiguration.objects.count()) + self.assertEqual(PublisherChoices.FOUNDATION, new_cfg.publisher) + self.assertEqual(LogoPlacementChoices.FOOTER, new_cfg.logo_place) + self.assertEqual(sp_benefit, new_cfg.benefit) + + repeated, created = self.config.clone(sp_benefit) + self.assertFalse(created) + self.assertEqual(new_cfg.pk, repeated.pk) + class TieredQuantityConfigurationModelTests(TestCase): def setUp(self): - self.package = baker.make(SponsorshipPackage) + self.package = baker.make(SponsorshipPackage, year=2022) self.config = baker.make( TieredQuantityConfiguration, package=self.package, @@ -837,6 +1010,23 @@ def test_display_modifier_only_modifies_name_if_same_package(self): modified_name = self.config.display_modifier(name, package=other_package) self.assertEqual(modified_name, name) + def test_clone_tiered_quantity_configuration(self): + benefit = baker.make(SponsorshipBenefit, year=2023) + + new_cfg, created = self.config.clone(benefit) + + self.assertTrue(created) + self.assertEqual(2, TieredQuantityConfiguration.objects.count()) + self.assertEqual(self.config.quantity, new_cfg.quantity) + self.assertNotEqual(self.package, new_cfg.package) + self.assertEqual(self.package.slug, new_cfg.package.slug) + self.assertEqual(2023, new_cfg.package.year) + self.assertEqual(benefit, new_cfg.benefit) + + repeated, created = self.config.clone(benefit) + self.assertFalse(created) + self.assertEqual(new_cfg.pk, repeated.pk) + class LogoPlacementTests(TestCase): @@ -885,6 +1075,25 @@ def test_create_benefit_feature_and_sponsor_generic_img_assets(self): self.assertEqual(sponsor, asset.content_object) self.assertFalse(asset.image.name) + def test_clone_configuration_for_new_sponsorship_benefit_without_due_date(self): + sp_benefit = baker.make(SponsorshipBenefit, year=2023) + + new_cfg, created = self.config.clone(sp_benefit) + + self.assertTrue(created) + self.assertEqual(2, RequiredImgAssetConfiguration.objects.count()) + self.assertEqual(new_cfg.internal_name, f"{self.config.internal_name}_2023") + self.assertEqual(new_cfg.max_width, self.config.max_width) + self.assertEqual(new_cfg.min_width, self.config.min_width) + self.assertEqual(new_cfg.max_height, self.config.max_height) + self.assertEqual(new_cfg.min_height, self.config.min_height) + self.assertEqual(new_cfg.due_date, new_cfg.due_date) + self.assertEqual(sp_benefit, new_cfg.benefit) + + repeated, created = self.config.clone(sp_benefit) + self.assertFalse(created) + self.assertEqual(new_cfg.pk, repeated.pk) + class RequiredTextAssetConfigurationTests(TestCase): @@ -932,6 +1141,28 @@ def test_cant_create_same_asset_twice(self): self.config.create_benefit_feature(self.sponsor_benefit) self.assertEqual(1, TextAsset.objects.count()) + def test_clone_configuration_for_new_sponsorship_benefit_with_new_due_date(self): + sp_benefit = baker.make(SponsorshipBenefit, year=2023) + + self.config.due_date = timezone.now().replace(year=2022) + self.config.save() + new_cfg, created = self.config.clone(sp_benefit) + + self.assertTrue(created) + self.assertEqual(2, RequiredTextAssetConfiguration.objects.count()) + self.assertEqual(new_cfg.internal_name, f"{self.config.internal_name}_2023") + self.assertEqual(new_cfg.label, self.config.label) + self.assertEqual(new_cfg.help_text, self.config.help_text) + self.assertEqual(new_cfg.max_length, self.config.max_length) + self.assertEqual(new_cfg.due_date.day, self.config.due_date.day) + self.assertEqual(new_cfg.due_date.month, self.config.due_date.month) + self.assertEqual(new_cfg.due_date.year, 2023) + self.assertEqual(sp_benefit, new_cfg.benefit) + + repeated, created = self.config.clone(sp_benefit) + self.assertFalse(created) + self.assertEqual(new_cfg.pk, repeated.pk) + class RequiredTextAssetTests(TestCase): @@ -1004,3 +1235,20 @@ def test_build_form_field_from_input(self): self.assertEqual(text_asset.help_text, field.help_text) self.assertEqual(text_asset.label, field.label) self.assertIsInstance(field.widget, forms.ClearableFileInput) + + +class EmailTargetableConfigurationTest(TestCase): + + def test_clone_configuration_for_new_sponsorship_benefit_with_new_due_date(self): + config = baker.make(EmailTargetableConfiguration) + benefit = baker.make(SponsorshipBenefit, year=2023) + + new_cfg, created = config.clone(benefit) + + self.assertTrue(created) + self.assertEqual(2, EmailTargetableConfiguration.objects.count()) + self.assertEqual(benefit, new_cfg.benefit) + + repeated, created = config.clone(benefit) + self.assertFalse(created) + self.assertEqual(new_cfg.pk, repeated.pk) diff --git a/sponsors/tests/test_notifications.py b/sponsors/tests/test_notifications.py index 256834bfe..30151ede0 100644 --- a/sponsors/tests/test_notifications.py +++ b/sponsors/tests/test_notifications.py @@ -486,3 +486,31 @@ def test_list_required_assets_in_email_context(self): self.assertEqual(1, len(context["required_assets"])) self.assertEqual(date.today(), context["due_date"]) self.assertIn(asset, context["required_assets"]) + + +class ClonedResourceLoggerTests(TestCase): + + def setUp(self): + self.request = RequestFactory().get('/') + self.request.user = baker.make(settings.AUTH_USER_MODEL) + self.logger = notifications.ClonedResourcesLogger() + self.package = baker.make("sponsors.SponsorshipPackage", name="Foo") + self.kwargs = { + "request": self.request, + "resource": self.package, + "from_year": 2022, + "extra": "foo" + } + + def test_create_log_entry_for_cloned_resource(self): + self.assertEqual(LogEntry.objects.count(), 0) + + self.logger.notify(**self.kwargs) + + self.assertEqual(LogEntry.objects.count(), 1) + log_entry = LogEntry.objects.get() + self.assertEqual(log_entry.user, self.request.user) + self.assertEqual(log_entry.object_id, str(self.package.pk)) + self.assertEqual(str(self.package), log_entry.object_repr) + self.assertEqual(log_entry.action_flag, ADDITION) + self.assertEqual(log_entry.change_message, "Cloned from 2022 sponsorship application config") diff --git a/sponsors/tests/test_use_cases.py b/sponsors/tests/test_use_cases.py index 738640207..433d4950e 100644 --- a/sponsors/tests/test_use_cases.py +++ b/sponsors/tests/test_use_cases.py @@ -12,7 +12,8 @@ from sponsors import use_cases from sponsors.notifications import * -from sponsors.models import Sponsorship, Contract, SponsorEmailNotificationTemplate, Sponsor +from sponsors.models import Sponsorship, Contract, SponsorEmailNotificationTemplate, Sponsor, SponsorshipBenefit, \ + SponsorshipPackage class CreateSponsorshipApplicationUseCaseTests(TestCase): @@ -351,3 +352,43 @@ def test_build_use_case_with_default_notificationss(self): self.assertIsInstance( uc.notifications[0], SendSponsorNotificationLogger ) + + +class CloneSponsorshipYearUseCaseTests(TestCase): + def setUp(self): + self.request = Mock() + self.notifications = [Mock()] + self.use_case = use_cases.CloneSponsorshipYearUseCase(self.notifications) + + def test_clone_package_and_benefits(self): + baker.make(SponsorshipPackage, year=2021) # package from another year + baker.make(SponsorshipPackage, year=2022, _quantity=2) + baker.make(SponsorshipBenefit, year=2021) # benefit from another year + benefits_2022 = baker.make(SponsorshipBenefit, year=2022, _quantity=3) + + created_objects = self.use_case.execute(clone_from_year=2022, target_year=2023, request=self.request) + + # assert new packages were created + self.assertEqual(5, SponsorshipPackage.objects.count()) + self.assertEqual(2, SponsorshipPackage.objects.filter(year=2022).count()) + self.assertEqual(2, SponsorshipPackage.objects.filter(year=2023).count()) + self.assertEqual(1, SponsorshipPackage.objects.filter(year=2021).count()) + # assert new benefits were created + self.assertEqual(7, SponsorshipBenefit.objects.count()) + self.assertEqual(3, SponsorshipBenefit.objects.filter(year=2022).count()) + self.assertEqual(3, SponsorshipBenefit.objects.filter(year=2023).count()) + self.assertEqual(1, SponsorshipBenefit.objects.filter(year=2021).count()) + + n = self.notifications[0] + base_kwargs = {"request": self.request, "from_year": 2022} + self.assertEqual(len(created_objects), n.notify.call_count) + for resource in created_objects: + base_kwargs["resource"] = resource + n.notify.assert_any_call(**base_kwargs) + + def test_build_use_case_with_default_notificationss(self): + uc = use_cases.CloneSponsorshipYearUseCase.build() + self.assertEqual(len(uc.notifications), 1) + self.assertIsInstance( + uc.notifications[0], ClonedResourcesLogger + ) diff --git a/sponsors/tests/test_views.py b/sponsors/tests/test_views.py index 0440dc134..e6ca9ae35 100644 --- a/sponsors/tests/test_views.py +++ b/sponsors/tests/test_views.py @@ -15,7 +15,8 @@ Sponsor, SponsorshipBenefit, SponsorContact, - Sponsorship, + Sponsorship, SponsorshipCurrentYear, + SponsorshipPackage ) from sponsors.forms import ( SponsorshipsBenefitsForm, @@ -27,26 +28,27 @@ class SelectSponsorshipApplicationBenefitsViewTests(TestCase): url = reverse_lazy("select_sponsorship_application_benefits") def setUp(self): + self.current_year = SponsorshipCurrentYear.get_year() self.psf = baker.make("sponsors.SponsorshipProgram", name="PSF") self.wk = baker.make("sponsors.SponsorshipProgram", name="Working Group") self.program_1_benefits = baker.make( - SponsorshipBenefit, program=self.psf, _quantity=3 + SponsorshipBenefit, program=self.psf, _quantity=3, year=self.current_year ) self.program_2_benefits = baker.make( - SponsorshipBenefit, program=self.wk, _quantity=5 + SponsorshipBenefit, program=self.wk, _quantity=5, year=self.current_year ) - self.package = baker.make("sponsors.SponsorshipPackage", advertise=True) + self.package = baker.make(SponsorshipPackage, advertise=True, year=self.current_year) self.package.benefits.add(*self.program_1_benefits) - package_2 = baker.make("sponsors.SponsorshipPackage", advertise=True) + package_2 = baker.make(SponsorshipPackage, advertise=True, year=self.current_year) package_2.benefits.add(*self.program_2_benefits) self.add_on_benefits = baker.make( - SponsorshipBenefit, program=self.psf, _quantity=2 + SponsorshipBenefit, program=self.psf, _quantity=2, year=self.current_year ) self.a_la_carte_benefits = baker.make( - SponsorshipBenefit, program=self.psf, _quantity=2, a_la_carte=True, + SponsorshipBenefit, program=self.psf, _quantity=2, a_la_carte=True, year=self.current_year ) - self.user = baker.make(settings.AUTH_USER_MODEL, is_staff=True, is_active=True) + self.user = baker.make(settings.AUTH_USER_MODEL, is_staff=False, is_active=True) self.client.force_login(self.user) self.group = Group(name="Sponsorship Preview") @@ -65,8 +67,8 @@ def populate_test_cookie(self): session.save() def test_display_template_with_form_and_context(self): - psf_package = baker.make("sponsors.SponsorshipPackage", advertise=True) - extra_package = baker.make("sponsors.SponsorshipPackage", advertise=True) + psf_package = baker.make(SponsorshipPackage, advertise=True) + extra_package = baker.make(SponsorshipPackage, advertise=True) r = self.client.get(self.url) packages = r.context["sponsorship_packages"] @@ -107,7 +109,7 @@ def test_populate_form_initial_with_values_from_cookie(self): self.assertEqual(self.data, r.context["form"].initial) def test_capacity_flag(self): - psf_package = baker.make("sponsors.SponsorshipPackage", advertise=True) + psf_package = baker.make(SponsorshipPackage, advertise=True) r = self.client.get(self.url) self.assertEqual(False, r.context["capacities_met"]) @@ -115,7 +117,7 @@ def test_capacity_flag_when_needed(self): at_capacity_benefit = baker.make( SponsorshipBenefit, program=self.psf, capacity=0, soft_capacity=False ) - psf_package = baker.make("sponsors.SponsorshipPackage", advertise=True) + psf_package = baker.make(SponsorshipPackage, advertise=True) r = self.client.get(self.url) self.assertEqual(True, r.context["capacities_met"]) @@ -157,27 +159,59 @@ def test_valid_only_with_a_la_carte(self): ) self.assertEqual(self.data, cookie_value) + def test_do_not_display_application_form_by_year_if_staff_user(self): + custom_year = self.current_year + 1 + # move all obects to a new year instead of using the active one + SponsorshipBenefit.objects.all().update(year=custom_year) + SponsorshipPackage.objects.all().update(year=custom_year) + + querystring = f"config_year={custom_year}" + response = self.client.get(self.url + f"?{querystring}") + + form = response.context["form"] + self.assertIsNone(response.context["custom_year"]) + self.assertFalse(list(form.fields["benefits_psf"].choices)) + self.assertFalse(list(form.fields["benefits_working_group"].choices)) + + def test_display_application_form_by_year_if_staff_user_and_querystring(self): + self.user.is_staff = True + self.user.save() + self.client.force_login(self.user) + custom_year = self.current_year + 1 + # move all obects to a new year instead of using the active one + SponsorshipBenefit.objects.all().update(year=custom_year) + SponsorshipPackage.objects.all().update(year=custom_year) + + querystring = f"config_year={custom_year}" + response = self.client.get(self.url + f"?{querystring}") + + form = response.context["form"] + self.assertEqual(custom_year, response.context["custom_year"]) + self.assertTrue(list(form.fields["benefits_psf"].choices)) + self.assertTrue(list(form.fields["benefits_working_group"].choices)) + class NewSponsorshipApplicationViewTests(TestCase): url = reverse_lazy("new_sponsorship_application") def setUp(self): + self.current_year = SponsorshipCurrentYear.get_year() self.user = baker.make( settings.AUTH_USER_MODEL, is_staff=True, email="bernardo@companyemail.com" ) self.client.force_login(self.user) self.psf = baker.make("sponsors.SponsorshipProgram", name="PSF") self.program_1_benefits = baker.make( - SponsorshipBenefit, program=self.psf, _quantity=3 + SponsorshipBenefit, program=self.psf, _quantity=3, year=self.current_year ) - self.package = baker.make("sponsors.SponsorshipPackage", advertise=True) + self.package = baker.make(SponsorshipPackage, advertise=True, year=self.current_year) for benefit in self.program_1_benefits: benefit.packages.add(self.package) # packages without associated packages - self.add_on = baker.make(SponsorshipBenefit) + self.add_on = baker.make(SponsorshipBenefit, year=self.current_year) # a la carte benefit - self.a_la_carte = baker.make(SponsorshipBenefit, a_la_carte=True) + self.a_la_carte = baker.make(SponsorshipBenefit, a_la_carte=True, year=self.current_year) self.client.cookies["sponsorship_selected_benefits"] = json.dumps( { diff --git a/sponsors/tests/test_views_admin.py b/sponsors/tests/test_views_admin.py index 0f1dca579..1b260187a 100644 --- a/sponsors/tests/test_views_admin.py +++ b/sponsors/tests/test_views_admin.py @@ -20,8 +20,9 @@ from .utils import assertMessage, get_static_image_file_as_upload from ..models import Sponsorship, Contract, SponsorshipBenefit, SponsorBenefit, SponsorEmailNotificationTemplate, \ - GenericAsset, ImgAsset, TextAsset -from ..forms import SponsorshipReviewAdminForm, SponsorshipsListForm, SignedSponsorshipReviewAdminForm, SendSponsorshipNotificationForm + GenericAsset, ImgAsset, TextAsset, SponsorshipCurrentYear, SponsorshipPackage +from ..forms import SponsorshipReviewAdminForm, SponsorshipsListForm, SignedSponsorshipReviewAdminForm, \ + SendSponsorshipNotificationForm, CloneApplicationConfigForm from sponsors.views_admin import send_sponsorship_notifications_action, export_assets_as_zipfile from sponsors.use_cases import SendSponsorshipNotificationUseCase @@ -952,6 +953,63 @@ def test_staff_required(self): self.assertRedirects(r, redirect_url, fetch_redirect_response=False) +class ClonsSponsorshipYearConfigurationTests(TestCase): + + def setUp(self): + self.user = baker.make( + settings.AUTH_USER_MODEL, is_staff=True, is_superuser=True + ) + self.client.force_login(self.user) + self.url = reverse("admin:sponsors_sponsorshipcurrentyear_clone") + + def test_login_required(self): + login_url = reverse("admin:login") + redirect_url = f"{login_url}?next={self.url}" + self.client.logout() + r = self.client.get(self.url) + self.assertRedirects(r, redirect_url) + + def test_staff_required(self): + login_url = reverse("admin:login") + redirect_url = f"{login_url}?next={self.url}" + self.user.is_staff = False + self.user.save() + self.client.force_login(self.user) + r = self.client.get(self.url) + self.assertRedirects(r, redirect_url, fetch_redirect_response=False) + + def test_correct_template_and_form_on_get(self): + baker.make(SponsorshipBenefit, year=2022) + baker.make(SponsorshipPackage, year=2023) + response = self.client.get(self.url) + + template = "sponsors/admin/clone_application_config_form.html" + curr_year = SponsorshipCurrentYear.get_year() + + self.assertTemplateUsed(response, template) + self.assertIsInstance(response.context["form"], CloneApplicationConfigForm) + self.assertEqual(response.context["current_year"], curr_year) + self.assertEqual(response.context["configured_years"], [2023, 2022]) + self.assertIsNone(response.context["new_year"]) + + def test_display_form_errors_if_invalid_post(self): + response = self.client.post(self.url, data={}) + self.assertEqual(200, response.status_code) + self.assertTrue(response.context["form"].errors) + + def test_clone_sponsorship_application_config_with_valid_post(self): + baker.make(SponsorshipBenefit, year=2022) + data = {"from_year": 2022, "target_year": 2023} + response = self.client.post(self.url, data=data) + + self.assertEqual(SponsorshipBenefit.objects.from_year(2022).count(), 1) + self.assertEqual(SponsorshipBenefit.objects.from_year(2023).count(), 1) + template = "sponsors/admin/clone_application_config_form.html" + self.assertTemplateUsed(response, template) + self.assertEqual(response.context["new_year"], 2023) + self.assertEqual(response.context["configured_years"], [2023, 2022]) + + ####################### ### TEST CUSTOM ACTIONS class SendSponsorshipNotificationTests(TestCase): diff --git a/sponsors/use_cases.py b/sponsors/use_cases.py index 4ae5e3ae6..95b2d267e 100644 --- a/sponsors/use_cases.py +++ b/sponsors/use_cases.py @@ -1,5 +1,8 @@ +from django.db import transaction + from sponsors import notifications -from sponsors.models import Sponsorship, Contract, SponsorContact, SponsorEmailNotificationTemplate +from sponsors.models import Sponsorship, Contract, SponsorContact, SponsorEmailNotificationTemplate, SponsorshipBenefit, \ + SponsorshipPackage from sponsors.pdf import render_contract_to_pdf_file, render_contract_to_docx_file @@ -160,3 +163,36 @@ def execute(self, notification: SponsorEmailNotificationTemplate, sponsorships, contact_types=contact_types, request=kwargs.get("request"), ) + + +class CloneSponsorshipYearUseCase(BaseUseCaseWithNotifications): + notifications = [ + notifications.ClonedResourcesLogger(), + ] + + @transaction.atomic + def execute(self, clone_from_year, target_year, **kwargs): + created_resources = [] + with transaction.atomic(): + source_packages = SponsorshipPackage.objects.from_year(clone_from_year) + for package in source_packages: + resource, created = package.clone(target_year) + if created: + created_resources.append(resource) + + with transaction.atomic(): + source_benefits = SponsorshipBenefit.objects.from_year(clone_from_year) + for benefit in source_benefits: + resource, created = benefit.clone(target_year) + if created: + created_resources.append(resource) + + with transaction.atomic(): + for resource in created_resources: + self.notify( + request=kwargs.get("request"), + resource=resource, + from_year=clone_from_year, + ) + + return created_resources diff --git a/sponsors/views.py b/sponsors/views.py index 2afeadb4d..1dcdf9fe0 100644 --- a/sponsors/views.py +++ b/sponsors/views.py @@ -12,7 +12,7 @@ from .models import ( SponsorshipBenefit, SponsorshipPackage, - SponsorshipProgram, + SponsorshipProgram, SponsorshipCurrentYear, ) from sponsors import cookies @@ -39,6 +39,7 @@ def get_context_data(self, *args, **kwargs): "benefit_model": SponsorshipBenefit, "sponsorship_packages": packages, "capacities_met": capacities_met, + "custom_year": self.get_form_custom_year(), } ) return super().get_context_data(*args, **kwargs) @@ -52,6 +53,20 @@ def get_success_url(self): def get_initial(self): return cookies.get_sponsorship_selected_benefits(self.request) + def get_form_kwargs(self): + kwargs = super().get_form_kwargs() + custom_year = self.get_form_custom_year() + if custom_year: + kwargs["year"] = custom_year + return kwargs + + def get_form_custom_year(self): + custom_year = self.request.GET.get("config_year") + if self.request.user.is_staff and custom_year: + custom_year = int(custom_year) + if custom_year != SponsorshipCurrentYear.get_year(): + return custom_year + def form_valid(self, form): if not self.request.session.test_cookie_worked(): error = ErrorList() diff --git a/sponsors/views_admin.py b/sponsors/views_admin.py index 14c20407c..f68025bf9 100644 --- a/sponsors/views_admin.py +++ b/sponsors/views_admin.py @@ -12,10 +12,11 @@ from sponsors import use_cases from sponsors.forms import SponsorshipReviewAdminForm, SponsorshipsListForm, SignedSponsorshipReviewAdminForm, \ - SendSponsorshipNotificationForm + SendSponsorshipNotificationForm, CloneApplicationConfigForm from sponsors.exceptions import InvalidStatusException from sponsors.pdf import render_contract_to_pdf_response, render_contract_to_docx_response -from sponsors.models import Sponsorship, SponsorBenefit, EmailTargetable, SponsorContact, BenefitFeature +from sponsors.models import Sponsorship, SponsorBenefit, EmailTargetable, SponsorContact, BenefitFeature, \ + SponsorshipCurrentYear, SponsorshipBenefit, SponsorshipPackage def preview_contract_view(ModelAdmin, request, pk): @@ -282,6 +283,34 @@ def list_uploaded_assets(ModelAdmin, request, pk): return render(request, "sponsors/admin/list_uploaded_assets.html", context=context) +def clone_application_config(ModelAdmin, request): + form = CloneApplicationConfigForm() + context = { + "current_year": SponsorshipCurrentYear.get_year(), + "configured_years": form.configured_years, + "new_year": None + } + if request.method == "POST": + form = CloneApplicationConfigForm(data=request.POST) + if form.is_valid(): + use_case = use_cases.CloneSponsorshipYearUseCase.build() + target_year = form.cleaned_data["target_year"] + from_year = form.cleaned_data["from_year"] + use_case.execute(from_year, target_year, request=request) + + context["configured_years"].insert(0, target_year) + context["new_year"] = target_year + ModelAdmin.message_user( + request, + f"Benefits and Packages for {target_year} copied with sucess from {from_year}!", + messages.SUCCESS + ) + + context["form"] = form + template = "sponsors/admin/clone_application_config_form.html" + return render(request, template, context) + + ################## ### CUSTOM ACTIONS def send_sponsorship_notifications_action(ModelAdmin, request, queryset): diff --git a/templates/sponsors/admin/clone_application_config_form.html b/templates/sponsors/admin/clone_application_config_form.html new file mode 100644 index 000000000..7cca96be4 --- /dev/null +++ b/templates/sponsors/admin/clone_application_config_form.html @@ -0,0 +1,61 @@ +{% extends 'admin/change_form.html' %} +{% load i18n static %} + +{% block extrastyle %} + {{ block.super }} + +{% endblock %} + +{% block title %}Accept {{ sponsorship }} | python.org{% endblock %} + +{% block breadcrumbs %} + +{% endblock %} + +{% block content %} +

    Clone Sponsorsihp Application Configuration

    +

    You can use this form to generate a new sponsorship application year by copying it from an already configured year.

    + {% if configured_years %} +

    There are already valid configuraiton for the following years:

    + + {% endif %} + + {% if not new_year %} +
    +
    +
    + +
    + {% csrf_token %} + + {{ form.as_p }} + +

    + IMPORTANT: This process performs a lot of database queries and can take a while to finish executing. + Please, make sure you're using the correct values before submit the form. +

    +
    + +
    + +
    +
    + {% endif %} + +{% endblock %} diff --git a/templates/sponsors/admin/sponsors_sponsorshipcurrentyear_changelist.html b/templates/sponsors/admin/sponsors_sponsorshipcurrentyear_changelist.html new file mode 100644 index 000000000..7c37a83fd --- /dev/null +++ b/templates/sponsors/admin/sponsors_sponsorshipcurrentyear_changelist.html @@ -0,0 +1,9 @@ +{% extends 'admin/change_list.html' %} + +{% block object-tools-items %} +
  • + + Clone Application Configuration + +
  • +{% endblock %} diff --git a/templates/sponsors/sponsorship_benefits_form.html b/templates/sponsors/sponsorship_benefits_form.html index 9a2bd6082..8ce219314 100644 --- a/templates/sponsors/sponsorship_benefits_form.html +++ b/templates/sponsors/sponsorship_benefits_form.html @@ -10,9 +10,19 @@ {% block content %} {% flag "sponsorship-applications-open" %} + {% if custom_year %} +
    +

    Important!

    +

    You're seeing this message because you're a staff user!

    +

    You're are currently previewing how the sponsorship application using the configuration from {{ custom_year }}.

    +

    This should be used only for preview before updating the Sponsorship Current Active year to {{ custom_year }}.

    +
    + {% endif %} +
    {% box 'sponsorship-application' %}
    +
    {% csrf_token %}
    @@ -208,7 +218,7 @@

    Submit your contact information

  • Submit your contact information

  • - +
    From 0197bd584c56621c251f9d20352396e029c0af30 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Mon, 8 Aug 2022 16:06:43 -0400 Subject: [PATCH 006/256] Add some assitive ordering and reprs for objects related to Sponsorship years in Django Admin (#2111) --- sponsors/admin.py | 9 +++++---- sponsors/models/sponsorship.py | 10 +++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/sponsors/admin.py b/sponsors/admin.py index 8c8ce5d7f..a8f553534 100644 --- a/sponsors/admin.py +++ b/sponsors/admin.py @@ -109,9 +109,10 @@ class ProvidedFileAssetConfigurationInline(StackedPolymorphicInline.Child): class SponsorshipBenefitAdmin(PolymorphicInlineSupportMixin, OrderedModelAdmin): change_form_template = "sponsors/admin/sponsorshipbenefit_change_form.html" inlines = [BenefitFeatureConfigurationInline] - ordering = ("program", "order") + ordering = ("-year", "program", "order") list_display = [ "program", + "year", "short_name", "package_only", "internal_value", @@ -170,7 +171,7 @@ def update_related_sponsorships(self, *args, **kwargs): @admin.register(SponsorshipPackage) class SponsorshipPackageAdmin(OrderedModelAdmin): - ordering = ("order",) + ordering = ("-year", "order",) list_display = ["name", "year", "advertise", "move_up_down_links"] list_filter = ["advertise", "year"] search_fields = ["name"] @@ -197,8 +198,8 @@ class SponsorContactInline(admin.TabularInline): class SponsorshipsInline(admin.TabularInline): model = Sponsorship - fields = ["link", "status", "applied_on", "start_date", "end_date"] - readonly_fields = ["link", "status", "applied_on", "start_date", "end_date"] + fields = ["link", "status", "year", "applied_on", "start_date", "end_date"] + readonly_fields = ["link", "status", "year", "applied_on", "start_date", "end_date"] can_delete = False extra = 0 diff --git a/sponsors/models/sponsorship.py b/sponsors/models/sponsorship.py index 5d23b1cda..4ba5ccd9f 100644 --- a/sponsors/models/sponsorship.py +++ b/sponsors/models/sponsorship.py @@ -51,10 +51,10 @@ class SponsorshipPackage(OrderedModel): year = models.PositiveIntegerField(null=True, validators=YEAR_VALIDATORS, db_index=True) def __str__(self): - return self.name + return f'{self.name} ({self.year})' - class Meta(OrderedModel.Meta): - pass + class Meta: + ordering = ('-year', 'order',) def has_user_customization(self, benefits): """ @@ -199,7 +199,7 @@ def user_customizations(self): return self.package.get_user_customization(benefits) def __str__(self): - repr = f"{self.level_name} ({self.get_status_display()}) for sponsor {self.sponsor.name}" + repr = f"{self.level_name} - {self.year} - ({self.get_status_display()}) for sponsor {self.sponsor.name}" if self.start_date and self.end_date: fmt = "%m/%d/%Y" start = self.start_date.strftime(fmt) @@ -498,7 +498,7 @@ def related_sponsorships(self): return Sponsorship.objects.filter(id__in=Subquery(ids_qs)) def __str__(self): - return f"{self.program} > {self.name}" + return f"{self.program} > {self.name} ({self.year})" def _short_name(self): return truncatechars(self.name, 42) From 6bd101d8767cf5cd4ae7b5239c84745b7d69e50c Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 9 Aug 2022 15:45:31 +0300 Subject: [PATCH 007/256] Fix redirection of SF bugs (#2110) * Fix redirection of SF bugs * remove extraneous directive Co-authored-by: Ee Durbin --- config/nginx.conf.erb | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/config/nginx.conf.erb b/config/nginx.conf.erb index 409828384..527fdc0df 100644 --- a/config/nginx.conf.erb +++ b/config/nginx.conf.erb @@ -284,11 +284,8 @@ http { return 302 https://peps.python.org/; } - location ~ ^/sf(.*)$ { - if ($is_args != "") { - return 302 http://legacy.python.org/sf?$args; - } - return 302 http://legacy.python.org/sf$1; + location ~ ^/sf/(.*)$ { + return 302 https://bugs.python.org/issue$1; } location /news/ { From fe78dcfea15d33c70f996aed9059e27abb4adf05 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Tue, 9 Aug 2022 08:46:07 -0400 Subject: [PATCH 008/256] make year a dropdown for sponsorship admin forms that need it (#2112) --- sponsors/admin.py | 1 + sponsors/forms.py | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/sponsors/admin.py b/sponsors/admin.py index a8f553534..0d655a194 100644 --- a/sponsors/admin.py +++ b/sponsors/admin.py @@ -130,6 +130,7 @@ class SponsorshipBenefitAdmin(PolymorphicInlineSupportMixin, OrderedModelAdmin): "name", "description", "program", + "year", "packages", "package_only", "new", diff --git a/sponsors/forms.py b/sponsors/forms.py index 471f44659..22853bd3d 100644 --- a/sponsors/forms.py +++ b/sponsors/forms.py @@ -25,6 +25,10 @@ SPONSOR_TEMPLATE_HELP_TEXT, SponsorshipCurrentYear, ) +SPONSORSHIP_YEAR_SELECT = forms.Select( + choices=(((None, '---'),) + tuple(((y, str(y)) for y in range(2021, datetime.date.today().year + 2)))) +) + class PickSponsorshipBenefitsField(forms.ModelMultipleChoiceField): widget = forms.CheckboxSelectMultiple @@ -393,6 +397,9 @@ def __init__(self, *args, **kwargs): class Meta: model = Sponsorship fields = ["start_date", "end_date", "package", "sponsorship_fee"] + widgets = { + 'year': SPONSORSHIP_YEAR_SELECT, + } def clean(self): cleaned_data = super().clean() @@ -673,6 +680,9 @@ class SponsorshipBenefitAdminForm(forms.ModelForm): class Meta: model = SponsorshipBenefit + widgets = { + 'year': SPONSORSHIP_YEAR_SELECT, + } fields = "__all__" def clean(self): From 898b5b69cd02758af42ac0df7d2d521af861a309 Mon Sep 17 00:00:00 2001 From: Dustin Ingram Date: Thu, 11 Aug 2022 14:54:45 -0400 Subject: [PATCH 009/256] Hygiene PR (#2114) * Add .python-version file * Switch to psycopg2-binary to avoid compiling from source * Document Postgres 10.x usage * Add unapplied automigration for sponsors/ * Add Heroku and gunicorn --- .python-version | 1 + base-requirements.txt | 2 +- docs/source/install.rst | 5 +++-- sponsors/migrations/0086_auto_20220809_1655.py | 17 +++++++++++++++++ templates/humans.txt | 2 +- 5 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 .python-version create mode 100644 sponsors/migrations/0086_auto_20220809_1655.py diff --git a/.python-version b/.python-version new file mode 100644 index 000000000..1635d0f5a --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.9.6 diff --git a/base-requirements.txt b/base-requirements.txt index e0a18cda6..da4a2b532 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -6,7 +6,7 @@ docutils==0.12 Markdown==3.3.4 cmarkgfm==0.6.0 Pillow==8.3.1 -psycopg2==2.8.6 +psycopg2-binary==2.8.6 python3-openid==3.2.0 python-decouple==3.4 # lxml used by BeautifulSoup. diff --git a/docs/source/install.rst b/docs/source/install.rst index 055ccd07d..ee7576ebd 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -3,7 +3,8 @@ Installing Manual setup ------------ -First, install PostgreSQL_ on your machine and run it. +First, install PostgreSQL_ on your machine and run it. *pythondotorg* currently +uses Postgres 10.21. .. _PostgreSQL: https://www.postgresql.org/download/ @@ -85,7 +86,7 @@ To create initial data for the most used applications, run:: $ ./manage.py create_initial_data -See :ref:`command-create-initial-data` for the command options to specify +See :ref:`command-create-initial-data` for the command options to specify while creating initial data. Finally, start the development server:: diff --git a/sponsors/migrations/0086_auto_20220809_1655.py b/sponsors/migrations/0086_auto_20220809_1655.py new file mode 100644 index 000000000..e7d8bda65 --- /dev/null +++ b/sponsors/migrations/0086_auto_20220809_1655.py @@ -0,0 +1,17 @@ +# Generated by Django 2.2.24 on 2022-08-09 16:55 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0085_auto_20220730_0945'), + ] + + operations = [ + migrations.AlterModelOptions( + name='sponsorshippackage', + options={'ordering': ('-year', 'order')}, + ), + ] diff --git a/templates/humans.txt b/templates/humans.txt index 944834e56..5716b6467 100644 --- a/templates/humans.txt +++ b/templates/humans.txt @@ -59,5 +59,5 @@ Core: Python 3 and Django 1.7 Components: Modernizr, jQuery, Susy (susy.oddbird.net) Software: SASS and Compass, Coda, Sublime Text, Terminal, Adobe CS, Made on Macs - Hardware Stack: Ubuntu 14.04, Postgresql 9.x, Nginx, uwsgi + Hardware Stack: Heroku, Ubuntu 14.04, Postgresql 10.x, Nginx, gunicorn Helpers: Haystack, Pipeline From 4cc633b44f4a64cc95bddcfcfc1f37f4ab1953f0 Mon Sep 17 00:00:00 2001 From: berin Date: Fri, 12 Aug 2022 16:02:17 +0200 Subject: [PATCH 010/256] Add display label to Tiered Benefits (#2115) * Add missing migration after changing ordring of packages The ordering in Meta was change by 0197bd584c56621c251f9d20352396e029c0af30 * Rename TieredQuantity to TieredBenefit (both configuration and feature objects) * Add display label field to base tiered benefits abstract model * Update template tag to prioritize tiered benefit label over quantity * Add assertions to make sure display label is correctly configured and cloned * Update display modifiers to prioritize label instead of quantity * correct migrations * Update fixture file to match table new name Co-authored-by: Ee Durbin --- fixtures/sponsors.json | 184 +++++++++--------- sponsors/admin.py | 6 +- .../commands/fullfill_pycon_2022.py | 4 +- .../migrations/0087_auto_20220810_1647.py | 26 +++ .../migrations/0088_auto_20220810_1655.py | 23 +++ sponsors/models/__init__.py | 6 +- sponsors/models/benefits.py | 34 ++-- sponsors/models/sponsorship.py | 4 +- sponsors/templatetags/sponsors.py | 6 +- sponsors/tests/test_managers.py | 8 +- sponsors/tests/test_models.py | 41 ++-- sponsors/tests/test_templatetags.py | 14 +- 12 files changed, 216 insertions(+), 140 deletions(-) create mode 100644 sponsors/migrations/0087_auto_20220810_1647.py create mode 100644 sponsors/migrations/0088_auto_20220810_1655.py diff --git a/fixtures/sponsors.json b/fixtures/sponsors.json index 6cdc1ff29..ae5146275 100644 --- a/fixtures/sponsors.json +++ b/fixtures/sponsors.json @@ -1239,7 +1239,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 62 } @@ -1250,7 +1250,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 62 } @@ -1261,7 +1261,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 62 } @@ -1272,7 +1272,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 64 } @@ -1283,7 +1283,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 64 } @@ -1294,7 +1294,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 64 } @@ -1305,7 +1305,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 64 } @@ -1316,7 +1316,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 64 } @@ -1327,7 +1327,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 64 } @@ -1338,7 +1338,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 64 } @@ -1349,7 +1349,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 64 } @@ -1360,7 +1360,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 65 } @@ -1371,7 +1371,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 65 } @@ -1382,7 +1382,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 65 } @@ -1393,7 +1393,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 65 } @@ -1404,7 +1404,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 65 } @@ -1415,7 +1415,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 65 } @@ -1426,7 +1426,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 75 } @@ -1437,7 +1437,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 75 } @@ -1448,7 +1448,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 75 } @@ -1459,7 +1459,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 75 } @@ -1470,7 +1470,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 75 } @@ -1481,7 +1481,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 75 } @@ -1492,7 +1492,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 75 } @@ -1580,7 +1580,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 24 } @@ -1591,7 +1591,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 24 } @@ -1602,7 +1602,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 24 } @@ -1624,7 +1624,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 73 } @@ -1635,7 +1635,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 73 } @@ -1646,7 +1646,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 73 } @@ -1657,7 +1657,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 73 } @@ -1668,7 +1668,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 73 } @@ -1679,7 +1679,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 73 } @@ -1690,7 +1690,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 77 } @@ -1701,7 +1701,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 77 } @@ -1712,7 +1712,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 77 } @@ -1723,7 +1723,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 77 } @@ -1734,7 +1734,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 77 } @@ -1745,7 +1745,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 77 } @@ -1756,7 +1756,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 77 } @@ -1943,7 +1943,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 64 } @@ -1954,7 +1954,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 65 } @@ -1998,7 +1998,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 64 } @@ -2009,7 +2009,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 65 } @@ -2020,7 +2020,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 77 } @@ -2031,7 +2031,7 @@ "fields": { "polymorphic_ctype": [ "sponsors", - "tieredquantityconfiguration" + "tieredbenefitconfiguration" ], "benefit": 77 } @@ -2152,7 +2152,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 26, "fields": { "package": 1, @@ -2160,7 +2160,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 27, "fields": { "package": 2, @@ -2168,7 +2168,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 28, "fields": { "package": 3, @@ -2176,7 +2176,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 29, "fields": { "package": 1, @@ -2184,7 +2184,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 30, "fields": { "package": 2, @@ -2192,7 +2192,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 31, "fields": { "package": 3, @@ -2200,7 +2200,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 32, "fields": { "package": 4, @@ -2208,7 +2208,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 33, "fields": { "package": 5, @@ -2216,7 +2216,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 34, "fields": { "package": 6, @@ -2224,7 +2224,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 35, "fields": { "package": 7, @@ -2232,7 +2232,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 36, "fields": { "package": 8, @@ -2240,7 +2240,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 37, "fields": { "package": 1, @@ -2248,7 +2248,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 38, "fields": { "package": 2, @@ -2256,7 +2256,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 39, "fields": { "package": 3, @@ -2264,7 +2264,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 40, "fields": { "package": 4, @@ -2272,7 +2272,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 41, "fields": { "package": 5, @@ -2280,7 +2280,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 42, "fields": { "package": 6, @@ -2288,7 +2288,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 43, "fields": { "package": 1, @@ -2296,7 +2296,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 44, "fields": { "package": 2, @@ -2304,7 +2304,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 45, "fields": { "package": 3, @@ -2312,7 +2312,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 46, "fields": { "package": 4, @@ -2320,7 +2320,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 47, "fields": { "package": 5, @@ -2328,7 +2328,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 48, "fields": { "package": 6, @@ -2336,7 +2336,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 49, "fields": { "package": 7, @@ -2344,7 +2344,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 89, "fields": { "package": 1, @@ -2352,7 +2352,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 90, "fields": { "package": 2, @@ -2360,7 +2360,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 91, "fields": { "package": 3, @@ -2368,7 +2368,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 93, "fields": { "package": 1, @@ -2376,7 +2376,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 94, "fields": { "package": 2, @@ -2384,7 +2384,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 95, "fields": { "package": 3, @@ -2392,7 +2392,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 96, "fields": { "package": 4, @@ -2400,7 +2400,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 97, "fields": { "package": 5, @@ -2408,7 +2408,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 98, "fields": { "package": 6, @@ -2416,7 +2416,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 99, "fields": { "package": 1, @@ -2424,7 +2424,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 100, "fields": { "package": 2, @@ -2432,7 +2432,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 101, "fields": { "package": 3, @@ -2440,7 +2440,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 102, "fields": { "package": 4, @@ -2448,7 +2448,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 103, "fields": { "package": 5, @@ -2456,7 +2456,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 104, "fields": { "package": 6, @@ -2464,7 +2464,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 105, "fields": { "package": 7, @@ -2472,7 +2472,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 122, "fields": { "package": 9, @@ -2480,7 +2480,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 123, "fields": { "package": 9, @@ -2488,7 +2488,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 128, "fields": { "package": 11, @@ -2496,7 +2496,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 129, "fields": { "package": 11, @@ -2504,7 +2504,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 130, "fields": { "package": 9, @@ -2512,7 +2512,7 @@ } }, { - "model": "sponsors.tieredquantityconfiguration", + "model": "sponsors.tieredbenefitconfiguration", "pk": 131, "fields": { "package": 11, diff --git a/sponsors/admin.py b/sponsors/admin.py index 0d655a194..2e7620939 100644 --- a/sponsors/admin.py +++ b/sponsors/admin.py @@ -67,8 +67,8 @@ class BenefitFeatureConfigurationInline(StackedPolymorphicInline): class LogoPlacementConfigurationInline(StackedPolymorphicInline.Child): model = LogoPlacementConfiguration - class TieredQuantityConfigurationInline(StackedPolymorphicInline.Child): - model = TieredQuantityConfiguration + class TieredBenefitConfigurationInline(StackedPolymorphicInline.Child): + model = TieredBenefitConfiguration class EmailTargetableConfigurationInline(StackedPolymorphicInline.Child): model = EmailTargetableConfiguration @@ -96,7 +96,7 @@ class ProvidedFileAssetConfigurationInline(StackedPolymorphicInline.Child): model = BenefitFeatureConfiguration child_inlines = [ LogoPlacementConfigurationInline, - TieredQuantityConfigurationInline, + TieredBenefitConfigurationInline, EmailTargetableConfigurationInline, RequiredImgAssetConfigurationInline, RequiredTextAssetConfigurationInline, diff --git a/sponsors/management/commands/fullfill_pycon_2022.py b/sponsors/management/commands/fullfill_pycon_2022.py index 6f2f59e7f..86ee26a1e 100644 --- a/sponsors/management/commands/fullfill_pycon_2022.py +++ b/sponsors/management/commands/fullfill_pycon_2022.py @@ -16,7 +16,7 @@ SponsorBenefit, BenefitFeature, ProvidedTextAsset, - TieredQuantity, + TieredBenefit, ) API_KEY = settings.PYCON_API_KEY @@ -77,7 +77,7 @@ def handle(self, **options): .all() ): try: - quantity = BenefitFeature.objects.instance_of(TieredQuantity).get( + quantity = BenefitFeature.objects.instance_of(TieredBenefit).get( sponsor_benefit=sponsorbenefit ) except BenefitFeature.DoesNotExist: diff --git a/sponsors/migrations/0087_auto_20220810_1647.py b/sponsors/migrations/0087_auto_20220810_1647.py new file mode 100644 index 000000000..41043bf4f --- /dev/null +++ b/sponsors/migrations/0087_auto_20220810_1647.py @@ -0,0 +1,26 @@ +# Generated by Django 2.2.24 on 2022-08-10 16:47 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + ('sponsors', '0086_auto_20220809_1655'), + ] + + operations = [ + migrations.RenameModel( + old_name='TieredQuantity', + new_name='TieredBenefit', + ), + migrations.RenameModel( + old_name='TieredQuantityConfiguration', + new_name='TieredBenefitConfiguration', + ), + migrations.AlterModelOptions( + name='tieredbenefit', + options={'base_manager_name': 'objects', 'verbose_name': 'Tiered Benefit', 'verbose_name_plural': 'Tiered Benefits'}, + ), + ] diff --git a/sponsors/migrations/0088_auto_20220810_1655.py b/sponsors/migrations/0088_auto_20220810_1655.py new file mode 100644 index 000000000..f0203331b --- /dev/null +++ b/sponsors/migrations/0088_auto_20220810_1655.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.24 on 2022-08-10 16:55 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0087_auto_20220810_1647'), + ] + + operations = [ + migrations.AddField( + model_name='tieredbenefit', + name='display_label', + field=models.CharField(blank=True, default='', help_text='If populated, this will be displayed instead of the quantity value.', max_length=32), + ), + migrations.AddField( + model_name='tieredbenefitconfiguration', + name='display_label', + field=models.CharField(blank=True, default='', help_text='If populated, this will be displayed instead of the quantity value.', max_length=32), + ), + ] diff --git a/sponsors/models/__init__.py b/sponsors/models/__init__.py index 51f2886dd..11f1f1df4 100644 --- a/sponsors/models/__init__.py +++ b/sponsors/models/__init__.py @@ -7,9 +7,9 @@ from .assets import GenericAsset, ImgAsset, TextAsset, FileAsset, ResponseAsset from .notifications import SponsorEmailNotificationTemplate, SPONSOR_TEMPLATE_HELP_TEXT from .sponsors import Sponsor, SponsorContact, SponsorBenefit -from .benefits import BaseLogoPlacement, BaseTieredQuantity, BaseEmailTargetable, BenefitFeatureConfiguration, \ - LogoPlacementConfiguration, TieredQuantityConfiguration, EmailTargetableConfiguration, BenefitFeature, \ - LogoPlacement, EmailTargetable, TieredQuantity, RequiredImgAsset, RequiredImgAssetConfiguration, \ +from .benefits import BaseLogoPlacement, BaseTieredBenefit, BaseEmailTargetable, BenefitFeatureConfiguration, \ + LogoPlacementConfiguration, TieredBenefitConfiguration, EmailTargetableConfiguration, BenefitFeature, \ + LogoPlacement, EmailTargetable, TieredBenefit, RequiredImgAsset, RequiredImgAssetConfiguration, \ RequiredTextAssetConfiguration, RequiredTextAsset, RequiredResponseAssetConfiguration, RequiredResponseAsset, \ ProvidedTextAssetConfiguration, ProvidedTextAsset, ProvidedFileAssetConfiguration, ProvidedFileAsset from .sponsorship import Sponsorship, SponsorshipProgram, SponsorshipBenefit, Sponsorship, SponsorshipPackage, \ diff --git a/sponsors/models/benefits.py b/sponsors/models/benefits.py index d0223c2b6..51ec1870e 100644 --- a/sponsors/models/benefits.py +++ b/sponsors/models/benefits.py @@ -47,9 +47,15 @@ class Meta: abstract = True -class BaseTieredQuantity(models.Model): +class BaseTieredBenefit(models.Model): package = models.ForeignKey("sponsors.SponsorshipPackage", on_delete=models.CASCADE) quantity = models.PositiveIntegerField() + display_label = models.CharField( + blank=True, + default="", + help_text="If populated, this will be displayed instead of the quantity value.", + max_length=32, + ) class Meta: abstract = True @@ -394,18 +400,18 @@ def __str__(self): return f"Logo Configuration for {self.get_publisher_display()} at {self.get_logo_place_display()}" -class TieredQuantityConfiguration(BaseTieredQuantity, BenefitFeatureConfiguration): +class TieredBenefitConfiguration(BaseTieredBenefit, BenefitFeatureConfiguration): """ Configuration for tiered quantities among packages """ - class Meta(BaseTieredQuantity.Meta, BenefitFeatureConfiguration.Meta): + class Meta(BaseTieredBenefit.Meta, BenefitFeatureConfiguration.Meta): verbose_name = "Tiered Benefit Configuration" verbose_name_plural = "Tiered Benefit Configurations" @property def benefit_feature_class(self): - return TieredQuantity + return TieredBenefit def get_benefit_feature_kwargs(self, **kwargs): if kwargs["sponsor_benefit"].sponsorship.package == self.package: @@ -413,12 +419,12 @@ def get_benefit_feature_kwargs(self, **kwargs): return None def __str__(self): - return f"Tiered Quantity Configuration for {self.benefit} and {self.package} ({self.quantity})" + return f"Tiered Benefit Configuration for {self.benefit} and {self.package} ({self.quantity})" def display_modifier(self, name, **kwargs): if kwargs.get("package") != self.package: return name - return f"{name} ({self.quantity})" + return f"{name} ({self.display_label or self.quantity})" def get_clone_kwargs(self, new_benefit): kwargs = super().get_clone_kwargs(new_benefit) @@ -431,7 +437,7 @@ class EmailTargetableConfiguration(BaseEmailTargetable, BenefitFeatureConfigurat Configuration for email targeatable benefits """ - class Meta(BaseTieredQuantity.Meta, BenefitFeatureConfiguration.Meta): + class Meta(BaseTieredBenefit.Meta, BenefitFeatureConfiguration.Meta): verbose_name = "Email Targetable Configuration" verbose_name_plural = "Email Targetable Configurations" @@ -554,17 +560,17 @@ def __str__(self): return f"Logo for {self.get_publisher_display()} at {self.get_logo_place_display()}" -class TieredQuantity(BaseTieredQuantity, BenefitFeature): +class TieredBenefit(BaseTieredBenefit, BenefitFeature): """ - Tiered Quantity feature for sponsor benefits + Tiered Benefit feature for sponsor benefits """ - class Meta(BaseTieredQuantity.Meta, BenefitFeature.Meta): - verbose_name = "Tiered Quantity" - verbose_name_plural = "Tiered Quantities" + class Meta(BaseTieredBenefit.Meta, BenefitFeature.Meta): + verbose_name = "Tiered Benefit" + verbose_name_plural = "Tiered Benefits" def display_modifier(self, name, **kwargs): - return f"{name} ({self.quantity})" + return f"{name} ({self.display_label or self.quantity})" def __str__(self): return f"{self.quantity} of {self.sponsor_benefit} for {self.package}" @@ -575,7 +581,7 @@ class EmailTargetable(BaseEmailTargetable, BenefitFeature): For email targeatable benefits """ - class Meta(BaseTieredQuantity.Meta, BenefitFeature.Meta): + class Meta(BaseTieredBenefit.Meta, BenefitFeature.Meta): verbose_name = "Email Targetable Benefit" verbose_name_plural = "Email Targetable Benefits" diff --git a/sponsors/models/sponsorship.py b/sponsors/models/sponsorship.py index 4ba5ccd9f..59048bf53 100644 --- a/sponsors/models/sponsorship.py +++ b/sponsors/models/sponsorship.py @@ -24,7 +24,7 @@ from sponsors.models.assets import GenericAsset from sponsors.models.managers import SponsorshipPackageQuerySet, SponsorshipBenefitQuerySet, \ SponsorshipQuerySet, SponsorshipCurrentYearQuerySet -from sponsors.models.benefits import TieredQuantityConfiguration +from sponsors.models.benefits import TieredBenefitConfiguration from sponsors.models.sponsors import SponsorBenefit YEAR_VALIDATORS = [ @@ -514,7 +514,7 @@ def name_for_display(self, package=None): @cached_property def has_tiers(self): - return self.features_config.instance_of(TieredQuantityConfiguration).count() > 0 + return self.features_config.instance_of(TieredBenefitConfiguration).count() > 0 @transaction.atomic def clone(self, year: int): diff --git a/sponsors/templatetags/sponsors.py b/sponsors/templatetags/sponsors.py index bb5a19481..3c412b8ff 100644 --- a/sponsors/templatetags/sponsors.py +++ b/sponsors/templatetags/sponsors.py @@ -5,7 +5,7 @@ from django.conf import settings from django.core.cache import cache -from ..models import Sponsorship, SponsorshipPackage, TieredQuantityConfiguration +from ..models import Sponsorship, SponsorshipPackage, TieredBenefitConfiguration from sponsors.models.enums import PublisherChoices, LogoPlacementChoices @@ -60,12 +60,12 @@ def list_sponsors(logo_place, publisher=PublisherChoices.FOUNDATION.value): @register.simple_tag def benefit_quantity_for_package(benefit, package): - quantity_configuration = TieredQuantityConfiguration.objects.filter( + quantity_configuration = TieredBenefitConfiguration.objects.filter( benefit=benefit, package=package ).first() if quantity_configuration is None: return "" - return quantity_configuration.quantity + return quantity_configuration.display_label or quantity_configuration.quantity @register.simple_tag diff --git a/sponsors/tests/test_managers.py b/sponsors/tests/test_managers.py index 432389663..5bcb67b87 100644 --- a/sponsors/tests/test_managers.py +++ b/sponsors/tests/test_managers.py @@ -4,7 +4,7 @@ from django.conf import settings from django.test import TestCase -from ..models import Sponsorship, SponsorBenefit, LogoPlacement, TieredQuantity, RequiredTextAsset, RequiredImgAsset, \ +from ..models import Sponsorship, SponsorBenefit, LogoPlacement, TieredBenefit, RequiredTextAsset, RequiredImgAsset, \ BenefitFeature, SponsorshipPackage, SponsorshipBenefit, SponsorshipCurrentYear from sponsors.models.enums import LogoPlacementChoices, PublisherChoices @@ -109,7 +109,7 @@ def test_filter_sponsorship_by_benefit_feature_type(self): sponsorship_feature_1 = baker.make_recipe('sponsors.tests.finalized_sponsorship') sponsorship_feature_2 = baker.make_recipe('sponsors.tests.finalized_sponsorship') baker.make(LogoPlacement, sponsor_benefit__sponsorship=sponsorship_feature_1) - baker.make(TieredQuantity, sponsor_benefit__sponsorship=sponsorship_feature_2) + baker.make(TieredBenefit, sponsor_benefit__sponsorship=sponsorship_feature_2) with self.assertNumQueries(1): qs = list(Sponsorship.objects.includes_benefit_feature(LogoPlacement)) @@ -124,7 +124,7 @@ def setUp(self): self.benefit = baker.make(SponsorBenefit, sponsorship=self.sponsorship) def test_filter_benefits_from_sponsorship(self): - feature_1 = baker.make(TieredQuantity, sponsor_benefit=self.benefit) + feature_1 = baker.make(TieredBenefit, sponsor_benefit=self.benefit) feature_2 = baker.make(LogoPlacement, sponsor_benefit=self.benefit) baker.make(LogoPlacement) # benefit from other sponsor benefit @@ -135,7 +135,7 @@ def test_filter_benefits_from_sponsorship(self): self.assertIn(feature_2, qs) def test_filter_only_for_required_assets(self): - baker.make(TieredQuantity) + baker.make(TieredBenefit) text_asset = baker.make(RequiredTextAsset) img_asset = baker.make(RequiredImgAsset) diff --git a/sponsors/tests/test_models.py b/sponsors/tests/test_models.py index 0dad14bef..ac55ce7bc 100644 --- a/sponsors/tests/test_models.py +++ b/sponsors/tests/test_models.py @@ -21,8 +21,8 @@ Sponsorship, SponsorshipBenefit, SponsorshipPackage, - TieredQuantity, - TieredQuantityConfiguration, RequiredImgAssetConfiguration, RequiredImgAsset, ImgAsset, + TieredBenefit, + TieredBenefitConfiguration, RequiredImgAssetConfiguration, RequiredImgAsset, ImgAsset, RequiredTextAssetConfiguration, RequiredTextAsset, TextAsset, SponsorshipCurrentYear ) from ..exceptions import ( @@ -74,7 +74,7 @@ def test_list_related_sponsorships(self): def test_name_for_display_without_specifying_package(self): benefit = baker.make(SponsorshipBenefit, name='Benefit') benefit_config = baker.make( - TieredQuantityConfiguration, + TieredBenefitConfiguration, package__name='Package', benefit=benefit, quantity=10 @@ -674,17 +674,17 @@ def test_new_copy_also_add_benefit_feature_when_creating_sponsor_benefit(self): def test_new_copy_do_not_save_unexisting_features(self): benefit_config = baker.make( - TieredQuantityConfiguration, + TieredBenefitConfiguration, package__name='Another package', benefit=self.sponsorship_benefit, ) - self.assertEqual(0, TieredQuantity.objects.count()) + self.assertEqual(0, TieredBenefit.objects.count()) sponsor_benefit = SponsorBenefit.new_copy( self.sponsorship_benefit, sponsorship=self.sponsorship ) - self.assertEqual(0, TieredQuantity.objects.count()) + self.assertEqual(0, TieredBenefit.objects.count()) self.assertFalse(sponsor_benefit.features.exists()) def test_sponsor_benefit_name_for_display(self): @@ -694,7 +694,7 @@ def test_sponsor_benefit_name_for_display(self): self.assertEqual(sponsor_benefit.name_for_display, name) # apply display modifier from features benefit_config = baker.make( - TieredQuantity, + TieredBenefit, sponsor_benefit=sponsor_benefit, quantity=10 ) @@ -972,13 +972,14 @@ def test_clone_configuration_for_new_sponsorship_benefit(self): self.assertEqual(new_cfg.pk, repeated.pk) -class TieredQuantityConfigurationModelTests(TestCase): +class TieredBenefitConfigurationModelTests(TestCase): def setUp(self): self.package = baker.make(SponsorshipPackage, year=2022) self.config = baker.make( - TieredQuantityConfiguration, + TieredBenefitConfiguration, package=self.package, + display_label="Foo", quantity=10, ) @@ -987,9 +988,10 @@ def test_get_benefit_feature_respecting_configuration(self): benefit_feature = self.config.get_benefit_feature(sponsor_benefit=sponsor_benefit) - self.assertIsInstance(benefit_feature, TieredQuantity) + self.assertIsInstance(benefit_feature, TieredBenefit) self.assertEqual(benefit_feature.package, self.package) self.assertEqual(benefit_feature.quantity, self.config.quantity) + self.assertEqual(benefit_feature.display_label, "Foo") def test_do_not_return_feature_if_benefit_from_other_package(self): sponsor_benefit = baker.make(SponsorBenefit, sponsorship__package__name='Other') @@ -1002,7 +1004,14 @@ def test_display_modifier_only_modifies_name_if_same_package(self): name = "Benefit" other_package = baker.make(SponsorshipPackage) + # modifies for the same package as the config + label prioritized + self.config.save(update_fields=["display_label"]) + modified_name = self.config.display_modifier(name, package=self.package) + self.assertEqual(modified_name, f"{name} (Foo)") + # modifies for the same package as the config + self.config.display_label = "" + self.config.save(update_fields=["display_label"]) modified_name = self.config.display_modifier(name, package=self.package) self.assertEqual(modified_name, f"{name} (10)") @@ -1016,8 +1025,9 @@ def test_clone_tiered_quantity_configuration(self): new_cfg, created = self.config.clone(benefit) self.assertTrue(created) - self.assertEqual(2, TieredQuantityConfiguration.objects.count()) + self.assertEqual(2, TieredBenefitConfiguration.objects.count()) self.assertEqual(self.config.quantity, new_cfg.quantity) + self.assertEqual("Foo", new_cfg.display_label) self.assertNotEqual(self.package, new_cfg.package) self.assertEqual(self.package.slug, new_cfg.package.slug) self.assertEqual(2023, new_cfg.package.year) @@ -1036,13 +1046,18 @@ def test_display_modifier_does_not_change_the_name(self): self.assertEqual(placement.display_modifier(name), name) -class TieredQuantityTests(TestCase): +class TieredBenefitTests(TestCase): def test_display_modifier_adds_quantity_to_the_name(self): - placement = baker.make(TieredQuantity, quantity=10) + placement = baker.make(TieredBenefit, quantity=10) name = 'Benefit' self.assertEqual(placement.display_modifier(name), 'Benefit (10)') + def test_display_modifier_adds_display_label_to_the_name(self): + placement = baker.make(TieredBenefit, quantity=10, display_label="Foo") + name = 'Benefit' + self.assertEqual(placement.display_modifier(name), 'Benefit (Foo)') + class RequiredImgAssetConfigurationTests(TestCase): diff --git a/sponsors/tests/test_templatetags.py b/sponsors/tests/test_templatetags.py index 927cbdeee..f891a6479 100644 --- a/sponsors/tests/test_templatetags.py +++ b/sponsors/tests/test_templatetags.py @@ -8,7 +8,7 @@ Sponsor, SponsorBenefit, SponsorshipBenefit, - TieredQuantityConfiguration, + TieredBenefitConfiguration, ) from ..templatetags.sponsors import ( benefit_name_for_display, @@ -69,14 +69,20 @@ def setUp(self): self.benefit = baker.make(SponsorshipBenefit) self.package = baker.make("sponsors.SponsorshipPackage") self.config = baker.make( - TieredQuantityConfiguration, + TieredBenefitConfiguration, benefit=self.benefit, package=self.package, ) def test_return_config_quantity(self): - quantity = benefit_quantity_for_package(self.benefit.pk, self.package.pk) - self.assertEqual(quantity, self.config.quantity) + display = benefit_quantity_for_package(self.benefit.pk, self.package.pk) + self.assertEqual(display, self.config.quantity) + + def test_return_config_label_if_configured(self): + self.config.display_label = "Custom label" + self.config.save(update_fields=["display_label"]) + display = benefit_quantity_for_package(self.benefit.pk, self.package.pk) + self.assertEqual(display, self.config.display_label) def test_return_empty_string_if_mismatching_benefit_or_package(self): other_benefit = baker.make(SponsorshipBenefit) From a13dd81e52434921ae6825d2ca18c0e65838de91 Mon Sep 17 00:00:00 2001 From: berin Date: Fri, 12 Aug 2022 16:10:36 +0200 Subject: [PATCH 011/256] Rename add-ons and a-la-carte benefits (#2118) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add missing migration after changing ordring of packages The ordering in Meta was change by 0197bd584c56621c251f9d20352396e029c0af30 * correct migrations * Rename À La Carte references to Standalone * Rename add-ons to a la carte benefits Co-authored-by: Ee Durbin --- fixtures/boxes.json | 4 +- fixtures/sponsors.json | 98 +++++++++---------- sponsors/admin.py | 4 +- sponsors/forms.py | 46 ++++----- .../migrations/0089_auto_20220812_1312.py | 23 +++++ .../migrations/0090_auto_20220812_1314.py | 23 +++++ sponsors/models/managers.py | 10 +- sponsors/models/sponsors.py | 12 +-- sponsors/models/sponsorship.py | 8 +- sponsors/tests/test_forms.py | 74 +++++++------- sponsors/tests/test_managers.py | 14 +-- sponsors/tests/test_models.py | 12 +-- sponsors/tests/test_views.py | 44 ++++----- sponsors/views.py | 4 +- static/js/sponsors/applicationForm.js | 2 +- static/sass/style.css | 2 +- static/sass/style.scss | 2 +- .../sponsors/sponsorship_benefits_form.html | 36 +++---- 18 files changed, 232 insertions(+), 186 deletions(-) create mode 100644 sponsors/migrations/0089_auto_20220812_1312.py create mode 100644 sponsors/migrations/0090_auto_20220812_1314.py diff --git a/fixtures/boxes.json b/fixtures/boxes.json index 267bd95a1..d8f0bd0e7 100644 --- a/fixtures/boxes.json +++ b/fixtures/boxes.json @@ -714,9 +714,9 @@ "created": "2020-11-16T19:26:40.396Z", "updated": "2022-01-07T18:18:25.425Z", "label": "sponsorship-application", - "content": "

    Sponsor the PSF

    \r\n\r\n

    Thank you for sponsoring the PSF! Please see below our menu of sponsorship options, and select a sponsorship package or customize the benefits that make the most sense for your organization.

    \r\n\r\n

    How to use this page:

    \r\n\r\n
      \r\n
    1. \r\n Select a Sponsorship Package
      \r\n Select your sponsorship level using the radio buttons below. You may customize your package by unchecking highlights items or checking available items outside your sponsorship package.\r\n
    2. \r\n
    3. \r\n Add-ons
      \r\n Select any add-on benefits.\r\n
    4. \r\n
    5. \r\n Submit your application
      \r\n Submit using the button at the bottom of this page, and your selections will be displayed. Sign in or create a python.org account to submit your application.\r\n
    6. \r\n
    7. \r\n Finalize
      \r\n PSF staff will reach out to you to confirm and finalize.\r\n
    8. \r\n
    \r\n\r\n

    If you would like us to walk you through the new program, email sponsors@python.org

    \r\n\r\n

    Thank you for making a difference in the Python ecosystem!Sponsor the PSF\r\n\r\n

    Thank you for sponsoring the PSF! Please see below our menu of sponsorship options, and select a sponsorship package or customize the benefits that make the most sense for your organization.

    \r\n\r\n

    How to use this page:

    \r\n\r\n
      \r\n
    1. \r\n Select a Sponsorship Package
      \r\n Select your sponsorship level using the radio buttons below. You may customize your package by unchecking highlights items or checking available items outside your sponsorship package.\r\n
    2. \r\n
    3. \r\n A La Carte
      \r\n Select any a la carte benefits.\r\n
    4. \r\n
    5. \r\n Submit your application
      \r\n Submit using the button at the bottom of this page, and your selections will be displayed. Sign in or create a python.org account to submit your application.\r\n
    6. \r\n
    7. \r\n Finalize
      \r\n PSF staff will reach out to you to confirm and finalize.\r\n
    8. \r\n
    \r\n\r\n

    If you would like us to walk you through the new program, email sponsors@python.org

    \r\n\r\n

    Thank you for making a difference in the Python ecosystem!Sponsor the PSF\r\n\r\n

    Thank you for sponsoring the PSF! Please see below our menu of sponsorship options, and select a sponsorship package or customize the benefits that make the most sense for your organization.

    \r\n\r\n

    How to use this page:

    \r\n\r\n
      \r\n
    1. \r\n Select a Sponsorship Package
      \r\n Select your sponsorship level using the radio buttons below. You may customize your package by unchecking highlights items or checking available items outside your sponsorship package.\r\n
    2. \r\n
    3. \r\n Add-ons
      \r\n Select any add-on benefits.\r\n
    4. \r\n
    5. \r\n Submit your application
      \r\n Submit using the button at the bottom of this page, and your selections will be displayed. Sign in or create a python.org account to submit your application.\r\n
    6. \r\n
    7. \r\n Finalize
      \r\n PSF staff will reach out to you to confirm and finalize.\r\n
    8. \r\n
    \r\n\r\n

    If you would like us to walk you through the new program, email sponsors@python.org

    \r\n\r\n

    Thank you for making a difference in the Python ecosystem!Sponsor the PSF\r\n\r\n

    Thank you for sponsoring the PSF! Please see below our menu of sponsorship options, and select a sponsorship package or customize the benefits that make the most sense for your organization.

    \r\n\r\n

    How to use this page:

    \r\n\r\n
      \r\n
    1. \r\n Select a Sponsorship Package
      \r\n Select your sponsorship level using the radio buttons below. You may customize your package by unchecking highlights items or checking available items outside your sponsorship package.\r\n
    2. \r\n
    3. \r\n A La Carte
      \r\n Select any a la carte benefits.\r\n
    4. \r\n
    5. \r\n Submit your application
      \r\n Submit using the button at the bottom of this page, and your selections will be displayed. Sign in or create a python.org account to submit your application.\r\n
    6. \r\n
    7. \r\n Finalize
      \r\n PSF staff will reach out to you to confirm and finalize.\r\n
    8. \r\n
    \r\n\r\n

    If you would like us to walk you through the new program, email sponsors@python.org

    \r\n\r\n

    Thank you for making a difference in the Python ecosystem!{{ benefit.name }} data-initial-state="{% static 'img/sponsors/tick-placeholder.png' %}" />
    - Potential add-on + Potential a la carte {% endif %} {% if benefit.has_tiers %}

    {% benefit_quantity_for_package benefit package %}
    @@ -139,21 +139,21 @@

    {{ benefit.name }}

    {% endfor %} - {% if form.fields.add_ons_benefits.queryset.exists %} + {% if form.fields.a_la_carte_benefits.queryset.exists %}
    -

    Select add-on benefits

    +

    Select a la carte benefits

    Available at any level of sponsorship
    -
    +
    - {% for benefit in form.fields.add_ons_benefits.queryset %} + {% for benefit in form.fields.a_la_carte_benefits.queryset %}
    - -
    + +
    {{ benefit.program }} - {{ benefit.name }} {{ benefit.description }} @@ -168,25 +168,25 @@

    Select add-on benefits

    {% endif %} - {% if form.fields.a_la_carte_benefits.queryset.exists %} + {% if form.fields.standalone_benefits.queryset.exists %}
    - {% if not form.fields.add_ons_benefits.queryset.exists %} + {% if not form.fields.a_la_carte_benefits.queryset.exists %} {% else %} {% endif %}
    -

    Select a la carte benefits

    +

    Select standalone benefits

    Available to be selected without package
    -
    +
    - {% for benefit in form.fields.a_la_carte_benefits.queryset %} + {% for benefit in form.fields.standalone_benefits.queryset %}
    - -
    + +
    {{ benefit.program }} - {{ benefit.name }} {{ benefit.description }} @@ -202,9 +202,9 @@

    Select a la carte benefits

    {% endif %}
    - {% if form.fields.add_ons_benefits.queryset.exists and form.fields.a_la_carte_benefits.queryset.exists %} + {% if form.fields.a_la_carte_benefits.queryset.exists and form.fields.standalone_benefits.queryset.exists %} - {% elif form.fields.add_ons_benefits.queryset.exists or form.fields.a_la_carte_benefits.queryset.exists %} + {% elif form.fields.a_la_carte_benefits.queryset.exists or form.fields.standalone_benefits.queryset.exists %} {% else %} @@ -224,9 +224,9 @@

    Submit your contact information

    - {% if form.fields.add_ons_benefits.queryset.exists and form.fields.a_la_carte_benefits.queryset.exists %} + {% if form.fields.a_la_carte_benefits.queryset.exists and form.fields.standalone_benefits.queryset.exists %} - {% elif form.fields.add_ons_benefits.queryset.exists or form.fields.a_la_carte_benefits.queryset.exists %} + {% elif form.fields.a_la_carte_benefits.queryset.exists or form.fields.standalone_benefits.queryset.exists %} {% else %} From 9f967f2754217b1aa5f879e6ea3b769ce97daea6 Mon Sep 17 00:00:00 2001 From: Dustin Ingram Date: Mon, 15 Aug 2022 15:04:04 -0400 Subject: [PATCH 012/256] Add support for Sigstore verification materials (#2113) * Add Sigstore verification materials * Use Django template syntax * Add link to verification documentation * Load custom filter --- downloads/api.py | 3 ++- .../migrations/0007_auto_20220809_1655.py | 23 +++++++++++++++++++ downloads/models.py | 6 +++++ downloads/serializers.py | 2 ++ downloads/templatetags/download_tags.py | 5 ++++ templates/downloads/release_detail.html | 8 +++++++ 6 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 downloads/migrations/0007_auto_20220809_1655.py diff --git a/downloads/api.py b/downloads/api.py index 9cfd87fcb..bb49e588e 100644 --- a/downloads/api.py +++ b/downloads/api.py @@ -68,7 +68,8 @@ class Meta(GenericResource.Meta): 'name', 'slug', 'creator', 'last_modified_by', 'os', 'release', 'description', 'is_source', 'url', 'gpg_signature_file', - 'md5_sum', 'filesize', 'download_button', + 'md5_sum', 'filesize', 'download_button', 'sigstore_signature_file', + 'sigstore_cert_file', ] filtering = { 'name': ('exact',), diff --git a/downloads/migrations/0007_auto_20220809_1655.py b/downloads/migrations/0007_auto_20220809_1655.py new file mode 100644 index 000000000..615ad67a1 --- /dev/null +++ b/downloads/migrations/0007_auto_20220809_1655.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.24 on 2022-08-09 16:55 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('downloads', '0006_auto_20180705_0352'), + ] + + operations = [ + migrations.AddField( + model_name='releasefile', + name='sigstore_cert_file', + field=models.URLField(blank=True, help_text='Sigstore Cert URL', verbose_name='Sigstore Cert URL'), + ), + migrations.AddField( + model_name='releasefile', + name='sigstore_signature_file', + field=models.URLField(blank=True, help_text='Sigstore Signature URL', verbose_name='Sigstore Signature URL'), + ), + ] diff --git a/downloads/models.py b/downloads/models.py index 9d27d11dc..a4becf7ab 100644 --- a/downloads/models.py +++ b/downloads/models.py @@ -322,6 +322,12 @@ class ReleaseFile(ContentManageable, NameSlugModel): blank=True, help_text="GPG Signature URL" ) + sigstore_signature_file = models.URLField( + "Sigstore Signature URL", blank=True, help_text="Sigstore Signature URL" + ) + sigstore_cert_file = models.URLField( + "Sigstore Cert URL", blank=True, help_text="Sigstore Cert URL" + ) md5_sum = models.CharField('MD5 Sum', max_length=200, blank=True) filesize = models.IntegerField(default=0) download_button = models.BooleanField(default=False, help_text="Use for the supernav download button for this OS") diff --git a/downloads/serializers.py b/downloads/serializers.py index ed61d0594..f30974e02 100644 --- a/downloads/serializers.py +++ b/downloads/serializers.py @@ -46,4 +46,6 @@ class Meta: 'filesize', 'download_button', 'resource_uri', + 'sigstore_signature_file', + 'sigstore_cert_file', ) diff --git a/downloads/templatetags/download_tags.py b/downloads/templatetags/download_tags.py index 88b30941e..a6df103e9 100644 --- a/downloads/templatetags/download_tags.py +++ b/downloads/templatetags/download_tags.py @@ -6,3 +6,8 @@ @register.filter def strip_minor_version(version): return '.'.join(version.split('.')[:2]) + + +@register.filter +def has_sigstore_materials(files): + return any(f.sigstore_cert_file or f.sigstore_signature_file for f in files) diff --git a/templates/downloads/release_detail.html b/templates/downloads/release_detail.html index 9d1a4dc3a..386bd795d 100644 --- a/templates/downloads/release_detail.html +++ b/templates/downloads/release_detail.html @@ -1,6 +1,7 @@ {% extends "base.html" %} {% load boxes %} {% load sitetree %} +{% load has_sigstore_materials from download_tags %} {% block body_attributes %}class="python downloads"{% endblock %} @@ -49,6 +50,9 @@

    Files

    MD5 Sum File Size GPG + {% if release_files|has_sigstore_materials %} + Sigstore + {% endif %} @@ -60,6 +64,10 @@

    Files

    {{ f.md5_sum }} {{ f.filesize }} {% if f.gpg_signature_file %}SIG{% endif %} + {% if release_files|has_sigstore_materials %} + {% if f.sigstore_cert_file %}CRT{% endif %} + {% if f.sigstore_signature_file %}SIG{% endif %} + {% endif %} {% endfor %} From ae08791e2ee88f8aaea1844aea5215b9f2771390 Mon Sep 17 00:00:00 2001 From: berin Date: Tue, 16 Aug 2022 11:57:13 +0200 Subject: [PATCH 013/256] Update benefits validation rules (#2120) * Add flag to control if package allows a la carte benefits * Applications for standalone benefits cannot have packages * Don't validate a la carte application with a disabled a la carte package * Don't display Potential a la carte option if package disabled it * Disable standalone inputs if package was selected * Fix breaking tests which have standalone benefits with packages and a la carte ones * Disable a la carte benefits if package disables it * Force a la carte and standalone cards positions to the start of the div * Disable a la carte benefits when form is empty * Add title to inputs to provide more information about the disabled inputs * ensure state for sold-out a la carte benefits is rendered in UI * un-select any a la carte when selecting a package that doesn't allow them * add notes to a la carte and standalone instructions to clarify why options are enabled/disabled * Initial load of benefits state on the page load. * Display clear form button at the bottom of the form * Add JS code to clear form and reset application form to its initial state Co-authored-by: Ee Durbin --- sponsors/admin.py | 4 +- sponsors/forms.py | 9 ++ ...091_sponsorshippackage_allow_a_la_carte.py | 18 ++++ sponsors/models/sponsorship.py | 4 + sponsors/tests/test_forms.py | 47 ++++++++++- sponsors/tests/test_views.py | 8 +- static/js/sponsors/applicationForm.js | 82 ++++++++++++++++++- .../sponsors/sponsorship_benefits_form.html | 39 ++++++--- 8 files changed, 188 insertions(+), 23 deletions(-) create mode 100644 sponsors/migrations/0091_sponsorshippackage_allow_a_la_carte.py diff --git a/sponsors/admin.py b/sponsors/admin.py index b0049c8f6..6b4c0c708 100644 --- a/sponsors/admin.py +++ b/sponsors/admin.py @@ -173,8 +173,8 @@ def update_related_sponsorships(self, *args, **kwargs): @admin.register(SponsorshipPackage) class SponsorshipPackageAdmin(OrderedModelAdmin): ordering = ("-year", "order",) - list_display = ["name", "year", "advertise", "move_up_down_links"] - list_filter = ["advertise", "year"] + list_display = ["name", "year", "advertise", "allow_a_la_carte", "move_up_down_links"] + list_filter = ["advertise", "year", "allow_a_la_carte"] search_fields = ["name"] def get_readonly_fields(self, request, obj=None): diff --git a/sponsors/forms.py b/sponsors/forms.py index da4c40dbd..01d3de4f2 100644 --- a/sponsors/forms.py +++ b/sponsors/forms.py @@ -141,6 +141,7 @@ def _clean_benefits(self, cleaned_data): """ package = cleaned_data.get("package") benefits = self.get_benefits(cleaned_data, include_a_la_carte=True) + a_la_carte = cleaned_data.get("a_la_carte_benefits") standalone = cleaned_data.get("standalone_benefits") if not benefits and not standalone: @@ -151,6 +152,14 @@ def _clean_benefits(self, cleaned_data): raise forms.ValidationError( _("You must pick a package to include the selected benefits.") ) + elif standalone and package: + raise forms.ValidationError( + _("Application with package cannot have standalone benefits.") + ) + elif package and a_la_carte and not package.allow_a_la_carte: + raise forms.ValidationError( + _("Package does not accept a la carte benefits.") + ) benefits_ids = [b.id for b in benefits] for benefit in benefits: diff --git a/sponsors/migrations/0091_sponsorshippackage_allow_a_la_carte.py b/sponsors/migrations/0091_sponsorshippackage_allow_a_la_carte.py new file mode 100644 index 000000000..a4023d1cd --- /dev/null +++ b/sponsors/migrations/0091_sponsorshippackage_allow_a_la_carte.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.24 on 2022-08-13 10:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0090_auto_20220812_1314'), + ] + + operations = [ + migrations.AddField( + model_name='sponsorshippackage', + name='allow_a_la_carte', + field=models.BooleanField(default=True, help_text='If disabled, a la carte benefits will be disabled in application form'), + ), + ] diff --git a/sponsors/models/sponsorship.py b/sponsors/models/sponsorship.py index 10b41a6ef..23a638d75 100644 --- a/sponsors/models/sponsorship.py +++ b/sponsors/models/sponsorship.py @@ -50,6 +50,10 @@ class SponsorshipPackage(OrderedModel): "to reference this package.") year = models.PositiveIntegerField(null=True, validators=YEAR_VALIDATORS, db_index=True) + allow_a_la_carte = models.BooleanField( + default=True, help_text="If disabled, a la carte benefits will be disabled in application form" + ) + def __str__(self): return f'{self.name} ({self.year})' diff --git a/sponsors/tests/test_forms.py b/sponsors/tests/test_forms.py index f1a667761..058e21625 100644 --- a/sponsors/tests/test_forms.py +++ b/sponsors/tests/test_forms.py @@ -145,15 +145,56 @@ def test_validate_form_without_package_but_with_standalone_benefits(self): self.assertEqual([], form.get_benefits()) self.assertEqual([benefit], form.get_benefits(include_standalone=True)) - def test_should_not_validate_form_without_package_with_a_la_carte_and_standalone_benefits(self): + def test_do_not_validate_form_with_package_and_standalone_benefits(self): + benefit = self.standalone[0] + data = { + "standalone_benefits": [benefit.id], + "package": self.package.id, + "benefits_psf": [self.program_1_benefits[0].id], + } + form = SponsorshipsBenefitsForm(data=data) + self.assertFalse(form.is_valid()) + self.assertIn( + "Application with package cannot have standalone benefits.", + form.errors["__all__"] + ) + + def test_should_not_validate_form_without_package_with_a_la_carte_benefits(self): data = { - "standalone_benefits": [self.standalone[0]], - "a_la_carte_benefits": [self.a_la_carte[0]], + "a_la_carte_benefits": [self.a_la_carte[0].id], } form = SponsorshipsBenefitsForm(data=data) self.assertFalse(form.is_valid()) + self.assertIn( + "You must pick a package to include the selected benefits.", + form.errors["__all__"] + ) + + data.update({ + "package": self.package.id, + }) + form = SponsorshipsBenefitsForm(data=data) + self.assertTrue(form.is_valid()) + + def test_do_not_validate_package_package_with_disabled_a_la_carte_benefits(self): + self.package.allow_a_la_carte = False + self.package.save() + data = { + "package": self.package.id, + "benefits_psf": [self.program_1_benefits[0].id], + "a_la_carte_benefits": [self.a_la_carte[0].id], + } + form = SponsorshipsBenefitsForm(data=data) + self.assertFalse(form.is_valid()) + self.assertIn( + "Package does not accept a la carte benefits.", + form.errors["__all__"] + ) + data.pop("a_la_carte_benefits") + form = SponsorshipsBenefitsForm(data=data) + self.assertTrue(form.is_valid(), form.errors) def test_benefits_conflicts_helper_property(self): benefit_1, benefit_2 = baker.make("sponsors.SponsorshipBenefit", _quantity=2) diff --git a/sponsors/tests/test_views.py b/sponsors/tests/test_views.py index 5f97bc416..130eb443d 100644 --- a/sponsors/tests/test_views.py +++ b/sponsors/tests/test_views.py @@ -57,7 +57,7 @@ def setUp(self): "benefits_psf": [b.id for b in self.program_1_benefits], "benefits_working_group": [b.id for b in self.program_2_benefits], "a_la_carte_benefits": [b.id for b in self.a_la_carte_benefits], - "standalone_benefits": [b.id for b in self.standalone_benefits], + "standalone_benefits": [], "package": self.package.id, } @@ -150,6 +150,7 @@ def test_valid_only_with_standalone(self): self.data["benefits_working_group"] = [] self.data["a_la_carte_benefits"] = [] self.data["package"] = "" + self.data["standalone_benefits"] = [b.id for b in self.standalone_benefits] response = self.client.post(self.url, data=self.data) @@ -218,7 +219,6 @@ def setUp(self): "package": self.package.id, "benefits_psf": [b.id for b in self.program_1_benefits], "a_la_carte_benefits": [self.a_la_carte.id], - "standalone_benefits": [self.standalone.id], } ) self.data = { @@ -349,8 +349,8 @@ def test_create_new_sponsorship(self): ) sponsorship = Sponsorship.objects.get(sponsor__name="CompanyX") self.assertTrue(sponsorship.benefits.exists()) - # 3 benefits + 1 a-la-carte + 1 standalone - self.assertEqual(5, sponsorship.benefits.count()) + # 3 benefits + 1 a-la-carte + 0 standalone + self.assertEqual(4, sponsorship.benefits.count()) self.assertTrue(sponsorship.level_name) self.assertTrue(sponsorship.submited_by, self.user) self.assertEqual( diff --git a/static/js/sponsors/applicationForm.js b/static/js/sponsors/applicationForm.js index ad504312c..bed84dd9b 100644 --- a/static/js/sponsors/applicationForm.js +++ b/static/js/sponsors/applicationForm.js @@ -9,11 +9,41 @@ $(document).ready(function(){ getBenefitInput: function(benefitId) { return SELECTORS.benefitsInputs().filter('[value=' + benefitId + ']'); }, getSelectedBenefits: function() { return SELECTORS.benefitsInputs().filter(":checked"); }, tickImages: function() { return $(`.benefit-within-package img`) }, - sectionToggleBtns: function() { return $(".toggle_btn")} + sectionToggleBtns: function() { return $(".toggle_btn")}, + aLaCarteInputs: function() { return $("input[name=a_la_carte_benefits]"); }, + standaloneInputs: function() { return $("input[name=standalone_benefits]"); }, + aLaCarteMessage: function() { return $("#a-la-cart-benefits-disallowed"); }, + standaloneMessage: function() { return $("#standalone-benefits-disallowed"); }, + clearFormButton: function() { return $("#clear_form_btn"); }, + applicationForm: function() { return $("#application_form"); }, } - const initialPackage = $("input[name=package]:checked").val(); - if (initialPackage && initialPackage.length > 0) mobileUpdate(initialPackage); + const pkgInputs = $("input[name=package]:checked"); + if (pkgInputs.length > 0 && pkgInputs.val()) { + + // Disable A La Carte inputs based on initial package value + if (pkgInputs.attr("allow_a_la_carte") !== "true"){ + let msg = "Cannot add a la carte benefit with the selected package."; + SELECTORS.aLaCarteInputs().attr("title", msg); + SELECTORS.aLaCarteMessage().removeClass("hidden"); + SELECTORS.aLaCarteInputs().prop("checked", false); + SELECTORS.aLaCarteInputs().prop("disabled", true); + + } + + // Disable Standalone benefits inputs + let msg ="Cannot apply for standalone benefit with the selected package."; + SELECTORS.standaloneInputs().prop("checked", false); + SELECTORS.standaloneInputs().prop("disabled", true); + SELECTORS.standaloneMessage().removeClass("hidden"); + SELECTORS.standaloneInputs().attr("title", msg); + + // Update mobile selection + mobileUpdate(pkgInputs.val()); + } else { + // disable a la carte if no package selected at the first step + SELECTORS.aLaCarteInputs().prop("disabled", true); + } SELECTORS.sectionToggleBtns().click(function(){ const section = $(this).data('section'); @@ -21,9 +51,34 @@ $(document).ready(function(){ $(className).toggle(); }); + SELECTORS.clearFormButton().click(function(){ + SELECTORS.aLaCarteInputs().prop('checked', false).prop('selected', false); + SELECTORS.benefitsInputs().prop('checked', false).prop('selected', false); + SELECTORS.packageInput().prop('checked', false).prop('selected', false); + SELECTORS.standaloneInputs() + .prop('checked', false).prop('selected', false).prop("disabled", false); + + SELECTORS.tickImages().each((i, img) => { + const initImg = img.getAttribute('data-initial-state'); + const src = img.getAttribute('src'); + + if (src !== initImg) { + img.setAttribute('data-next-state', src); + } + + img.setAttribute('src', initImg); + }); + $(".selected").removeClass("selected"); + $('.custom-fee').hide(); + }); + SELECTORS.packageInput().click(function(){ let package = this.value; - if (package.length == 0) return; + if (package.length == 0) { + SELECTORS.standaloneInputs().prop("disabled", false); + SELECTORS.standaloneMessage().addClass("hidden"); + return; + } // clear previous customizations SELECTORS.tickImages().each((i, img) => { @@ -48,6 +103,25 @@ $(document).ready(function(){ $(`.package-${package}-benefit`).addClass("selected"); $(`.package-${package}-benefit input`).prop("disabled", false); + let msg ="Cannot apply for standalone benefit with the selected package."; + SELECTORS.standaloneInputs().prop("checked", false); + SELECTORS.standaloneInputs().prop("disabled", true); + SELECTORS.standaloneMessage().removeClass("hidden"); + SELECTORS.standaloneInputs().attr("title", msg); + + // Disable a la carte benefits if package disables it + if ($(this).attr("allow_a_la_carte") !== "true") { + msg ="Cannot add a la carte benefit with the selected package."; + SELECTORS.aLaCarteInputs().attr("title", msg); + SELECTORS.aLaCarteMessage().removeClass("hidden"); + SELECTORS.aLaCarteInputs().prop("checked", false); + SELECTORS.aLaCarteInputs().prop("disabled", true); + } else { + SELECTORS.aLaCarteInputs().attr("title", ""); + SELECTORS.aLaCarteMessage().addClass("hidden"); + SELECTORS.aLaCarteInputs().not('.soldout').prop("disabled", false); + } + // populate hidden inputs according to package's benefits SELECTORS.getPackageBenefits(package).each(function(){ let benefit = $(this).html(); diff --git a/templates/sponsors/sponsorship_benefits_form.html b/templates/sponsors/sponsorship_benefits_form.html index 94ab3aa60..758c23a02 100644 --- a/templates/sponsors/sponsorship_benefits_form.html +++ b/templates/sponsors/sponsorship_benefits_form.html @@ -53,10 +53,25 @@

    Select a Sponsorship Package

    {% endif %} {% for package in form.fields.package.queryset %} -
    +

    {{ package.name|upper }}

    ${{ package.sponsorship_amount|intcomma }}* - + * Subject to change
    {% endfor %} @@ -101,7 +116,7 @@

    {{ benefit.name }}

    {% endif %} data-initial-state="{% static 'img/sponsors/tick.svg' %}" /> - {% elif not benefit.package_only %} + {% elif not benefit.package_only and package.allow_a_la_carte%} {{ benefit.name }}

    Select a la carte benefits

    - Available at any level of sponsorship +
    Available to add to sponsorship packages.
    +
    -
    +
    {% for benefit in form.fields.a_la_carte_benefits.queryset %}
    - +
    {{ benefit.program }} - {{ benefit.name }} @@ -161,7 +177,7 @@

    Select a la carte benefits

    {% if forloop.counter|divisibleby:4 %}
    -
    +
    {% endif %} {% endfor %}
    @@ -178,11 +194,12 @@

    Select a la carte benefits

    Select standalone benefits

    Available to be selected without package +
    -
    +
    {% for benefit in form.fields.standalone_benefits.queryset %}
    @@ -218,9 +235,11 @@

    Submit your contact information

  • Submit your contact information

  • - +
    -
    From 37ab5a08e1478db2e170954deff89946aceb9ceb Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Tue, 16 Aug 2022 10:25:36 -0400 Subject: [PATCH 014/256] sponsorship form: do not display program header if no benefits are part of the given year --- templates/sponsors/sponsorship_benefits_form.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/templates/sponsors/sponsorship_benefits_form.html b/templates/sponsors/sponsorship_benefits_form.html index 758c23a02..b376ad15c 100644 --- a/templates/sponsors/sponsorship_benefits_form.html +++ b/templates/sponsors/sponsorship_benefits_form.html @@ -79,6 +79,7 @@

    {{ package.name|upper }}

    {% for field in form.benefits_programs %} + {% if field.field.queryset|length > 0 %} {% with forloop.counter as sectionNum %}

    {{ field.label }}

    @@ -151,6 +152,7 @@

    {{ benefit.name }}

    {% endfor %} {% endwith %} + {% endif %} {% endfor %}
    From 96b28c969d6d1421fb789e74d63fa96f7841471c Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Tue, 16 Aug 2022 11:25:45 -0400 Subject: [PATCH 015/256] Sponsorship form: Do not display benefits marked as unavailable in admin (#2122) * Sponsorship form: Do not display benefits marked as unavailable in admin * update help-text for benefit.unavailable --- sponsors/admin.py | 1 + sponsors/migrations/0092_auto_20220816_1517.py | 18 ++++++++++++++++++ sponsors/models/managers.py | 7 ++++--- sponsors/models/sponsorship.py | 2 +- sponsors/tests/test_managers.py | 4 ++++ 5 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 sponsors/migrations/0092_auto_20220816_1517.py diff --git a/sponsors/admin.py b/sponsors/admin.py index 6b4c0c708..4e68a7d20 100644 --- a/sponsors/admin.py +++ b/sponsors/admin.py @@ -116,6 +116,7 @@ class SponsorshipBenefitAdmin(PolymorphicInlineSupportMixin, OrderedModelAdmin): "short_name", "package_only", "internal_value", + "unavailable", "move_up_down_links", ] list_filter = ["program", "year", "package_only", "packages", "new", "standalone", "unavailable"] diff --git a/sponsors/migrations/0092_auto_20220816_1517.py b/sponsors/migrations/0092_auto_20220816_1517.py new file mode 100644 index 000000000..7f74eb14f --- /dev/null +++ b/sponsors/migrations/0092_auto_20220816_1517.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.24 on 2022-08-16 15:17 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0091_sponsorshippackage_allow_a_la_carte'), + ] + + operations = [ + migrations.AlterField( + model_name='sponsorshipbenefit', + name='unavailable', + field=models.BooleanField(default=False, help_text='If selected, this benefit will not be visible or available to applicants.', verbose_name='Benefit is unavailable'), + ), + ] diff --git a/sponsors/models/managers.py b/sponsors/models/managers.py index 8b4393b11..4681532f5 100644 --- a/sponsors/models/managers.py +++ b/sponsors/models/managers.py @@ -89,20 +89,21 @@ def without_conflicts(self): return self.filter(conflicts__isnull=True) def a_la_carte(self): - return self.annotate(num_packages=Count("packages")).filter(num_packages=0, standalone=False) + return self.annotate(num_packages=Count("packages")).filter(num_packages=0, standalone=False).exclude(unavailable=True) def standalone(self): - return self.filter(standalone=True) + return self.filter(standalone=True).exclude(unavailable=True) def with_packages(self): return ( self.annotate(num_packages=Count("packages")) .exclude(Q(num_packages=0) | Q(standalone=True)) + .exclude(unavailable=True) .order_by("-num_packages", "order") ) def from_year(self, year): - return self.filter(year=year) + return self.filter(year=year).exclude(unavailable=True) def from_current_year(self): from sponsors.models import SponsorshipCurrentYear diff --git a/sponsors/models/sponsorship.py b/sponsors/models/sponsorship.py index 23a638d75..ed5b51d71 100644 --- a/sponsors/models/sponsorship.py +++ b/sponsors/models/sponsorship.py @@ -414,7 +414,7 @@ class SponsorshipBenefit(OrderedModel): unavailable = models.BooleanField( default=False, verbose_name="Benefit is unavailable", - help_text="If selected, this benefit will not be available to applicants.", + help_text="If selected, this benefit will not be visible or available to applicants.", ) standalone = models.BooleanField( default=False, diff --git a/sponsors/tests/test_managers.py b/sponsors/tests/test_managers.py index 172b78190..c908cfc41 100644 --- a/sponsors/tests/test_managers.py +++ b/sponsors/tests/test_managers.py @@ -151,9 +151,13 @@ def setUp(self): package = baker.make(SponsorshipPackage) current_year = SponsorshipCurrentYear.get_year() self.regular_benefit = baker.make(SponsorshipBenefit, year=current_year) + self.regular_benefit_unavailable = baker.make(SponsorshipBenefit, year=current_year, unavailable=True) + self.regular_benefit.packages.add(package) self.regular_benefit.packages.add(package) self.a_la_carte = baker.make(SponsorshipBenefit, year=current_year-1) + self.a_la_carte_unavail = baker.make(SponsorshipBenefit, year=current_year-1, unavailable=True) self.standalone = baker.make(SponsorshipBenefit, standalone=True) + self.standalone_unavail = baker.make(SponsorshipBenefit, standalone=True, unavailable=True) def test_a_la_carte_queryset(self): qs = SponsorshipBenefit.objects.a_la_carte() From 2c3c073995027b764267f8a8e71faeaf203e07ab Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Tue, 16 Aug 2022 13:54:04 -0400 Subject: [PATCH 016/256] Address immediate sponsorship feedback (#2127) * Display all Packages/Years together in sponsor-list. Fixes #2124 * Resolve #2125 --- sponsors/models/sponsorship.py | 2 +- sponsors/templatetags/sponsors.py | 5 +++-- templates/sponsors/partials/sponsors-list.html | 6 +++--- templates/sponsors/sponsorship_benefits_form.html | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/sponsors/models/sponsorship.py b/sponsors/models/sponsorship.py index ed5b51d71..ec22f61f1 100644 --- a/sponsors/models/sponsorship.py +++ b/sponsors/models/sponsorship.py @@ -404,7 +404,7 @@ class SponsorshipBenefit(OrderedModel): package_only = models.BooleanField( default=False, verbose_name="Sponsor Package Only Benefit", - help_text="If a benefit is only available via a sponsorship package, select this option.", + help_text="If a benefit is only available via a sponsorship package and not as an add-on, select this option.", ) new = models.BooleanField( default=False, diff --git a/sponsors/templatetags/sponsors.py b/sponsors/templatetags/sponsors.py index 3c412b8ff..7e2f1f462 100644 --- a/sponsors/templatetags/sponsors.py +++ b/sponsors/templatetags/sponsors.py @@ -41,12 +41,13 @@ def list_sponsors(logo_place, publisher=PublisherChoices.FOUNDATION.value): if logo_place == LogoPlacementChoices.SPONSORS_PAGE.value: sponsorships_by_package = OrderedDict() for pkg in packages: - sponsorships_by_package[pkg] = { + sponsorships_by_package[pkg.slug] = { + "label": pkg.name, "logo_dimension": str(pkg.logo_dimension), "sponsorships": [ sp for sp in sponsorships - if sp.package == pkg + if sp.package.slug == pkg.slug ] } diff --git a/templates/sponsors/partials/sponsors-list.html b/templates/sponsors/partials/sponsors-list.html index 137ce0175..54d0a34ee 100644 --- a/templates/sponsors/partials/sponsors-list.html +++ b/templates/sponsors/partials/sponsors-list.html @@ -36,14 +36,14 @@

    Job Board Sponsors

    {% for package, placement_info in sponsorships_by_package.items %} {% if placement_info.sponsorships %} -
    +
    {% with dimension=placement_info.logo_dimension %} -

    {{ package }} Sponsors

    +

    {{ placement_info.label }} Sponsors

    {% for sponsorship in placement_info.sponsorships %} -
    +
    {{ benefit.name }} data-initial-state="{% static 'img/sponsors/tick-placeholder.png' %}" />
    - Potential a la carte + Potential add-on {% endif %} {% if benefit.has_tiers %}
    {% benefit_quantity_for_package benefit package %}
    From 8e9dedc5794e27f07777f6c075484331b810df4e Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Sun, 28 Aug 2022 08:12:39 -0400 Subject: [PATCH 017/256] docs refresh, support markdown && move to furo (#2131) --- docs-requirements.txt | 5 +++-- docs/source/conf.py | 16 +++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/docs-requirements.txt b/docs-requirements.txt index ab3f3dd41..db72b7bd7 100644 --- a/docs-requirements.txt +++ b/docs-requirements.txt @@ -1,2 +1,3 @@ -Sphinx -sphinx_rtd_theme +sphinx +myst-parser +furo diff --git a/docs/source/conf.py b/docs/source/conf.py index fa64cc897..00477aaa3 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -8,6 +8,7 @@ 'sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.viewcode', + 'myst_parser', ] templates_path = ['_templates'] @@ -22,18 +23,19 @@ # The full version, including alpha/beta/rc tags. release = '1.0' +html_title = 'Python.org Website' + pygments_style = 'sphinx' -try: - import sphinx_rtd_theme -except ImportError: - html_theme = 'default' -else: - html_theme = 'sphinx_rtd_theme' - html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] +html_theme = "furo" htmlhelp_basename = 'PythonorgWebsitedoc' +source_suffix = { + '.rst': 'restructuredtext', + '.md': 'markdown', +} + # -- Options for LaTeX output --------------------------------------------- From a886cf8a25ac735b2aebc62659aed74226dcaa65 Mon Sep 17 00:00:00 2001 From: Chloe Gerhardson <66563430+cegerhardson@users.noreply.github.com> Date: Mon, 29 Aug 2022 15:24:18 -0400 Subject: [PATCH 018/256] Dockerizing the pythondotorg codebase: (#2130) * Dockerizing the pythondotorg codebase: This commit will add the appropriate Dockerfile and docker-compose.yml file to begin the process of dockerizing the pythondotorg codebase. Next steps include completeing a Makefile. * remove use of wait-for.sh and entrypoint.sh which are unnecessary because a health check is already configured. * Add Makefile * Adding suggested refinements to Makefile * Resolve changes around @ewdurbin's most previous comment * Address noted changes including comment convetion and adding .state/db-initialized when needed. * Ridding redundancies * Begin docs conversion from restructured text to markdown * Begin editing documentation aroud working with Pythondotorg locally. * Continue editing documentation around working with Pythondotorg locallay * clarify steps in `make serve` * Clarify expected output of `make serve` * Clarify `make migrate` * Clarify `make migrations` * Document `make manage` Co-authored-by: Ee Durbin --- Dockerfile | 9 ++ Makefile | 52 +++++++++ docker-compose.yml | 29 +++++ docs/source/index.rst | 2 +- docs/source/install.md | 240 ++++++++++++++++++++++++++++++++++++++++ docs/source/install.rst | 148 ------------------------- 6 files changed, 331 insertions(+), 149 deletions(-) create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 docker-compose.yml create mode 100644 docs/source/install.md delete mode 100644 docs/source/install.rst diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..4d1046a98 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM python:3.9-bullseye +ENV PYTHONUNBUFFERED=1 +ENV PYTHONDONTWRITEBYTECODE=1 +RUN mkdir /code +WORKDIR /code +COPY dev-requirements.txt /code/ +COPY base-requirements.txt /code/ +RUN pip install -r dev-requirements.txt +COPY . /code/ diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..0b190f249 --- /dev/null +++ b/Makefile @@ -0,0 +1,52 @@ +default: + @echo "Call a specific subcommand:" + @echo + @$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null\ + | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}'\ + | sort\ + | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' + @echo + @exit 1 + +.state/docker-build-web: Dockerfile dev-requirements.txt base-requirements.txt + # Build web container for this project + docker-compose build --force-rm web + + # Mark the state so we don't rebuild this needlessly. + mkdir -p .state && touch .state/docker-build-web + +.state/db-migrated: + # Call migrate target + make migrate + + # Mark the state so we don't rebuild this needlessly. + mkdir -p .state && touch .state/db-migrated + +.state/db-initialized: .state/docker-build-web .state/db-migrated + # Load all fixtures + docker-compose run --rm web ./manage.py loaddata fixtures/*.json + + # Mark the state so we don't rebuild this needlessly. + mkdir -p .state && touch .state/db-initialized + +serve: .state/db-initialized + docker-compose up --remove-orphans + +migrations: .state/db-initialized + # Run Django makemigrations + docker-compose run --rm web ./manage.py makemigrations + +migrate: .state/docker-build-web + # Run Django migrate + docker-compose run --rm web ./manage.py migrate + +manage: .state/db-initialized + # Run Django manage to accept arbitrary arguments + docker-compose run --rm web ./manage.py $(filter-out $@,$(MAKECMDGOALS)) + +shell: .state/db-initialized + docker-compose run --rm web ./manage.py shell + +clean: + docker-compose down -v + rm -f .state/docker-build-web .state/db-initialized .state/db-migrated diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..22221629c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,29 @@ +version: "3.9" + +services: + postgres: + image: postgres:10-bullseye + ports: + - "5433:5432" + environment: + POSTGRES_USER: pythondotorg + POSTGRES_PASSWORD: pythondotorg + POSTGRES_DB: pythondotorg + POSTGRES_HOST_AUTH_METHOD: trust # never do this in production! + healthcheck: + test: ["CMD", "pg_isready", "-U", "pythondotorg", "-d", "pythondotorg"] + interval: 1s + + web: + build: . + command: python manage.py runserver 0.0.0.0:8000 + volumes: + - .:/code + ports: + - "8000:8000" + environment: + DATABASE_URL: postgresql://pythondotorg:pythondotorg@postgres:5432/pythondotorg + DJANGO_SETTINGS_MODULE: pydotorg.settings.local + depends_on: + postgres: + condition: service_healthy diff --git a/docs/source/index.rst b/docs/source/index.rst index fa7a88f20..6de5d915b 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -23,7 +23,7 @@ Contents: :maxdepth: 2 :glob: - install + install.md contributing administration pep_generation diff --git a/docs/source/install.md b/docs/source/install.md new file mode 100644 index 000000000..5639e144d --- /dev/null +++ b/docs/source/install.md @@ -0,0 +1,240 @@ +Installing +========== + +As a prerequisite to working on Pythondotorg, Docker, Docker Compose and `make` will need to be installed locally. + +```{note} +Docker Compose will be installed by [Docker Mac](https://docs.docker.com/desktop/install/mac-install/) and [Docker for Windows](https://docs.docker.com/desktop/install/windows-install/) automatically. + +`make` is a build automation tool that automatically builds executebale programs and libraries from source code by reading files called Makefiles. The [`make`](https://www.gnu.org/software/make/) utility comes defaulted with most unix distributions. +``` + +Getting started +--------------- + +To get the Pythondotorg source code, [fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo) the repository on [GitHub](https://github.com/python/pythondotorg) and [clone](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) it to your local machine: + +``` +git clone git@github.com:YOUR-USERNAME/pythondotorg.git +``` + +Add a [remote](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/configuring-a-remote-for-a-fork) and [sync](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork) regularly to stay current with the repository. + +``` +git remote add upstream https://github.com/python/pythondotorg +git checkout main +git fetch upstream +git merge upstream/main +``` + +Installing Docker +----------------- + +Install [Docker Engine](https://docs.docker.com/engine/install/) + +```{note} +The best experience for building Pythondotorg on Windows is to use the [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/)(WSL) in combination with both [Docker for Windows](https://docs.docker.com/desktop/install/windows-install/) and [Docker for Linux](https://docs.docker.com/engine/install/). +``` + +Verify that the Docker installation is successful by running: `docker -v` + +Running pythondotorg locally +---------------------------- +Once you have Docker and Docker Compose installed, run: + +``` +make serve +``` + +This will pull down all the required docker containers, build the environment for pythondotorg, run migrations, load development fixtures, and start all of the necessary services. + +Once complete, you will see the following in your terminal output: + +``` +web_1 | Starting development server at http://0.0.0.0:8000/ +web_1 | Quit the server with CONTROL-C. +``` + +You can view these results in your local web browser at: `http://localhost:8000` + +To reset your local environment, run: + +``` +make clean +``` + +To apply migrations, run: + +``` +make migrate +``` + +To generate new migrations, run: + +``` +make migrations +``` + +You can also run arbitrary Django management commands via: + +``` +make manage +``` + +This is a simple wrapper around running `python manage.py` in the container, all arguments passed to `make manage` will be passed through. + + + +Manual setup +------------ + +First, install [PostgreSQL](https://www.postgresql.org/download/) on your machine and run it. *pythondotorg* currently uses Postgres 10.21. + +Then clone the repository: + +``` +$ git clone git://github.com/python/pythondotorg.git +``` + +Then create a virtual environment: + +``` +$ python3.9 -m venv venv +``` + +And then you'll need to install dependencies. You don't need to use `pip3` inside a Python 3 virtual environment: + +``` +$ pip install -r dev-requirements.txt +``` + +*pythondotorg* will look for a PostgreSQL database named `pythondotorg` by default. Run the following command to create a new database: + +``` +$ createdb pythondotorg -E utf-8 -l en_US.UTF-8 +``` + +````{note} +If the above command fails to create a database and you see an error message similar to: + +``` +createdb: database creation failed: ERROR: permission denied to create database +``` + +Use the following command to create a database with *postgres* user as the owner: + +``` +$ sudo -u postgres createdb pythondotorg -E utf-8 -l en_US.UTF-8 +``` + +Note that this solution may not work if you've installed PostgreSQL via Homebrew. + +If you get an error like this: + +``` +createdb: database creation failed: ERROR: new collation (en_US.UTF-8) is incompatible with the collation of the template database (en_GB.UTF-8) +``` + +Then you will have to change the value of the `-l` option to what your database was set up with initially. +```` + +To change database configuration, you can add the following setting to `pydotorg/settings/local.py` (or you can use the `DATABASE_URL` environment variable): + +``` +DATABASES = { + 'default': dj_database_url.parse('postgres:///your_database_name'), +} +``` + +If you prefer to use a simpler setup for your database you can use SQLite. Set the `DATABASE_URL` environment variable for the current terminal session: + +``` +$ export DATABASE_URL="sqlite:///pythondotorg.db" +``` + +```{note} +If you prefer to set this variable in a more permanent way add the above line in your `.bashrc` file. Then it will be set for all terminal sessions in your system. +``` + +Whichever database type you chose, now it's time to run migrations: + +``` +$ ./manage.py migrate +``` + +To compile and compress static media, you will need *compass* and *yui-compressor*: + +``` +$ gem install bundler +$ bundle install +``` + +```{note} +To install *yui-compressor*, use your OS's package manager or download it directly then add the executable to your `PATH`. +``` + +To create initial data for the most used applications, run: + +``` +$ ./manage.py create_initial_data +``` + +See [create_initial_data](https://pythondotorg.readthedocs.io/commands.html#command-create-initial-data) for the command options to specify while creating initial data. + +Finally, start the development server: + +``` +$ ./manage.py runserver +``` + +Optional: Install Elasticsearch +------------------------------- + +The search feature in Python.org uses Elasticsearch engine. If you want to test out this feature, you will need to install [Elasticsearch](https://www.elastic.co/downloads/elasticsearch). + +Once you have it installed, update the URL value of `HAYSTACK_CONNECTIONS` settings in `pydotorg/settings/local.py` to your local ElasticSearch server. + +Generating CSS files automatically +---------------------------------- + +Due to performance issues of [django-pipeline](https://github.com/cyberdelia/django-pipeline/issues/313), we are using a dummy compiler `pydotorg.compilers.DummySASSCompiler` in development mode. To generate CSS files, use `sass` itself in a separate terminal window: + +``` +$ cd static +$ sass --compass --scss -I $(dirname $(dirname $(gem which susy))) --trace --watch sass/style.scss:sass/style.css +``` + +Running tests +------------- + +To run the test suite: + +``` +$ ./manage.py test +``` + +To generate coverage report: + +``` +$ coverage run manage.py test +$ coverage report +``` + +Generate an HTML report with `coverage html` if you like. + +Useful commands +--------------- + +- Create a super user (for a new DB): + +``` + $ ./manage.py createsuperuser +``` + +- Want to save some data from your DB before nuking it, and then load it back in?: + +``` + $ ./manage.py dumpdata --format=json --indent=4 $APPNAME > fixtures/$APPNAME.json +``` + + diff --git a/docs/source/install.rst b/docs/source/install.rst deleted file mode 100644 index ee7576ebd..000000000 --- a/docs/source/install.rst +++ /dev/null @@ -1,148 +0,0 @@ -Installing -========== - -Manual setup ------------- -First, install PostgreSQL_ on your machine and run it. *pythondotorg* currently -uses Postgres 10.21. - -.. _PostgreSQL: https://www.postgresql.org/download/ - -Then clone the repository:: - - $ git clone git://github.com/python/pythondotorg.git - -Then create a virtual environment:: - - $ python3.9 -m venv venv - -And then you'll need to install dependencies. You don't need to use ``pip3`` -inside a Python 3 virtual environment:: - - $ pip install -r dev-requirements.txt - -*pythondotorg* will look for a PostgreSQL database named ``pythondotorg`` by -default. Run the following command to create a new database:: - - $ createdb pythondotorg -E utf-8 -l en_US.UTF-8 - -.. note:: - - If the above command fails to create a database and you see an error message - similar to:: - - createdb: database creation failed: ERROR: permission denied to create database - - Use the following command to create a database with *postgres* user as the - owner:: - - $ sudo -u postgres createdb pythondotorg -E utf-8 -l en_US.UTF-8 - - Note that this solution may not work if you've installed PostgreSQL via - Homebrew. - - If you get an error like this:: - - createdb: database creation failed: ERROR: new collation (en_US.UTF-8) is incompatible with the collation of the template database (en_GB.UTF-8) - - Then you will have to change the value of the ``-l`` option to what your - database was set up with initially. - -To change database configuration, you can add the following setting to -``pydotorg/settings/local.py`` (or you can use the ``DATABASE_URL`` environment -variable):: - - DATABASES = { - 'default': dj_database_url.parse('postgres:///your_database_name'), - } - -If you prefer to use a simpler setup for your database you can use SQLite. -Set the ``DATABASE_URL`` environment variable for the current terminal session:: - - $ export DATABASE_URL="sqlite:///pythondotorg.db" - -.. note:: - - If you prefer to set this variable in a more permanent way add the above - line in your ``.bashrc`` file. Then it will be set for all terminal - sessions in your system. - -Whichever database type you chose, now it's time to run migrations:: - - $ ./manage.py migrate - -To compile and compress static media, you will need *compass* and -*yui-compressor*:: - - $ gem install bundler - $ bundle install - -.. note:: - - To install *yui-compressor*, use your OS's package manager or download it - directly then add the executable to your ``PATH``. - -To create initial data for the most used applications, run:: - - $ ./manage.py create_initial_data - -See :ref:`command-create-initial-data` for the command options to specify -while creating initial data. - -Finally, start the development server:: - - $ ./manage.py runserver - - -Optional: Install Elasticsearch -------------------------------- - -The search feature in Python.org uses Elasticsearch engine. If you want to -test out this feature, you will need to install Elasticsearch_. - -Once you have it installed, update the URL value of ``HAYSTACK_CONNECTIONS`` -settings in ``pydotorg/settings/local.py`` to your local ElasticSearch server. - -.. _Elasticsearch: https://www.elastic.co/downloads/elasticsearch - - -Generating CSS files automatically ----------------------------------- - -Due to performance issues of django-pipeline_, we are using a dummy compiler -``pydotorg.compilers.DummySASSCompiler`` in development mode. To generate CSS -files, use ``sass`` itself in a separate terminal window:: - - $ cd static - $ sass --compass --scss -I $(dirname $(dirname $(gem which susy))) --trace --watch sass/style.scss:sass/style.css - -.. _django-pipeline: https://github.com/cyberdelia/django-pipeline/issues/313 - - -Running tests -------------- - -To run the test suite:: - - $ ./manage.py test - -To generate coverage report:: - - $ coverage run manage.py test - $ coverage report - -Generate an HTML report with ``coverage html`` if you like. - - -Useful commands ---------------- - -* Create a super user (for a new DB):: - - $ ./manage.py createsuperuser - -* Want to save some data from your DB before nuking it, and then load it back - in?:: - - $ ./manage.py dumpdata --format=json --indent=4 $APPNAME > fixtures/$APPNAME.json - From d6cb282ce002de25df04d3c57af0d825e6ef18f8 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Fri, 9 Sep 2022 09:22:31 -0400 Subject: [PATCH 019/256] Downloads: Enforce constraint that only one ReleaseFile per OS per Release has "Download button" enabled. (#2137) * add fixtures for downloads/releases * enforce constraint that only one release file per os has download_button value This is by far the most common breakage during CPython releases... stop it from being possible * Raise a ValidationError if attempting to breach constraint on release/os/download_button --- .../migrations/0008_auto_20220907_2102.py | 17 + downloads/models.py | 14 + fixtures/downloads.json | 63035 ++++++++++++++++ 3 files changed, 63066 insertions(+) create mode 100644 downloads/migrations/0008_auto_20220907_2102.py create mode 100644 fixtures/downloads.json diff --git a/downloads/migrations/0008_auto_20220907_2102.py b/downloads/migrations/0008_auto_20220907_2102.py new file mode 100644 index 000000000..81f6d5ca5 --- /dev/null +++ b/downloads/migrations/0008_auto_20220907_2102.py @@ -0,0 +1,17 @@ +# Generated by Django 2.2.24 on 2022-09-07 21:02 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('downloads', '0007_auto_20220809_1655'), + ] + + operations = [ + migrations.AddConstraint( + model_name='releasefile', + constraint=models.UniqueConstraint(condition=models.Q(download_button=True), fields=('os', 'release'), name='only_one_download_per_os_per_release'), + ), + ] diff --git a/downloads/models.py b/downloads/models.py index a4becf7ab..7955f58f5 100644 --- a/downloads/models.py +++ b/downloads/models.py @@ -2,6 +2,7 @@ from django.urls import reverse from django.conf import settings +from django.core.exceptions import ValidationError from django.db import models from django.db.models.signals import post_save from django.dispatch import receiver @@ -332,7 +333,20 @@ class ReleaseFile(ContentManageable, NameSlugModel): filesize = models.IntegerField(default=0) download_button = models.BooleanField(default=False, help_text="Use for the supernav download button for this OS") + def validate_unique(self, exclude=None): + if self.download_button: + qs = ReleaseFile.objects.filter(release=self.release, os=self.os, download_button=True).exclude(pk=self.id) + if qs.count() > 0: + raise ValidationError("Only one Release File per OS can have \"Download button\" enabled") + super(ReleaseFile, self).validate_unique(exclude=exclude) + class Meta: verbose_name = 'Release File' verbose_name_plural = 'Release Files' ordering = ('-release__is_published', 'release__name', 'os__name', 'name') + + constraints = [ + models.UniqueConstraint(fields=['os', 'release'], + condition=models.Q(download_button=True), + name="only_one_download_per_os_per_release"), + ] diff --git a/fixtures/downloads.json b/fixtures/downloads.json new file mode 100644 index 000000000..0f9f1ce10 --- /dev/null +++ b/fixtures/downloads.json @@ -0,0 +1,63035 @@ +[ +{ + "model": "downloads.os", + "pk": 1, + "fields": { + "created": "2014-02-14T21:51:08.822Z", + "updated": "2014-02-14T21:51:08.826Z", + "creator": null, + "last_modified_by": null, + "name": "Windows", + "slug": "windows" + } +}, +{ + "model": "downloads.os", + "pk": 2, + "fields": { + "created": "2014-02-14T21:51:17.877Z", + "updated": "2021-07-29T21:37:39.458Z", + "creator": null, + "last_modified_by": null, + "name": "macOS", + "slug": "macos" + } +}, +{ + "model": "downloads.os", + "pk": 3, + "fields": { + "created": "2014-02-14T21:51:28.682Z", + "updated": "2014-02-24T10:11:52.176Z", + "creator": null, + "last_modified_by": null, + "name": "Source release", + "slug": "source" + } +}, +{ + "model": "downloads.release", + "pk": 1, + "fields": { + "created": "2014-02-14T21:53:15.841Z", + "updated": "2014-06-10T01:33:23.655Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.6", + "slug": "python-276", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2013-11-10T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.7.6/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nNote: Python 2.7.6 has been superseded by `Python 2.7.8 `_.\n\nPython 2.7.6 was released on November 10, 2013. This is a 2.7 series bugfix\nrelease. Most importantly, it resolves `an issue\n`_ that caused the interactive prompt to\ncrash on OS X 10.9. It also includes `numerous bugfixes\n`_ over 2.7.5.\n\nDownload\n^^^^^^^^\n\nThis is a production release. Please `report any bugs\n`_ you encounter.\n\nWe currently support these formats for download:\n\n* `Windows x86 MSI Installer (2.7.6) `__ \n `(sig) `__\n\n* `Windows x86 MSI program database (2.7.6) `__ \n `(sig) `__\n\n* `Windows X86-64 MSI Installer (2.7.6)\n `__ [1]_ \n `(sig) `__\n\n* `Windows X86-64 MSI program database (2.7.6) `__ [1]_ \n `(sig) `__\n\n* `Windows help file `_\n `(sig) `__\n\n* `Mac OS X 64-bit/32-bit x86-64/i386 Installer (2.7.6) for Mac OS X\n 10.6 and later `__ [2]_\n `(sig) `__. [You may need an\n updated Tcl/Tk install to run IDLE or use Tkinter, see note 2 for instructions.]\n\n* `Mac OS X 32-bit i386/PPC Installer (2.7.6) for Mac OS X 10.3 and\n later `__ [2]_ `(sig)\n `__.\n\n* `XZ compressed source tar ball (2.7.6) `__\n `(sig) `__\n\n* `Gzipped source tar ball (2.7.6) `__\n `(sig) `__\n\nThe source tarballs are signed with Benjamin Peterson's key, which has key id\n18ADD4FF. The Windows installer was signed by Martin von L\u00f6wis' public key,\nwhich has a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's\nkey, which has a key id of 6F5E1540. The public keys are located on the\n`download page `_.\n\nMD5 checksums and sizes of the released files::\n\n ec3184d886efdc4c679eeaed5f62643b 18244674 python-2.7.6-pdb.zip\n e4866ce2f277d1f8e41d6fdf0296799d 17458242 python-2.7.6.amd64-pdb.zip\n b73f8753c76924bc7b75afaa6d304645 16674816 python-2.7.6.amd64.msi\n ac54e14f7ba180253b9bae6635d822ea 16281600 python-2.7.6.msi\n ef628818d054401bdfb186a1faa8b5b6 6010777 python276.chm\n b721f7899e131dfdc0f33d805a90a677 20588267 python-2.7.6-macosx10.3.dmg\n a2b0f708dcd5e22148e52ae77c6cdd3e 20169125 python-2.7.6-macosx10.6.dmg\n 1d8728eb0dfcac72a0fd99c17ec7f386 14725931 Python-2.7.6.tgz\n bcf93efa8eaf383c98ed3ce40b763497 10431288 Python-2.7.6.tar.xz\n\nResources\n^^^^^^^^^\n\n* `What's new in 2.7? `_\n* `Complete change log for this release `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\n\nAbout the 2.7 release series\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nAmong the features and improvements to Python 2.6 introduced in the 2.7 series\nare\n\n- An ordered dictionary type\n- New unittest features including test skipping, new assert methods, and test\n discovery\n- A much faster io module\n- Automatic numbering of fields in the str.format() method\n- Float repr improvements backported from 3.x\n- Tile support for Tkinter\n- A backport of the memoryview object from 3.x\n- Set literals\n- Set and dictionary comprehensions\n- Dictionary views\n- New syntax for nested with statements\n- The sysconfig module\n\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: Python 2.7.6 has been superseded by Python 2.7.8.

    \n

    Python 2.7.6 was released on November 10, 2013. This is a 2.7 series bugfix\nrelease. Most importantly, it resolves an issue that caused the interactive prompt to\ncrash on OS X 10.9. It also includes numerous bugfixes over 2.7.5.

    \n
    \n

    Download

    \n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n

    The source tarballs are signed with Benjamin Peterson's key, which has key id\n18ADD4FF. The Windows installer was signed by Martin von L\u00f6wis' public key,\nwhich has a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's\nkey, which has a key id of 6F5E1540. The public keys are located on the\ndownload page.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \nec3184d886efdc4c679eeaed5f62643b  18244674  python-2.7.6-pdb.zip\ne4866ce2f277d1f8e41d6fdf0296799d  17458242  python-2.7.6.amd64-pdb.zip\nb73f8753c76924bc7b75afaa6d304645  16674816  python-2.7.6.amd64.msi\nac54e14f7ba180253b9bae6635d822ea  16281600  python-2.7.6.msi\nef628818d054401bdfb186a1faa8b5b6   6010777  python276.chm\nb721f7899e131dfdc0f33d805a90a677  20588267  python-2.7.6-macosx10.3.dmg\na2b0f708dcd5e22148e52ae77c6cdd3e  20169125  python-2.7.6-macosx10.6.dmg\n1d8728eb0dfcac72a0fd99c17ec7f386  14725931  Python-2.7.6.tgz\nbcf93efa8eaf383c98ed3ce40b763497  10431288  Python-2.7.6.tar.xz\n
    \n
    \n\n
    \n

    About the 2.7 release series

    \n

    Among the features and improvements to Python 2.6 introduced in the 2.7 series\nare

    \n
      \n
    • An ordered dictionary type
    • \n
    • New unittest features including test skipping, new assert methods, and test\ndiscovery
    • \n
    • A much faster io module
    • \n
    • Automatic numbering of fields in the str.format() method
    • \n
    • Float repr improvements backported from 3.x
    • \n
    • Tile support for Tkinter
    • \n
    • A backport of the memoryview object from 3.x
    • \n
    • Set literals
    • \n
    • Set and dictionary comprehensions
    • \n
    • Dictionary views
    • \n
    • New syntax for nested with statements
    • \n
    • The sysconfig module
    • \n
    \n\n\n\n\n\n
    [1](1, 2) The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here.
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 2, + "fields": { + "created": "2014-02-14T22:24:20.151Z", + "updated": "2014-06-10T01:27:49.742Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.3.4", + "slug": "python-334", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2014-02-09T00:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.3.4/whatsnew/changelog.html", + "content": ".. Migrated from Release.release_page field.\n\nfixes `several security and a lot of overall bug fixes\n`_ found in Python\n3.3.3.\n\nThis release fully supports OS X 10.9 Mavericks. In particular, this release\nfixes an issue that could cause previous versions of Python to crash when typing\nin interactive mode on OS X 10.9.\n\n\nMajor new features of the 3.3 series, compared to 3.2\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPython 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.\n\n* :pep:`380`, syntax for delegating to a subgenerator (``yield from``)\n* :pep:`393`, flexible string representation (doing away with the distinction\n between \"wide\" and \"narrow\" Unicode builds)\n* A C implementation of the \"decimal\" module, with up to 120x speedup\n for decimal-heavy applications\n* The import system (__import__) is based on importlib by default\n* The new \"lzma\" module with LZMA/XZ support\n* :pep:`397`, a Python launcher for Windows\n* :pep:`405`, virtual environment support in core\n* :pep:`420`, namespace package support\n* :pep:`3151`, reworking the OS and IO exception hierarchy\n* :pep:`3155`, qualified name for classes and functions\n* :pep:`409`, suppressing exception context\n* :pep:`414`, explicit Unicode literals to help with porting\n* :pep:`418`, extended platform-independent clocks in the \"time\" module\n* :pep:`412`, a new key-sharing dictionary implementation that significantly\n saves memory for object-oriented code\n* :pep:`362`, the function-signature object\n* The new \"faulthandler\" module that helps diagnosing crashes\n* The new \"unittest.mock\" module\n* The new \"ipaddress\" module\n* The \"sys.implementation\" attribute\n* A policy framework for the email package, with a provisional (see\n :pep:`411`) policy that adds much improved unicode support for email\n header parsing\n* A \"collections.ChainMap\" class for linking mappings to a single unit\n* Wrappers for many more POSIX functions in the \"os\" and \"signal\" modules, as\n well as other useful functions such as \"sendfile()\"\n* Hash randomization, introduced in earlier bugfix releases, is now\n switched on by default\n\nMore resources\n^^^^^^^^^^^^^^\n\n* `Change log for this release\n `_.\n* `Online Documentation `_\n* `What's new in 3.3? `_\n* `3.3 Release Schedule `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\nDownload\n--------\n\n.. This is a preview release, and its use is not recommended in production\n settings.\n\nThis is a production release. Please `report any bugs\n`__ you encounter.\n\nWe support these formats for download:\n\n* `XZ compressed source tar ball (3.3.4) `__\n `(sig) `__, ~ 11 MB\n\n* `Gzipped source tar ball (3.3.4) `__ `(sig)\n `__, ~ 16 MB\n\n..\n\n.. Windows binaries will be provided shortly.\n\n* `Windows x86 MSI Installer (3.3.4) `__ `(sig)\n `__ and `Visual Studio debug information\n files `__ `(sig)\n `__\n \n* `Windows X86-64 MSI Installer (3.3.4) `__\n [1]_ `(sig) `__ and `Visual Studio\n debug information files `__ `(sig)\n `__\n\n* `Windows help file `_ `(sig)\n `__\n\n..\n\n.. Mac binaries will be provided shortly.\n\n* `Mac OS X 64-bit/32-bit Installer (3.3.4) for Mac OS X 10.6 and later\n `__ [2]_ `(sig)\n `__.\n [You may need an updated Tcl/Tk install to run IDLE or use Tkinter,\n see note 2 for instructions.]\n\n* `Mac OS X 32-bit i386/PPC Installer (3.3.4) for Mac OS X 10.5 and later\n `__ [2]_ `(sig)\n `__\n\n\nThe source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is ``26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288``. The Windows installer was signed by Martin von L\u0e23\u0e16wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the `download\npage `_.\n\nMD5 checksums and sizes of the released files::\n\n 9f7df0dde690132c63b1dd2b640ed3a6 16843278 Python-3.3.4.tgz\n 8fb961a20600aafafd249537af3ac637 12087568 Python-3.3.4.tar.xz\n 22501eb8acaaa849c834c5596c3cee37 19914620 python-3.3.4-macosx10.5.dmg\n 7ca8dab58e94f475418792ba2294b73f 19991575 python-3.3.4-macosx10.6.dmg\n 7622e1a5f3cb8477683700cfc35ba728 27050536 python-3.3.4-pdb.zip\n 0c59a8242be497ecc3bba27936aa0cd8 22153590 python-3.3.4.amd64-pdb.zip\n fe66db6a92f8135cbbefa3265e8a99ec 21168128 python-3.3.4.amd64.msi\n 839af9c8044a1c45338b618294d7a6f3 20627456 python-3.3.4.msi\n a2df0ea91babdefaebbf6a2f919a18b2 6704894 python334.chm\n\n.. [1] The binaries for AMD64 will also work on processors that implement the\n Intel 64 architecture (formerly EM64T), i.e. the architecture that\n Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They\n will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    fixes several security and a lot of overall bug fixes found in Python\n3.3.3.

    \n

    This release fully supports OS X 10.9 Mavericks. In particular, this release\nfixes an issue that could cause previous versions of Python to crash when typing\nin interactive mode on OS X 10.9.

    \n
    \n

    Major new features of the 3.3 series, compared to 3.2

    \n

    Python 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.

    \n
      \n
    • PEP 380, syntax for delegating to a subgenerator (yield from)
    • \n
    • PEP 393, flexible string representation (doing away with the distinction\nbetween "wide" and "narrow" Unicode builds)
    • \n
    • A C implementation of the "decimal" module, with up to 120x speedup\nfor decimal-heavy applications
    • \n
    • The import system (__import__) is based on importlib by default
    • \n
    • The new "lzma" module with LZMA/XZ support
    • \n
    • PEP 397, a Python launcher for Windows
    • \n
    • PEP 405, virtual environment support in core
    • \n
    • PEP 420, namespace package support
    • \n
    • PEP 3151, reworking the OS and IO exception hierarchy
    • \n
    • PEP 3155, qualified name for classes and functions
    • \n
    • PEP 409, suppressing exception context
    • \n
    • PEP 414, explicit Unicode literals to help with porting
    • \n
    • PEP 418, extended platform-independent clocks in the "time" module
    • \n
    • PEP 412, a new key-sharing dictionary implementation that significantly\nsaves memory for object-oriented code
    • \n
    • PEP 362, the function-signature object
    • \n
    • The new "faulthandler" module that helps diagnosing crashes
    • \n
    • The new "unittest.mock" module
    • \n
    • The new "ipaddress" module
    • \n
    • The "sys.implementation" attribute
    • \n
    • A policy framework for the email package, with a provisional (see\nPEP 411) policy that adds much improved unicode support for email\nheader parsing
    • \n
    • A "collections.ChainMap" class for linking mappings to a single unit
    • \n
    • Wrappers for many more POSIX functions in the "os" and "signal" modules, as\nwell as other useful functions such as "sendfile()"
    • \n
    • Hash randomization, introduced in earlier bugfix releases, is now\nswitched on by default
    • \n
    \n
    \n
    \n

    More resources

    \n\n
    \n

    Download

    \n\n

    This is a production release. Please report any bugs you encounter.

    \n

    We support these formats for download:

    \n\n\n\n\n\n\n\n

    The source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is 26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288. The Windows installer was signed by Martin von L\u0e23\u0e16wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the download\npage.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \n9f7df0dde690132c63b1dd2b640ed3a6  16843278  Python-3.3.4.tgz\n8fb961a20600aafafd249537af3ac637  12087568  Python-3.3.4.tar.xz\n22501eb8acaaa849c834c5596c3cee37  19914620  python-3.3.4-macosx10.5.dmg\n7ca8dab58e94f475418792ba2294b73f  19991575  python-3.3.4-macosx10.6.dmg\n7622e1a5f3cb8477683700cfc35ba728  27050536  python-3.3.4-pdb.zip\n0c59a8242be497ecc3bba27936aa0cd8  22153590  python-3.3.4.amd64-pdb.zip\nfe66db6a92f8135cbbefa3265e8a99ec  21168128  python-3.3.4.amd64.msi\n839af9c8044a1c45338b618294d7a6f3  20627456  python-3.3.4.msi\na2df0ea91babdefaebbf6a2f919a18b2   6704894  python334.chm\n
    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the\nIntel 64 architecture (formerly EM64T), i.e. the architecture that\nMicrosoft calls x64, and AMD called x86-64 before calling it AMD64. They\nwill not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here.
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 3, + "fields": { + "created": "2014-02-23T10:40:44.452Z", + "updated": "2014-03-03T09:48:17.207Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.3.5rc1", + "slug": "python-335rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2014-02-23T10:38:36Z", + "release_page": null, + "release_notes_url": "http://docs.python.org/3.3/whatsnew/changelog.html", + "content": ".. Migrated from Release.release_page field.\n\n\nPython 3.3.5 includes fixes for these important issues:\n\n* a 3.3.4 regression in zipimport (see http://bugs.python.org/issue20621)\n* a 3.3.4 regression executing scripts with a coding declared and Windows\n newlines (see http://bugs.python.org/issue20731)\n* potential DOS using compression codecs in bytes.decode() (see\n http://bugs.python.org/issue19619 and http://bugs.python.org/issue20404)\n\nand also fixes quite a few other bugs.\n\nThis release fully supports OS X 10.9 Mavericks. In particular, this release\nfixes an issue that could cause previous versions of Python to crash when typing\nin interactive mode on OS X 10.9.\n\n\nMajor new features of the 3.3 series, compared to 3.2\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPython 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.\n\n* :pep:`380`, syntax for delegating to a subgenerator (``yield from``)\n* :pep:`393`, flexible string representation (doing away with the distinction\n between \"wide\" and \"narrow\" Unicode builds)\n* A C implementation of the \"decimal\" module, with up to 120x speedup\n for decimal-heavy applications\n* The import system (__import__) is based on importlib by default\n* The new \"lzma\" module with LZMA/XZ support\n* :pep:`397`, a Python launcher for Windows\n* :pep:`405`, virtual environment support in core\n* :pep:`420`, namespace package support\n* :pep:`3151`, reworking the OS and IO exception hierarchy\n* :pep:`3155`, qualified name for classes and functions\n* :pep:`409`, suppressing exception context\n* :pep:`414`, explicit Unicode literals to help with porting\n* :pep:`418`, extended platform-independent clocks in the \"time\" module\n* :pep:`412`, a new key-sharing dictionary implementation that significantly\n saves memory for object-oriented code\n* :pep:`362`, the function-signature object\n* The new \"faulthandler\" module that helps diagnosing crashes\n* The new \"unittest.mock\" module\n* The new \"ipaddress\" module\n* The \"sys.implementation\" attribute\n* A policy framework for the email package, with a provisional (see\n :pep:`411`) policy that adds much improved unicode support for email\n header parsing\n* A \"collections.ChainMap\" class for linking mappings to a single unit\n* Wrappers for many more POSIX functions in the \"os\" and \"signal\" modules, as\n well as other useful functions such as \"sendfile()\"\n* Hash randomization, introduced in earlier bugfix releases, is now\n switched on by default\n\nMore resources\n^^^^^^^^^^^^^^\n\n* `Change log for this release\n `_.\n* `Online Documentation `_\n* `What's new in 3.3? `_\n* `3.3 Release Schedule `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\nDownload\n--------\n\n.. This is a preview release, and its use is not recommended in production\n settings.\n\nThis is a production release. Please `report any bugs\n`__ you encounter.\n\nPlease proceed to the `download page `__ for the download.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 3.3.5 includes fixes for these important issues:

    \n\n

    and also fixes quite a few other bugs.

    \n

    This release fully supports OS X 10.9 Mavericks. In particular, this release\nfixes an issue that could cause previous versions of Python to crash when typing\nin interactive mode on OS X 10.9.

    \n
    \n

    Major new features of the 3.3 series, compared to 3.2

    \n

    Python 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.

    \n
      \n
    • PEP 380, syntax for delegating to a subgenerator (yield from)
    • \n
    • PEP 393, flexible string representation (doing away with the distinction\nbetween "wide" and "narrow" Unicode builds)
    • \n
    • A C implementation of the "decimal" module, with up to 120x speedup\nfor decimal-heavy applications
    • \n
    • The import system (__import__) is based on importlib by default
    • \n
    • The new "lzma" module with LZMA/XZ support
    • \n
    • PEP 397, a Python launcher for Windows
    • \n
    • PEP 405, virtual environment support in core
    • \n
    • PEP 420, namespace package support
    • \n
    • PEP 3151, reworking the OS and IO exception hierarchy
    • \n
    • PEP 3155, qualified name for classes and functions
    • \n
    • PEP 409, suppressing exception context
    • \n
    • PEP 414, explicit Unicode literals to help with porting
    • \n
    • PEP 418, extended platform-independent clocks in the "time" module
    • \n
    • PEP 412, a new key-sharing dictionary implementation that significantly\nsaves memory for object-oriented code
    • \n
    • PEP 362, the function-signature object
    • \n
    • The new "faulthandler" module that helps diagnosing crashes
    • \n
    • The new "unittest.mock" module
    • \n
    • The new "ipaddress" module
    • \n
    • The "sys.implementation" attribute
    • \n
    • A policy framework for the email package, with a provisional (see\nPEP 411) policy that adds much improved unicode support for email\nheader parsing
    • \n
    • A "collections.ChainMap" class for linking mappings to a single unit
    • \n
    • Wrappers for many more POSIX functions in the "os" and "signal" modules, as\nwell as other useful functions such as "sendfile()"
    • \n
    • Hash randomization, introduced in earlier bugfix releases, is now\nswitched on by default
    • \n
    \n
    \n
    \n

    More resources

    \n\n
    \n

    Download

    \n\n

    This is a production release. Please report any bugs you encounter.

    \n

    Please proceed to the download page for the download.

    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 5, + "fields": { + "created": "2014-03-02T09:45:50.522Z", + "updated": "2014-03-09T10:13:47.689Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.3.5rc2", + "slug": "python-335rc2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2014-03-02T18:00:00Z", + "release_page": null, + "release_notes_url": "http://docs.python.org/3.3/whatsnew/changelog.html", + "content": ".. Migrated from Release.release_page field.\n\n\nPython 3.3.5 includes fixes for these important issues:\n\n* a 3.3.4 regression in zipimport (see http://bugs.python.org/issue20621)\n* a 3.3.4 regression executing scripts with a coding declared and Windows\n newlines (see http://bugs.python.org/issue20731)\n* potential DOS using compression codecs in bytes.decode() (see\n http://bugs.python.org/issue19619 and http://bugs.python.org/issue20404)\n\nand also fixes quite a few other bugs.\n\nThis release fully supports OS X 10.9 Mavericks. In particular, this release\nfixes an issue that could cause previous versions of Python to crash when typing\nin interactive mode on OS X 10.9.\n\n\nMajor new features of the 3.3 series, compared to 3.2\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPython 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.\n\n* :pep:`380`, syntax for delegating to a subgenerator (``yield from``)\n* :pep:`393`, flexible string representation (doing away with the distinction\n between \"wide\" and \"narrow\" Unicode builds)\n* A C implementation of the \"decimal\" module, with up to 120x speedup\n for decimal-heavy applications\n* The import system (__import__) is based on importlib by default\n* The new \"lzma\" module with LZMA/XZ support\n* :pep:`397`, a Python launcher for Windows\n* :pep:`405`, virtual environment support in core\n* :pep:`420`, namespace package support\n* :pep:`3151`, reworking the OS and IO exception hierarchy\n* :pep:`3155`, qualified name for classes and functions\n* :pep:`409`, suppressing exception context\n* :pep:`414`, explicit Unicode literals to help with porting\n* :pep:`418`, extended platform-independent clocks in the \"time\" module\n* :pep:`412`, a new key-sharing dictionary implementation that significantly\n saves memory for object-oriented code\n* :pep:`362`, the function-signature object\n* The new \"faulthandler\" module that helps diagnosing crashes\n* The new \"unittest.mock\" module\n* The new \"ipaddress\" module\n* The \"sys.implementation\" attribute\n* A policy framework for the email package, with a provisional (see\n :pep:`411`) policy that adds much improved unicode support for email\n header parsing\n* A \"collections.ChainMap\" class for linking mappings to a single unit\n* Wrappers for many more POSIX functions in the \"os\" and \"signal\" modules, as\n well as other useful functions such as \"sendfile()\"\n* Hash randomization, introduced in earlier bugfix releases, is now\n switched on by default\n\nMore resources\n^^^^^^^^^^^^^^\n\n* `Change log for this release\n `_.\n* `Online Documentation `_\n* `What's new in 3.3? `_\n* `3.3 Release Schedule `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\nDownload\n--------\n\n.. This is a preview release, and its use is not recommended in production\n settings.\n\nThis is a production release. Please `report any bugs\n`__ you encounter.\n\nPlease proceed to the `download page `__ for the download.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 3.3.5 includes fixes for these important issues:

    \n\n

    and also fixes quite a few other bugs.

    \n

    This release fully supports OS X 10.9 Mavericks. In particular, this release\nfixes an issue that could cause previous versions of Python to crash when typing\nin interactive mode on OS X 10.9.

    \n
    \n

    Major new features of the 3.3 series, compared to 3.2

    \n

    Python 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.

    \n
      \n
    • PEP 380, syntax for delegating to a subgenerator (yield from)
    • \n
    • PEP 393, flexible string representation (doing away with the distinction\nbetween "wide" and "narrow" Unicode builds)
    • \n
    • A C implementation of the "decimal" module, with up to 120x speedup\nfor decimal-heavy applications
    • \n
    • The import system (__import__) is based on importlib by default
    • \n
    • The new "lzma" module with LZMA/XZ support
    • \n
    • PEP 397, a Python launcher for Windows
    • \n
    • PEP 405, virtual environment support in core
    • \n
    • PEP 420, namespace package support
    • \n
    • PEP 3151, reworking the OS and IO exception hierarchy
    • \n
    • PEP 3155, qualified name for classes and functions
    • \n
    • PEP 409, suppressing exception context
    • \n
    • PEP 414, explicit Unicode literals to help with porting
    • \n
    • PEP 418, extended platform-independent clocks in the "time" module
    • \n
    • PEP 412, a new key-sharing dictionary implementation that significantly\nsaves memory for object-oriented code
    • \n
    • PEP 362, the function-signature object
    • \n
    • The new "faulthandler" module that helps diagnosing crashes
    • \n
    • The new "unittest.mock" module
    • \n
    • The new "ipaddress" module
    • \n
    • The "sys.implementation" attribute
    • \n
    • A policy framework for the email package, with a provisional (see\nPEP 411) policy that adds much improved unicode support for email\nheader parsing
    • \n
    • A "collections.ChainMap" class for linking mappings to a single unit
    • \n
    • Wrappers for many more POSIX functions in the "os" and "signal" modules, as\nwell as other useful functions such as "sendfile()"
    • \n
    • Hash randomization, introduced in earlier bugfix releases, is now\nswitched on by default
    • \n
    \n
    \n
    \n

    More resources

    \n\n
    \n

    Download

    \n\n

    This is a production release. Please report any bugs you encounter.

    \n

    Please proceed to the download page for the download.

    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 6, + "fields": { + "created": "2014-03-09T08:33:30.548Z", + "updated": "2014-06-10T01:23:44.119Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.3.5", + "slug": "python-335", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2014-03-09T11:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.3.5/whatsnew/changelog.html", + "content": ".. Migrated from Release.release_page field.\n\n\nPython 3.3.5 includes fixes for these important issues:\n\n* a 3.3.4 regression in zipimport (see http://bugs.python.org/issue20621)\n* a 3.3.4 regression executing scripts with a coding declared and Windows\n newlines (see http://bugs.python.org/issue20731)\n* potential DOS using compression codecs in bytes.decode() (see\n http://bugs.python.org/issue19619 and http://bugs.python.org/issue20404)\n\nand also fixes quite a few other bugs.\n\nThis release fully supports OS X 10.9 Mavericks. In particular, this release\nfixes an issue that could cause previous versions of Python to crash when typing\nin interactive mode on OS X 10.9.\n\n\nMajor new features of the 3.3 series, compared to 3.2\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPython 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.\n\n* :pep:`380`, syntax for delegating to a subgenerator (``yield from``)\n* :pep:`393`, flexible string representation (doing away with the distinction\n between \"wide\" and \"narrow\" Unicode builds)\n* A C implementation of the \"decimal\" module, with up to 120x speedup\n for decimal-heavy applications\n* The import system (__import__) is based on importlib by default\n* The new \"lzma\" module with LZMA/XZ support\n* :pep:`397`, a Python launcher for Windows\n* :pep:`405`, virtual environment support in core\n* :pep:`420`, namespace package support\n* :pep:`3151`, reworking the OS and IO exception hierarchy\n* :pep:`3155`, qualified name for classes and functions\n* :pep:`409`, suppressing exception context\n* :pep:`414`, explicit Unicode literals to help with porting\n* :pep:`418`, extended platform-independent clocks in the \"time\" module\n* :pep:`412`, a new key-sharing dictionary implementation that significantly\n saves memory for object-oriented code\n* :pep:`362`, the function-signature object\n* The new \"faulthandler\" module that helps diagnosing crashes\n* The new \"unittest.mock\" module\n* The new \"ipaddress\" module\n* The \"sys.implementation\" attribute\n* A policy framework for the email package, with a provisional (see\n :pep:`411`) policy that adds much improved unicode support for email\n header parsing\n* A \"collections.ChainMap\" class for linking mappings to a single unit\n* Wrappers for many more POSIX functions in the \"os\" and \"signal\" modules, as\n well as other useful functions such as \"sendfile()\"\n* Hash randomization, introduced in earlier bugfix releases, is now\n switched on by default\n\nMore resources\n^^^^^^^^^^^^^^\n\n* `Change log for this release\n `_.\n* `Online Documentation `_\n* `What's new in 3.3? `_\n* `3.3 Release Schedule `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\nDownload\n--------\n\n.. This is a preview release, and its use is not recommended in production\n settings.\n\nThis is a production release. Please `report any bugs\n`__ you encounter.\n\nPlease proceed to the `download page `__ for the download.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 3.3.5 includes fixes for these important issues:

    \n\n

    and also fixes quite a few other bugs.

    \n

    This release fully supports OS X 10.9 Mavericks. In particular, this release\nfixes an issue that could cause previous versions of Python to crash when typing\nin interactive mode on OS X 10.9.

    \n
    \n

    Major new features of the 3.3 series, compared to 3.2

    \n

    Python 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.

    \n
      \n
    • PEP 380, syntax for delegating to a subgenerator (yield from)
    • \n
    • PEP 393, flexible string representation (doing away with the distinction\nbetween "wide" and "narrow" Unicode builds)
    • \n
    • A C implementation of the "decimal" module, with up to 120x speedup\nfor decimal-heavy applications
    • \n
    • The import system (__import__) is based on importlib by default
    • \n
    • The new "lzma" module with LZMA/XZ support
    • \n
    • PEP 397, a Python launcher for Windows
    • \n
    • PEP 405, virtual environment support in core
    • \n
    • PEP 420, namespace package support
    • \n
    • PEP 3151, reworking the OS and IO exception hierarchy
    • \n
    • PEP 3155, qualified name for classes and functions
    • \n
    • PEP 409, suppressing exception context
    • \n
    • PEP 414, explicit Unicode literals to help with porting
    • \n
    • PEP 418, extended platform-independent clocks in the "time" module
    • \n
    • PEP 412, a new key-sharing dictionary implementation that significantly\nsaves memory for object-oriented code
    • \n
    • PEP 362, the function-signature object
    • \n
    • The new "faulthandler" module that helps diagnosing crashes
    • \n
    • The new "unittest.mock" module
    • \n
    • The new "ipaddress" module
    • \n
    • The "sys.implementation" attribute
    • \n
    • A policy framework for the email package, with a provisional (see\nPEP 411) policy that adds much improved unicode support for email\nheader parsing
    • \n
    • A "collections.ChainMap" class for linking mappings to a single unit
    • \n
    • Wrappers for many more POSIX functions in the "os" and "signal" modules, as\nwell as other useful functions such as "sendfile()"
    • \n
    • Hash randomization, introduced in earlier bugfix releases, is now\nswitched on by default
    • \n
    \n
    \n
    \n

    More resources

    \n\n
    \n

    Download

    \n\n

    This is a production release. Please report any bugs you encounter.

    \n

    Please proceed to the download page for the download.

    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 8, + "fields": { + "created": "2014-03-10T08:01:47.494Z", + "updated": "2020-10-22T16:45:15.229Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.0rc3", + "slug": "python-340rc3", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2014-03-10T08:01:27Z", + "release_page": null, + "release_notes_url": "", + "content": ".. Migrated from Release.release_page field.\r\n\r\nPython 3.4.0rc3\r\n------------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.0 release candidate 3 was released on March 9th, 2014.\r\nThis is a preview release of the next major release of Python, Python 3.4,\r\nand is not suitable for production environments.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nDownload\r\n--------\r\n\r\nThis is a preview release, and its use is not recommended in production\r\nsettings.\r\n\r\nPlease proceed to the `download page `__ for the download.\r\n\r\nNotes on this release:\r\n\r\n\r\n* The final release is scheduled for a week after this release, and it is anticipated that there will be few (if any) changes to Python 3.4.0 between this release and the final release.\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n
    \n

    Python 3.4.0rc3

    \n

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.0 release candidate 3 was released on March 9th, 2014.\nThis is a preview release of the next major release of Python, Python 3.4,\nand is not suitable for production environments.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n
    \n
    \n

    Download

    \n

    This is a preview release, and its use is not recommended in production\nsettings.

    \n

    Please proceed to the download page for the download.

    \n

    Notes on this release:

    \n
      \n
    • The final release is scheduled for a week after this release, and it is anticipated that there will be few (if any) changes to Python 3.4.0 between this release and the final release.
    • \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 9, + "fields": { + "created": "2014-03-17T06:34:39.902Z", + "updated": "2020-10-22T16:44:42.218Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.0", + "slug": "python-340", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2014-03-17T06:33:56Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-0", + "content": ".. Migrated from Release.release_page field.\r\n\r\nPython 3.4.0\r\n--------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.0 was released on March 16th, 2014.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nDownload\r\n--------\r\n\r\nPlease proceed to the `download page `__ for the download.\r\n\r\nNotes on this release:\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n
    \n

    Python 3.4.0

    \n

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.0 was released on March 16th, 2014.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n
    \n
    \n

    Download

    \n

    Please proceed to the download page for the download.

    \n

    Notes on this release:

    \n\n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 111, + "fields": { + "created": "2014-03-20T22:35:25.259Z", + "updated": "2014-06-10T03:41:38.711Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.6.5", + "slug": "python-265", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2010-03-18T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.6.5/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.6.5 has been replaced by a newer bugfix release of Python**.\n Please download `Python 2.6.6 <../2.6.6/>`__ instead.\n\nPython 2.6.5 was a maintenance release for Python `2.6.4 <../2.6.4/>`_, fixing\ndozens of issues in the core, builtin modules, libraries, and documentation.\nPython 2.6.5 final was released on March 19, 2010.\n\nPython 2.6 is now in bugfix-only mode; no new features are being added. The\n`NEWS file `_ lists every change in each alpha, beta, and release\ncandidate of Python 2.6.\n\n * `What's New in Python 2.6 `_.\n * Report bugs at ``_.\n * Read the `Python license `_.\n * `PEP 361 `_ set out the development schedule for 2.6.\n\nHelp fund Python and its community by `donating to the Python Software Foundation `_.\n\nDownload\n--------\n\nThis is a production release; we currently support these formats:\n\n * `Gzipped source tar ball (2.6.5) `_\n `(sig) `__\n\n * `Bzipped source tar ball (2.6.5) `_\n `(sig) `__\n\n * `Windows x86 MSI Installer (2.6.5) `_\n `(sig) `__\n\n * `Windows X86-64 MSI Installer (2.6.5)\n `_ [1]_\n `(sig) `__\n\n * `Mac Installer disk image (2.6.5)\n `_ `(sig)\n `__\n\n\nMD5 checksums and sizes of the released files::\n\n cd04b5b9383b6c1fccdaa991af762cf4 13209175 Python-2.6.5.tgz\n 6bef0417e71a1a1737ccf5750420fdb3 11095581 Python-2.6.5.tar.bz2\n 9cd2c4d23dea7dfcd964449c3008f042 15430656 python-2.6.5.amd64.msi\n 0b6bc43c45fb2e3195ecdab3fad59fc2 15103488 python-2.6.5.msi\n 84489bba813fdbb6041b69d4310a86da 20348693 python-2.6.5-macosx10.3-2010-03-24.dmg\n\n\nThe signatures for the source tarballs above were generated with\n`GnuPG `_ using release manager\nBarry Warsaw's\n`public key `_ \nwhich has a key id of A74B06BF. \nThe Windows installers were signed by Martin von L\u00f6wis'\n`public key `_ \nwhich has a key id of 7D9DC8D2.\nThe Mac disk image was signed by \nRonald Oussoren's public key which has a key id of E6DF025C.\n\nDocumentation\n-------------\n\nThe documentation has also been updated. You can `browse the HTML on-line\n`_ or `download the HTML\n`_.\n\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64\n architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64,\n and AMD called x86-64 before calling it AMD64. They will not work on Intel\n Itanium Processors (formerly IA-64).", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.6.5 was a maintenance release for Python 2.6.4, fixing\ndozens of issues in the core, builtin modules, libraries, and documentation.\nPython 2.6.5 final was released on March 19, 2010.

    \n

    Python 2.6 is now in bugfix-only mode; no new features are being added. The\nNEWS file lists every change in each alpha, beta, and release\ncandidate of Python 2.6.

    \n
    \n\n
    \n

    Help fund Python and its community by donating to the Python Software Foundation.

    \n
    \n

    Download

    \n

    This is a production release; we currently support these formats:

    \n
    \n\n
    \n

    MD5 checksums and sizes of the released files:

    \n
    \ncd04b5b9383b6c1fccdaa991af762cf4  13209175  Python-2.6.5.tgz\n6bef0417e71a1a1737ccf5750420fdb3  11095581  Python-2.6.5.tar.bz2\n9cd2c4d23dea7dfcd964449c3008f042  15430656  python-2.6.5.amd64.msi\n0b6bc43c45fb2e3195ecdab3fad59fc2  15103488  python-2.6.5.msi\n84489bba813fdbb6041b69d4310a86da  20348693  python-2.6.5-macosx10.3-2010-03-24.dmg\n
    \n

    The signatures for the source tarballs above were generated with\nGnuPG using release manager\nBarry Warsaw's\npublic key\nwhich has a key id of A74B06BF.\nThe Windows installers were signed by Martin von L\u00f6wis'\npublic key\nwhich has a key id of 7D9DC8D2.\nThe Mac disk image was signed by\nRonald Oussoren's public key which has a key id of E6DF025C.

    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated. You can browse the HTML on-line or download the HTML.

    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the Intel 64\narchitecture (formerly EM64T), i.e. the architecture that Microsoft calls x64,\nand AMD called x86-64 before calling it AMD64. They will not work on Intel\nItanium Processors (formerly IA-64).
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 112, + "fields": { + "created": "2014-03-20T22:35:27.281Z", + "updated": "2014-06-10T03:41:42.079Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.2", + "slug": "python-272", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2011-06-11T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.7.2/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nNote: A newer bugfix release, 2.7.3, is currently `available\n`__. Its use is recommended over Python 2.7.2.\n\nPython 2.7.2 was released on June 11th, 2011.\n\nThe Python 2.7 series is scheduled to be the last major version in the 2.x\nseries before 2.x moves into an extended maintenance period. The 2.7 series\ncontains many of the features that were first released in Python 3.1.\nImprovements in this release include:\n\n- An ordered dictionary type\n- New unittest features including test skipping, new assert methods, and test\n discovery\n- A much faster io module\n- Automatic numbering of fields in the str.format() method\n- Float repr improvements backported from 3.x\n- Tile support for Tkinter\n- A backport of the memoryview object from 3.x\n- Set literals\n- Set and dictionary comprehensions\n- Dictionary views\n- New syntax for nested with statements\n- The sysconfig module\n\nSee these resources for further information:\n\n* `What's new in 2.7? `_\n* `Change log for this release `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\n\nDownload\n--------\n\nThis is a production release. Please\n`report any bugs `_ you encounter.\n\nWe currently support these formats for download:\n\n* `Gzipped source tar ball (2.7.2) `__ `(sig)\n `__\n\n* `Bzipped source tar ball (2.7.2) `__\n `(sig) `__\n\n* `XZ source tar ball (2.7.2) `__\n `(sig) `__\n\n* `Windows x86 MSI Installer (2.7.2) `__ \n `(sig) `__\n\n* `Windows x86 MSI program database (2.7.2) `__ \n `(sig) `__\n\n* `Windows X86-64 MSI Installer (2.7.2) `__ [1]_ \n `(sig) `__\n\n* `Windows X86-64 program database (2.7.2) `__ [1]_ \n `(sig) `__\n\n* `Mac OS X 64-bit/32-bit x86-64/i386 Installer (2.7.2) for Mac OS X 10.6 and 10.7\n `__ [2]_ `(sig)\n `__.\n [You may need an updated Tcl/Tk install to run IDLE or use Tkinter,\n see note 2 for instructions.]\n\n* `Mac OS X 32-bit i386/PPC Installer (2.7.2) for Mac OS X 10.3 through 10.6\n `__ [2]_ `(sig)\n `__.\n\nThe source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installer was signed\nby Martin von L\u00f6wis' public key, which has a key id of 7D9DC8D2. The Mac\ninstallers were signed with Ned Deily's key, which has a key id of 6F5E1540.\nThe public keys are located on the `download page `_.\n\nMD5 checksums and sizes of the released files::\n\n 0ddfe265f1b3d0a8c2459f5bf66894c7 14091337 Python-2.7.2.tgz\n ba7b2f11ffdbf195ee0d111b9455a5bd 11754834 Python-2.7.2.tar.bz2\n 75c87a80c6ddb0b785a57ea3583e04fa 9936152 Python-2.7.2.tar.xz\n 348bf509e778ed2e193d08d02eee5566 22041602 python-2.7.2-macosx10.3.dmg\n 92bc7480a840182aac486b2afd5c4181 18632739 python-2.7.2-macosx10.6.dmg\n e78e8520765af3cbb1cddbef891830bf 16122946 python-2.7.2-pdb.zip\n 89954c70f9eff948f43964ab5d1d5f8c 17204290 python-2.7.2.amd64-pdb.zip\n 937e2551a5d1c37a13a5958c83a05e3f 16334848 python-2.7.2.amd64.msi\n 44c8bbe92b644d78dd49e18df354386f 15970304 python-2.7.2.msi\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_. Also, on Mac OS X 10.6, if you need to\n build C extension modules with the 32-bit-only Python installed, you will\n need Apple Xcode 3, not 4. The 64-bit/32-bit Python can use either\n Xcode 3 or Xcode 4.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: A newer bugfix release, 2.7.3, is currently available. Its use is recommended over Python 2.7.2.

    \n

    Python 2.7.2 was released on June 11th, 2011.

    \n

    The Python 2.7 series is scheduled to be the last major version in the 2.x\nseries before 2.x moves into an extended maintenance period. The 2.7 series\ncontains many of the features that were first released in Python 3.1.\nImprovements in this release include:

    \n
      \n
    • An ordered dictionary type
    • \n
    • New unittest features including test skipping, new assert methods, and test\ndiscovery
    • \n
    • A much faster io module
    • \n
    • Automatic numbering of fields in the str.format() method
    • \n
    • Float repr improvements backported from 3.x
    • \n
    • Tile support for Tkinter
    • \n
    • A backport of the memoryview object from 3.x
    • \n
    • Set literals
    • \n
    • Set and dictionary comprehensions
    • \n
    • Dictionary views
    • \n
    • New syntax for nested with statements
    • \n
    • The sysconfig module
    • \n
    \n

    See these resources for further information:

    \n\n
    \n

    Download

    \n

    This is a production release. Please\nreport any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n

    The source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installer was signed\nby Martin von L\u00f6wis' public key, which has a key id of 7D9DC8D2. The Mac\ninstallers were signed with Ned Deily's key, which has a key id of 6F5E1540.\nThe public keys are located on the download page.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \n0ddfe265f1b3d0a8c2459f5bf66894c7  14091337  Python-2.7.2.tgz\nba7b2f11ffdbf195ee0d111b9455a5bd  11754834  Python-2.7.2.tar.bz2\n75c87a80c6ddb0b785a57ea3583e04fa   9936152  Python-2.7.2.tar.xz\n348bf509e778ed2e193d08d02eee5566  22041602  python-2.7.2-macosx10.3.dmg\n92bc7480a840182aac486b2afd5c4181  18632739  python-2.7.2-macosx10.6.dmg\ne78e8520765af3cbb1cddbef891830bf  16122946  python-2.7.2-pdb.zip\n89954c70f9eff948f43964ab5d1d5f8c  17204290  python-2.7.2.amd64-pdb.zip\n937e2551a5d1c37a13a5958c83a05e3f  16334848  python-2.7.2.amd64.msi\n44c8bbe92b644d78dd49e18df354386f  15970304  python-2.7.2.msi\n
    \n\n\n\n\n\n
    [1](1, 2) The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here. Also, on Mac OS X 10.6, if you need to\nbuild C extension modules with the 32-bit-only Python installed, you will\nneed Apple Xcode 3, not 4. The 64-bit/32-bit Python can use either\nXcode 3 or Xcode 4.
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 113, + "fields": { + "created": "2014-03-20T22:35:32.278Z", + "updated": "2014-06-10T03:41:46.255Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.1.4", + "slug": "python-314", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2011-06-11T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v3.1.4/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nNote: It is recommended that you use the latest bug fix release of the 3.1\nseries, `3.1.5 `_.\n\nPython 3.1.4 was released on June 11th, 2011.\n\nThe Python 3.1 version series is a continuation of the work started by `Python\n3.0 `_, the **new backwards-incompatible series** of\nPython. For ongoing maintenance releases, please see the Python `3.2\n<../3.2/>`_ series. Improvements in the the 3.1 series release include:\n\n- An ordered dictionary type\n- Various optimizations to the int type\n- New unittest features including test skipping and new assert methods.\n- A much faster io module\n- Tile support for Tkinter\n- A pure Python reference implementation of the import statement\n- New syntax for nested with statements\n\nSee these resources for further information:\n\n* `What's New in 3.1? `_\n* `What's new in Python 3000? `_\n* `Python 3.1.4 Change Log `_\n* `Online Documentation `_\n* Conversion tool for Python 2.x code:\n `2to3 `_\n* Report bugs at ``_.\n\nHelp fund Python and its community by `donating to the Python Software\nFoundation `_.\n\n\nDownload\n--------\n\nThis is a production release. Please\nreport any bugs you may encounter to http://bugs.python.org.\n\nWe currently support these formats for download:\n\n* `Gzipped source tar ball (3.1.4) `__ `(sig)\n `__\n\n* `Bzipped source tar ball (3.1.4) `__\n `(sig) `__\n\n* `XZ source tar ball (3.1.4) `__\n `(sig) `__\n\n* `Windows x86 MSI Installer (3.1.4) `__ \n `(sig) `__\n\n* `Windows x86 MSI program database (3.1.4) `__ \n `(sig) `__\n\n* `Windows X86-64 MSI Installer (3.1.4) `__ [1]_ \n `(sig) `__\n\n* `Windows X86-64 program database (3.1.4) `__ [1]_ \n `(sig) `__\n\n* `Mac OS X 32-bit i386/PPC Installer (3.1.4) for Mac OS X 10.3 through 10.6\n `__ [2]_ `(sig)\n `__\n\nThe source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installers are signed\nwith Martin von L\u00f6wis' public key which has a key id of 7D9DC8D2.\nThe Mac disk image was signed with\nNed Deily's key which has a key id of 6F5E1540.\nThe public\nkeys are located on the `download page `_.\n\nMD5 checksums and sizes of the released files::\n\n fa9f8efdc63944c8393870282e8b5c35 11795512 Python-3.1.4.tgz\n 09ed98eace4c403b475846702708675e 9887870 Python-3.1.4.tar.bz2\n dcd128e69f8ee239182b54e33313aac7 8184052 Python-3.1.4.tar.xz\n 4384d3fa1ae96d0f21c37c7aff03161f 17580055 python-3.1.4-macosx10.3.dmg\n b632340d63c6583382f77358f7f220ce 12711906 python-3.1.4-pdb.zip\n c0f83b5097289b8d874be950f1c8a99a 13531106 python-3.1.4.amd64-pdb.zip\n 829794fc7902880e4d55c7937c364541 14557184 python-3.1.4.amd64.msi\n 142acb595152b322f5341045327a42b8 14282752 python-3.1.4.msi\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `__. Also, on Mac OS X 10.6, if you need to\n build C extension modules with the 32-bit-only Python installed, you will\n need Apple Xcode 3, not 4.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: It is recommended that you use the latest bug fix release of the 3.1\nseries, 3.1.5.

    \n

    Python 3.1.4 was released on June 11th, 2011.

    \n

    The Python 3.1 version series is a continuation of the work started by Python\n3.0, the new backwards-incompatible series of\nPython. For ongoing maintenance releases, please see the Python 3.2 series. Improvements in the the 3.1 series release include:

    \n
      \n
    • An ordered dictionary type
    • \n
    • Various optimizations to the int type
    • \n
    • New unittest features including test skipping and new assert methods.
    • \n
    • A much faster io module
    • \n
    • Tile support for Tkinter
    • \n
    • A pure Python reference implementation of the import statement
    • \n
    • New syntax for nested with statements
    • \n
    \n

    See these resources for further information:

    \n\n

    Help fund Python and its community by donating to the Python Software\nFoundation.

    \n
    \n

    Download

    \n

    This is a production release. Please\nreport any bugs you may encounter to http://bugs.python.org.

    \n

    We currently support these formats for download:

    \n\n

    The source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installers are signed\nwith Martin von L\u00f6wis' public key which has a key id of 7D9DC8D2.\nThe Mac disk image was signed with\nNed Deily's key which has a key id of 6F5E1540.\nThe public\nkeys are located on the download page.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \nfa9f8efdc63944c8393870282e8b5c35  11795512  Python-3.1.4.tgz\n09ed98eace4c403b475846702708675e   9887870  Python-3.1.4.tar.bz2\ndcd128e69f8ee239182b54e33313aac7   8184052  Python-3.1.4.tar.xz\n4384d3fa1ae96d0f21c37c7aff03161f  17580055  python-3.1.4-macosx10.3.dmg\nb632340d63c6583382f77358f7f220ce  12711906  python-3.1.4-pdb.zip\nc0f83b5097289b8d874be950f1c8a99a  13531106  python-3.1.4.amd64-pdb.zip\n829794fc7902880e4d55c7937c364541  14557184  python-3.1.4.amd64.msi\n142acb595152b322f5341045327a42b8  14282752  python-3.1.4.msi\n
    \n\n\n\n\n\n
    [1](1, 2) The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2]There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here. Also, on Mac OS X 10.6, if you need to\nbuild C extension modules with the 32-bit-only Python installed, you will\nneed Apple Xcode 3, not 4.
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 114, + "fields": { + "created": "2014-03-20T22:35:36.984Z", + "updated": "2014-06-10T03:41:41.706Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.1", + "slug": "python-271", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2010-11-27T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.7.1/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nNote: A newer bugfix release, 2.7.2, is currently `available\n`__. Its use is recommended.\n\nPython 2.7.1 was released on November 27th, 2010.\n\nThe Python 2.7 series is scheduled to be the last major version in the 2.x\nseries before 2.x moves into an extended maintenance period. This release\ncontains many of the features that were first released in Python 3.1.\nImprovements in this release include:\n\n- An ordered dictionary type\n- New unittest features including test skipping, new assert methods, and test\n discovery\n- A much faster io module\n- Automatic numbering of fields in the str.format() method\n- Float repr improvements backported from 3.x\n- Tile support for Tkinter\n- A backport of the memoryview object from 3.x\n- Set literals\n- Set and dictionary comprehensions\n- Dictionary views\n- New syntax for nested with statements\n- The sysconfig module\n\nSee these resources for further information:\n\n* `What's new in 2.7? `_\n* `Change log for this release `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\n\nDownload\n--------\n\nThis is a production release. Please `report any bugs\n`_ you encounter.\n\nWe currently support these formats for download:\n\n* `Gzipped source tar ball (2.7.1) `__ `(sig)\n `__\n\n* `Bzipped source tar ball (2.7.1) `__\n `(sig) `__\n\n* `Windows x86 MSI Installer (2.7.1)\n `__ `(sig) `__\n\n* `Windows x86 MSI program database (2.7.1)\n `__ `(sig)\n `__\n\n* `Windows X86-64 MSI Installer (2.7.1)\n `__ [1]_ `(sig)\n `__\n\n* `Windows X86-64 program database (2.7.1)\n `__ [1]_ `(sig)\n `__\n\n* `Mac OS X 32-bit i386/PPC Installer (2.7.1) for Mac OS X 10.3 through 10.6\n `__ [2]_ `(sig)\n `__.\n\n* `Mac OS X 64-bit/32-bit x86-64/i386 Installer (2.7.1) for Mac OS X 10.6\n `__ [2]_ `(sig)\n `__.\n [You may not be able to run IDLE or use Tkinter with this installer,\n see note 2 for instructions.]\n\nThe source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installer was signed\nby Martin von L\u00f6wis' public key, which has a key id of 7D9DC8D2. The Mac\ninstallers were signed with Ronald Oussoren's key, which has a key id of\nE6DF025C. The public keys are located on the `download page\n`_.\n\nMD5 checksums and sizes of the released files::\n\n 15ed56733655e3fab785e49a7278d2fb 14058131 Python-2.7.1.tgz\n aa27bc25725137ba155910bd8e5ddc4f 11722546 Python-2.7.1.tar.bz2\n c7a750e85e632294c9b527ee8358d805 16065602 python-2.7.1-pdb.zip\n ef24194913837f2f542883fd52f3af99 17196098 python-2.7.1.amd64-pdb.zip\n c4eb466b9d01fde770097a559445e33b 16333824 python-2.7.1.amd64.msi\n a69ce1b2d870be29befd1cefb4615d82 16003072 python-2.7.1.msi\n aa399c743796a519148d08b77fab0fe7 21429186 python-2.7.1-macosx10.3.dmg\n 723b12ec324fafb7b4a12f102c744ae7 18529455 python-2.7.1-macosx10.6.dmg\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: A newer bugfix release, 2.7.2, is currently available. Its use is recommended.

    \n

    Python 2.7.1 was released on November 27th, 2010.

    \n

    The Python 2.7 series is scheduled to be the last major version in the 2.x\nseries before 2.x moves into an extended maintenance period. This release\ncontains many of the features that were first released in Python 3.1.\nImprovements in this release include:

    \n
      \n
    • An ordered dictionary type
    • \n
    • New unittest features including test skipping, new assert methods, and test\ndiscovery
    • \n
    • A much faster io module
    • \n
    • Automatic numbering of fields in the str.format() method
    • \n
    • Float repr improvements backported from 3.x
    • \n
    • Tile support for Tkinter
    • \n
    • A backport of the memoryview object from 3.x
    • \n
    • Set literals
    • \n
    • Set and dictionary comprehensions
    • \n
    • Dictionary views
    • \n
    • New syntax for nested with statements
    • \n
    • The sysconfig module
    • \n
    \n

    See these resources for further information:

    \n\n
    \n

    Download

    \n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n

    The source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installer was signed\nby Martin von L\u00f6wis' public key, which has a key id of 7D9DC8D2. The Mac\ninstallers were signed with Ronald Oussoren's key, which has a key id of\nE6DF025C. The public keys are located on the download page.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \n15ed56733655e3fab785e49a7278d2fb  14058131  Python-2.7.1.tgz\naa27bc25725137ba155910bd8e5ddc4f  11722546  Python-2.7.1.tar.bz2\nc7a750e85e632294c9b527ee8358d805  16065602  python-2.7.1-pdb.zip\nef24194913837f2f542883fd52f3af99  17196098  python-2.7.1.amd64-pdb.zip\nc4eb466b9d01fde770097a559445e33b  16333824  python-2.7.1.amd64.msi\na69ce1b2d870be29befd1cefb4615d82  16003072  python-2.7.1.msi\naa399c743796a519148d08b77fab0fe7  21429186  python-2.7.1-macosx10.3.dmg\n723b12ec324fafb7b4a12f102c744ae7  18529455  python-2.7.1-macosx10.6.dmg\n
    \n\n\n\n\n\n
    [1](1, 2) The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 115, + "fields": { + "created": "2014-03-20T22:35:41.789Z", + "updated": "2014-10-15T22:53:34.808Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.1.5", + "slug": "python-315", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2012-04-09T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v3.1.5/Misc/NEWS", + "content": "Python 3.1.5\r\n------------\r\n\r\n **Python 3.1.5** is a security-fix source-only release for Python `3.1.4\r\n <../3.1.4/>`_, fixing several reported security issues: `issue 13703`_\r\n (oCERT-2011-003, hash collision denial of service), `issue 14234`_\r\n (CVE-2012-0876, hash table collisions CPU usage DoS in the expat library),\r\n `issue 14001`_ (CVE-2012-0845, SimpleXMLRPCServer denial of service), and\r\n `issue 13885`_ (CVE-2011-3389, disabling of the CBC IV attack countermeasure\r\n in the _ssl module). Python 3.1.5 was released on April 9, 2012.\r\n \r\n The last binary release of Python 3.1 was `3.1.4 <../3.1.4/>`_.\r\n\r\n.. _`issue 13703`: http://bugs.python.org/issue13703\r\n.. _`issue 14001`: http://bugs.python.org/issue14001\r\n.. _`issue 13885`: http://bugs.python.org/issue13885\r\n.. _`issue 14234`: http://bugs.python.org/issue14234\r\n\r\nWith the 3.1.5 release, and five years after its first release, the\r\nPython 3.1 series is now officially retired. All official maintenance\r\nfor Python 3.1, including security patches, has ended. For ongoing\r\nmaintenance releases, please see the `downloads `_ page for\r\ninformation about the latest Python 3 series.\r\n\r\n * `What's New in Python 3.1 `_.\r\n * Report bugs at ``_.\r\n * Read the `Python license `_.\r\n\r\nHelp fund Python and its community by `donating to the Python Software Foundation `_.\r\n\r\nDownload\r\n--------\r\n\r\nThis is a production release. we currently support these formats:\r\n\r\n * `Gzipped source tar ball (3.1.5) `_\r\n `(sig) `__\r\n\r\n * `XZ compressed source tar ball (3.1.5) `__ `(sig)\r\n `__\r\n\r\n * `Bzipped source tar ball (3.1.5) `_\r\n `(sig) `__\r\n\r\nMD5 checksums and sizes of the released files::\r\n\r\n 02196d3fc7bc76bdda68aa36b0dd16ab 11798798 Python-3.1.5.tgz\r\n dc8a7a96c12880d2e61e9f4add9d3dc7 9889191 Python-3.1.5.tar.bz2\r\n 20dd2b7f801dc97db948dd168df4dd52 8189536 Python-3.1.5.tar.xz\r\n\r\nThe signatures for the source tarballs above were generated with `GnuPG\r\n`_ using release manager Benjamin Peterson's `public key\r\n`_ which has a key id of A4135B38.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.1.5

    \n
    \n

    Python 3.1.5 is a security-fix source-only release for Python 3.1.4, fixing several reported security issues: issue 13703\n(oCERT-2011-003, hash collision denial of service), issue 14234\n(CVE-2012-0876, hash table collisions CPU usage DoS in the expat library),\nissue 14001 (CVE-2012-0845, SimpleXMLRPCServer denial of service), and\nissue 13885 (CVE-2011-3389, disabling of the CBC IV attack countermeasure\nin the _ssl module). Python 3.1.5 was released on April 9, 2012.

    \n

    The last binary release of Python 3.1 was 3.1.4.

    \n
    \n

    With the 3.1.5 release, and five years after its first release, the\nPython 3.1 series is now officially retired. All official maintenance\nfor Python 3.1, including security patches, has ended. For ongoing\nmaintenance releases, please see the downloads page for\ninformation about the latest Python 3 series.

    \n
    \n\n
    \n

    Help fund Python and its community by donating to the Python Software Foundation.

    \n
    \n
    \n

    Download

    \n

    This is a production release. we currently support these formats:

    \n
    \n\n
    \n

    MD5 checksums and sizes of the released files:

    \n
    \n02196d3fc7bc76bdda68aa36b0dd16ab  11798798  Python-3.1.5.tgz\ndc8a7a96c12880d2e61e9f4add9d3dc7   9889191  Python-3.1.5.tar.bz2\n20dd2b7f801dc97db948dd168df4dd52   8189536  Python-3.1.5.tar.xz\n
    \n

    The signatures for the source tarballs above were generated with GnuPG using release manager Benjamin Peterson's public key which has a key id of A4135B38.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 116, + "fields": { + "created": "2014-03-20T22:35:42.983Z", + "updated": "2017-07-18T23:08:35.038Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.4.3", + "slug": "python-243", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2006-04-15T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.4.3/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.4.3 has been replaced by a newer bugfix\n release of Python.** Please see the `releases page <../>`_ to select a more\n recent release.\n\n **Important:** This release is vulnerable to the problem described in \n `security advisory PSF-2006-001 `_\n \"Buffer overrun in repr() of unicode strings in wide unicode\n builds (UCS-4)\". This fix is included in `Python 2.4.4 <../2.4.4/>`_\n\nWe are pleased to announce the release of \n**Python 2.4.3 (final)**, a \nbugfix release of Python 2.4, on March 29, 2006. \n\nPython 2.4 is now in bugfix-only mode; no new features are being added. At \nleast 50 bugs have been squashed since Python 2.4.2, including a number \nof bugs and potential bugs found by `Coverity `_. \nSee the `detailed release notes `_ for more details.\n\nThis is a final build, and is suitable for production use.\n\nFor more information on the new features of `Python 2.4 <../2.4/>`_ see the \n`2.4 highlights <../2.4/highlights>`_ or consult Andrew Kuchling's \n`What's New In Python `_\nfor a more detailed view.\n\nPlease see the separate `bugs page `_ for known issues and the bug \nreporting procedure.\n\nSee also the `license `_\n\nDownload the release\n--------------------\n\nWindows\n=============\n\nFor x86 processors: `Python-2.4.3.msi `_ \n\nFor Win64-Itanium users: `Python-2.4.3.ia64.msi `_ \n\nThis installer allows for `automated installation\n`_ and `many other new features\n`_.\n\nTo use these installers, the Windows system must support Microsoft\nInstaller 2.0. Just save the installer file to your local machine and \nthen run it to find out if your machine supports\nMSI. \n\nWindows XP and later already have MSI; many older machines will\nalready have MSI installed.\n\nIf your machine lacks Microsoft Installer, you'll have to download it\nfreely from Microsoft for `Windows 95, 98 and Me\n`_\nand for `Windows NT 4.0 and 2000\n`_.\n\nWindows users may also be interested in Mark Hammond's \n`pywin32 `_ package,\navailable from \n`Sourceforge `_.\npywin32 adds a number of Windows-specific extensions to Python, including COM support and the Pythonwin IDE.\n\n.. RPMs for Fedora Core 3 (and similar) are available, see \n.. `the 2.4.3 RPMs page `_\n\n\nMacOS X\n=================\n\nFor MacOS X 10.3 and later: `Universal-MacPython-2.4.3-2006-04-07.dmg `_.\n\nThe Universal MacPython 2.4.3 image contains an installer for python \n2.4.3 that works on Mac OS X 10.3.9 and later, on both PPC and Intel \nMacs. The compiled libraries include both bsddb and readline.\n\n\nOther platforms\n=======================\n\ngzip-compressed source code: `python-2.4.3.tgz `_\n\nbzip2-compressed source code: `python-2.4.3.tar.bz2 `_,\nthe source archive. \n\nThe bzip2-compressed version is considerably smaller, so get that one if\nyour system has the `appropriate tools `_ to deal \nwith it. \n\nUnpack the archive with ``tar -zxvf Python-2.4.3.tgz`` (or \n``bzcat Python-2.4.3.tar.bz2 | tar -xf -``). \nChange to the Python-2.4.3 directory and run the \"./configure\", \"make\", \n\"make install\" commands to compile and install Python. The source archive \nis also suitable for Windows users who feel the need to build their \nown version.\n\n\nWhat's New?\n-----------\n\n* See the `highlights <../2.4/highlights>`_ of the Python 2.4 release.\n\n* Andrew Kuchling's \n `What's New in Python 2.4 `_\n describes the most visible changes since `Python 2.3 <../2.3/>`_ in \n more detail.\n\n* A detailed list of the changes in 2.4.3 can be found in \n the `release notes `_, or the ``Misc/NEWS`` file in the \n source distribution.\n\n* For the full list of changes, you can poke around in \n `Subversion `_.\n\nDocumentation\n-------------\n\nThe documentation has also been updated:\n\n* `Browse HTML on-line `_\n\n* Download using `HTTP `_.\n\n* Documentation is available in Windows Help (.chm) format - `python24.chm `_.\n\n\nFiles, `MD5 `_ checksums, signatures and sizes\n---------------------------------------------------------\n\n\t``edf994473a8c1a963aaa71e442b285b7`` `Python-2.4.3.tgz `_ \n (9348239 bytes, `signature `__)\n\n\t``141c683447d5e76be1d2bd4829574f02`` `Python-2.4.3.tar.bz2 `_ \n (8005915 bytes, `signature `__)\n\n\t``ab946459d7cfba4a8500f9ff8d35cc97`` `python-2.4.3.msi `_\n (9688576 bytes, `signature `__)\n\n\t``9a06d08854ddffc85d8abd11f3c2acc2`` `python-2.4.3.ia64.msi `_ \n (8121856 bytes, `signature `__)\n\n\t``a12df188bfa39572d7de1f6be5579124`` `Universal-MacPython-2.4.3-2006-04-07.dmg `_\n (16608269 bytes, `signature `__)\n\nThe signatures above were generated with\n`GnuPG `_ using release manager\nAnthony Baxter's\n`public key `_ \nwhich has a key id of 6A45C816.\n\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    We are pleased to announce the release of\nPython 2.4.3 (final), a\nbugfix release of Python 2.4, on March 29, 2006.

    \n

    Python 2.4 is now in bugfix-only mode; no new features are being added. At\nleast 50 bugs have been squashed since Python 2.4.2, including a number\nof bugs and potential bugs found by Coverity.\nSee the detailed release notes for more details.

    \n

    This is a final build, and is suitable for production use.

    \n

    For more information on the new features of Python 2.4 see the\n2.4 highlights or consult Andrew Kuchling's\nWhat's New In Python\nfor a more detailed view.

    \n

    Please see the separate bugs page for known issues and the bug\nreporting procedure.

    \n

    See also the license

    \n
    \n

    Download the release

    \n
    \n

    Windows

    \n

    For x86 processors: Python-2.4.3.msi

    \n

    For Win64-Itanium users: Python-2.4.3.ia64.msi

    \n

    This installer allows for automated installation and many other new features.

    \n

    To use these installers, the Windows system must support Microsoft\nInstaller 2.0. Just save the installer file to your local machine and\nthen run it to find out if your machine supports\nMSI.

    \n

    Windows XP and later already have MSI; many older machines will\nalready have MSI installed.

    \n

    If your machine lacks Microsoft Installer, you'll have to download it\nfreely from Microsoft for Windows 95, 98 and Me\nand for Windows NT 4.0 and 2000.

    \n

    Windows users may also be interested in Mark Hammond's\npywin32 package,\navailable from\nSourceforge.\npywin32 adds a number of Windows-specific extensions to Python, including COM support and the Pythonwin IDE.

    \n\n\n
    \n
    \n

    MacOS X

    \n

    For MacOS X 10.3 and later: Universal-MacPython-2.4.3-2006-04-07.dmg.

    \n

    The Universal MacPython 2.4.3 image contains an installer for python\n2.4.3 that works on Mac OS X 10.3.9 and later, on both PPC and Intel\nMacs. The compiled libraries include both bsddb and readline.

    \n
    \n
    \n

    Other platforms

    \n

    gzip-compressed source code: python-2.4.3.tgz

    \n

    bzip2-compressed source code: python-2.4.3.tar.bz2,\nthe source archive.

    \n

    The bzip2-compressed version is considerably smaller, so get that one if\nyour system has the appropriate tools to deal\nwith it.

    \n

    Unpack the archive with tar -zxvf Python-2.4.3.tgz (or\nbzcat Python-2.4.3.tar.bz2 | tar -xf -).\nChange to the Python-2.4.3 directory and run the "./configure", "make",\n"make install" commands to compile and install Python. The source archive\nis also suitable for Windows users who feel the need to build their\nown version.

    \n
    \n
    \n
    \n

    What's New?

    \n
      \n
    • See the highlights of the Python 2.4 release.
    • \n
    • Andrew Kuchling's\nWhat's New in Python 2.4\ndescribes the most visible changes since Python 2.3 in\nmore detail.
    • \n
    • A detailed list of the changes in 2.4.3 can be found in\nthe release notes, or the Misc/NEWS file in the\nsource distribution.
    • \n
    • For the full list of changes, you can poke around in\nSubversion.
    • \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated:

    \n\n
    \n
    \n

    Files, MD5 checksums, signatures and sizes

    \n
    \n

    edf994473a8c1a963aaa71e442b285b7 Python-2.4.3.tgz\n(9348239 bytes, signature)

    \n

    141c683447d5e76be1d2bd4829574f02 Python-2.4.3.tar.bz2\n(8005915 bytes, signature)

    \n

    ab946459d7cfba4a8500f9ff8d35cc97 python-2.4.3.msi\n(9688576 bytes, signature)

    \n

    9a06d08854ddffc85d8abd11f3c2acc2 python-2.4.3.ia64.msi\n(8121856 bytes, signature)

    \n

    a12df188bfa39572d7de1f6be5579124 Universal-MacPython-2.4.3-2006-04-07.dmg\n(16608269 bytes, signature)

    \n
    \n

    The signatures above were generated with\nGnuPG using release manager\nAnthony Baxter's\npublic key\nwhich has a key id of 6A45C816.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 117, + "fields": { + "created": "2014-03-20T22:35:46.953Z", + "updated": "2014-06-10T03:41:40.735Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.6.9", + "slug": "python-269", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2013-10-29T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.6.9/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.6.9** is a security-fix source-only release for Python `2.6.8\n <../2.6.8/>`_, fixing several reported security issues: `issue 16037`_,\n `issue 16038`_, `issue 16039`_, `issue 16040`_, `issue 16041`_, and `issue\n 16042`_ (CVE-2013-1752, long lines consuming too much memory), as well as\n `issue 14984`_ (security enforcement on $HOME/.netrc files), `issue 16248`_\n (code execution vulnerability in tkinter), and `issue 18709`_\n (CVE-2013-4238, SSL module handling of NULL bytes inside subjectAltName).\n Python 2.6.9 final was released on October 29, 2013.\n\n The last binary release of Python 2.6 was `2.6.6 `_.\n\n.. _`issue 16037`: http://bugs.python.org/issue16037\n.. _`issue 16038`: http://bugs.python.org/issue16038\n.. _`issue 16039`: http://bugs.python.org/issue16039\n.. _`issue 16040`: http://bugs.python.org/issue16040\n.. _`issue 16041`: http://bugs.python.org/issue16041\n.. _`issue 16042`: http://bugs.python.org/issue16042\n.. _`issue 14984`: http://bugs.python.org/issue14984\n.. _`issue 16248`: http://bugs.python.org/issue16248\n.. _`issue 18709`: http://bugs.python.org/issue18709\n.. _`issue 18458`: http://bugs.python.org/issue18458\n\n\nWith the 2.6.9 release, and five years after its first release, the\nPython 2.6 series is now officially retired. All official maintenance\nfor Python 2.6, including security patches, has ended. For ongoing\nmaintenance releases, please see the Python `2.7 `_ series.\nThe `NEWS file `_ lists every change in each alpha, beta,\nrelease candidate, and final release of Python 2.6.\n\n * `What's New in Python 2.6 `_.\n * Report bugs at ``_.\n * Read the `Python license `_.\n * `PEP 361 `_ set out the development schedule for 2.6.\n\nHelp fund Python and its community by `donating to the Python Software Foundation `_.\n\nDownload\n--------\n\nThis is a final release; we currently support these formats:\n\n * `Gzipped source tar ball (2.6.9) `_\n `(sig) `__\n\n * `XZ compressed source tar ball (2.6.9) `_\n `(sig) `__\n\nMD5 checksums and sizes of the released files::\n\n 933a811f11e3db3d73ae492f6c3a7a76 Python-2.6.9.tar.xz\n bddbd64bf6f5344fc55bbe49a72fe4f3 Python-2.6.9.tgz\n\nThe signatures for the source tarballs above were generated with\n`GnuPG `_ using release manager\nBarry Warsaw's\n`public key `_\nwhich has a key id of A74B06BF.\n\nNotes\n-----\n\nUsers of Mac OS X 10.9 (Mavericks) may be affected by `issue 18458`_,\nexperiencing crashes when using the interactive interpreter. This bug\nis *not* fixed by the Python 2.6.9 release. If you are having this\nproblem, please review your options by visiting the issue tracker.\n\nDevelopers on Ubuntu 11.04 (Natty Narwhal) or later may experience\nproblems when building Python 2.6 from source, due to the adoption of\n`multiarch`_ support. See `issue 9762`_ for additional details and\nworkarounds.\n\n.. _`multiarch`: https://wiki.ubuntu.com/MultiarchSpec\n.. _`issue 9762`: http://bugs.python.org/issue9762\n\n\nDocumentation\n-------------\n\nThe documentation has also been updated. You can `browse the HTML on-line\n`_ or `download the HTML\n`_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    With the 2.6.9 release, and five years after its first release, the\nPython 2.6 series is now officially retired. All official maintenance\nfor Python 2.6, including security patches, has ended. For ongoing\nmaintenance releases, please see the Python 2.7 series.\nThe NEWS file lists every change in each alpha, beta,\nrelease candidate, and final release of Python 2.6.

    \n
    \n\n
    \n

    Help fund Python and its community by donating to the Python Software Foundation.

    \n
    \n

    Download

    \n

    This is a final release; we currently support these formats:

    \n
    \n\n
    \n

    MD5 checksums and sizes of the released files:

    \n
    \n933a811f11e3db3d73ae492f6c3a7a76  Python-2.6.9.tar.xz\nbddbd64bf6f5344fc55bbe49a72fe4f3  Python-2.6.9.tgz\n
    \n

    The signatures for the source tarballs above were generated with\nGnuPG using release manager\nBarry Warsaw's\npublic key\nwhich has a key id of A74B06BF.

    \n
    \n
    \n

    Notes

    \n

    Users of Mac OS X 10.9 (Mavericks) may be affected by issue 18458,\nexperiencing crashes when using the interactive interpreter. This bug\nis not fixed by the Python 2.6.9 release. If you are having this\nproblem, please review your options by visiting the issue tracker.

    \n

    Developers on Ubuntu 11.04 (Natty Narwhal) or later may experience\nproblems when building Python 2.6 from source, due to the adoption of\nmultiarch support. See issue 9762 for additional details and\nworkarounds.

    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated. You can browse the HTML on-line or download the HTML.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 118, + "fields": { + "created": "2014-03-20T22:35:47.944Z", + "updated": "2014-06-10T03:41:42.501Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.3", + "slug": "python-273", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2012-04-09T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.7.3/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nNote: A newer bugfix release, 2.7.4, is currently `available\n`__. Its use is recommended over previous versions\nof 2.7.\n\nPython 2.7.3 was released on April 9, 2012. 2.7.3 includes fixes for several\nreported security issues in 2.7.2: `issue 13703`_ (oCERT-2011-003, hash\ncollision denial of service), `issue 14234`_ (CVE-2012-0876, hash table\ncollisions CPU usage DoS in the expat library), `issue 14001`_ (CVE-2012-0845,\nSimpleXMLRPCServer denial of service), and `issue 13885`_ (CVE-2011-3389,\ndisabling of the CBC IV attack countermeasure in the _ssl module).\n\n.. _`issue 13703`: http://bugs.python.org/issue13703\n.. _`issue 14001`: http://bugs.python.org/issue14001\n.. _`issue 13885`: http://bugs.python.org/issue13885\n.. _`issue 14234`: http://bugs.python.org/issue14234\n\nThe Python 2.7 series is scheduled to be the last major version in the 2.x\nseries before 2.x moves into an extended maintenance period. The 2.7 series\ncontains many of the features that were first released in Python 3.1.\nImprovements in this release include:\n\n- An ordered dictionary type\n- New unittest features including test skipping, new assert methods, and test\n discovery\n- A much faster io module\n- Automatic numbering of fields in the str.format() method\n- Float repr improvements backported from 3.x\n- Tile support for Tkinter\n- A backport of the memoryview object from 3.x\n- Set literals\n- Set and dictionary comprehensions\n- Dictionary views\n- New syntax for nested with statements\n- The sysconfig module\n\nSee these resources for further information:\n\n* `What's new in 2.7? `_\n* `Change log for this release `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\n\nDownload\n--------\n\nThis is a production release. Please `report any bugs `_\nyou encounter.\n\nWe currently support these formats for download:\n\n* `Gzipped source tar ball (2.7.3) `__\n `(sig) `__\n\n* `Bzipped source tar ball (2.7.3)\n `__ `(sig)\n `__\n\n* `XZ source tar ball (2.7.3) `__\n `(sig) `__\n\n* `Windows x86 MSI Installer (2.7.3) `__ \n `(sig) `__\n\n* `Windows x86 MSI program database (2.7.3) `__ \n `(sig) `__\n\n* `Windows X86-64 MSI Installer (2.7.3) `__ [1]_ \n `(sig) `__\n\n* `Windows X86-64 program database (2.7.3) `__ [1]_ \n `(sig) `__\n\n* `Windows help file `_\n `(sig) `__\n\n* `Mac OS X 64-bit/32-bit x86-64/i386 Installer (2.7.3) for Mac OS X 10.6 and 10.7\n `__ [2]_ `(sig)\n `__.\n [You may need an updated Tcl/Tk install to run IDLE or use Tkinter,\n see note 2 for instructions.]\n\n* `Mac OS X 32-bit i386/PPC Installer (2.7.3) for Mac OS X 10.3 through 10.6\n `__ [2]_ `(sig)\n `__.\n\nThe source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installer was signed\nby Martin von L\u00f6wis' public key, which has a key id of 7D9DC8D2. The Mac\ninstallers were signed with Ned Deily's key, which has a key id of 6F5E1540.\nThe public keys are located on the `download page `_.\n\nMD5 checksums and sizes of the released files::\n\n c57477edd6d18bd9eeca2f21add73919 11793433 Python-2.7.3.tar.bz2\n 62c4c1699170078c469f79ddfed21bc0 9976088 Python-2.7.3.tar.xz\n 2cf641732ac23b18d139be077bd906cd 14135620 Python-2.7.3.tgz\n 80461c3c60fae64122b51eb20341b453 22178854 python-2.7.3-macosx10.3.dmg\n 15c434a11abe7ea5575ef451cfd60f67 18761950 python-2.7.3-macosx10.6.dmg\n 008a63d89d67d41801a55ea341a34676 16221250 python-2.7.3-pdb.zip\n 5e24faf0b64c59e5f11f1fcfe4644bf3 17376322 python-2.7.3.amd64-pdb.zip\n d11d4aeb7e5425bf28f28ab1c7452886 16420864 python-2.7.3.amd64.msi\n c846d7a5ed186707d3675564a9838cc2 15867904 python-2.7.3.msi\n 9401a5f847b0c1078a4c68dccf6cd38a 5898853 python273.chm\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_. Also, on Mac OS X 10.6, if you need to\n build C extension modules with the 32-bit-only Python installed, you will\n need Apple Xcode 3, not 4. The 64-bit/32-bit Python can use either\n Xcode 3 or Xcode 4.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: A newer bugfix release, 2.7.4, is currently available. Its use is recommended over previous versions\nof 2.7.

    \n

    Python 2.7.3 was released on April 9, 2012. 2.7.3 includes fixes for several\nreported security issues in 2.7.2: issue 13703 (oCERT-2011-003, hash\ncollision denial of service), issue 14234 (CVE-2012-0876, hash table\ncollisions CPU usage DoS in the expat library), issue 14001 (CVE-2012-0845,\nSimpleXMLRPCServer denial of service), and issue 13885 (CVE-2011-3389,\ndisabling of the CBC IV attack countermeasure in the _ssl module).

    \n

    The Python 2.7 series is scheduled to be the last major version in the 2.x\nseries before 2.x moves into an extended maintenance period. The 2.7 series\ncontains many of the features that were first released in Python 3.1.\nImprovements in this release include:

    \n
      \n
    • An ordered dictionary type
    • \n
    • New unittest features including test skipping, new assert methods, and test\ndiscovery
    • \n
    • A much faster io module
    • \n
    • Automatic numbering of fields in the str.format() method
    • \n
    • Float repr improvements backported from 3.x
    • \n
    • Tile support for Tkinter
    • \n
    • A backport of the memoryview object from 3.x
    • \n
    • Set literals
    • \n
    • Set and dictionary comprehensions
    • \n
    • Dictionary views
    • \n
    • New syntax for nested with statements
    • \n
    • The sysconfig module
    • \n
    \n

    See these resources for further information:

    \n\n
    \n

    Download

    \n

    This is a production release. Please report any bugs\nyou encounter.

    \n

    We currently support these formats for download:

    \n\n

    The source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installer was signed\nby Martin von L\u00f6wis' public key, which has a key id of 7D9DC8D2. The Mac\ninstallers were signed with Ned Deily's key, which has a key id of 6F5E1540.\nThe public keys are located on the download page.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \nc57477edd6d18bd9eeca2f21add73919  11793433  Python-2.7.3.tar.bz2\n62c4c1699170078c469f79ddfed21bc0   9976088  Python-2.7.3.tar.xz\n2cf641732ac23b18d139be077bd906cd  14135620  Python-2.7.3.tgz\n80461c3c60fae64122b51eb20341b453  22178854  python-2.7.3-macosx10.3.dmg\n15c434a11abe7ea5575ef451cfd60f67  18761950  python-2.7.3-macosx10.6.dmg\n008a63d89d67d41801a55ea341a34676  16221250  python-2.7.3-pdb.zip\n5e24faf0b64c59e5f11f1fcfe4644bf3  17376322  python-2.7.3.amd64-pdb.zip\nd11d4aeb7e5425bf28f28ab1c7452886  16420864  python-2.7.3.amd64.msi\nc846d7a5ed186707d3675564a9838cc2  15867904  python-2.7.3.msi\n9401a5f847b0c1078a4c68dccf6cd38a   5898853  python273.chm\n
    \n\n\n\n\n\n
    [1](1, 2) The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here. Also, on Mac OS X 10.6, if you need to\nbuild C extension modules with the 32-bit-only Python installed, you will\nneed Apple Xcode 3, not 4. The 64-bit/32-bit Python can use either\nXcode 3 or Xcode 4.
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 119, + "fields": { + "created": "2014-03-20T22:35:53.105Z", + "updated": "2014-06-10T03:41:34.549Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.5.2", + "slug": "python-252", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2008-02-21T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.5.2/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.5.2 has been replaced by a newer bugfix\n release of Python**. Please download `Python 2.5.6 <../2.5.6/>`__ instead.\n\nPython 2.5.2 was released on February 21st, 2008.\n\nThis is the second bugfix release of Python 2.5. Python 2.5 is now in \nbugfix-only mode; no new features are being added. According to the \nrelease notes, over 100 bugs and patches have been addressed since \nPython 2.5.1, many of them improving the stability of the interpreter,\nand improving its portability.\n\nIf you want the latest production version of Python, use\n`Python 2.7 <../2.7/>`_ or later.\n\nSee the `detailed release notes `_ for more details.\n\nSince the release candidate, we have backed out a few changes that\ndid not work correctly on 64-bit systems. Again, see the release\nnotes.\n\nFor more information on the new features of `Python 2.5.2 <../2.5.2/>`_ see the \n`2.5 highlights <../2.5/highlights>`_ or consult Andrew Kuchling's \n`What's New In Python `_\nfor a more detailed view.\n\nPlease see the separate `bugs page `_ for known issues and the bug \nreporting procedure.\n\nSee also the `license `_.\n\nDownload the release\n--------------------\n\nWindows\n=======\n\nFor x86 processors: `python-2.5.2.msi `_ \n\nFor Win64-Itanium users: `python-2.5.2.ia64.msi `_ \n\nFor Win64-AMD64 users: `python-2.5.2.amd64.msi `_ \n\nThis installer allows for `automated installation\n`_ and `many other new features\n`_.\n\nTo use these installers, the Windows system must support Microsoft\nInstaller 2.0. Just save the installer file to your local machine and \nthen run it to find out if your machine supports\nMSI. \n\nWindows XP and later already have MSI; many older machines will\nalready have MSI installed.\n\nIf your machine lacks Microsoft Installer, you'll have to download it\nfreely from Microsoft for `Windows 95, 98 and Me\n`_\nand for `Windows NT 4.0 and 2000\n`_.\n\nWindows users may also be interested in Mark Hammond's \n`pywin32 `_ package,\navailable from \n`Sourceforge `_.\npywin32 adds a number of Windows-specific extensions to Python, including COM support and the Pythonwin IDE.\n\n\nMacOS X\n=======\n\nFor MacOS X 10.3 and later: `python-2.5.2-macosx.dmg `_. This is a Universal installer.\n\nThe Universal OS X image contains an installer for python \n2.5.2 that works on Mac OS X 10.3.9 and later, on both PPC and Intel \nMacs. The compiled libraries include both bsddb and readline.\n\n\nOther platforms\n===============\n\ngzip-compressed source code: `Python-2.5.2.tgz `_\n\nbzip2-compressed source code: `Python-2.5.2.tar.bz2 `_,\nthe source archive. \n\nThe bzip2-compressed version is considerably smaller, so get that one if\nyour system has the `appropriate tools `_ to deal \nwith it. \n\nUnpack the archive with ``tar -zxvf Python-2.5.2.tgz`` (or \n``bzcat Python-2.5.2.tar.bz2 | tar -xf -``). \nChange to the Python-2.5.2 directory and run the \"./configure\", \"make\", \n\"make install\" commands to compile and install Python. The source archive \nis also suitable for Windows users who feel the need to build their \nown version.\n\n\nWhat's New?\n-----------\n\n* See the `highlights <../2.5/highlights>`_ of the Python 2.5 release.\n\n* Andrew Kuchling's \n `What's New in Python 2.5 `_\n describes the most visible changes since `Python 2.4 <../2.4/>`_ in \n more detail.\n\n* A detailed list of the changes in 2.5.2 can be found in \n the `release notes `_, or the ``Misc/NEWS`` file in the \n source distribution.\n\n* For the full list of changes, you can poke around in \n `Subversion `_.\n\nDocumentation\n-------------\n\nThe documentation has also been updated:\n\n.. * `Browse HTML on-line `_\n\n* Download using `HTTP `_.\n\n* Documentation is available in Windows Help (.chm) format - `Python25.chm `_.\n\n\nFiles, `MD5 `_ checksums, signatures and sizes\n---------------------------------------------------------\n\n ``3f7ca8aa86c6bd275426d63b46e07992`` `Python-2.5.2.tgz `_\n (11584231 bytes, `signature `__)\n\n ``afb5451049eda91fbde10bd5a4b7fadc`` `Python-2.5.2.tar.bz2 `_\n (9806423 bytes, `signature `__)\n\n ``d71e45968fdc4e206bb69fbf4cb82b2d`` `python-2.5.2.msi `_\n (11294720 bytes, `signature `__)\n\n ``d44a5741d54eefd690298e118b0f815a`` `python-2.5.2.amd64.msi `_\n (11301888 bytes, `signature `__)\n\n ``86a5c0b141c52d1d7dc31ec5a1f3ab7c`` `python-2.5.2.ia64.msi `_\n (13523456 bytes, `signature `__)\n\n ``f72ba5ba35bf631eec94870e8ebeba61`` `python-2.5.2-macosx.dmg `_\n (19200390 bytes, `signature `__)\n\n ``4c2f7e124287525a93849b0b53893bf0`` `Python25.chm `_\n (4178494 bytes, `signature `__)\n\n\nThe signatures above were generated with\n`GnuPG `_ using release manager\nMartin v. L\u00f6wis's\n`public key `_ \nwhich has a key id of 7D9DC8D2.\n\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.5.2 was released on February 21st, 2008.

    \n

    This is the second bugfix release of Python 2.5. Python 2.5 is now in\nbugfix-only mode; no new features are being added. According to the\nrelease notes, over 100 bugs and patches have been addressed since\nPython 2.5.1, many of them improving the stability of the interpreter,\nand improving its portability.

    \n

    If you want the latest production version of Python, use\nPython 2.7 or later.

    \n

    See the detailed release notes for more details.

    \n

    Since the release candidate, we have backed out a few changes that\ndid not work correctly on 64-bit systems. Again, see the release\nnotes.

    \n

    For more information on the new features of Python 2.5.2 see the\n2.5 highlights or consult Andrew Kuchling's\nWhat's New In Python\nfor a more detailed view.

    \n

    Please see the separate bugs page for known issues and the bug\nreporting procedure.

    \n

    See also the license.

    \n
    \n

    Download the release

    \n
    \n

    Windows

    \n

    For x86 processors: python-2.5.2.msi

    \n

    For Win64-Itanium users: python-2.5.2.ia64.msi

    \n

    For Win64-AMD64 users: python-2.5.2.amd64.msi

    \n

    This installer allows for automated installation and many other new features.

    \n

    To use these installers, the Windows system must support Microsoft\nInstaller 2.0. Just save the installer file to your local machine and\nthen run it to find out if your machine supports\nMSI.

    \n

    Windows XP and later already have MSI; many older machines will\nalready have MSI installed.

    \n

    If your machine lacks Microsoft Installer, you'll have to download it\nfreely from Microsoft for Windows 95, 98 and Me\nand for Windows NT 4.0 and 2000.

    \n

    Windows users may also be interested in Mark Hammond's\npywin32 package,\navailable from\nSourceforge.\npywin32 adds a number of Windows-specific extensions to Python, including COM support and the Pythonwin IDE.

    \n
    \n
    \n

    MacOS X

    \n

    For MacOS X 10.3 and later: python-2.5.2-macosx.dmg. This is a Universal installer.

    \n

    The Universal OS X image contains an installer for python\n2.5.2 that works on Mac OS X 10.3.9 and later, on both PPC and Intel\nMacs. The compiled libraries include both bsddb and readline.

    \n
    \n
    \n

    Other platforms

    \n

    gzip-compressed source code: Python-2.5.2.tgz

    \n

    bzip2-compressed source code: Python-2.5.2.tar.bz2,\nthe source archive.

    \n

    The bzip2-compressed version is considerably smaller, so get that one if\nyour system has the appropriate tools to deal\nwith it.

    \n

    Unpack the archive with tar -zxvf Python-2.5.2.tgz (or\nbzcat Python-2.5.2.tar.bz2 | tar -xf -).\nChange to the Python-2.5.2 directory and run the "./configure", "make",\n"make install" commands to compile and install Python. The source archive\nis also suitable for Windows users who feel the need to build their\nown version.

    \n
    \n
    \n
    \n

    What's New?

    \n
      \n
    • See the highlights of the Python 2.5 release.
    • \n
    • Andrew Kuchling's\nWhat's New in Python 2.5\ndescribes the most visible changes since Python 2.4 in\nmore detail.
    • \n
    • A detailed list of the changes in 2.5.2 can be found in\nthe release notes, or the Misc/NEWS file in the\nsource distribution.
    • \n
    • For the full list of changes, you can poke around in\nSubversion.
    • \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated:

    \n\n
      \n
    • Download using HTTP.
    • \n
    • Documentation is available in Windows Help (.chm) format - Python25.chm.
    • \n
    \n
    \n
    \n

    Files, MD5 checksums, signatures and sizes

    \n
    \n

    3f7ca8aa86c6bd275426d63b46e07992 Python-2.5.2.tgz\n(11584231 bytes, signature)

    \n

    afb5451049eda91fbde10bd5a4b7fadc Python-2.5.2.tar.bz2\n(9806423 bytes, signature)

    \n

    d71e45968fdc4e206bb69fbf4cb82b2d python-2.5.2.msi\n(11294720 bytes, signature)

    \n

    d44a5741d54eefd690298e118b0f815a python-2.5.2.amd64.msi\n(11301888 bytes, signature)

    \n

    86a5c0b141c52d1d7dc31ec5a1f3ab7c python-2.5.2.ia64.msi\n(13523456 bytes, signature)

    \n

    f72ba5ba35bf631eec94870e8ebeba61 python-2.5.2-macosx.dmg\n(19200390 bytes, signature)

    \n

    4c2f7e124287525a93849b0b53893bf0 Python25.chm\n(4178494 bytes, signature)

    \n
    \n

    The signatures above were generated with\nGnuPG using release manager\nMartin v. L\u00f6wis's\npublic key\nwhich has a key id of 7D9DC8D2.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 120, + "fields": { + "created": "2014-03-20T22:35:58.134Z", + "updated": "2014-06-10T03:41:25.782Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.2.0", + "slug": "python-220", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2001-12-21T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.2/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nrelease.--> See Python 2.2.3 for a patch\nrelease which supersedes 2.2. \n\n
    \n Important: This release is vulnerable to the problem described in\n security advisory PSF-2006-001\n \"Buffer overrun in repr() of unicode strings in wide unicode\n builds (UCS-4)\". This fix is included in\n Python 2.4.4\n and Python 2.5. If you need to remain with Python 2.2,\n there's a patch available from the security advisory page.\n
    \n\n

    We are extremely pleased to announce the release of Python\n2.2 (final), on December 21, 2001. Our thanks to everyone who has\ncontributed to the Python 2.2 development cycle, our CVS committers,\nPEP authors, alpha and beta testers, bug and patch submitters, etc.\nYou know who you are! :)\n\n

    Please see the separate bugs page for known\nbugs in Python 2.2 final, and the bug reporting procedure.\n\n

    Download the release

    \n\n

    Windows users should download Python-2.2.exe, the\nWindows installer, from one of the download locations below,\nrun it, and follow the friendly instructions on the screen to complete\nthe installation.\nWindows users may also be interested in Mark\nHammond's win32all, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.\n\n

    Update (2002/04/23): Windows users should download a new UNWISE.EXE from Wise that\nfixes a bug which could cause the uninstaller to disappear in some\ncircumstances. Just drop it over the old uninstaller, which will be\nat C:\\Python22\\UNWISE.EXE unless you chose a different\ndirectory at install time.\n\n

    Macintosh users can find Python 2.2 prereleases on Jack\nJansen's MacPython\npage (after following the link, scroll towards the bottom). This\nis sometimes one or two releases behind, so be patient. (MacOS X\nusers who have a C compiler can also build from the source tarball\nbelow.)\n\n

    All others should download Python-2.2.tgz, the\nsource tarball, from one of the download locations below, and\ndo the usual \"gunzip; tar; configure; make\" dance.\n\n\n\n

    Download locations

    \n\n
      \n\n
    • Python.org: HTTP.\n>\n
    \n\n

    MD5 checksums and sizes

    \n\n
    \n    568cf638ef5fc4edfdb4cc878d661129 Python-2.2.exe (7074248 bytes)\n    87febf0780c8e18454022d34b2ca70a0 Python-2.2.tgz (6542443 bytes)\n    9ae1d572cbd2bfd4e0c4b92ac11387c6 UNWISE.EXE (162304 bytes)\n
    \n\n\n

    What's New?

    \n\n

    Highlights

    \n\n
      \n\n

    • Tim Peters developed a brand new Windows installer using Wise 8.1,\ngenerously donated to us by \nWise Solutions.\n\n

    • Type/Class Unification: A new way of introspecting instances of\nbuilt-in types (PEP\n252) and the ability to subclass built-in types (PEP 253) have been\nadded. Here is a tutorial on these\nfeatures.\n\n

    • Iterators (PEP 234) and\ngenerators (PEP\n255) were added. The second PEP adds a new reserved word,\n\"yield\", which must be enabled by adding \"from __future__ import\ngenerators\" to the top of every module that uses it. Without that,\n\"yield\" is treated as an identifier but a warning is issued.\n\n

    • The floor division operator // has been added as outlined in \nPEP\n238. The / operator still provides classic division (and will until\nPython 3.0) unless \"from __future__ import division\" is included, in\nwhich case the / operator will provide true division.\n\n

    • Integer overflow is now a thing of the past; when small integer\noperations have a result that's too large to represent as a small\ninteger, a long integer is now returned. See PEP 237.\n\n

    • Barry Warsaw's mimelib\npackage is now part of the standard library. It has been renamed to the\nemail package, and there have been some API changes.\n\n

    • Fredrik Lundh's\nxmlrpclib is now a standard library module.\nThis provides full client-side XML-RPC support. A server class is\nalso provided (module SimpleXMLRPCServer).\n\n

    • Large file support is now enabled on Win32 and Win64 platforms,\nand automatically configured (at least on Linux and Solaris).\n\n
    \n\n\n

    Other sources of information on 2.2

    \n\n\n\n\n

    Documentation

    \n\n

    The documentation has been updated too:\n\n

      \n\n
    • Browse HTML on-line\n\n
    • Download using HTTP.\n\n\n
    ", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    release.--> See <a href="../2.2.3/">Python 2.2.3</a> for a patch\nrelease which supersedes 2.2.</i> </blockquote>

    \n
    \n
    <blockquote>
    \n
    <b>Important:</b> This release is vulnerable to the problem described in\n<a href="/news/security/PSF-2006-001/">security advisory PSF-2006-001</a>\n"Buffer overrun in repr() of unicode strings in wide unicode\nbuilds (UCS-4)". This fix is included in\n<a href="../2.4.4/">Python 2.4.4</a>\nand <a href="../2.5/">Python 2.5</a>. If you need to remain with Python 2.2,\nthere's a patch available from the security advisory page.
    \n
    \n

    </blockquote>

    \n

    <p>We are extremely pleased to announce the release of <b>Python\n2.2</b> (final), on December 21, 2001. Our thanks to everyone who has\ncontributed to the Python 2.2 development cycle, our CVS committers,\nPEP authors, alpha and beta testers, bug and patch submitters, etc.\nYou know who you are! :)

    \n

    <p>Please see the separate <a href="bugs">bugs page</a> for known\nbugs in Python 2.2 final, and the bug reporting procedure.

    \n

    <h3>Download the release</h3>

    \n

    <p><b>Windows</b> users should download <i>Python-2.2.exe</i>, the\nWindows installer, from one of the <i>download locations</i> below,\nrun it, and follow the friendly instructions on the screen to complete\nthe installation.\nWindows users may also be interested in Mark\nHammond's <a\nhref="http://starship.python.net/crew/mhammond/"\n>win32all</a>, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.

    \n

    <p><b>Update (2002/04/23):</b> Windows users should download a new <a\nhref="/ftp/python/2.2/UNWISE.EXE">UNWISE.EXE</a> from Wise that\nfixes a bug which could cause the uninstaller to disappear in some\ncircumstances. Just drop it over the old uninstaller, which will be\nat <tt>C:Python22UNWISE.EXE</tt> unless you chose a different\ndirectory at install time.

    \n

    <p><b>Macintosh</b> users can find Python 2.2 prereleases on Jack\nJansen's <a href="http://www.cwi.nl/~jack/macpython.html">MacPython\npage</a> (after following the link, scroll towards the bottom). This\nis sometimes one or two releases behind, so be patient. (MacOS X\nusers who have a C compiler can also build from the source tarball\nbelow.)

    \n

    <p><b>All others</b> should download <i>Python-2.2.tgz</i>, the\nsource tarball, from one of the <i>download locations</i> below, and\ndo the usual "gunzip; tar; configure; make" dance.

    \n

    <!--\n<p><b>Red Hat Linux</b> users may also try to download the <a\nhref="rpms.html">RPMs</a> made available by Sean Reifschneider.\n-->

    \n

    <h4>Download locations</h4>

    \n

    <ul>

    \n

    <li>Python.org: <a href="/ftp/python/2.2/" >HTTP</a>.\n>\n</ul>

    \n

    <h4><a href="md5sum.py">MD5</a> checksums and sizes</h4>

    \n
    \n
    <pre>
    \n
    568cf638ef5fc4edfdb4cc878d661129 <a href="/ftp/python/2.2/Python-2.2.exe">Python-2.2.exe</a> (7074248 bytes)\n87febf0780c8e18454022d34b2ca70a0 <a href="/ftp/python/2.2/Python-2.2.tgz">Python-2.2.tgz</a> (6542443 bytes)\n9ae1d572cbd2bfd4e0c4b92ac11387c6 <a href="/ftp/python/2.2/UNWISE.EXE">UNWISE.EXE</a> (162304 bytes)
    \n
    \n

    </pre>

    \n

    <h3>What's New?</h3>

    \n

    <h4>Highlights</h4>

    \n

    <ul>

    \n

    <p><li>Tim Peters developed a brand new Windows installer using Wise 8.1,\ngenerously donated to us by\n<a href="http://www.wisesolutions.com/">Wise Solutions</a>.

    \n

    <p><li>Type/Class Unification: A new way of introspecting instances of\nbuilt-in types (<a href="/dev/peps/pep-0252.html">PEP\n252</a>) and the ability to subclass built-in types (<a\nhref="/dev/peps/pep-0253.html">PEP 253</a>) have been\nadded. Here is a <a href="descrintro">tutorial</a> on these\nfeatures.

    \n

    <p><li>Iterators (<a\nhref="/dev/peps/pep-0234.html">PEP 234</a>) and\ngenerators (<a href="/dev/peps/pep-0255.html">PEP\n255</a>) were added. The second PEP adds a new reserved word,\n"yield", which must be enabled by adding "from __future__ import\ngenerators" to the top of every module that uses it. Without that,\n"yield" is treated as an identifier but a warning is issued.

    \n

    <p><li>The floor division operator // has been added as outlined in\n<a href="/dev/peps/pep-0238.html">PEP\n238</a>. The / operator still provides classic division (and will until\nPython 3.0) unless "from __future__ import division" is included, in\nwhich case the / operator will provide true division.

    \n

    <p><li>Integer overflow is now a thing of the past; when small integer\noperations have a result that's too large to represent as a small\ninteger, a long integer is now returned. See <a\nhref="/dev/peps/pep-0237.html">PEP 237</a>.

    \n

    <p><li> Barry Warsaw's <a href="http://mimelib.sf.net/">mimelib</a>\npackage is now part of the standard library. It has been renamed to the\n<a href="http://python.sourceforge.net/devel-docs/lib/module-email.html"\n>email</a> package, and there have been some API changes.

    \n

    <p><li> Fredrik Lundh's\n<a href="http://python.sourceforge.net/devel-docs/lib/module-xmlrpclib.html"\n>xmlrpclib</a> is now a standard library module.\nThis provides full client-side XML-RPC support. A server class is\nalso provided (module SimpleXMLRPCServer).

    \n

    <p><li>Large file support is now enabled on Win32 and Win64 platforms,\nand automatically configured (at least on Linux and Solaris).

    \n

    </ul>

    \n

    <h4>Other sources of information on 2.2</h4>

    \n

    <ul>

    \n

    <p><li><a href="descrintro">Unifying types and classes in Python\n2.2</a> by Guido van Rossum -- a tutorial on the material covered by\nPEPs 252 and 253.

    \n

    <p><li><a href="/doc/2.2.3/whatsnew/whatsnew22.html">What's New in Python\n2.2</a> by Andrew Kuchling describes the most visible changes since <a\nhref="../2.1/">Python 2.1</a>.

    \n

    <p><li>Guido gave a talk on what's new in 2.2 at the ZPUG-DC meeting\non September 26, 2001; here are his <a\nhref="http://zpug.org/dc/">powerpoint slides</a>.

    \n

    <p><li><a href=\n"http://www-106.ibm.com/developerworks/library/l-pycon.html?n-l-9271"\n>Charming Python: Iterators and simple generators</a> by David Mertz\non IBM developerWorks.

    \n

    <p><li>For a detailed list of all but the most trivial changes, see\nthe <a href="NEWS.txt">release notes</a>.

    \n

    <p><li>In the source distribution, the file Misc/NEWS has all the news.

    \n

    </ul>

    \n

    <h3>Documentation</h3>

    \n

    <p>The documentation has been updated too:

    \n

    <ul>

    \n

    <li><a href="/doc/2.2/">Browse</a> HTML on-line

    \n

    <li>Download using <a href="/ftp/python/doc/2.2/" >HTTP</a>.

    \n

    </ul>

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 121, + "fields": { + "created": "2014-03-20T22:35:59.166Z", + "updated": "2014-06-10T03:41:40.357Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.6.8", + "slug": "python-268", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2012-04-10T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.6.8/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.6.8** has been replaced by a newer security-fix\n source-only release. Please download `Python 2.6.9 `_\n instead.\n\n **Python 2.6.8** is a security-fix source-only release for Python `2.6.7\n <../2.6.7/>`_, fixing several reported security issues: `issue 13703`_\n (oCERT-2011-003, CVE-2012-1150, hash collision denial of service), `issue\n 14234`_ (CVE-2012-0876, pyexpat hash randomization), `issue 14001`_\n (CVE-2012-0845, SimpleXMLRPCServer denial of service), and `issue 13885`_\n (CVE-2011-3389, disabling of the CBC IV attack countermeasure in the _ssl\n module). Python 2.6.8 was released on April 10, 2012.\n \n The last binary release of Python 2.6 was `2.6.6 <../2.6.6/>`_.\n\n.. _`issue 13703`: http://bugs.python.org/issue13703\n.. _`issue 14234`: http://bugs.python.org/issue14234\n.. _`issue 14001`: http://bugs.python.org/issue14001\n.. _`issue 13885`: http://bugs.python.org/issue13885\n\nPython 2.6 is now in security-fix-only mode; no new features are being added,\nand no new bug fix releases are planned. We intend to provide source-only\nsecurity fixes for the Python 2.6 series until October 2013 (five years after\nthe 2.6 final release). For ongoing maintenance releases, please see the\nPython `2.7 <../2.7/>`_ series. The `NEWS file `_ lists every\nchange in each alpha, beta, and release candidate of Python 2.6.\n\n * `What's New in Python 2.6 `_.\n * Report bugs at ``_.\n * Read the `Python license `_.\n * `PEP 361 `_ set out the development schedule for 2.6.\n\nHelp fund Python and its community by `donating to the Python Software Foundation `_.\n\nDownload\n--------\n\nThis is a final release; we currently support these formats:\n\n * `Gzipped source tar ball (2.6.8) `_\n `(sig) `__\n\n * `Bzipped source tar ball (2.6.8) `_\n `(sig) `__\n\nMD5 checksums and sizes of the released files::\n\n f6c1781f5d73ab7dfa5181f43ea065f6 13282574 Python-2.6.8.tgz\n c6e0420a21d8b23dee8b0195c9b9a125 11127915 Python-2.6.8.tar.bz2\n\nThe signatures for the source tarballs above were generated with\n`GnuPG `_ using release manager\nBarry Warsaw's\n`public key `_ \nwhich has a key id of A74B06BF. \n\nNotes\n-----\n\nDevelopers on Ubuntu 11.04 (Natty Narwhal) or later may experience\nproblems when building Python 2.6 from source, due to the adoption of\n`multiarch`_ support. See `issue 9762`_ for additional details and\nworkarounds. The version of Python 2.6 in Ubuntu itself has been\nappropriately patched, so the Ubuntu source package should build just\nfine.\n\n.. _`multiarch`: https://wiki.ubuntu.com/MultiarchSpec\n.. _`issue 9762`: http://bugs.python.org/issue9762\n\n\nDocumentation\n-------------\n\nThe documentation has also been updated. You can `browse the HTML on-line\n`_ or `download the HTML\n`_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.6 is now in security-fix-only mode; no new features are being added,\nand no new bug fix releases are planned. We intend to provide source-only\nsecurity fixes for the Python 2.6 series until October 2013 (five years after\nthe 2.6 final release). For ongoing maintenance releases, please see the\nPython 2.7 series. The NEWS file lists every\nchange in each alpha, beta, and release candidate of Python 2.6.

    \n
    \n\n
    \n

    Help fund Python and its community by donating to the Python Software Foundation.

    \n
    \n

    Download

    \n

    This is a final release; we currently support these formats:

    \n
    \n\n
    \n

    MD5 checksums and sizes of the released files:

    \n
    \nf6c1781f5d73ab7dfa5181f43ea065f6  13282574  Python-2.6.8.tgz\nc6e0420a21d8b23dee8b0195c9b9a125  11127915  Python-2.6.8.tar.bz2\n
    \n

    The signatures for the source tarballs above were generated with\nGnuPG using release manager\nBarry Warsaw's\npublic key\nwhich has a key id of A74B06BF.

    \n
    \n
    \n

    Notes

    \n

    Developers on Ubuntu 11.04 (Natty Narwhal) or later may experience\nproblems when building Python 2.6 from source, due to the adoption of\nmultiarch support. See issue 9762 for additional details and\nworkarounds. The version of Python 2.6 in Ubuntu itself has been\nappropriately patched, so the Ubuntu source package should build just\nfine.

    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated. You can browse the HTML on-line or download the HTML.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 122, + "fields": { + "created": "2014-03-20T22:36:00.215Z", + "updated": "2014-06-10T03:41:37.750Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.6.3", + "slug": "python-263", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2009-10-02T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.6.3/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.6.3 has been replaced by a newer bugfix release of Python**.\n Please download `Python 2.6.6 <../2.6.6/>`__ instead.\n\nPython 2.6.3 was released on October 2, 2009.\n\nPython 2.6 is now in bugfix-only mode; no new features are being\nadded. Somewhere near 100 bugs have been fixed since the release of Python\n2.6.2. The `NEWS file `_ lists every change in each alpha,\nbeta, and release candidate of Python 2.6.\n\n * `What's New in Python 2.6 `_.\n * Report bugs at ``_.\n * Read the `Python license `_.\n * `PEP 361 `_ set out the development schedule for 2.6.\n\nHelp fund Python and its community by `donating to the Python Software Foundation `_.\n\nDownload\n--------\n\nThis is a final release; we currently support these formats:\n\n * `Gzipped source tar ball (2.6.3) `_\n `(sig) `__\n\n * `Bzipped source tar ball (2.6.3) `_\n `(sig) `__\n\n * `Windows x86 MSI Installer (2.6.3) `_\n `(sig) `__\n\n * `Windows X86-64 MSI Installer (2.6.3)\n `_ [1]_\n `(sig) `__\n\n * `Mac Installer disk image (2.6.3)\n `_ `(sig)\n `__\n\n\nMD5 checksums and sizes of the released files::\n\n c4842532170fc0a6f9e878497efc0ddf 13319447 Python-2.6.3.tgz\n 8755fc03075b1701ca3f13932e6ade9f 11249543 Python-2.6.3.tar.bz2\n f7382afe57e21ced274eeec614dbda37 15214592 python-2.6.3.amd64.msi\n 9ff76b6101fdb1c935970476ed428569 14871552 python-2.6.3.msi\n 114d26c741d4c0b8ee91191a7a06aa2a 20329350 python-2.6.3-macosx.dmg\n\n.. 0588e5bb28ffc748473c39a63e4b98e8 5154141 python262.chm\n\nThe signatures for the source tarballs above were generated with\n`GnuPG `_ using release manager\nBarry Warsaw's\n`public key `_ \nwhich has a key id of A74B06BF. \nThe Windows installers were signed by Martin von L\u00f6wis'\n`public key `_ \nwhich has a key id of 7D9DC8D2.\nThe Mac disk image was signed by \nRonald Oussoren's public key which has a key id of E6DF025C.\n\nDocumentation\n-------------\n\nThe documentation has also been updated. You can `browse the HTML on-line\n`_ or `download the HTML\n`_.\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.6.3 was released on October 2, 2009.

    \n

    Python 2.6 is now in bugfix-only mode; no new features are being\nadded. Somewhere near 100 bugs have been fixed since the release of Python\n2.6.2. The NEWS file lists every change in each alpha,\nbeta, and release candidate of Python 2.6.

    \n
    \n\n
    \n

    Help fund Python and its community by donating to the Python Software Foundation.

    \n
    \n

    Download

    \n

    This is a final release; we currently support these formats:

    \n
    \n\n
    \n

    MD5 checksums and sizes of the released files:

    \n
    \nc4842532170fc0a6f9e878497efc0ddf  13319447  Python-2.6.3.tgz\n8755fc03075b1701ca3f13932e6ade9f  11249543  Python-2.6.3.tar.bz2\nf7382afe57e21ced274eeec614dbda37  15214592  python-2.6.3.amd64.msi\n9ff76b6101fdb1c935970476ed428569  14871552  python-2.6.3.msi\n114d26c741d4c0b8ee91191a7a06aa2a  20329350  python-2.6.3-macosx.dmg\n
    \n\n

    The signatures for the source tarballs above were generated with\nGnuPG using release manager\nBarry Warsaw's\npublic key\nwhich has a key id of A74B06BF.\nThe Windows installers were signed by Martin von L\u00f6wis'\npublic key\nwhich has a key id of 7D9DC8D2.\nThe Mac disk image was signed by\nRonald Oussoren's public key which has a key id of E6DF025C.

    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated. You can browse the HTML on-line or download the HTML.

    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 123, + "fields": { + "created": "2014-03-20T22:36:01.998Z", + "updated": "2014-06-10T03:41:33.853Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.5.0", + "slug": "python-250", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2006-09-19T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.5/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.5 has been replaced by a newer bugfix\n release of Python**. Please download `Python 2.5.6 `__ instead.\n\nPython 2.5 was released on September 19th 2006. There's a bunch of\nplaces you can look for more information on what's new in this release --\nsee the \"What's New\" section further down this page.\n\nThis is a final release, and should be suitable for production use.\n\nPEP 356 includes the schedule and will be updated as the schedule evolves. \nAt this point, any testing you can do would be greatly, greatly appreciated.\n\nExtension authors should note that changes to improve Python's support for \n64 bit systems mean that some C extension modules may very well break.\n`This post `_ \nhas some pointers to more information for C extension authors.\n\nPlease see the separate `bugs page `_ for known issues and the bug\nreporting procedure.\n\nSee also the `license `_.\n\nDownload the release\n--------------------\n\nStarting with the Python 2.4 releases the **Windows** Python\ninstaller is being distributed as a Microsoft Installer (.msi) file.\nTo use this, the Windows system must support Microsoft Installer\n2.0. Just save the installer file,\n`Python-2.5.msi `_,\nto your local machine, then double-click python-2.5.msi to find\nout if your machine supports MSI. If it doesn't, you'll need to\ninstall Microsoft Installer first. Many other packages (such as Word\nand Office) also include MSI, so you may already have it on your system.\nIf not, you can download it freely from Microsoft for\n`Windows 95, 98 and Me `_\nand for\n`Windows NT 4.0 and 2000 `_.\nWindows XP and later already have MSI; many older machines will already\nhave MSI installed. \n\nThe new format installer allows for\n`automated installation `_ and\n`many other shiny new features `_.\nThere are also separate installers for Win64-Itanium users \n(on XP/2003 64-bit Itanium Edition) -\n`Python-2.5.ia64.msi `_\nand for Win64 users on AMD64 machines \n(on XP/2003/Vista x64 Edition) -\n`Python-2.5.amd64.msi `_.\n\n\nWindows users may also be interested in Mark Hammond's \n`pywin32 `_ package,\navailable from \n`Sourceforge `_.\npywin32 adds a number of Windows-specific extensions to Python, including \nCOM support and the Pythonwin IDE.\n\n.. XXX re-enable once there's a 2.5-compatible version\n.. RPMs for Fedora Core 3 (and similar) are available, see \n.. `the 2.5 RPMs page `_\n\nUsers of Mac OS X 10.3 and later can install a universal binary (suitable for\nboth PowerPC and Intel machines) from `python-2.5-macosx.dmg `_ . \nDownload to the desktop and open the .dmg file to install.\n\n**All others** should download either \n`python-2.5.tgz `_ or\n`python-2.5.tar.bz2 `_,\nthe source archive. The tar.bz2 is considerably smaller, so get that one if\nyour system has the `appropriate tools `_ to deal \nwith it. Unpack it with ``tar -zxvf Python-2.5.tgz`` (or \n``bzcat Python-2.5.tar.bz2 | tar -xf -``). \nChange to the Python-2.5 directory and run the \"./configure\", \"make\", \n\"make install\" commands to compile and install Python. \n\n Since this is a new version of Python, you may want to use the \n \"make altinstall\" command instead of \"make install\" - this will \n install a \"python2.5\" binary without touching the existing \"python\" \n binary.\n\nThe source archive is also suitable for Windows users who feel the need \nto build their own version.\n\nWhat's New?\n-----------\n\n* See some of the `highlights `_ of the Python 2.5 release.\n\n* Andrew Kuchling's \n `What's New in Python 2.5 `_\n describes the most visible changes since `Python 2.4 <../2.4/>`_ in \n more detail. \n\n* `PEP 356 `_ has information on a bunch of the new \n features added in 2.5, as well as pointers to the relevant PEPs.\n\n* A detailed list of the changes in Python 2.5 can be found in \n the `release notes `_, or the ``Misc/NEWS`` file in the \n source distribution.\n\n* IDLE has its \n `own release notes `_, or see the ``Lib/idlelib/NEWS.txt`` file in the \n source distribution.\n\n* For the full list of changes, you can poke around in \n `Subversion `_.\n\nDocumentation\n-------------\n\nThe documentation has also been updated:\n\n* `Browse HTML on-line `_\n\n* Download using `HTTP `_.\n\n* Documentation is available in Windows Help (.chm) format - `Python25.chm `_.\n\n\nFiles, `MD5 `_ checksums, signatures and sizes\n---------------------------------------------------------\n\n ``bc1b74f90a472a6c0a85481aaeb43f95`` `Python-2.5.tgz `_\n (11019675 bytes, `signature `__)\n\n ``ddb7401e711354ca83b7842b733825a3`` `Python-2.5.tar.bz2 `_\n (9357099 bytes, `signature `__)\n\n ``33fffe927e4a84aa728d7a47165b2059`` `python-2.5.msi `_\n (10695680 bytes, `signature `__)\n\n ``c9ebc47dfab4fdc78d895ed6ab715db0`` `python-2.5.amd64.msi `_\n (10889216 bytes, `signature `__)\n\n ``dec95012739692625939e3ec6572fa5f`` `python-2.5.ia64.msi `_\n (12986368 bytes, `signature `__)\n\n ``9ea85494251357970d83a023658fddc7`` `python-2.5-macosx.dmg `_\n (18749464 bytes, `signature `__)\n\n ``d8bfc10c7fd6505271ef5c755999c7cc`` `Python25.chm `_\n (4160038 bytes, `signature `__)\n\n\nThe signatures above were generated with\n`GnuPG `_ using release manager\nAnthony Baxter's\n`public key `_ \nwhich has a key id of 6A45C816.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.5 was released on September 19th 2006. There's a bunch of\nplaces you can look for more information on what's new in this release --\nsee the "What's New" section further down this page.

    \n

    This is a final release, and should be suitable for production use.

    \n

    PEP 356 includes the schedule and will be updated as the schedule evolves.\nAt this point, any testing you can do would be greatly, greatly appreciated.

    \n

    Extension authors should note that changes to improve Python's support for\n64 bit systems mean that some C extension modules may very well break.\nThis post\nhas some pointers to more information for C extension authors.

    \n

    Please see the separate bugs page for known issues and the bug\nreporting procedure.

    \n

    See also the license.

    \n
    \n

    Download the release

    \n

    Starting with the Python 2.4 releases the Windows Python\ninstaller is being distributed as a Microsoft Installer (.msi) file.\nTo use this, the Windows system must support Microsoft Installer\n2.0. Just save the installer file,\nPython-2.5.msi,\nto your local machine, then double-click python-2.5.msi to find\nout if your machine supports MSI. If it doesn't, you'll need to\ninstall Microsoft Installer first. Many other packages (such as Word\nand Office) also include MSI, so you may already have it on your system.\nIf not, you can download it freely from Microsoft for\nWindows 95, 98 and Me\nand for\nWindows NT 4.0 and 2000.\nWindows XP and later already have MSI; many older machines will already\nhave MSI installed.

    \n

    The new format installer allows for\nautomated installation and\nmany other shiny new features.\nThere are also separate installers for Win64-Itanium users\n(on XP/2003 64-bit Itanium Edition) -\nPython-2.5.ia64.msi\nand for Win64 users on AMD64 machines\n(on XP/2003/Vista x64 Edition) -\nPython-2.5.amd64.msi.

    \n

    Windows users may also be interested in Mark Hammond's\npywin32 package,\navailable from\nSourceforge.\npywin32 adds a number of Windows-specific extensions to Python, including\nCOM support and the Pythonwin IDE.

    \n\n\n\n

    Users of Mac OS X 10.3 and later can install a universal binary (suitable for\nboth PowerPC and Intel machines) from python-2.5-macosx.dmg .\nDownload to the desktop and open the .dmg file to install.

    \n

    All others should download either\npython-2.5.tgz or\npython-2.5.tar.bz2,\nthe source archive. The tar.bz2 is considerably smaller, so get that one if\nyour system has the appropriate tools to deal\nwith it. Unpack it with tar -zxvf Python-2.5.tgz (or\nbzcat Python-2.5.tar.bz2 | tar -xf -).\nChange to the Python-2.5 directory and run the "./configure", "make",\n"make install" commands to compile and install Python.

    \n
    \nSince this is a new version of Python, you may want to use the\n"make altinstall" command instead of "make install" - this will\ninstall a "python2.5" binary without touching the existing "python"\nbinary.
    \n

    The source archive is also suitable for Windows users who feel the need\nto build their own version.

    \n
    \n
    \n

    What's New?

    \n
      \n
    • See some of the highlights of the Python 2.5 release.
    • \n
    • Andrew Kuchling's\nWhat's New in Python 2.5\ndescribes the most visible changes since Python 2.4 in\nmore detail.
    • \n
    • PEP 356 has information on a bunch of the new\nfeatures added in 2.5, as well as pointers to the relevant PEPs.
    • \n
    • A detailed list of the changes in Python 2.5 can be found in\nthe release notes, or the Misc/NEWS file in the\nsource distribution.
    • \n
    • IDLE has its\nown release notes, or see the Lib/idlelib/NEWS.txt file in the\nsource distribution.
    • \n
    • For the full list of changes, you can poke around in\nSubversion.
    • \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated:

    \n\n
    \n
    \n

    Files, MD5 checksums, signatures and sizes

    \n
    \n

    bc1b74f90a472a6c0a85481aaeb43f95 Python-2.5.tgz\n(11019675 bytes, signature)

    \n

    ddb7401e711354ca83b7842b733825a3 Python-2.5.tar.bz2\n(9357099 bytes, signature)

    \n

    33fffe927e4a84aa728d7a47165b2059 python-2.5.msi\n(10695680 bytes, signature)

    \n

    c9ebc47dfab4fdc78d895ed6ab715db0 python-2.5.amd64.msi\n(10889216 bytes, signature)

    \n

    dec95012739692625939e3ec6572fa5f python-2.5.ia64.msi\n(12986368 bytes, signature)

    \n

    9ea85494251357970d83a023658fddc7 python-2.5-macosx.dmg\n(18749464 bytes, signature)

    \n

    d8bfc10c7fd6505271ef5c755999c7cc Python25.chm\n(4160038 bytes, signature)

    \n
    \n

    The signatures above were generated with\nGnuPG using release manager\nAnthony Baxter's\npublic key\nwhich has a key id of 6A45C816.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 124, + "fields": { + "created": "2014-03-20T22:36:11.761Z", + "updated": "2014-06-10T03:41:34.912Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.5.3", + "slug": "python-253", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2008-12-19T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.5.3/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.5.3 has been replaced by a newer bugfix\n release of Python**. Please download `Python 2.5.6 <../2.5.6/>`__ instead.\n\nPython 2.5.3 was released on December 19th, 2008.\n\nThis is the last bugfix release of Python 2.5. Python 2.5 is now in \nbugfix-only mode; no new features are being added. According to the \nrelease notes, about 80 bugs and patches have been addressed since \nPython 2.5.2, many of them improving the stability of the interpreter,\nand improving its portability. Future releases will only address \nsecurity isses, and no binaries or documentation updates will be \nprovided in future releases of Python 2.5.\n\nIf you want the latest production version of Python, use\n`Python 2.7.2 <../2.7.2/>`_ or later.\n\nSee the `detailed release notes `_ for more details.\n\nFor more information on the new features of `Python 2.5 <../2.5/>`_ see the \n`2.5 highlights <../2.5/highlights>`_ or consult Andrew Kuchling's \n`What's New In Python `_\nfor a more detailed view.\n\nPlease see the separate `bugs page `_ for known issues and the bug \nreporting procedure.\n\nSee also the `license `_.\n\nDownload the release\n--------------------\n\nWindows\n=======\n\nFor x86 processors: `python-2.5.3.msi `_ \n\nFor Win64-Itanium users: `python-2.5.3.ia64.msi `_ \n\nFor Win64-AMD64 users: `python-2.5.3.amd64.msi `_ \n\nThis installer allows for `automated installation\n`_ and `many other new features\n`_.\n\nTo use these installers, the Windows system must support Microsoft\nInstaller 2.0. Just save the installer file to your local machine and \nthen run it to find out if your machine supports\nMSI. \n\nWindows XP and later already have MSI; many older machines will\nalready have MSI installed.\n\nIf your machine lacks Microsoft Installer, you'll have to download it\nfreely from Microsoft for `Windows 95, 98 and Me\n`_\nand for `Windows NT 4.0 and 2000\n`_.\n\nWindows users may also be interested in Mark Hammond's \n`pywin32 `_ package,\navailable from \n`Sourceforge `_.\npywin32 adds a number of Windows-specific extensions to Python, including COM support and the Pythonwin IDE.\n\n\nMacOS X\n=======\n\nFor MacOS X 10.3 and later: `python-2.5.3-macosx.dmg `_. This is a Universal installer.\n\nThe Universal OS X image contains an installer for python \n2.5.3 that works on Mac OS X 10.3.9 and later, on both PPC and Intel \nMacs. The compiled libraries include both bsddb and readline.\n\n\nOther platforms\n===============\n\ngzip-compressed source code: `Python-2.5.3.tgz `_\n\nbzip2-compressed source code: `Python-2.5.3.tar.bz2 `_,\nthe source archive. \n\nThe bzip2-compressed version is considerably smaller, so get that one if\nyour system has the `appropriate tools `_ to deal \nwith it. \n\nUnpack the archive with ``tar -zxvf Python-2.5.3.tgz`` (or \n``bzcat Python-2.5.3.tar.bz2 | tar -xf -``). \nChange to the Python-2.5.3 directory and run the \"./configure\", \"make\", \n\"make install\" commands to compile and install Python. The source archive \nis also suitable for Windows users who feel the need to build their \nown version.\n\n\nWhat's New?\n-----------\n\n* See the `highlights <../2.5/highlights>`_ of the Python 2.5 release.\n\n* Andrew Kuchling's \n `What's New in Python 2.5 `_\n describes the most visible changes since `Python 2.4 <../2.4/>`_ in \n more detail.\n\n* A detailed list of the changes in 2.5.3 can be found in \n the `release notes `_, or the ``Misc/NEWS`` file in the \n source distribution.\n\n* For the full list of changes, you can poke around in \n `Subversion `_.\n\nDocumentation\n-------------\n\nThe documentation has also been updated:\n\n* `Browse HTML on-line `_\n\n.. * Download using `HTTP `_.\n\n.. * Documentation is available in Windows Help (.chm) format - `Python25.chm `_.\n\n\nFiles, `MD5 `_ checksums, signatures and sizes\n---------------------------------------------------------\n\n ``a971f8928d6beb31ae0de56f7034d6a2`` `Python-2.5.3.tgz `_\n (11605520 bytes, `signature `__)\n\n ``655a0e63c00bbf1277092ea5c58e9b34`` `Python-2.5.3.tar.bz2 `_\n (9821271 bytes, `signature `__)\n\n ``5566b7420b12c53d1f2bba3b27a4c3a9`` `python-2.5.3.msi `_\n (11323904 bytes, `signature `__)\n\n ``887b2cfbbfec3d1966f8d63f206cf0d2`` `python-2.5.3.amd64.msi `_\n (11337728 bytes, `signature `__)\n\n ``99ce6ee0e871824e324cd98f0b795aa0`` `python-2.5.3.ia64.msi `_\n (13568512 bytes, `signature `__)\n\n ``924bb2ef0cfd932aab4f3f018a722bef`` `python-2.5.3-macosx.dmg `_\n (11323904 bytes, `signature `__)\n\n ``ad881bc4e6755c57cbf5fa1cdd594369`` `Python25.chm `_\n (4182160 bytes, `signature `__)\n\n\nThe signatures above were generated with\n`GnuPG `_ using release manager\nMartin v. L\u00f6wis's\n`public key `_ \nwhich has a key id of 7D9DC8D2.\n\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.5.3 was released on December 19th, 2008.

    \n

    This is the last bugfix release of Python 2.5. Python 2.5 is now in\nbugfix-only mode; no new features are being added. According to the\nrelease notes, about 80 bugs and patches have been addressed since\nPython 2.5.2, many of them improving the stability of the interpreter,\nand improving its portability. Future releases will only address\nsecurity isses, and no binaries or documentation updates will be\nprovided in future releases of Python 2.5.

    \n

    If you want the latest production version of Python, use\nPython 2.7.2 or later.

    \n

    See the detailed release notes for more details.

    \n

    For more information on the new features of Python 2.5 see the\n2.5 highlights or consult Andrew Kuchling's\nWhat's New In Python\nfor a more detailed view.

    \n

    Please see the separate bugs page for known issues and the bug\nreporting procedure.

    \n

    See also the license.

    \n
    \n

    Download the release

    \n
    \n

    Windows

    \n

    For x86 processors: python-2.5.3.msi

    \n

    For Win64-Itanium users: python-2.5.3.ia64.msi

    \n

    For Win64-AMD64 users: python-2.5.3.amd64.msi

    \n

    This installer allows for automated installation and many other new features.

    \n

    To use these installers, the Windows system must support Microsoft\nInstaller 2.0. Just save the installer file to your local machine and\nthen run it to find out if your machine supports\nMSI.

    \n

    Windows XP and later already have MSI; many older machines will\nalready have MSI installed.

    \n

    If your machine lacks Microsoft Installer, you'll have to download it\nfreely from Microsoft for Windows 95, 98 and Me\nand for Windows NT 4.0 and 2000.

    \n

    Windows users may also be interested in Mark Hammond's\npywin32 package,\navailable from\nSourceforge.\npywin32 adds a number of Windows-specific extensions to Python, including COM support and the Pythonwin IDE.

    \n
    \n
    \n

    MacOS X

    \n

    For MacOS X 10.3 and later: python-2.5.3-macosx.dmg. This is a Universal installer.

    \n

    The Universal OS X image contains an installer for python\n2.5.3 that works on Mac OS X 10.3.9 and later, on both PPC and Intel\nMacs. The compiled libraries include both bsddb and readline.

    \n
    \n
    \n

    Other platforms

    \n

    gzip-compressed source code: Python-2.5.3.tgz

    \n

    bzip2-compressed source code: Python-2.5.3.tar.bz2,\nthe source archive.

    \n

    The bzip2-compressed version is considerably smaller, so get that one if\nyour system has the appropriate tools to deal\nwith it.

    \n

    Unpack the archive with tar -zxvf Python-2.5.3.tgz (or\nbzcat Python-2.5.3.tar.bz2 | tar -xf -).\nChange to the Python-2.5.3 directory and run the "./configure", "make",\n"make install" commands to compile and install Python. The source archive\nis also suitable for Windows users who feel the need to build their\nown version.

    \n
    \n
    \n
    \n

    What's New?

    \n
      \n
    • See the highlights of the Python 2.5 release.
    • \n
    • Andrew Kuchling's\nWhat's New in Python 2.5\ndescribes the most visible changes since Python 2.4 in\nmore detail.
    • \n
    • A detailed list of the changes in 2.5.3 can be found in\nthe release notes, or the Misc/NEWS file in the\nsource distribution.
    • \n
    • For the full list of changes, you can poke around in\nSubversion.
    • \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated:

    \n\n\n\n
    \n
    \n

    Files, MD5 checksums, signatures and sizes

    \n
    \n

    a971f8928d6beb31ae0de56f7034d6a2 Python-2.5.3.tgz\n(11605520 bytes, signature)

    \n

    655a0e63c00bbf1277092ea5c58e9b34 Python-2.5.3.tar.bz2\n(9821271 bytes, signature)

    \n

    5566b7420b12c53d1f2bba3b27a4c3a9 python-2.5.3.msi\n(11323904 bytes, signature)

    \n

    887b2cfbbfec3d1966f8d63f206cf0d2 python-2.5.3.amd64.msi\n(11337728 bytes, signature)

    \n

    99ce6ee0e871824e324cd98f0b795aa0 python-2.5.3.ia64.msi\n(13568512 bytes, signature)

    \n

    924bb2ef0cfd932aab4f3f018a722bef python-2.5.3-macosx.dmg\n(11323904 bytes, signature)

    \n

    ad881bc4e6755c57cbf5fa1cdd594369 Python25.chm\n(4182160 bytes, signature)

    \n
    \n

    The signatures above were generated with\nGnuPG using release manager\nMartin v. L\u00f6wis's\npublic key\nwhich has a key id of 7D9DC8D2.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 125, + "fields": { + "created": "2014-03-20T22:36:16.287Z", + "updated": "2014-06-10T03:41:36.859Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.6.1", + "slug": "python-261", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2008-12-04T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.6.1/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.6.1 has been replaced by a newer bugfix release of Python**.\n Please download `Python 2.6.6 <../2.6.6/>`__ instead.\n\nPython 2.6.1 was released on December 4th, 2008.\n\nThis is the first bugfix release of Python 2.6. Python 2.6 is now in\nbugfix-only mode; no new features are being added. Dozens of bugs that were\nreported since the release of 2.6 final have been fixed.\n\nSee the `detailed release notes `_ for more details.\n\n * Andrew Kuchling's guide to `What's New in Python 2.6\n `_.\n * `NEWS `_ file contains a listing of everything that's new in each\n alpha, beta, and release candidate of Python 2.6.\n * `PEP 361 `_.\n\nPlease report bugs at ``_\n\nSee also the `license `_.\n\n\nPython 2.6.1 Released: 04-Dec-2008\n==================================\n\nDownload\n--------\n\nThis is a production release; we currently support these formats:\n\n * `Gzipped source tar ball (2.6.1) `_\n `(sig) `__\n\n * `Bzipped source tar ball (2.6.1) `_\n `(sig) `__\n\n * `Windows x86 MSI Installer (2.6.1) `_\n `(sig) `__\n\n * `Windows X86-64 MSI Installer (2.6.1)\n `_ [1]_ \n `(sig) `__\n\n * `Mac Installer disk image (2.6.1)\n `_ `(sig)\n `__\n\nMD5 checksums and sizes of the released files::\n\n 52b3d421f42bacfdcaf55f56c0ff9be4 13046455 Python-2.6.1.tgz\n e81c2f0953aa60f8062c05a4673f2be0 10960385 Python-2.6.1.tar.bz2\n 9ed57add157ce069c0f8584f11b77991 14481408 python-2.6.1.msi\n ece88acad43e854587a46aaa8a070c9c 14803456 python-2.6.1.amd64.msi\n ea72cc669a33d266c34aa9ef5d660933 23986137 python-2.6.1-macosx2008-12-06.dmg\n\n.. *The Windows releases will be available soon*\n\nThe signatures for the source tarballs above were generated with\n`GnuPG `_ using release manager\nBarry Warsaw's\n`public key `_ \nwhich has a key id of EA5BBD71. \nThe Windows installers were signed by Martin von L\u00f6wis'\n`public key `_ \nwhich has a key id of 7D9DC8D2.\nThe signature on the Mac disk image was signed by \nBenjamin Peterson's public key which has a key id of A4135B38.\n\nDocumentation\n-------------\n\nThe documentation has also been updated. You can `browse the HTML on-line\n`_ or `download the HTML\n`_:\n\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.6.1 was released on December 4th, 2008.

    \n

    This is the first bugfix release of Python 2.6. Python 2.6 is now in\nbugfix-only mode; no new features are being added. Dozens of bugs that were\nreported since the release of 2.6 final have been fixed.

    \n

    See the detailed release notes for more details.

    \n
    \n
      \n
    • Andrew Kuchling's guide to What's New in Python 2.6.
    • \n
    • NEWS file contains a listing of everything that's new in each\nalpha, beta, and release candidate of Python 2.6.
    • \n
    • PEP 361.
    • \n
    \n
    \n

    Please report bugs at http://bugs.python.org

    \n

    See also the license.

    \n
    \n

    Python 2.6.1 Released: 04-Dec-2008

    \n
    \n

    Download

    \n

    This is a production release; we currently support these formats:

    \n
    \n\n
    \n

    MD5 checksums and sizes of the released files:

    \n
    \n52b3d421f42bacfdcaf55f56c0ff9be4  13046455  Python-2.6.1.tgz\ne81c2f0953aa60f8062c05a4673f2be0  10960385  Python-2.6.1.tar.bz2\n9ed57add157ce069c0f8584f11b77991  14481408  python-2.6.1.msi\nece88acad43e854587a46aaa8a070c9c  14803456  python-2.6.1.amd64.msi\nea72cc669a33d266c34aa9ef5d660933  23986137  python-2.6.1-macosx2008-12-06.dmg\n
    \n\n

    The signatures for the source tarballs above were generated with\nGnuPG using release manager\nBarry Warsaw's\npublic key\nwhich has a key id of EA5BBD71.\nThe Windows installers were signed by Martin von L\u00f6wis'\npublic key\nwhich has a key id of 7D9DC8D2.\nThe signature on the Mac disk image was signed by\nBenjamin Peterson's public key which has a key id of A4135B38.

    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated. You can browse the HTML on-line or download the HTML:

    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 126, + "fields": { + "created": "2014-03-20T22:36:18.085Z", + "updated": "2014-06-10T03:41:37.294Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.6.2", + "slug": "python-262", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2009-04-14T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.6.2/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.6.2 has been replaced by a newer bugfix release of Python**.\n Please download `Python 2.6.6 <../2.6.6/>`__ instead.\n\nPython 2.6.2 was released on April 14, 2009.\n\nPython 2.6 is now in bugfix-only mode; no new features are being\nadded. Dozens of bugs reported since the release of 2.6.1 have been\nfixed. The `NEWS file `_ lists every change in each alpha,\nbeta, and release candidate of Python 2.6.\n\n * `What's New in Python 2.6 `_.\n * Report bugs at ``_.\n * Read the `Python license `_.\n * `PEP 361 `_ set out the development schedule for 2.6.\n\nHelp fund Python and its community by `donating to the Python Software Foundation `_.\n\nDownload\n--------\n\nThis is a final release; we currently support these formats:\n\n * `Gzipped source tar ball (2.6.2) `_\n `(sig) `__\n\n * `Bzipped source tar ball (2.6.2) `_\n `(sig) `__\n\n * `Windows x86 MSI Installer (2.6.2) `_\n `(sig) `__\n\n * `Windows X86-64 MSI Installer (2.6.2)\n `_ [1]_\n `(sig) `__\n\n * `Mac Installer disk image (2.6.2)\n `_ `(sig)\n `__\n\n * `Updated Windows help file\n `_ `(sig)\n `__\n\nMD5 checksums and sizes of the released files::\n\n 60e64fe55eb4e23abdd4d77fdad08c3d 13281177 Python-2.6.2.tgz\n 245db9f1e0f09ab7e0faaa0cf7301011 11156901 Python-2.6.2.tar.bz2\n d570f2f5cacad0d3338e2da2d105ab57 14868480 python-2.6.2.amd64.msi\n 4bca00171aa614b4886b889290c4fed9 14536192 python-2.6.2.msi\n 82490e5ad8e79893fe26abdc2a25fb88 24197663 python-2.6.2-macosx2009-04-16.dmg\n 0588e5bb28ffc748473c39a63e4b98e8 5154141 python262.chm\n\n**Note:** *Due to an error in the production of the release candidates\n(2.6.2c1), the release candidates already used the version number of the final\nrelease in some places. As a consequence, upgrading the Windows installation\nfrom 2.6.2c1 to 2.6.2 (final) will fail. Users of 2.6.2c1 need to uninstall it\nmanually before installing this release.*\n\n**Note:** *In the Windows installers, the index of the Windows help files\ndoes not work correctly. Users affected by this problem can replace \nDoc/python262.chm in their installation with the updated release of that file.*\n\nThe signatures for the source tarballs above were generated with\n`GnuPG `_ using release manager\nBarry Warsaw's\n`public key `_ \nwhich has a key id of EA5BBD71. \nThe Windows installers were signed by Martin von L\u00f6wis'\n`public key `_ \nwhich has a key id of 7D9DC8D2.\nThe Mac disk image was signed by \nRonald Oussoren's public key which has a key id of E6DF025C.\n\nDocumentation\n-------------\n\nThe documentation has also been updated. You can `browse the HTML on-line\n`_ or `download the HTML\n`_.\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.6.2 was released on April 14, 2009.

    \n

    Python 2.6 is now in bugfix-only mode; no new features are being\nadded. Dozens of bugs reported since the release of 2.6.1 have been\nfixed. The NEWS file lists every change in each alpha,\nbeta, and release candidate of Python 2.6.

    \n
    \n\n
    \n

    Help fund Python and its community by donating to the Python Software Foundation.

    \n
    \n

    Download

    \n

    This is a final release; we currently support these formats:

    \n
    \n\n
    \n

    MD5 checksums and sizes of the released files:

    \n
    \n60e64fe55eb4e23abdd4d77fdad08c3d  13281177  Python-2.6.2.tgz\n245db9f1e0f09ab7e0faaa0cf7301011  11156901  Python-2.6.2.tar.bz2\nd570f2f5cacad0d3338e2da2d105ab57  14868480  python-2.6.2.amd64.msi\n4bca00171aa614b4886b889290c4fed9  14536192  python-2.6.2.msi\n82490e5ad8e79893fe26abdc2a25fb88  24197663  python-2.6.2-macosx2009-04-16.dmg\n0588e5bb28ffc748473c39a63e4b98e8   5154141  python262.chm\n
    \n

    Note: Due to an error in the production of the release candidates\n(2.6.2c1), the release candidates already used the version number of the final\nrelease in some places. As a consequence, upgrading the Windows installation\nfrom 2.6.2c1 to 2.6.2 (final) will fail. Users of 2.6.2c1 need to uninstall it\nmanually before installing this release.

    \n

    Note: In the Windows installers, the index of the Windows help files\ndoes not work correctly. Users affected by this problem can replace\nDoc/python262.chm in their installation with the updated release of that file.

    \n

    The signatures for the source tarballs above were generated with\nGnuPG using release manager\nBarry Warsaw's\npublic key\nwhich has a key id of EA5BBD71.\nThe Windows installers were signed by Martin von L\u00f6wis'\npublic key\nwhich has a key id of 7D9DC8D2.\nThe Mac disk image was signed by\nRonald Oussoren's public key which has a key id of E6DF025C.

    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated. You can browse the HTML on-line or download the HTML.

    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 127, + "fields": { + "created": "2014-03-20T22:36:20.361Z", + "updated": "2014-06-10T03:41:34.212Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.5.1", + "slug": "python-251", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2007-04-19T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.5.1/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.5.1 has been replaced by a newer bugfix\n release of Python**. Please download `Python 2.5.6 <../2.5.6/>`__ instead.\n\nPython 2.5.1 was released on April 18th, 2007.\n\nThis is the first bugfix release of Python 2.5. Python 2.5 is now in \nbugfix-only mode; no new features are being added. According to the \nrelease notes, over 150 bugs and patches have been squished since \nPython 2.5, including a fair number in the new AST compiler (an internal\nimplementation detail of the Python interpreter).\n\nSee the `detailed release notes `_ for more details.\n\nSince the release candidate, we have backed out a couple of small changes \nthat caused 2.5.1 to behave differently to 2.5. Again, see the release \nnotes for more.\n\nFor more information on the new features of `Python 2.5.1 <../2.5.1/>`_ see the \n`2.5 highlights <../2.5/highlights>`_ or consult Andrew Kuchling's \n`What's New In Python `_\nfor a more detailed view.\n\nPlease see the separate `bugs page `_ for known issues and the bug \nreporting procedure.\n\nSee also the `license `_.\n\nDownload the release\n--------------------\n\nWindows\n=======\n\nFor x86 processors: `python-2.5.1.msi `_ \n\nFor Win64-Itanium users: `python-2.5.1.ia64.msi `_ \n\nFor Win64-AMD64 users: `python-2.5.1.amd64.msi `_ \n\nThis installer allows for `automated installation\n`_ and `many other new features\n`_.\n\nTo use these installers, the Windows system must support Microsoft\nInstaller 2.0. Just save the installer file to your local machine and \nthen run it to find out if your machine supports\nMSI. \n\nWindows XP and later already have MSI; many older machines will\nalready have MSI installed.\n\nIf your machine lacks Microsoft Installer, you'll have to download it\nfreely from Microsoft for `Windows 95, 98 and Me\n`_\nand for `Windows NT 4.0 and 2000\n`_.\n\nWindows users may also be interested in Mark Hammond's \n`pywin32 `_ package,\navailable from \n`Sourceforge `_.\npywin32 adds a number of Windows-specific extensions to Python, including COM support and the Pythonwin IDE.\n\n.. RPMs for Fedora Core 3 (and similar) are available, see \n.. `the 2.5.1 RPMs page `_\n\n\nMacOS X\n=======\n\nFor MacOS X 10.3 and later: `python-2.5.1-macosx.dmg `_. This is a Universal installer.\n\nThe Universal OS X image contains an installer for python \n2.5.1 that works on Mac OS X 10.3.9 and later, on both PPC and Intel \nMacs. The compiled libraries include both bsddb and readline.\n\n\nOther platforms\n===============\n\ngzip-compressed source code: `Python-2.5.1.tgz `_\n\nbzip2-compressed source code: `Python-2.5.1.tar.bz2 `_,\nthe source archive. \n\nThe bzip2-compressed version is considerably smaller, so get that one if\nyour system has the `appropriate tools `_ to deal \nwith it. \n\nUnpack the archive with ``tar -zxvf Python-2.5.1.tgz`` (or \n``bzcat Python-2.5.1.tar.bz2 | tar -xf -``). \nChange to the Python-2.5.1 directory and run the \"./configure\", \"make\", \n\"make install\" commands to compile and install Python. The source archive \nis also suitable for Windows users who feel the need to build their \nown version.\n\n\nWhat's New?\n-----------\n\n* See the `highlights <../2.5/highlights>`_ of the Python 2.5 release.\n\n* Andrew Kuchling's \n `What's New in Python 2.5 `_\n describes the most visible changes since `Python 2.4 <../2.4/>`_ in \n more detail.\n\n* A detailed list of the changes in 2.5.1 can be found in \n the `release notes `_, or the ``Misc/NEWS`` file in the \n source distribution.\n\n* For the full list of changes, you can poke around in \n `Subversion `_.\n\nDocumentation\n-------------\n\nThe documentation has also been updated:\n\n.. * `Browse HTML on-line `_\n\n* Download using `HTTP `_.\n\n* Documentation is available in Windows Help (.chm) format - `Python25.chm `_.\n\n\nFiles, `MD5 `_ checksums, signatures and sizes\n---------------------------------------------------------\n\n ``cca695828df8adc3e69b637af07522e1`` `Python-2.5.1.tgz `_\n (11060830 bytes, `signature `__)\n\n ``70084ffa561660f07de466c2c8c4842d`` `Python-2.5.1.tar.bz2 `_\n (9383651 bytes, `signature `__)\n\n ``a1d1a9c07bc4c78bd8fa05dd3efec87f`` `python-2.5.1.msi `_\n (10970624 bytes, `signature `__)\n\n ``5cf96e05ad6721f90cdd9da146981640`` `python-2.5.1.amd64.msi `_\n (10983936 bytes, `signature `__)\n\n ``75347f7637a998765701088261bdd5cd`` `python-2.5.1.ia64.msi `_\n (13201920 bytes, `signature `__)\n\n ``59796329bc160a3a1e2abc01bf30bb50`` `python-2.5.1-macosx.dmg `_\n (18719946 bytes, `signature `__)\n\n ``ee652cd776cf930a0a40ff64c436f0b1`` `Python25.chm `_\n (4176034 bytes, `signature `__)\n\n\nThe signatures above were generated with\n`GnuPG `_ using release manager\nAnthony Baxter's\n`public key `_ \nwhich has a key id of 6A45C816.\n\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.5.1 was released on April 18th, 2007.

    \n

    This is the first bugfix release of Python 2.5. Python 2.5 is now in\nbugfix-only mode; no new features are being added. According to the\nrelease notes, over 150 bugs and patches have been squished since\nPython 2.5, including a fair number in the new AST compiler (an internal\nimplementation detail of the Python interpreter).

    \n

    See the detailed release notes for more details.

    \n

    Since the release candidate, we have backed out a couple of small changes\nthat caused 2.5.1 to behave differently to 2.5. Again, see the release\nnotes for more.

    \n

    For more information on the new features of Python 2.5.1 see the\n2.5 highlights or consult Andrew Kuchling's\nWhat's New In Python\nfor a more detailed view.

    \n

    Please see the separate bugs page for known issues and the bug\nreporting procedure.

    \n

    See also the license.

    \n
    \n

    Download the release

    \n
    \n

    Windows

    \n

    For x86 processors: python-2.5.1.msi

    \n

    For Win64-Itanium users: python-2.5.1.ia64.msi

    \n

    For Win64-AMD64 users: python-2.5.1.amd64.msi

    \n

    This installer allows for automated installation and many other new features.

    \n

    To use these installers, the Windows system must support Microsoft\nInstaller 2.0. Just save the installer file to your local machine and\nthen run it to find out if your machine supports\nMSI.

    \n

    Windows XP and later already have MSI; many older machines will\nalready have MSI installed.

    \n

    If your machine lacks Microsoft Installer, you'll have to download it\nfreely from Microsoft for Windows 95, 98 and Me\nand for Windows NT 4.0 and 2000.

    \n

    Windows users may also be interested in Mark Hammond's\npywin32 package,\navailable from\nSourceforge.\npywin32 adds a number of Windows-specific extensions to Python, including COM support and the Pythonwin IDE.

    \n\n\n
    \n
    \n

    MacOS X

    \n

    For MacOS X 10.3 and later: python-2.5.1-macosx.dmg. This is a Universal installer.

    \n

    The Universal OS X image contains an installer for python\n2.5.1 that works on Mac OS X 10.3.9 and later, on both PPC and Intel\nMacs. The compiled libraries include both bsddb and readline.

    \n
    \n
    \n

    Other platforms

    \n

    gzip-compressed source code: Python-2.5.1.tgz

    \n

    bzip2-compressed source code: Python-2.5.1.tar.bz2,\nthe source archive.

    \n

    The bzip2-compressed version is considerably smaller, so get that one if\nyour system has the appropriate tools to deal\nwith it.

    \n

    Unpack the archive with tar -zxvf Python-2.5.1.tgz (or\nbzcat Python-2.5.1.tar.bz2 | tar -xf -).\nChange to the Python-2.5.1 directory and run the "./configure", "make",\n"make install" commands to compile and install Python. The source archive\nis also suitable for Windows users who feel the need to build their\nown version.

    \n
    \n
    \n
    \n

    What's New?

    \n
      \n
    • See the highlights of the Python 2.5 release.
    • \n
    • Andrew Kuchling's\nWhat's New in Python 2.5\ndescribes the most visible changes since Python 2.4 in\nmore detail.
    • \n
    • A detailed list of the changes in 2.5.1 can be found in\nthe release notes, or the Misc/NEWS file in the\nsource distribution.
    • \n
    • For the full list of changes, you can poke around in\nSubversion.
    • \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated:

    \n\n
      \n
    • Download using HTTP.
    • \n
    • Documentation is available in Windows Help (.chm) format - Python25.chm.
    • \n
    \n
    \n
    \n

    Files, MD5 checksums, signatures and sizes

    \n
    \n

    cca695828df8adc3e69b637af07522e1 Python-2.5.1.tgz\n(11060830 bytes, signature)

    \n

    70084ffa561660f07de466c2c8c4842d Python-2.5.1.tar.bz2\n(9383651 bytes, signature)

    \n

    a1d1a9c07bc4c78bd8fa05dd3efec87f python-2.5.1.msi\n(10970624 bytes, signature)

    \n

    5cf96e05ad6721f90cdd9da146981640 python-2.5.1.amd64.msi\n(10983936 bytes, signature)

    \n

    75347f7637a998765701088261bdd5cd python-2.5.1.ia64.msi\n(13201920 bytes, signature)

    \n

    59796329bc160a3a1e2abc01bf30bb50 python-2.5.1-macosx.dmg\n(18719946 bytes, signature)

    \n

    ee652cd776cf930a0a40ff64c436f0b1 Python25.chm\n(4176034 bytes, signature)

    \n
    \n

    The signatures above were generated with\nGnuPG using release manager\nAnthony Baxter's\npublic key\nwhich has a key id of 6A45C816.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 128, + "fields": { + "created": "2014-03-20T22:36:24.791Z", + "updated": "2014-06-10T03:41:27.593Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.3.1", + "slug": "python-231", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2003-09-23T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.3.1/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\npatch release release which supersedes earlier releases of 2.3.\n\n\n
    \n Important: This release is vulnerable to the problem described in\n security advisory PSF-2006-001\n \"Buffer overrun in repr() of unicode strings in wide unicode\n builds (UCS-4)\". This fix is included in\n Python 2.4.4\n and Python 2.5. If you need to remain with Python 2.3,\n there's a patch available from the security advisory page.\n
    \n\n
    Important:\n2.3.5 includes a security\nfix for SimpleXMLRPCServer.py.\n
    \n\n

    We are pleased to announce the release of Python 2.3.1 on\nSeptember 23, 2003. This is a bug-fix release for Python 2.3 and \nsupersedes the original Python 2.3 release.\n\n

    No new features have been added in Python 2.3.1. Instead, this\nrelease is the result of two months of bug hunting. A number of\nobscure bugs that could cause crashes have been fixed, as well as a\nnumber of memory leaks.

    \n\n

    Please see the separate bugs page for known\nissues and the bug reporting procedure.\n\n

    Download the release

    \n\n

    Windows users should download the Windows installer, Python-2.3.1.exe, run\nit and follow the friendly instructions on the screen to complete the\ninstallation. Windows users may also be interested in Mark Hammond's\nwin32all, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.

    \n\n

    RPMs suitable for Redhat and source RPMs for other RPM-using\noperating systems are available from the RPMs page.\n\n

    All others should download Python-2.3.1.tgz, the\nsource archive. Unpack it with \n\"tar -zxvf Python-2.3.1.tgz\". Change to the Python-2.3.1 directory\nand run the \"./configure\", \"make\", \"make install\" commands to compile \nand install Python.\n\n\n\n

    What's New?

    \n\n
      \n\n
    • See the highlights of the\nPython 2.3 release. As noted, the 2.3.1 release is a bugfix release\nof 2.3. \n\n

    • The Windows installer now includes the documentation in searchable \nhtmlhelp format, rather than individual HTML files. You can still download the\nindividual HTML files.\n\n

    • Andrew Kuchling's What's New\nin Python 2.3 describes the most visible changes since Python 2.2 in more detail.\n\n

    • A detailed list of the changes is in the release notes, or the Misc/NEWS file in\nthe source distribution.\n\n

    • For the full list of changes, you can poke around in CVS, or see\nthe ChangeLog of individual checkin\nmessages since 2.3.\n\n

    • The PSF's press\nrelease announcing 2.3.1.\n\n\n
    \n\n

    Documentation

    \n\n

    The documentation has been updated too:\n\n

    \n\n

    The interim documentation for\nnew-style classes, last seen for Python 2.2.3, is still relevant\nfor Python 2.3.1. Raymond Hettinger has also written a tutorial on\ndescriptors, introduced in Python 2.2. \nIn addition, The Python 2.3 Method\nResolution Order is a nice paper by Michele Simionato that\nexplains the C3 MRO algorithm (new in Python 2.3) clearly. (Also\navailable as reStructured Text. Copied with\npermission.)\n\n

    Files, MD5 checksums, signatures, and sizes

    \n\n
    \na3dcbe1c7f173c8e3c7cce28495016ae Python-2.3.1.tgz (8558611 bytes, signature)\n2cff4d8a54ad3535376b7bce57538f7a Python-2.3.1.exe (9583272 bytes, signature)\n
    \n\n

    The signatures above were generated with\nGnuPG using the release manager's\n(Anthony Baxter)\npublic key \nwhich has a key id of 6A45C816.\n\n

     ", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    patch release release which supersedes earlier releases of 2.3.</i>\n</blockquote>

    \n
    \n
    <blockquote>
    \n
    <b>Important:</b> This release is vulnerable to the problem described in\n<a href="/news/security/PSF-2006-001/">security advisory PSF-2006-001</a>\n"Buffer overrun in repr() of unicode strings in wide unicode\nbuilds (UCS-4)". This fix is included in\n<a href="../2.4.4/">Python 2.4.4</a>\nand <a href="../2.5/">Python 2.5</a>. If you need to remain with Python 2.3,\nthere's a patch available from the security advisory page.
    \n
    \n

    </blockquote>

    \n

    <blockquote> <b>Important:\n2.3.5 includes a <a href="/news/security/PSF-2005-001/" >security\nfix</a> for SimpleXMLRPCServer.py.</b>\n</blockquote>

    \n

    <p>We are pleased to announce the release of <b>Python 2.3.1</b> on\nSeptember 23, 2003. This is a bug-fix release for Python 2.3 and\nsupersedes the original <a href="../2.3/">Python 2.3</a> release.

    \n

    <p>No new features have been added in Python 2.3.1. Instead, this\nrelease is the result of two months of bug hunting. A number of\nobscure bugs that could cause crashes have been fixed, as well as a\nnumber of memory leaks.</p>

    \n

    <p>Please see the separate <a href="bugs">bugs page</a> for known\nissues and the bug reporting procedure.

    \n

    <h3>Download the release</h3>

    \n

    <p><b>Windows</b> users should download the Windows installer, <a\nhref="/ftp/python/2.3.1/Python-2.3.1.exe">Python-2.3.1.exe</a>, run\nit and follow the friendly instructions on the screen to complete the\ninstallation. Windows users may also be interested in Mark Hammond's\n<a href="http://starship.python.net/crew/mhammond/"\n>win32all</a>, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.</p>

    \n

    <p>RPMs suitable for Redhat and source RPMs for other RPM-using\noperating systems are available from <a href="rpms">the RPMs page</a>.

    \n

    <p><b>All others</b> should download <a\nhref="/ftp/python/2.3.1/Python-2.3.1.tgz">Python-2.3.1.tgz</a>, the\nsource archive. Unpack it with\n"tar&nbsp;-zxvf&nbsp;Python-2.3.1.tgz". Change to the Python-2.3.1 directory\nand run the "./configure", "make", "make&nbsp;install" commands to compile\nand install Python.

    \n

    <!--\n<p><b>Macintosh</b> users can find binaries and source on\nJack Jansen's\n<a href="http://homepages.cwi.nl/~jack/macpython/">MacPython page</a>.\nMac OS X users who have a C compiler (which comes with the\n<a href="http://developer.apple.com/tools/macosxtools.html">OS X\nDeveloper Tools</a>) can also build from the source tarball below.\n-->

    \n

    <h3>What's New?</h3>

    \n

    <ul>

    \n

    <li>See the <a href="../2.3/highlights">highlights</a> of the\nPython 2.3 release. As noted, the 2.3.1 release is a bugfix release\nof 2.3.

    \n

    <p><li>The Windows installer now includes the documentation in searchable\nhtmlhelp format, rather than individual HTML files. You can still download the\n<a href="/ftp/python/doc/2.3.1/">individual HTML files</a>.

    \n

    <p><li>Andrew Kuchling's <a href="/doc/2.3/whatsnew/">What's New\nin Python 2.3</a> describes the most visible changes since <a\nhref="../2.2.3/">Python 2.2</a> in more detail.

    \n

    <p><li>A detailed list of the changes is in the <a\nhref="NEWS.txt">release notes</a>, or the <tt>Misc/NEWS</tt> file in\nthe source distribution.

    \n

    <p><li>For the full list of changes, you can poke around in <a\nhref="http://sourceforge.net/cvs/?group_id=5470">CVS</a>, or see\nthe <a href="ChangeLog.txt">ChangeLog</a> of individual checkin\nmessages since 2.3.

    \n

    <p><li>The PSF's <a href="/psf/press-release/pr20030923">press\nrelease</a> announcing 2.3.1.

    \n

    </ul>

    \n

    <h3>Documentation</h3>

    \n

    <p>The documentation has been updated too:

    \n

    <ul>

    \n

    <li><a href="/doc/2.3.1/">Browse HTML documentation on-line</a>

    \n

    <li>Download using <a href="/ftp/python/doc/2.3.1/">HTTP</a>.

    \n

    </ul>

    \n

    <p>The <a href="../2.2.3/descrintro">interim documentation for\nnew-style classes</a>, last seen for Python 2.2.3, is still relevant\nfor Python 2.3.1. Raymond Hettinger has also written a <a\nhref="http://users.rcn.com/python/download/Descriptor.htm">tutorial on\ndescriptors</a>, introduced in Python 2.2.\nIn addition, <a href="/download/releases/2.3/mro">The Python 2.3 Method\nResolution Order</a> is a nice paper by Michele Simionato that\nexplains the C3 MRO algorithm (new in Python 2.3) clearly. (Also\navailable as <a href="/download/releases/2.3/mro/mro.txt">reStructured Text</a>. Copied with\npermission.)

    \n

    <h3>Files, <a href="md5sum.py">MD5</a> checksums, signatures, and sizes</h3>

    \n

    <pre>\na3dcbe1c7f173c8e3c7cce28495016ae <a href="/ftp/python/2.3.1/Python-2.3.1.tgz">Python-2.3.1.tgz</A> (8558611 bytes, <a href="Python-2.3.1.tgz.asc">signature</a>)\n2cff4d8a54ad3535376b7bce57538f7a <a href="/ftp/python/2.3.1/Python-2.3.1.exe">Python-2.3.1.exe</A> (9583272 bytes, <a href="Python-2.3.1.exe.asc">signature</a>)\n</pre>

    \n

    <p>The signatures above were generated with\n<a href="http://www.gnupg.org">GnuPG</a> using the release manager's\n(Anthony Baxter)\n<a href="/download#pubkeys">public key</a>\nwhich has a key id of 6A45C816.

    \n

    <p>&nbsp;

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 129, + "fields": { + "created": "2014-03-20T22:36:25.753Z", + "updated": "2014-06-10T03:41:45.110Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.1.1", + "slug": "python-311", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2009-08-17T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v3.1.1/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n**Python 3.1.1 has been superseded by 3.1.2.** You can download `3.1.2 `_.\n\nPython 3.1.1 was released on August 17th, 2009.\n\nPython 3.1 is a continuation of the work started by `Python 3.0\n`_, the **new backwards-incompatible series** of\nPython. Improvements in this release include:\n\n- An ordered dictionary type\n- Various optimizations to the int type\n- New unittest features including test skipping and new assert methods.\n- A much faster io module\n- Tile support for Tkinter\n- A pure Python reference implementation of the import statement\n- New syntax for nested with statements\n\nSee these resources for further information:\n\n* `What's New in 3.1? `_\n* `What's new in Python 3000 `_\n* `Python 3.1.1 Change Log `_\n* `Online Documentation `_\n* Conversion tool for Python 2.x code:\n `2to3 `_\n* Report bugs at ``_.\n\nHelp fund Python and its community by `donating to the Python Software\nFoundation `_.\n\n\nDownload\n--------\n\nThis is a production release.\n\nWe currently support these formats for download:\n\n* `Gzipped source tar ball (3.1.1) `_ `(sig)\n `__\n\n* `Bzipped source tar ball (3.1.1) `_\n `(sig) `__\n\n* `Windows x86 MSI Installer (3.1.1) `_ `(sig)\n `__\n\n* `Windows X86-64 MSI Installer (3.1.1) `_ [1]_\n `(sig) `__\n\n* `Mac Installer disk image (3.1.1) `_ `(sig)\n `__\n\nThe source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installers are signed\nwith Martin von L\u00f6wis' public key which has a key id of 7D9DC8D2. The public\nkeys are located on the `download page `_.\n\nMD5 checksums and sizes of the released files::\n\n f1317dbb2398374d6691edd5bff1b91d 11525876 python-3.1.1.tgz\n d1ddd9f16e3c6a51c7208f33518cd674 9510105 python-3.1.1.tar.bz2\n d31e3e91c2ddd3e5ea7c40abe436917e 14130176 python-3.1.1.amd64.msi\n e05a6134b920ae86f0e33b8a43a801b3 13737984 python-3.1.1.msi\n 9c7f85cc7fb5a2fa533d338c88229633 17148746 python-3.1.1.dmg\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 3.1.1 has been superseded by 3.1.2. You can download 3.1.2.

    \n

    Python 3.1.1 was released on August 17th, 2009.

    \n

    Python 3.1 is a continuation of the work started by Python 3.0, the new backwards-incompatible series of\nPython. Improvements in this release include:

    \n
      \n
    • An ordered dictionary type
    • \n
    • Various optimizations to the int type
    • \n
    • New unittest features including test skipping and new assert methods.
    • \n
    • A much faster io module
    • \n
    • Tile support for Tkinter
    • \n
    • A pure Python reference implementation of the import statement
    • \n
    • New syntax for nested with statements
    • \n
    \n

    See these resources for further information:

    \n\n

    Help fund Python and its community by donating to the Python Software\nFoundation.

    \n
    \n

    Download

    \n

    This is a production release.

    \n

    We currently support these formats for download:

    \n\n

    The source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installers are signed\nwith Martin von L\u00f6wis' public key which has a key id of 7D9DC8D2. The public\nkeys are located on the download page.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \nf1317dbb2398374d6691edd5bff1b91d  11525876 python-3.1.1.tgz\nd1ddd9f16e3c6a51c7208f33518cd674   9510105 python-3.1.1.tar.bz2\nd31e3e91c2ddd3e5ea7c40abe436917e  14130176 python-3.1.1.amd64.msi\ne05a6134b920ae86f0e33b8a43a801b3  13737984 python-3.1.1.msi\n9c7f85cc7fb5a2fa533d338c88229633  17148746 python-3.1.1.dmg\n
    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 130, + "fields": { + "created": "2014-03-20T22:36:27.391Z", + "updated": "2014-06-10T01:44:26.592Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.3.0", + "slug": "python-230", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2003-07-29T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/15fc83c505e3/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\npatch release release which supersedes earlier releases of 2.3.\n\n\n
    \n Important: This release is vulnerable to the problem described in\n security advisory PSF-2006-001 \n \"Buffer overrun in repr() of unicode strings in wide unicode\n builds (UCS-4)\". This fix is included in \n Python 2.4.4\n and Python 2.5. If you need to remain with Python 2.3,\n there's a patch available from the security advisory page.\n
    \n\n
    Important:\n2.3.5 includes a security\nfix for SimpleXMLRPCServer.py.\n
    \n\n

    We are pleased to announce the release of Python 2.3 on\nJuly 29, 2003. This is a final, stable release, and we recommend\nPython users upgrade to this version.\n\n

    Nineteen months in the making, Python 2.3 represents a commitment to\nstability and improved performance, with a minimum of new language\nfeatures. Countless bugs and memory leaks have been fixed, many new\nand updated modules have been added, and the new type/class system\nintroduced in Python 2.2 has been significantly improved. Python 2.3\ncan be up to 30% faster than Python 2.2.\n\n

    Please see the separate bugs page for known\nissues and the bug reporting procedure.\n\n

    Download the release

    \n\n

    Windows users should download the Windows installer, Python-2.3.exe, run\nit and follow the friendly instructions on the screen to complete the\ninstallation. Windows users may also be interested in Mark Hammond's\nwin32all, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.\n\n

    All others should download Python-2.3.tgz, the\nsource archive. Unpack it with \n\"tar -zxvf Python-2.3.tgz\". Change to the Python-2.3 directory\nand run the \"./configure\", \"make\", \"make install\" commands to compile \nand install Python.\n\n

    Macintosh users can find binaries and source on \n Jack Jansen's \nMacPython page.\nMac OS X users who have a C compiler (which comes with the \nOS X\nDeveloper Tools) can also build from the source tarball below.\n\n\n\n

    IDLEFORK users should take\nnote: Idlefork has been re-merged back into the main Python\ndistribution and takes the place of the old IDLE release.\n\n

    What's New?

    \n\n
      \n\n
    • See the highlights of this release.\n\n

    • Andrew Kuchling's What's New\nin Python 2.3 describes the most visible changes since Python 2.2 in more detail.\n\n

    • A detailed list of the changes is in the release notes, or the Misc/NEWS file in\nthe source distribution.\n\n

    • For the full list of changes, you can poke around in CVS.\n\n

    • The PSF's press\nrelease announcing 2.3.\n\n
    \n\n

    Documentation

    \n\n

    The documentation has been updated too:\n\n

    \n\n

    The interim documentation for\nnew-style classes, last seen for Python 2.2.3, is still relevant\nfor Python 2.3. In addition, The Python 2.3 Method\nResolution Order is a nice paper by Michele Simionato that\nexplains the C3 MRO algorithm (new in Python 2.3) clearly. (Also\navailable as reStructured Text. Copied with\npermission.)\n\n

    Files, MD5 checksums, signatures, and sizes

    \n\n
    \n595620a4769073a812e353597585c4e8 Python-2.3.tgz (8436880 bytes, signature)\n5763d167f4ab3467455e4728ac5a03ac Python-2.3.exe (9380742 bytes, signature)\n
    \n\n

    The signatures above were generated with\nGnuPG using the release manager's\n(Barry Warsaw)\npublic key which\nhas a key id of ED9D77D5.\n\n

     ", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    patch release release which supersedes earlier releases of 2.3.</i>\n</blockquote>

    \n
    \n
    <blockquote>
    \n
    <b>Important:</b> This release is vulnerable to the problem described in\n<a href="/news/security/PSF-2006-001/">security advisory PSF-2006-001</a>\n"Buffer overrun in repr() of unicode strings in wide unicode\nbuilds (UCS-4)". This fix is included in\n<a href="../2.4.4/">Python 2.4.4</a>\nand <a href="../2.5/">Python 2.5</a>. If you need to remain with Python 2.3,\nthere's a patch available from the security advisory page.
    \n
    \n

    </blockquote>

    \n

    <blockquote> <b>Important:\n2.3.5 includes a <a href="/news/security/PSF-2005-001/" >security\nfix</a> for SimpleXMLRPCServer.py.</b>\n</blockquote>

    \n

    <p>We are pleased to announce the release of <b>Python 2.3</b> on\nJuly 29, 2003. This is a final, stable release, and we recommend\nPython users upgrade to this version.

    \n

    <p>Nineteen months in the making, Python 2.3 represents a commitment to\nstability and improved performance, with a minimum of new language\nfeatures. Countless bugs and memory leaks have been fixed, many new\nand updated modules have been added, and the new type/class system\nintroduced in Python 2.2 has been significantly improved. Python 2.3\ncan be up to 30% faster than Python 2.2.

    \n

    <p>Please see the separate <a href="bugs">bugs page</a> for known\nissues and the bug reporting procedure.

    \n

    <h3>Download the release</h3>

    \n

    <p><b>Windows</b> users should download the Windows installer, <a\nhref="/ftp/python/2.3/Python-2.3.exe">Python-2.3.exe</a>, run\nit and follow the friendly instructions on the screen to complete the\ninstallation. Windows users may also be interested in Mark Hammond's\n<a href="http://starship.python.net/crew/mhammond/"\n>win32all</a>, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.

    \n

    <p><b>All others</b> should download <a\nhref="/ftp/python/2.3/Python-2.3.tgz">Python-2.3.tgz</a>, the\nsource archive. Unpack it with\n"tar -zxvf Python-2.3.tgz". Change to the Python-2.3 directory\nand run the "./configure", "make", "make install" commands to compile\nand install Python.

    \n

    <p><b>Macintosh</b> users can find binaries and source on\n<!--the <a href="mac.html">Mac page</a> or--> Jack Jansen's\n<a href="http://homepages.cwi.nl/~jack/macpython/">MacPython page</a>.\nMac OS X users who have a C compiler (which comes with the\n<a href="http://developer.apple.com/tools/macosxtools.html">OS X\nDeveloper Tools</a>) can also build from the source tarball below.

    \n

    <!--\n<p><b>Red Hat Linux 7.3, 7.2 and 6.2</b> users can download\n<a href="rpms.html">RPMs</a>, or build from source. An SRPM is also\navailable for other RPM-based systems, or the source tar-file can be used\n(see the "rpm" man page for the "-ta" options).\n-->

    \n

    <p><a href="http://idlefork.sf.net">IDLEFORK</a> users should take\nnote: Idlefork has been re-merged back into the main Python\ndistribution and takes the place of the old IDLE release.

    \n

    <h3>What's New?</h3>

    \n

    <ul>

    \n

    <li>See the <a href="highlights">highlights</a> of this release.

    \n

    <p><li>Andrew Kuchling's <a href="/doc/2.3/whatsnew/">What's New\nin Python 2.3</a> describes the most visible changes since <a\nhref="../2.2.3/">Python 2.2</a> in more detail.

    \n

    <p><li>A detailed list of the changes is in the <a\nhref="NEWS.txt">release notes</a>, or the <tt>Misc/NEWS</tt> file in\nthe source distribution.

    \n

    <p><li>For the full list of changes, you can poke around in <a\nhref="http://sourceforge.net/cvs/?group_id=5470">CVS</a>.

    \n

    <p><li>The PSF's <a href="/psf/press-release/pr20030729">press\nrelease</a> announcing 2.3.

    \n

    </ul>

    \n

    <h3>Documentation</h3>

    \n

    <p>The documentation has been updated too:

    \n

    <ul>

    \n

    <li><a href="/doc/2.3/">Browse HTML on-line</a>

    \n

    <li>Download using <a href="/ftp/python/doc/2.3/">HTTP</a>.</li>

    \n

    </ul>

    \n

    <p>The <a href="../2.2.3/descrintro">interim documentation for\nnew-style classes</a>, last seen for Python 2.2.3, is still relevant\nfor Python 2.3. In addition, <a href="mro">The Python 2.3 Method\nResolution Order</a> is a nice paper by Michele Simionato that\nexplains the C3 MRO algorithm (new in Python 2.3) clearly. (Also\navailable as <a href="mro/mro.txt">reStructured Text</a>. Copied with\npermission.)

    \n

    <h3>Files, <a href="md5sum.py">MD5</a> checksums, signatures, and sizes</h3>

    \n

    <pre>\n595620a4769073a812e353597585c4e8 <a href="/ftp/python/2.3/Python-2.3.tgz">Python-2.3.tgz</A> (8436880 bytes, <a href="Python-2.3.tgz.asc">signature</a>)\n5763d167f4ab3467455e4728ac5a03ac <a href="/ftp/python/2.3/Python-2.3.exe">Python-2.3.exe</A> (9380742 bytes, <a href="Python-2.3.exe.asc">signature</a>)\n</pre>

    \n

    <p>The signatures above were generated with\n<a href="http://www.gnupg.org">GnuPG</a> using the release manager's\n(Barry Warsaw)\n<a href="/download#pubkeys">public key</a> which\nhas a key id of ED9D77D5.

    \n

    <p>&nbsp;

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 132, + "fields": { + "created": "2014-03-20T22:36:31.454Z", + "updated": "2014-06-10T03:41:36.446Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.6.0", + "slug": "python-260", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2008-10-02T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.6/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.6 has been replaced by a newer bugfix release of Python**.\n Please download `Python 2.6.7 <../2.6.7/>`__ instead. This is a\n source-only release.\n\nPython 2.6 (final) was released on October 1st, 2008. There are a huge number\nof new features, modules, improvements and bug fixes. For information on\nwhat's changed, see:\n\n * Andrew Kuchling's guide to `What's New in Python 2.6\n `_.\n * `NEWS `_ file contains a listing of everything that's new in each\n alpha, beta, and release candidate of Python 2.6.\n * `PEP 361 `_.\n\nPlease report bugs at ``_\n\nSee also the `license `_.\n\n\nPython 2.6 Released: 01-Oct-2008\n================================\n\nDownload\n--------\n\nThis is a production release; we currently support these formats:\n\n * `Gzipped source tar ball (2.6) `_\n `(sig) `__\n\n * `Bzipped source tar ball (2.6) `_\n `(sig) `__\n\n * `Windows x86 MSI Installer (2.6) `_\n `(sig) `__\n\n * `Windows X86-64 MSI Installer (2.6) `_ [1]_\n `(sig) `__\n\n * `Mac Installer disk image (2.6) `_\n `(sig) `__\n\nMD5 checksums and sizes of the released files::\n\n 837476958702cb386c657b5dba61cdc5 10957859 Python-2.6.tar.bz2\n d16d29a77db2cd3af882a591f431a403 13023860 Python-2.6.tgz\n fe34764ad0027d01176eb1b321dd20c5 14503936 python-2.6.amd64.msi\n 6c62c123d248a48dccbaa4d3edc12680 14173184 python-2.6.msi\n 29a1a22f8d9fd8a4501b30d97fbee61c 23593748 python-2.6-macosx2008-10-01.dmg\n\n.. *The Windows releases will be available soon*\n\nThe signatures for the source tarballs above were generated with\n`GnuPG `_ using release manager\nBarry Warsaw's\n`public key `_ \nwhich has a key id of EA5BBD71. \nThe Windows installers was signed by Martin von L\u00f6wis'\n`public key `_ \nwhich has a key id of 7D9DC8D2.\nThe signature on the Mac disk image was signed by \nBenjamin Peterson's public key which has a key id of A4135B38.\n\nVista Note\n----------\n\nAdministrators installing Python for all users on Windows Vista\neither need to be logged in as Administrator, or use the\nrunas command, as in::\n\n runas /user:Administrator \"msiexec /i \\.msi\"\n\nDocumentation\n-------------\n\nThe documentation has also been updated. You can `browse the HTML on-line\n`_ or `download the HTML\n`_:\n\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.6 (final) was released on October 1st, 2008. There are a huge number\nof new features, modules, improvements and bug fixes. For information on\nwhat's changed, see:

    \n
    \n
      \n
    • Andrew Kuchling's guide to What's New in Python 2.6.
    • \n
    • NEWS file contains a listing of everything that's new in each\nalpha, beta, and release candidate of Python 2.6.
    • \n
    • PEP 361.
    • \n
    \n
    \n

    Please report bugs at http://bugs.python.org

    \n

    See also the license.

    \n
    \n

    Python 2.6 Released: 01-Oct-2008

    \n
    \n

    Download

    \n

    This is a production release; we currently support these formats:

    \n
    \n\n
    \n

    MD5 checksums and sizes of the released files:

    \n
    \n837476958702cb386c657b5dba61cdc5  10957859  Python-2.6.tar.bz2\nd16d29a77db2cd3af882a591f431a403  13023860  Python-2.6.tgz\nfe34764ad0027d01176eb1b321dd20c5  14503936  python-2.6.amd64.msi\n6c62c123d248a48dccbaa4d3edc12680  14173184  python-2.6.msi\n29a1a22f8d9fd8a4501b30d97fbee61c  23593748  python-2.6-macosx2008-10-01.dmg\n
    \n\n

    The signatures for the source tarballs above were generated with\nGnuPG using release manager\nBarry Warsaw's\npublic key\nwhich has a key id of EA5BBD71.\nThe Windows installers was signed by Martin von L\u00f6wis'\npublic key\nwhich has a key id of 7D9DC8D2.\nThe signature on the Mac disk image was signed by\nBenjamin Peterson's public key which has a key id of A4135B38.

    \n
    \n
    \n

    Vista Note

    \n

    Administrators installing Python for all users on Windows Vista\neither need to be logged in as Administrator, or use the\nrunas command, as in:

    \n
    \nrunas /user:Administrator "msiexec /i <path>\\<file>.msi"\n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated. You can browse the HTML on-line or download the HTML:

    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 133, + "fields": { + "created": "2014-03-20T22:36:33.379Z", + "updated": "2017-07-18T23:10:44.965Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.4.0", + "slug": "python-240", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2004-11-30T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.4/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.4 has been replaced by a newer bugfix\n release.** Please see the `releases page <../>`_ to select a more\n recent release.\n\n\nWe are pleased to announce the release of **Python 2.4, final** \non November 30, 2004. This is a final, stable release, and we \ncan recommend that Python users upgrade to this version.\n\n **Important:** This release is vulnerable to the problem described in\n `security advisory PSF-2006-001 `_\n \"Buffer overrun in repr() of unicode strings in wide unicode\n builds (UCS-4)\". This fix is included in `Python 2.4.4 <../2.4.4/>`_\n\n **Note: there's a** `security fix `_\n **for SimpleXMLRPCServer.py - this fix is included in** `2.4.1 `_\n\nPython 2.4 is the result of almost 18 month's worth of work on top \nof Python 2.3 and represents another stage in the careful evolution \nof Python. New language features have been kept to a minimum, many \nbugs have been fixed and a `variety of improvements `_\nhave been made.\n\nNotable changes in Python 2.4 include improvements to the importing of\nmodules, function decorators, generator expressions, a number of new \nmodules (including subprocess, decimal and cookielib) and a host of \nbug fixes and other improvements. See the (subjective) \n`highlights `_ or the `detailed release notes `_ \nfor more, or consult Andrew Kuchling's \n`What's New In Python `_\nfor a detailed view of some of the new features of Python 2.4.\n\nPlease see the separate `bugs page `_ for known\nissues and the bug reporting procedure.\n\nDownload the release\n--------------------\n\nStarting with the Python 2.4 releases the **Windows** Python \ninstaller is being distributed as a Microsoft Installer (.msi) file. \nTo use this, the Windows system must support Microsoft Installer\n2.0. Just save the installer file \n`python-2.4.msi `_ \nto your local machine, then double-click python-2.4.msi to find \nout if your machine supports MSI. If it doesn't, you'll need to \ninstall Microsoft Installer first. Many other packages (such as \nWord and Office) also include MSI, so you \nmay already have it on your system. If not, you can download it freely\nfrom Microsoft for `Windows 95, 98 and Me `_ and for `Windows NT 4.0 and 2000 `_. Windows XP and later already have MSI; many\nolder machines will already have MSI installed. \n\nThe new format installer allows for `automated installation `_ and `many other shiny new features `_. There is also a separate installer \n`python-2.4.ia64.msi `_ \nfor Win64-Itanium users.\n\nWindows users may also be\ninterested in Mark Hammond's `pywin32 `_ package, available from `Sourceforge `_. pywin32 adds a number of Windows-specific\nextensions to Python, including COM support and the Pythonwin IDE.\n\nDebian users using `Sarge `_: Python \n2.4 has already been packaged for you. Simply ``apt-get install python2.4``.\nNote that you will also need to install python2.4 versions of any other \nmodules you use.\n\n**All others** should download either \n`Python-2.4.tgz `_ or\n`Python-2.4.tar.bz2 `_,\nthe source archive. The tar.bz2 is considerably smaller, so get that one if\nyour system has the `appropriate tools `_ to deal with it. Unpack it with \n``tar -zxvf Python-2.4.tgz`` (or \n``bzcat Python-2.4.tar.bz2 | tar -xf -``). \nChange to the Python-2.4 directory\nand run the \"./configure\", \"make\", \"make install\" commands to compile \nand install Python. The source archive is also suitable for Windows users\nwho feel the need to build their own version.\n\n**Fedora Core 3** users can download\n`RPMs `_, or build from source. An SRPM is also\navailable for other RPM-based systems, or the source tar-file can be used\n(see the \"rpm\" man page for the \"-ta\" options).\n\nWhat's New?\n-----------\n\n* See the `highlights `_ of this release.\n\n* Andrew Kuchling's `What's New in Python 2.4\n `_ describes the most visible\n changes since `Python 2.3 `_ in more detail.\n\n* A detailed list of the changes is in the `release notes `_, or the ``Misc/NEWS`` file in the source distribution.\n\n* For the full list of changes, you can poke around in `CVS `_.\n\nDocumentation\n-------------\n\nThe documentation has also been updated:\n\n* `Browse HTML on-line `_\n* Download using `HTTP `_.\n\n\nDownloadable packages of the documentation will be available shortly.\n\nFiles, `MD5 `_ checksums, signatures and sizes\n---------------------------------------------------------\n\n\t``149ad508f936eccf669d52682cf8e606`` `Python-2.4.tgz `_\n (9198035 bytes, `signature `__)\n\n\t``44c2226eff0f3fc1f2fedaa1ce596533`` `Python-2.4.tar.bz2 `_ \n (7840762 bytes, `signature `__)\n\n\t``e9fe1fcdce9fa8c5590ab58b1de3246f`` `python-2.4.msi `_ \n (10887168 bytes, `signature `__)\n\n\t``5810ed46da712adef93315b08791aea8`` `python-2.4.ia64.msi `_ \n (8858624 bytes, `signature `__)\n\nThe signatures above were generated with\n`GnuPG `_ using release manager\nAnthony Baxter's\n`public key `_ \nwhich has a key id of 6A45C816.\n\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    We are pleased to announce the release of Python 2.4, final\non November 30, 2004. This is a final, stable release, and we\ncan recommend that Python users upgrade to this version.

    \n
    \n

    Important: This release is vulnerable to the problem described in\nsecurity advisory PSF-2006-001\n"Buffer overrun in repr() of unicode strings in wide unicode\nbuilds (UCS-4)". This fix is included in Python 2.4.4

    \n

    Note: there's a security fix\nfor SimpleXMLRPCServer.py - this fix is included in 2.4.1

    \n
    \n

    Python 2.4 is the result of almost 18 month's worth of work on top\nof Python 2.3 and represents another stage in the careful evolution\nof Python. New language features have been kept to a minimum, many\nbugs have been fixed and a variety of improvements\nhave been made.

    \n

    Notable changes in Python 2.4 include improvements to the importing of\nmodules, function decorators, generator expressions, a number of new\nmodules (including subprocess, decimal and cookielib) and a host of\nbug fixes and other improvements. See the (subjective)\nhighlights or the detailed release notes\nfor more, or consult Andrew Kuchling's\nWhat's New In Python\nfor a detailed view of some of the new features of Python 2.4.

    \n

    Please see the separate bugs page for known\nissues and the bug reporting procedure.

    \n
    \n

    Download the release

    \n

    Starting with the Python 2.4 releases the Windows Python\ninstaller is being distributed as a Microsoft Installer (.msi) file.\nTo use this, the Windows system must support Microsoft Installer\n2.0. Just save the installer file\npython-2.4.msi\nto your local machine, then double-click python-2.4.msi to find\nout if your machine supports MSI. If it doesn't, you'll need to\ninstall Microsoft Installer first. Many other packages (such as\nWord and Office) also include MSI, so you\nmay already have it on your system. If not, you can download it freely\nfrom Microsoft for Windows 95, 98 and Me and for Windows NT 4.0 and 2000. Windows XP and later already have MSI; many\nolder machines will already have MSI installed.

    \n

    The new format installer allows for automated installation and many other shiny new features. There is also a separate installer\npython-2.4.ia64.msi\nfor Win64-Itanium users.

    \n

    Windows users may also be\ninterested in Mark Hammond's pywin32 package, available from Sourceforge. pywin32 adds a number of Windows-specific\nextensions to Python, including COM support and the Pythonwin IDE.

    \n

    Debian users using Sarge: Python\n2.4 has already been packaged for you. Simply apt-get install python2.4.\nNote that you will also need to install python2.4 versions of any other\nmodules you use.

    \n

    All others should download either\nPython-2.4.tgz or\nPython-2.4.tar.bz2,\nthe source archive. The tar.bz2 is considerably smaller, so get that one if\nyour system has the appropriate tools to deal with it. Unpack it with\ntar -zxvf Python-2.4.tgz (or\nbzcat Python-2.4.tar.bz2 | tar -xf -).\nChange to the Python-2.4 directory\nand run the "./configure", "make", "make install" commands to compile\nand install Python. The source archive is also suitable for Windows users\nwho feel the need to build their own version.

    \n

    Fedora Core 3 users can download\nRPMs, or build from source. An SRPM is also\navailable for other RPM-based systems, or the source tar-file can be used\n(see the "rpm" man page for the "-ta" options).

    \n
    \n
    \n

    What's New?

    \n
      \n
    • See the highlights of this release.
    • \n
    • Andrew Kuchling's What's New in Python 2.4 describes the most visible\nchanges since Python 2.3 in more detail.
    • \n
    • A detailed list of the changes is in the release notes, or the Misc/NEWS file in the source distribution.
    • \n
    • For the full list of changes, you can poke around in CVS.
    • \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated:

    \n\n

    Downloadable packages of the documentation will be available shortly.

    \n
    \n
    \n

    Files, MD5 checksums, signatures and sizes

    \n
    \n

    149ad508f936eccf669d52682cf8e606 Python-2.4.tgz\n(9198035 bytes, signature)

    \n

    44c2226eff0f3fc1f2fedaa1ce596533 Python-2.4.tar.bz2\n(7840762 bytes, signature)

    \n

    e9fe1fcdce9fa8c5590ab58b1de3246f python-2.4.msi\n(10887168 bytes, signature)

    \n

    5810ed46da712adef93315b08791aea8 python-2.4.ia64.msi\n(8858624 bytes, signature)

    \n
    \n

    The signatures above were generated with\nGnuPG using release manager\nAnthony Baxter's\npublic key\nwhich has a key id of 6A45C816.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 134, + "fields": { + "created": "2014-03-20T22:36:37.768Z", + "updated": "2014-06-10T03:41:35.687Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.5.5", + "slug": "python-255", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2010-01-31T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.5.5/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n We are pleased to announce the release of \n **Python 2.5.5**, a \n security fix release of Python 2.5, on January 31st, 2010.\n\n **Python 2.5.5 has been replaced by a newer bugfix\n release of Python**. Please download `Python 2.5.6 <../2.5.6/>`__ instead.\n \n The last binary release of Python 2.5 was `2.5.4 <../2.5.4/>`_.\n\nThis is a source-only release that only includes security\nfixes. The last full bug-fix release of Python 2.5 was \n`Python 2.5.4 <../2.5.4/>`_. User are encouraged to upgrade\nto the latest release of Python 2.7 (which is `2.7.2 <../2.7.2/>`_\nat this point).\n\nThis releases fixes issues with the logging, tarfile and expat\nmodules, and with thread-local variables. See the `detailed release\nnotes `_ for more details.\n\nSee also the `license `_.\n\nDownload the release\n--------------------\n\nSource code\n===========\n\ngzip-compressed source code: `Python-2.5.5.tgz `_\n\nbzip2-compressed source code: `Python-2.5.5.tar.bz2 `_,\nthe source archive. \n\nThe bzip2-compressed version is considerably smaller, so get that one if\nyour system has the `appropriate tools `_ to deal \nwith it. \n\nUnpack the archive with ``tar -zxvf Python-2.5.5.tgz`` (or \n``bzcat Python-2.5.5.tar.bz2 | tar -xf -``). \nChange to the Python-2.5.5 directory and run the \"./configure\", \"make\", \n\"make install\" commands to compile and install Python. The source archive \nis also suitable for Windows users who feel the need to build their \nown version.\n\n\nWhat's New?\n-----------\n\n* See the `highlights <../2.5/highlights>`_ of the Python 2.5 release.\n\n* Andrew Kuchling's \n `What's New in Python 2.5 `_\n describes the most visible changes since `Python 2.4 <../2.4/>`_ in \n more detail.\n\n* A detailed list of the changes in 2.5.5 can be found in \n the `release notes `_, or the ``Misc/NEWS`` file in the \n source distribution.\n\n* For the full list of changes, you can poke around in \n `Subversion `_.\n\nDocumentation\n-------------\n\nThe documentation has not been updated since the 2.5.4 release:\n\n* `Browse HTML on-line `_\n\nFiles, `MD5 `_ checksums, signatures and sizes\n----------------------------------------------------------------------------------\n\n ``abc02139ca38f4258e8e372f7da05c88`` `Python-2.5.5.tgz `_\n (11606370 bytes, `signature `__)\n\n ``1d00e2fb19418e486c30b850df625aa3`` `Python-2.5.5.tar.bz2 `_\n (9822917 bytes, `signature `__)\n\n\nThe signatures above were generated with\n`GnuPG `_ using release manager\nMartin v. L\u00f6wis's `public key `_ \nwhich has a key id of 7D9DC8D2.\n\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    This is a source-only release that only includes security\nfixes. The last full bug-fix release of Python 2.5 was\nPython 2.5.4. User are encouraged to upgrade\nto the latest release of Python 2.7 (which is 2.7.2\nat this point).

    \n

    This releases fixes issues with the logging, tarfile and expat\nmodules, and with thread-local variables. See the detailed release\nnotes for more details.

    \n

    See also the license.

    \n
    \n

    Download the release

    \n
    \n

    Source code

    \n

    gzip-compressed source code: Python-2.5.5.tgz

    \n

    bzip2-compressed source code: Python-2.5.5.tar.bz2,\nthe source archive.

    \n

    The bzip2-compressed version is considerably smaller, so get that one if\nyour system has the appropriate tools to deal\nwith it.

    \n

    Unpack the archive with tar -zxvf Python-2.5.5.tgz (or\nbzcat Python-2.5.5.tar.bz2 | tar -xf -).\nChange to the Python-2.5.5 directory and run the "./configure", "make",\n"make install" commands to compile and install Python. The source archive\nis also suitable for Windows users who feel the need to build their\nown version.

    \n
    \n
    \n
    \n

    What's New?

    \n
      \n
    • See the highlights of the Python 2.5 release.
    • \n
    • Andrew Kuchling's\nWhat's New in Python 2.5\ndescribes the most visible changes since Python 2.4 in\nmore detail.
    • \n
    • A detailed list of the changes in 2.5.5 can be found in\nthe release notes, or the Misc/NEWS file in the\nsource distribution.
    • \n
    • For the full list of changes, you can poke around in\nSubversion.
    • \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has not been updated since the 2.5.4 release:

    \n\n
    \n
    \n

    Files, MD5 checksums, signatures and sizes

    \n
    \n

    abc02139ca38f4258e8e372f7da05c88 Python-2.5.5.tgz\n(11606370 bytes, signature)

    \n

    1d00e2fb19418e486c30b850df625aa3 Python-2.5.5.tar.bz2\n(9822917 bytes, signature)

    \n
    \n

    The signatures above were generated with\nGnuPG using release manager\nMartin v. L\u00f6wis's public key\nwhich has a key id of 7D9DC8D2.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 135, + "fields": { + "created": "2014-03-20T22:36:38.709Z", + "updated": "2014-06-10T03:41:31.153Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.4.1", + "slug": "python-241", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2005-03-30T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.4.1/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.4.1 has been replaced by a newer bugfix\n release.** Please see the `releases page <../>`_ to select a more\n recent release.\n\nWe are pleased to announce the release of **Python 2.4.1 (final)** \non March 30, 2005. \n\n **Important:** This release is vulnerable to the problem described in\n `security advisory PSF-2006-001 `_\n \"Buffer overrun in repr() of unicode strings in wide unicode\n builds (UCS-4)\". This fix is included in `Python 2.4.4 <../2.4.4/>`_\n\n **Note: there's a** `security fix `_\n **for SimpleXMLRPCServer.py - this fix is included in 2.4.1**\n\nPython 2.4.1 is a bugfix release of Python 2.4 - Python 2.4 is now\nin bugfix-only mode, no new features are being added. Several dozen\nbugs were squashed since Python 2.4, including the SimpleXMLRPCServer\nsecurity fix. See the `detailed release notes `_ for more, \n\nFor more information on the new features of \n`Python 2.4 `_ see the \n`2.4 highlights `_ or consult Andrew \nKuchling's `What's New In Python `_\nfor a more detailed view.\n\nPlease see the separate `bugs page `_ for known\nissues and the bug reporting procedure.\n\nDownload the release\n--------------------\n\nStarting with the Python 2.4 releases the **Windows** Python \ninstaller is being distributed as a Microsoft Installer (.msi) file. \nTo use this, the Windows system must support Microsoft Installer\n2.0. Just save the installer file \n`python-2.4.1.msi `_ \nto your local machine, then double-click python-2.4.1.msi to find \nout if your machine supports MSI. If it doesn't, you'll need to \ninstall Microsoft Installer first. Many other packages (such as \nWord and Office) also include MSI, so you \nmay already have it on your system. If not, you can download it freely\nfrom Microsoft for `Windows 95, 98 and Me `_ and for `Windows NT 4.0 and 2000 `_. Windows XP and later already have MSI; many\nolder machines will already have MSI installed. \n\nThe new format installer allows for `automated installation `_ and `many other shiny new features `_. There is also a separate installer \n`python-2.4.1.ia64.msi `_ \nfor Win64-Itanium users.\n\nWindows users may also be\ninterested in Mark Hammond's `pywin32 `_ package, available from `Sourceforge `_. pywin32 adds a number of Windows-specific\nextensions to Python, including COM support and the Pythonwin IDE.\n\n.. RPMs for Fedora Core 3 (and similar) are available, see \n.. `the 2.4.1c2 RPMs page `_\n\nBob Ippolito has created an installer for Mac OS X 10.3 and\nlater - you can fetch this from `his site `_, or directly from `here `_.\n\n**All others** should download either \n`Python-2.4.1.tgz `_ or\n`Python-2.4.1.tar.bz2 `_,\nthe source archive. The tar.bz2 is considerably smaller, so get that one if\nyour system has the `appropriate tools `_ to deal with it. Unpack it with \n``tar -zxvf Python-2.4.1.tgz`` (or \n``bzcat Python-2.4.1.tar.bz2 | tar -xf -``). \nChange to the Python-2.4.1 directory\nand run the \"./configure\", \"make\", \"make install\" commands to compile \nand install Python. The source archive is also suitable for Windows users\nwho feel the need to build their own version.\n\nWhat's New?\n-----------\n\n* See the `highlights `_ of the Python 2.4 release.\n\n* Andrew Kuchling's `What's New in Python 2.4 `_ describes the most visible changes since `Python 2.3 `_ in more detail.\n\n* A detailed list of the changes in 2.4.1 is in the `release notes `_, or the ``Misc/NEWS`` file in the source distribution.\n\n* For the full list of changes, you can poke around in `CVS `_.\n\nDocumentation\n-------------\n\nThe documentation has also been updated:\n\n* `Browse HTML on-line `_\n* Download using `HTTP `_.\n\nFiles, `MD5 `_ checksums, signatures and sizes\n---------------------------------------------------------\n\n\t``7bb2416a4f421c3452d306694d3efbba`` `Python-2.4.1.tgz `_ (9219882 bytes, `sig `__)\n\n\t``de3e9a8836fab6df7c7ce545331afeb3`` `Python-2.4.1.tar.bz2 `_ (7847025 bytes, `sig `__)\n\n\t``5de61a8f3a20a0cc8d0ec82e9901aa6b`` `python-2.4.1.msi `_ (10970624 bytes, `sig `__)\n\n\t``e639f4554a5dadf4da7a04ae64c8f85a`` `python-2.4.1.ia64.msi `_ (8930816 bytes, `sig `__)\n\n\t``1db4d575a2c5d6ab24be10c38154551a`` `MacPython-OSX-2.4.1-1.dmg `_ (7918391 bytes, `sig `__)\n\nThe signatures above were generated with\n`GnuPG `_ using release manager\nAnthony Baxter's\n`public key `_ \nwhich has a key id of 6A45C816.\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    We are pleased to announce the release of Python 2.4.1 (final)\non March 30, 2005.

    \n
    \n

    Important: This release is vulnerable to the problem described in\nsecurity advisory PSF-2006-001\n"Buffer overrun in repr() of unicode strings in wide unicode\nbuilds (UCS-4)". This fix is included in Python 2.4.4

    \n

    Note: there's a security fix\nfor SimpleXMLRPCServer.py - this fix is included in 2.4.1

    \n
    \n

    Python 2.4.1 is a bugfix release of Python 2.4 - Python 2.4 is now\nin bugfix-only mode, no new features are being added. Several dozen\nbugs were squashed since Python 2.4, including the SimpleXMLRPCServer\nsecurity fix. See the detailed release notes for more,

    \n

    For more information on the new features of\nPython 2.4 see the\n2.4 highlights or consult Andrew\nKuchling's What's New In Python\nfor a more detailed view.

    \n

    Please see the separate bugs page for known\nissues and the bug reporting procedure.

    \n
    \n

    Download the release

    \n

    Starting with the Python 2.4 releases the Windows Python\ninstaller is being distributed as a Microsoft Installer (.msi) file.\nTo use this, the Windows system must support Microsoft Installer\n2.0. Just save the installer file\npython-2.4.1.msi\nto your local machine, then double-click python-2.4.1.msi to find\nout if your machine supports MSI. If it doesn't, you'll need to\ninstall Microsoft Installer first. Many other packages (such as\nWord and Office) also include MSI, so you\nmay already have it on your system. If not, you can download it freely\nfrom Microsoft for Windows 95, 98 and Me and for Windows NT 4.0 and 2000. Windows XP and later already have MSI; many\nolder machines will already have MSI installed.

    \n

    The new format installer allows for automated installation and many other shiny new features. There is also a separate installer\npython-2.4.1.ia64.msi\nfor Win64-Itanium users.

    \n

    Windows users may also be\ninterested in Mark Hammond's pywin32 package, available from Sourceforge. pywin32 adds a number of Windows-specific\nextensions to Python, including COM support and the Pythonwin IDE.

    \n\n\n

    Bob Ippolito has created an installer for Mac OS X 10.3 and\nlater - you can fetch this from his site, or directly from here.

    \n

    All others should download either\nPython-2.4.1.tgz or\nPython-2.4.1.tar.bz2,\nthe source archive. The tar.bz2 is considerably smaller, so get that one if\nyour system has the appropriate tools to deal with it. Unpack it with\ntar -zxvf Python-2.4.1.tgz (or\nbzcat Python-2.4.1.tar.bz2 | tar -xf -).\nChange to the Python-2.4.1 directory\nand run the "./configure", "make", "make install" commands to compile\nand install Python. The source archive is also suitable for Windows users\nwho feel the need to build their own version.

    \n
    \n
    \n

    What's New?

    \n
      \n
    • See the highlights of the Python 2.4 release.
    • \n
    • Andrew Kuchling's What's New in Python 2.4 describes the most visible changes since Python 2.3 in more detail.
    • \n
    • A detailed list of the changes in 2.4.1 is in the release notes, or the Misc/NEWS file in the source distribution.
    • \n
    • For the full list of changes, you can poke around in CVS.
    • \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated:

    \n\n
    \n
    \n

    Files, MD5 checksums, signatures and sizes

    \n
    \n

    7bb2416a4f421c3452d306694d3efbba Python-2.4.1.tgz (9219882 bytes, sig)

    \n

    de3e9a8836fab6df7c7ce545331afeb3 Python-2.4.1.tar.bz2 (7847025 bytes, sig)

    \n

    5de61a8f3a20a0cc8d0ec82e9901aa6b python-2.4.1.msi (10970624 bytes, sig)

    \n

    e639f4554a5dadf4da7a04ae64c8f85a python-2.4.1.ia64.msi (8930816 bytes, sig)

    \n

    1db4d575a2c5d6ab24be10c38154551a MacPython-OSX-2.4.1-1.dmg (7918391 bytes, sig)

    \n
    \n

    The signatures above were generated with\nGnuPG using release manager\nAnthony Baxter's\npublic key\nwhich has a key id of 6A45C816.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 136, + "fields": { + "created": "2014-03-20T22:36:47.369Z", + "updated": "2014-06-10T03:41:27.960Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.3.2", + "slug": "python-232", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2003-10-03T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.3.2/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\npatch release release which supersedes earlier releases of 2.3.\n\n\n
    \n Important: This release is vulnerable to the problem described in\n security advisory PSF-2006-001\n \"Buffer overrun in repr() of unicode strings in wide unicode\n builds (UCS-4)\". This fix is included in\n Python 2.4.4\n and Python 2.5. If you need to remain with Python 2.3,\n there's a patch available from the security advisory page.\n
    \n\n\n
    Important:\n2.3.5 includes a security\nfix for SimpleXMLRPCServer.py.\n
    \n\n

    We're happy to announce the release of Python 2.3.2 (final)\non October 3rd, 2003.\nThis is a bug-fix release for Python 2.3.1 that fixes a couple of build\nerrors and a couple of packaging errors in the previous release. It\nsupersedes the original Python 2.3.1 release.\n\n

    No new features have been added in Python 2.3.2. Instead, this\nrelease is to fix a couple of build errors and packaging errors. In\nparticular, a workaround for a bug in autoconf on HP/UX, and an error\nin the configure script that meant os.fsync() was never available.\n\n

    None of the bugs in 2.3.1 affect the Windows platforms. If you\nhave previously downloaded Python 2.3.1 for Windows, there's no need\nto upgrade to 2.3.2. (But if you're still at 2.3 or before,\ndownloading 2.3.2 is a good idea.)\n\n

    Please see the separate bugs page for known\nissues and the bug reporting procedure.\n\n

    Download the release

    \n\n

    Windows users should download the Windows installer, Python-2.3.2-1.exe, run\nit and follow the friendly instructions on the screen to complete the\ninstallation. Windows users may also be interested in Mark Hammond's\nwin32all, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.

    \n\n

    Please note that the original Windows installer had a problem with\nsome dll files shipped with the installer. This was reported to cause\nproblems on some Windows 98 and Windows NT machines. The replacement \ninstaller (with a -1 extension) should address this problem. We apologise\nto anyone who was affected by this.\n\n

    RPMs suitable for Redhat and source RPMs for other RPM-using\noperating systems are available from the RPMs page.\n\n

    All others should download either \nPython-2.3.2.tgz or\nPython-2.3.2.tar.bz2, \nthe source archive. The tar.bz2 is considerably smaller, so get that one if\nyour system has the appropriate \ntools to deal with it. Unpack it with \n\"tar -zxvf Python-2.3.2.tgz\" (or \n\"bzcat Python-2.3.2.tar.bz2 | tar -xf -\"). \nChange to the Python-2.3.2 directory\nand run the \"./configure\", \"make\", \"make install\" commands to compile \nand install Python.\n\n

    If you're having trouble building on your system, check the top-level\nREADME file for platform-specific tips, or check the \nBuild Bugs section on the Bugs webpage.\n\n\n\n

    What's New?

    \n\n
      \n\n
    • See the highlights of the\nPython 2.3 release. As noted, the 2.3.2 release is a bugfix release\nof 2.3.1, itself a bugfix release of 2.3. \n\n

    • The Windows installer now includes the documentation in searchable \nhtmlhelp format, rather than individual HTML files. You can still download the\nindividual HTML files.\n\n

    • Andrew Kuchling's What's New\nin Python 2.3 describes the most visible changes since Python 2.2 in more detail.\n\n

    • A detailed list of the changes is in the release notes, or the Misc/NEWS file in\nthe source distribution.\n\n

    • For the full list of changes, you can poke around in CVS.\n\n

    • The PSF's press\nrelease announcing 2.3.2.\n\n\n
    \n\n

    Documentation

    \n\n

    The documentation has been updated too:\n\n

    \n\n

    The interim documentation for\nnew-style classes, last seen for Python 2.2.3, is still relevant\nfor Python 2.3.2. Raymond Hettinger has also written a tutorial on\ndescriptors, introduced in Python 2.2. \nIn addition, The Python 2.3 Method\nResolution Order is a nice paper by Michele Simionato that\nexplains the C3 MRO algorithm (new in Python 2.3) clearly. (Also\navailable as reStructured Text. Copied with\npermission.)\n\n

    Files, MD5 checksums, signatures, and sizes

    \n\n
    \nf54d7a529d444994b4b33429bbb45479 Python-2.3.2.tgz (8459427 bytes, signature)\n9271171d55690e5cacd692e563924305 Python-2.3.2.tar.bz2 (7161770 bytes, signature)\n87aed0e4a79c350065b770f9a4ddfd75 Python-2.3.2-1.exe (9481060 bytes, signature)\n
    \n\n

    The signatures above were generated with\nGnuPG using the release manager's\n(Anthony Baxter)\npublic key \nwhich has a key id of 6A45C816.\n\n

     ", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    patch release release which supersedes earlier releases of 2.3.</i>\n</blockquote>

    \n
    \n
    <blockquote>
    \n
    <b>Important:</b> This release is vulnerable to the problem described in\n<a href="/news/security/PSF-2006-001/">security advisory PSF-2006-001</a>\n"Buffer overrun in repr() of unicode strings in wide unicode\nbuilds (UCS-4)". This fix is included in\n<a href="../2.4.4/">Python 2.4.4</a>\nand <a href="../2.5/">Python 2.5</a>. If you need to remain with Python 2.3,\nthere's a patch available from the security advisory page.
    \n
    \n

    </blockquote>

    \n

    <blockquote> <b>Important:\n2.3.5 includes a <a href="/news/security/PSF-2005-001/" >security\nfix</a> for SimpleXMLRPCServer.py.</b>\n</blockquote>

    \n

    <p>We're happy to announce the release of <b>Python 2.3.2 (final)</b>\non October 3rd, 2003.\nThis is a bug-fix release for Python 2.3.1 that fixes a couple of build\nerrors and a couple of packaging errors in the previous release. It\nsupersedes the original <a href="../2.3.1/">Python 2.3.1</a> release.

    \n

    <p>No new features have been added in Python 2.3.2. Instead, this\nrelease is to fix a couple of build errors and packaging errors. In\nparticular, a workaround for a bug in autoconf on HP/UX, and an error\nin the configure script that meant os.fsync() was never available.

    \n

    <p>None of the bugs in 2.3.1 affect the Windows platforms. If you\nhave previously downloaded Python 2.3.1 for Windows, there's no need\nto upgrade to 2.3.2. (But if you're still at 2.3 or before,\ndownloading 2.3.2 is a good idea.)

    \n

    <p>Please see the separate <a href="bugs">bugs page</a> for known\nissues and the bug reporting procedure.

    \n

    <h3>Download the release</h3>

    \n

    <p><b>Windows</b> users should download the Windows installer, <a\nhref="/ftp/python/2.3.2/Python-2.3.2-1.exe">Python-2.3.2-1.exe</a>, run\nit and follow the friendly instructions on the screen to complete the\ninstallation. Windows users may also be interested in Mark Hammond's\n<a href="http://starship.python.net/crew/mhammond/"\n>win32all</a>, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.</p>

    \n

    <p>Please note that the original Windows installer had a problem with\nsome dll files shipped with the installer. This was reported to cause\nproblems on some Windows 98 and Windows NT machines. The replacement\ninstaller (with a -1 extension) should address this problem. We apologise\nto anyone who was affected by this.

    \n

    <p>RPMs suitable for Redhat and source RPMs for other RPM-using\noperating systems are available from <a href="rpms">the RPMs page</a>.

    \n

    <p><b>All others</b> should download either\n<a href="/ftp/python/2.3.2/Python-2.3.2.tgz">Python-2.3.2.tgz</a> or\n<a href="/ftp/python/2.3.2/Python-2.3.2.tar.bz2">Python-2.3.2.tar.bz2</a>,\nthe source archive. The tar.bz2 is considerably smaller, so get that one if\nyour system has the <a href="http://sources.redhat.com/bzip2/">appropriate\ntools</a> to deal with it. Unpack it with\n"tar&nbsp;-zxvf&nbsp;Python-2.3.2.tgz" (or\n"bzcat&nbsp;Python-2.3.2.tar.bz2&nbsp;|&nbsp;tar&nbsp;-xf&nbsp;-").\nChange to the Python-2.3.2 directory\nand run the "./configure", "make", "make&nbsp;install" commands to compile\nand install Python.

    \n

    <p>If you're having trouble building on your system, check the top-level\nREADME file for platform-specific tips, or check the\n<a href="bugs#build">Build Bugs</a> section on the Bugs webpage.

    \n

    <!--\n<p><b>Macintosh</b> users can find binaries and source on\nJack Jansen's\n<a href="http://homepages.cwi.nl/~jack/macpython/">MacPython page</a>.\nMac OS X users who have a C compiler (which comes with the\n<a href="http://developer.apple.com/tools/macosxtools.html">OS X\nDeveloper Tools</a>) can also build from the source tarball below.\n-->

    \n

    <h3>What's New?</h3>

    \n

    <ul>

    \n

    <li>See the <a href="../2.3/highlights">highlights</a> of the\nPython 2.3 release. As noted, the 2.3.2 release is a bugfix release\nof 2.3.1, itself a bugfix release of 2.3.

    \n

    <p><li>The Windows installer now includes the documentation in searchable\nhtmlhelp format, rather than individual HTML files. You can still download the\n<a href="/ftp/python/doc/2.3.2/">individual HTML files</a>.

    \n

    <p><li>Andrew Kuchling's <a href="/doc/2.3/whatsnew/">What's New\nin Python 2.3</a> describes the most visible changes since <a\nhref="../2.2.3/">Python 2.2</a> in more detail.

    \n

    <p><li>A detailed list of the changes is in the <a\nhref="NEWS.txt">release notes</a>, or the <tt>Misc/NEWS</tt> file in\nthe source distribution.

    \n

    <p><li>For the full list of changes, you can poke around in <a\nhref="http://sourceforge.net/cvs/?group_id=5470">CVS</a>.

    \n

    <p><li>The PSF's <a href="/psf/press-release/pr20031003">press\nrelease</a> announcing 2.3.2.

    \n

    </ul>

    \n

    <h3>Documentation</h3>

    \n

    <p>The documentation has been updated too:

    \n

    <ul>

    \n

    <li><a href="/doc/2.3.2/">Browse HTML documentation on-line</a>

    \n

    <li>Download using <a href="/ftp/python/doc/2.3.2/">HTTP</a>.

    \n

    </ul>

    \n

    <p>The <a href="../2.2.3/descrintro">interim documentation for\nnew-style classes</a>, last seen for Python 2.2.3, is still relevant\nfor Python 2.3.2. Raymond Hettinger has also written a <a\nhref="http://users.rcn.com/python/download/Descriptor.htm">tutorial on\ndescriptors</a>, introduced in Python 2.2.\nIn addition, <a href="/download.releases/2.3/mro">The Python 2.3 Method\nResolution Order</a> is a nice paper by Michele Simionato that\nexplains the C3 MRO algorithm (new in Python 2.3) clearly. (Also\navailable as <a href="/download/releases/2.3/mro/mro.txt">reStructured Text</a>. Copied with\npermission.)

    \n

    <h3>Files, <a href="md5sum.py">MD5</a> checksums, signatures, and sizes</h3>

    \n

    <pre>\nf54d7a529d444994b4b33429bbb45479 <a href="/ftp/python/2.3.2/Python-2.3.2.tgz">Python-2.3.2.tgz</A> (8459427 bytes, <a href="Python-2.3.2.tgz.asc">signature</a>)\n9271171d55690e5cacd692e563924305 <a href="/ftp/python/2.3.2/Python-2.3.2.tar.bz2">Python-2.3.2.tar.bz2</A> (7161770 bytes, <a href="Python-2.3.2.tar.bz2.asc">signature</a>)\n87aed0e4a79c350065b770f9a4ddfd75 <a href="/ftp/python/2.3.2/Python-2.3.2-1.exe">Python-2.3.2-1.exe</A> (9481060 bytes, <a href="Python-2.3.2-1.exe.asc">signature</a>)\n</pre>

    \n

    <p>The signatures above were generated with\n<a href="http://www.gnupg.org">GnuPG</a> using the release manager's\n(Anthony Baxter)\n<a href="/download#pubkeys">public key</a>\nwhich has a key id of 6A45C816.

    \n

    <p>&nbsp;

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 137, + "fields": { + "created": "2014-03-20T22:36:48.620Z", + "updated": "2014-06-10T03:41:44.734Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.1.0", + "slug": "python-310", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2009-06-26T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v3.1/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n**Python 3.1 has been superseded by 3.1.1.** You can download `3.1.1 `_.\n\nPython 3.1 final was released on June 27th, 2009.\n\nPython 3.1 is a continuation of the work started by Python 3.0, the new\nbackwards-incompatible series of Python. Improvements in this release include:\n\n- An ordered dictionary type\n- Various optimizations to the int type\n- New unittest features including test skipping and new assert methods.\n- A much faster io module\n- Tile support for Tkinter\n- A pure Python reference implementation of the import statement\n- New syntax for nested with statements\n\nSee these resources for further information:\n\n* `What's new in 3.1? `_\n* `Python 3.1 change log `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\n\n\nDownload\n--------\n\nThis is a production release.\n\nWe currently support these formats for download:\n\n* `Gzipped source tar ball (3.1) `_ `(sig)\n `__\n\n* `Bzipped source tar ball (3.1) `_ `(sig)\n `__\n\n* `Windows x86 MSI Installer (3.1) `_ `(sig)\n `__\n\n* `Windows X86-64 MSI Installer (3.1) `_ [1]_\n `(sig) `__\n\n* `Mac Installer disk image (3.1) `_ `(sig)\n `__\n\n\nThe source tarballs and Mac installer are signed with Benjamin Peterson's key\n(fingerprint: 12EF 3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows\ninstallers are signed with Martin von L\u00f6wis' public key which has a key id of\n7D9DC8D2. The public keys are located on the `download page\n`_.\n\nSHA1 checksums and sizes of the released files::\n\n 8590b685654367e3eba70dc00df7e45e88c21da4 11359455 python-3.1.tgz\n f8c610f47e6c9420314e48871b9c697a93ed2e42 9510460 python-3.1.tar.bz2\n 2a0dc4829e5d3842d363a16594e077b8d7e2df88 14094336 python-3.1.amd64.msi\n 4b499d3e4ba47f8c7f814ef379cb24c89f9b43c1 13814272 python-3.1.msi\n 02ceddc7d2b65b7d378ca9f333e43f9b0bec7bb1 17119035 python-3.1.dmg\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 3.1 has been superseded by 3.1.1. You can download 3.1.1.

    \n

    Python 3.1 final was released on June 27th, 2009.

    \n

    Python 3.1 is a continuation of the work started by Python 3.0, the new\nbackwards-incompatible series of Python. Improvements in this release include:

    \n
      \n
    • An ordered dictionary type
    • \n
    • Various optimizations to the int type
    • \n
    • New unittest features including test skipping and new assert methods.
    • \n
    • A much faster io module
    • \n
    • Tile support for Tkinter
    • \n
    • A pure Python reference implementation of the import statement
    • \n
    • New syntax for nested with statements
    • \n
    \n

    See these resources for further information:

    \n\n
    \n

    Download

    \n

    This is a production release.

    \n

    We currently support these formats for download:

    \n\n

    The source tarballs and Mac installer are signed with Benjamin Peterson's key\n(fingerprint: 12EF 3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows\ninstallers are signed with Martin von L\u00f6wis' public key which has a key id of\n7D9DC8D2. The public keys are located on the download page.

    \n

    SHA1 checksums and sizes of the released files:

    \n
    \n8590b685654367e3eba70dc00df7e45e88c21da4  11359455  python-3.1.tgz\nf8c610f47e6c9420314e48871b9c697a93ed2e42   9510460  python-3.1.tar.bz2\n2a0dc4829e5d3842d363a16594e077b8d7e2df88  14094336  python-3.1.amd64.msi\n4b499d3e4ba47f8c7f814ef379cb24c89f9b43c1  13814272  python-3.1.msi\n02ceddc7d2b65b7d378ca9f333e43f9b0bec7bb1  17119035  python-3.1.dmg\n
    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 138, + "fields": { + "created": "2014-03-20T22:36:50.442Z", + "updated": "2014-06-10T03:41:49.523Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.3.0", + "slug": "python-330", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2012-09-29T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v3.3.0/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n\nPython 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x. Major new features in the 3.3 release series are:\n\n* :pep:`380`, syntax for delegating to a subgenerator (``yield from``)\n* :pep:`393`, flexible string representation (doing away with the distinction\n between \"wide\" and \"narrow\" Unicode builds)\n* A C implementation of the \"decimal\" module, with up to 120x speedup\n for decimal-heavy applications\n* The import system (__import__) is based on importlib by default\n* The new \"lzma\" module with LZMA/XZ support\n* :pep:`397`, a Python launcher for Windows\n* :pep:`405`, virtual environment support in core\n* :pep:`420`, namespace package support\n* :pep:`3151`, reworking the OS and IO exception hierarchy\n* :pep:`3155`, qualified name for classes and functions\n* :pep:`409`, suppressing exception context\n* :pep:`414`, explicit Unicode literals to help with porting\n* :pep:`418`, extended platform-independent clocks in the \"time\" module\n* :pep:`412`, a new key-sharing dictionary implementation that significantly\n saves memory for object-oriented code\n* :pep:`362`, the function-signature object\n* The new \"faulthandler\" module that helps diagnosing crashes\n* The new \"unittest.mock\" module\n* The new \"ipaddress\" module\n* The \"sys.implementation\" attribute\n* A policy framework for the email package, with a provisional (see\n :pep:`411`) policy that adds much improved unicode support for email\n header parsing\n* A \"collections.ChainMap\" class for linking mappings to a single unit\n* Wrappers for many more POSIX functions in the \"os\" and \"signal\" modules, as\n well as other useful functions such as \"sendfile()\"\n* Hash randomization, introduced in earlier bugfix releases, is now\n switched on by default\n\nSee these resources for further information:\n\n* `What's new in 3.3? `_\n* `3.3 Release Schedule `_\n* `Change log for this release\n `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\nDownload\n--------\n\n.. This is a preview release, and its use is not recommended in production\n.. settings.\n\nThis is a production release. Please `report any bugs\n`__ you encounter.\n\nWe currently support these formats for download:\n\n* `Bzipped source tar ball (3.3.0) `__ `(sig)\n `__, ~ 14 MB\n\n* `XZ compressed source tar ball (3.3.0) `__\n `(sig) `__, ~ 11 MB\n\n* `Gzipped source tar ball (3.3.0) `__ `(sig)\n `__, ~ 16 MB\n\n..\n\n* `Windows x86 MSI Installer (3.3.0) `__ `(sig)\n `__ and `Visual Studio debug information\n files `__ `(sig)\n `__\n \n* `Windows X86-64 MSI Installer (3.3.0) `__\n [1]_ `(sig) `__ and `Visual Studio\n debug information files `__ `(sig)\n `__\n\n* `Windows help file `_ `(sig)\n `__\n\n..\n\n* `Mac OS X 64-bit/32-bit Installer (3.3.0) for Mac OS X 10.6 and later\n `__ [2]_ `(sig)\n `__. \n [You may need an updated Tcl/Tk install to run IDLE or use Tkinter,\n see note 2 for instructions.]\n \n* `Mac OS X 32-bit i386/PPC Installer (3.3.0) for OS X 10.5 and later\n `__ [2]_ `(sig)\n `__\n \nThe source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is ``26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288``. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the `download\npage `_.\n\nMD5 checksums and sizes of the released files::\n\n 198a64f7a04d1d5e95ce2782d5fd8254 16327785 Python-3.3.0.tgz\n b3b2524f72409d919a4137826a870a8f 13781940 Python-3.3.0.tar.bz2\n 2e7533b4009ac4adae62a7797a442e7a 11720732 Python-3.3.0.tar.xz\n 9813d8f76b007fffa595abb3a11b3b0f 19367758 python-3.3.0-macosx10.5.dmg\n a42dbeb9d17d46b40a6666f496207b4e 19441635 python-3.3.0-macosx10.6.dmg\n 5129376df1c56297a80e69a1a6144b4e 20508672 python-3.3.0.amd64.msi\n 70062e4b9a1f959f5e07555e471c5657 19980288 python-3.3.0.msi\n e3a31bce895efedd44b1d0db26614344 6353251 python330.chm\n a730d8ce509ce666170911a834ef1e2e 27897502 python-3.3.0-pdb.zip\n e44e33ab3721014d6ea740553acfa337 22104438 python-3.3.0.amd64-pdb.zip\n\n.. [1] The binaries for AMD64 will also work on processors that implement the\n Intel 64 architecture (formerly EM64T), i.e. the architecture that\n Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They\n will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_.\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x. Major new features in the 3.3 release series are:

    \n
      \n
    • PEP 380, syntax for delegating to a subgenerator (yield from)
    • \n
    • PEP 393, flexible string representation (doing away with the distinction\nbetween "wide" and "narrow" Unicode builds)
    • \n
    • A C implementation of the "decimal" module, with up to 120x speedup\nfor decimal-heavy applications
    • \n
    • The import system (__import__) is based on importlib by default
    • \n
    • The new "lzma" module with LZMA/XZ support
    • \n
    • PEP 397, a Python launcher for Windows
    • \n
    • PEP 405, virtual environment support in core
    • \n
    • PEP 420, namespace package support
    • \n
    • PEP 3151, reworking the OS and IO exception hierarchy
    • \n
    • PEP 3155, qualified name for classes and functions
    • \n
    • PEP 409, suppressing exception context
    • \n
    • PEP 414, explicit Unicode literals to help with porting
    • \n
    • PEP 418, extended platform-independent clocks in the "time" module
    • \n
    • PEP 412, a new key-sharing dictionary implementation that significantly\nsaves memory for object-oriented code
    • \n
    • PEP 362, the function-signature object
    • \n
    • The new "faulthandler" module that helps diagnosing crashes
    • \n
    • The new "unittest.mock" module
    • \n
    • The new "ipaddress" module
    • \n
    • The "sys.implementation" attribute
    • \n
    • A policy framework for the email package, with a provisional (see\nPEP 411) policy that adds much improved unicode support for email\nheader parsing
    • \n
    • A "collections.ChainMap" class for linking mappings to a single unit
    • \n
    • Wrappers for many more POSIX functions in the "os" and "signal" modules, as\nwell as other useful functions such as "sendfile()"
    • \n
    • Hash randomization, introduced in earlier bugfix releases, is now\nswitched on by default
    • \n
    \n

    See these resources for further information:

    \n\n
    \n

    Download

    \n\n\n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n\n\n\n\n

    The source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is 26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the download\npage.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \n198a64f7a04d1d5e95ce2782d5fd8254  16327785  Python-3.3.0.tgz\nb3b2524f72409d919a4137826a870a8f  13781940  Python-3.3.0.tar.bz2\n2e7533b4009ac4adae62a7797a442e7a  11720732  Python-3.3.0.tar.xz\n9813d8f76b007fffa595abb3a11b3b0f  19367758  python-3.3.0-macosx10.5.dmg\na42dbeb9d17d46b40a6666f496207b4e  19441635  python-3.3.0-macosx10.6.dmg\n5129376df1c56297a80e69a1a6144b4e  20508672  python-3.3.0.amd64.msi\n70062e4b9a1f959f5e07555e471c5657  19980288  python-3.3.0.msi\ne3a31bce895efedd44b1d0db26614344   6353251  python330.chm\na730d8ce509ce666170911a834ef1e2e  27897502  python-3.3.0-pdb.zip\ne44e33ab3721014d6ea740553acfa337  22104438  python-3.3.0.amd64-pdb.zip\n
    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the\nIntel 64 architecture (formerly EM64T), i.e. the architecture that\nMicrosoft calls x64, and AMD called x86-64 before calling it AMD64. They\nwill not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here.
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 139, + "fields": { + "created": "2014-03-20T22:36:56.345Z", + "updated": "2014-06-10T03:41:49.107Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.2.5", + "slug": "python-325", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2013-05-15T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v3.2.5/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n**Note:** A newer security-fix release, 3.2.6, is currently `available\n`__. Its use is recommended.\n\nPython 3.2.5 was released on May 15th, 2013. This release fixes `a few\nregressions `__ found in\nPython 3.2.4, and is planned to be the final 3.2 series bugfix release.\n\nNew features of the 3.2 series, compared to 3.1\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPython 3.2 is a continuation of the efforts to improve and stabilize the Python\n3.x line. Since the final release of Python 2.7, the 2.x line will only receive\nbugfixes, and new features are developed for 3.x only.\n\nSince :pep:`3003`, the Moratorium on Language Changes, is in effect, there are\nno changes in Python's syntax and only few changes to built-in types in Python\n3.2. Development efforts concentrated on the standard library and support for\nporting code to Python 3. Highlights are:\n\n* numerous improvements to the unittest module\n* :pep:`3147`, support for .pyc repository directories\n* :pep:`3149`, support for version tagged dynamic libraries\n* :pep:`3148`, a new futures library for concurrent programming\n* :pep:`384`, a stable ABI for extension modules\n* :pep:`391`, dictionary-based logging configuration\n* an overhauled GIL implementation that reduces contention\n* an extended email package that handles bytes messages\n* a much improved ssl module with support for SSL contexts and certificate\n hostname matching\n* a sysconfig module to access configuration information\n* additions to the shutil module, among them archive file support\n* many enhancements to configparser, among them mapping protocol support\n* improvements to pdb, the Python debugger\n* countless fixes regarding bytes/string issues; among them full support\n for a bytes environment (filenames, environment variables)\n* many consistency and behavior fixes for numeric operations\n\nMore resources\n^^^^^^^^^^^^^^\n\n* `What's new in 3.2? `_\n* `Change log for this release\n `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\nDownload\n--------\n\n.. This is a preview release, and its use is not recommended in production\n.. settings.\n\nThis is a production release. Please `report any bugs\n`_ you encounter.\n\nWe currently support these formats for download:\n\n* `Bzipped source tar ball (3.2.5) `__ `(sig)\n `__, ~ 11 MB\n\n* `XZ compressed source tar ball (3.2.5) `__\n `(sig) `__, ~ 8.5 MB\n\n* `Gzipped source tar ball (3.2.5) `__ `(sig)\n `__, ~ 13 MB\n\n..\n\n.. Windows binaries will be provided shortly.\n\n* `Windows x86 MSI Installer (3.2.5) `__ `(sig)\n `__ and `Visual Studio debug information\n files `__ `(sig)\n `__\n \n* `Windows X86-64 MSI Installer (3.2.5) `__\n [1]_ `(sig) `__ and `Visual Studio\n debug information files `__ `(sig)\n `__\n\n.. * `Windows help file `_ `(sig)\n.. `__\n\n..\n\n* `Mac OS X 64-bit/32-bit Installer (3.2.5) for Mac OS X 10.6 and later\n `__ [2]_ `(sig)\n `__.\n [You may need an updated Tcl/Tk install to run IDLE or use Tkinter,\n see note 2 for instructions.]\n\n* `Mac OS X 32-bit i386/PPC Installer (3.2.5) for Mac OS X 10.3 and later\n `__ [2]_ `(sig)\n `__\n\nThe source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is ``26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288``. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the `download\npage `_.\n\nMD5 checksums and sizes of the released files::\n\n ed8d5529d2aebc36b53f4e0a0c9e6728 13123323 Python-3.2.5.tgz\n 99e7de6abd96185480f819c5029709d2 10996792 Python-3.2.5.tar.bz2\n 03c5843638c576d29b3321947facd22d 9221624 Python-3.2.5.tar.xz\n e119db5243fd9db25734f02fbfc48816 17773901 python-3.2.5-macosx10.3.dmg\n c97c7ff305b4b8ed84c6d708e0bde27c 17461482 python-3.2.5-macosx10.6.dmg\n a6597c204d0351abb3668b43a8a330aa 22029384 python-3.2.5-pdb.zip\n a82e831252fdd2b1153d3ae98a707ff2 20071496 python-3.2.5.amd64-pdb.zip\n b3b7bc402c630d61a37516986aaa1c4b 18812928 python-3.2.5.amd64.msi\n cdd6fdc59461c968bd105fdf08f4a17d 18329600 python-3.2.5.msi\n\n.. [1] The binaries for AMD64 will also work on processors that implement the\n Intel 64 architecture (formerly EM64T), i.e. the architecture that\n Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They\n will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: A newer security-fix release, 3.2.6, is currently available. Its use is recommended.

    \n

    Python 3.2.5 was released on May 15th, 2013. This release fixes a few\nregressions found in\nPython 3.2.4, and is planned to be the final 3.2 series bugfix release.

    \n
    \n

    New features of the 3.2 series, compared to 3.1

    \n

    Python 3.2 is a continuation of the efforts to improve and stabilize the Python\n3.x line. Since the final release of Python 2.7, the 2.x line will only receive\nbugfixes, and new features are developed for 3.x only.

    \n

    Since PEP 3003, the Moratorium on Language Changes, is in effect, there are\nno changes in Python's syntax and only few changes to built-in types in Python\n3.2. Development efforts concentrated on the standard library and support for\nporting code to Python 3. Highlights are:

    \n
      \n
    • numerous improvements to the unittest module
    • \n
    • PEP 3147, support for .pyc repository directories
    • \n
    • PEP 3149, support for version tagged dynamic libraries
    • \n
    • PEP 3148, a new futures library for concurrent programming
    • \n
    • PEP 384, a stable ABI for extension modules
    • \n
    • PEP 391, dictionary-based logging configuration
    • \n
    • an overhauled GIL implementation that reduces contention
    • \n
    • an extended email package that handles bytes messages
    • \n
    • a much improved ssl module with support for SSL contexts and certificate\nhostname matching
    • \n
    • a sysconfig module to access configuration information
    • \n
    • additions to the shutil module, among them archive file support
    • \n
    • many enhancements to configparser, among them mapping protocol support
    • \n
    • improvements to pdb, the Python debugger
    • \n
    • countless fixes regarding bytes/string issues; among them full support\nfor a bytes environment (filenames, environment variables)
    • \n
    • many consistency and behavior fixes for numeric operations
    • \n
    \n
    \n
    \n

    More resources

    \n\n
    \n

    Download

    \n\n\n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n\n\n\n\n\n\n\n

    The source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is 26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the download\npage.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \ned8d5529d2aebc36b53f4e0a0c9e6728  13123323  Python-3.2.5.tgz\n99e7de6abd96185480f819c5029709d2  10996792  Python-3.2.5.tar.bz2\n03c5843638c576d29b3321947facd22d   9221624  Python-3.2.5.tar.xz\ne119db5243fd9db25734f02fbfc48816  17773901  python-3.2.5-macosx10.3.dmg\nc97c7ff305b4b8ed84c6d708e0bde27c  17461482  python-3.2.5-macosx10.6.dmg\na6597c204d0351abb3668b43a8a330aa  22029384  python-3.2.5-pdb.zip\na82e831252fdd2b1153d3ae98a707ff2  20071496  python-3.2.5.amd64-pdb.zip\nb3b7bc402c630d61a37516986aaa1c4b  18812928  python-3.2.5.amd64.msi\ncdd6fdc59461c968bd105fdf08f4a17d  18329600  python-3.2.5.msi\n
    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the\nIntel 64 architecture (formerly EM64T), i.e. the architecture that\nMicrosoft calls x64, and AMD called x86-64 before calling it AMD64. They\nwill not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here.
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 140, + "fields": { + "created": "2014-03-20T22:37:01.435Z", + "updated": "2014-06-10T03:41:49.906Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.3.1", + "slug": "python-331", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2013-04-06T00:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.3.1/whatsnew/changelog.html", + "content": ".. Migrated from Release.release_page field.\n\nrelease. It includes `hundreds of bugfixes\n`_ over 3.3.0.\n\nMajor new features of the 3.3 series, compared to 3.2\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPython 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.\n\n* :pep:`380`, syntax for delegating to a subgenerator (``yield from``)\n* :pep:`393`, flexible string representation (doing away with the distinction\n between \"wide\" and \"narrow\" Unicode builds)\n* A C implementation of the \"decimal\" module, with up to 120x speedup\n for decimal-heavy applications\n* The import system (__import__) is based on importlib by default\n* The new \"lzma\" module with LZMA/XZ support\n* :pep:`397`, a Python launcher for Windows\n* :pep:`405`, virtual environment support in core\n* :pep:`420`, namespace package support\n* :pep:`3151`, reworking the OS and IO exception hierarchy\n* :pep:`3155`, qualified name for classes and functions\n* :pep:`409`, suppressing exception context\n* :pep:`414`, explicit Unicode literals to help with porting\n* :pep:`418`, extended platform-independent clocks in the \"time\" module\n* :pep:`412`, a new key-sharing dictionary implementation that significantly\n saves memory for object-oriented code\n* :pep:`362`, the function-signature object\n* The new \"faulthandler\" module that helps diagnosing crashes\n* The new \"unittest.mock\" module\n* The new \"ipaddress\" module\n* The \"sys.implementation\" attribute\n* A policy framework for the email package, with a provisional (see\n :pep:`411`) policy that adds much improved unicode support for email\n header parsing\n* A \"collections.ChainMap\" class for linking mappings to a single unit\n* Wrappers for many more POSIX functions in the \"os\" and \"signal\" modules, as\n well as other useful functions such as \"sendfile()\"\n* Hash randomization, introduced in earlier bugfix releases, is now\n switched on by default\n\nMore resources\n^^^^^^^^^^^^^^\n\n* `Change log for this release\n `_.\n* `Online Documentation `_\n* `What's new in 3.3? `_\n* `3.3 Release Schedule `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\nDownload\n--------\n\n.. This is a preview release, and its use is not recommended in production\n.. settings.\n\nThis is a production release. Please `report any bugs\n`__ you encounter.\n\nWe currently support these formats for download:\n\n* `Bzipped source tar ball (3.3.1) `__ `(sig)\n `__, ~ 14 MB\n\n* `XZ compressed source tar ball (3.3.1) `__\n `(sig) `__, ~ 11 MB\n\n* `Gzipped source tar ball (3.3.1) `__ `(sig)\n `__, ~ 16 MB\n\n..\n\n* `Windows x86 MSI Installer (3.3.1) `__ `(sig)\n `__ and `Visual Studio debug information\n files `__ `(sig)\n `__\n\n* `Windows X86-64 MSI Installer (3.3.1) `__\n [1]_ `(sig) `__ and `Visual Studio\n debug information files `__ `(sig)\n `__\n\n* `Windows help file `_ `(sig)\n `__\n\n..\n\n* `Mac OS X 64-bit/32-bit Installer (3.3.1) for Mac OS X 10.6 and later\n `__ [2]_ `(sig)\n `__.\n [You may need an updated Tcl/Tk install to run IDLE or use Tkinter,\n see note 2 for instructions.]\n\n* `Mac OS X 32-bit i386/PPC Installer (3.3.1) for Mac OS X 10.5 and later\n `__ [2]_ `(sig)\n `__\n\nThe source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is ``26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288``. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the `download\npage `_.\n\nMD5 checksums and sizes of the released files::\n\n c19bfd6ea252b61779a4f2996fb3b330 16521332 Python-3.3.1.tgz\n fb7147a15359a941e0b048c641fd7123 13975626 Python-3.3.1.tar.bz2\n 993232d9f4d9b4863cc1ec69a792e9cd 11852964 Python-3.3.1.tar.xz\n f563b701466bbfddc9e228d6cd894647 26714664 python-3.3.1-pdb.zip\n 8141a751200213ea6279624120f099d6 22137206 python-3.3.1.amd64-pdb.zip\n 69ad9e442d33e8c2470b2b6c7575d6dd 20758528 python-3.3.1.amd64.msi\n 8c78e017ba32aafb00f6574c38d0101f 20217856 python-3.3.1.msi\n ef3058449389c4b77385e6637a911d87 6596709 python331.chm\n ec10c5be176faeda17382d3ce6739f32 19601538 python-3.3.1-macosx10.5.dmg\n b208b962515d49c7e236f6dce565a723 19700219 python-3.3.1-macosx10.6.dmg\n\n.. [1] The binaries for AMD64 will also work on processors that implement the\n Intel 64 architecture (formerly EM64T), i.e. the architecture that\n Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They\n will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    release. It includes hundreds of bugfixes over 3.3.0.

    \n
    \n

    Major new features of the 3.3 series, compared to 3.2

    \n

    Python 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.

    \n
      \n
    • PEP 380, syntax for delegating to a subgenerator (yield from)
    • \n
    • PEP 393, flexible string representation (doing away with the distinction\nbetween "wide" and "narrow" Unicode builds)
    • \n
    • A C implementation of the "decimal" module, with up to 120x speedup\nfor decimal-heavy applications
    • \n
    • The import system (__import__) is based on importlib by default
    • \n
    • The new "lzma" module with LZMA/XZ support
    • \n
    • PEP 397, a Python launcher for Windows
    • \n
    • PEP 405, virtual environment support in core
    • \n
    • PEP 420, namespace package support
    • \n
    • PEP 3151, reworking the OS and IO exception hierarchy
    • \n
    • PEP 3155, qualified name for classes and functions
    • \n
    • PEP 409, suppressing exception context
    • \n
    • PEP 414, explicit Unicode literals to help with porting
    • \n
    • PEP 418, extended platform-independent clocks in the "time" module
    • \n
    • PEP 412, a new key-sharing dictionary implementation that significantly\nsaves memory for object-oriented code
    • \n
    • PEP 362, the function-signature object
    • \n
    • The new "faulthandler" module that helps diagnosing crashes
    • \n
    • The new "unittest.mock" module
    • \n
    • The new "ipaddress" module
    • \n
    • The "sys.implementation" attribute
    • \n
    • A policy framework for the email package, with a provisional (see\nPEP 411) policy that adds much improved unicode support for email\nheader parsing
    • \n
    • A "collections.ChainMap" class for linking mappings to a single unit
    • \n
    • Wrappers for many more POSIX functions in the "os" and "signal" modules, as\nwell as other useful functions such as "sendfile()"
    • \n
    • Hash randomization, introduced in earlier bugfix releases, is now\nswitched on by default
    • \n
    \n
    \n
    \n

    More resources

    \n\n
    \n

    Download

    \n\n\n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n\n\n\n\n

    The source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is 26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the download\npage.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \nc19bfd6ea252b61779a4f2996fb3b330  16521332  Python-3.3.1.tgz\nfb7147a15359a941e0b048c641fd7123  13975626  Python-3.3.1.tar.bz2\n993232d9f4d9b4863cc1ec69a792e9cd  11852964  Python-3.3.1.tar.xz\nf563b701466bbfddc9e228d6cd894647  26714664  python-3.3.1-pdb.zip\n8141a751200213ea6279624120f099d6  22137206  python-3.3.1.amd64-pdb.zip\n69ad9e442d33e8c2470b2b6c7575d6dd  20758528  python-3.3.1.amd64.msi\n8c78e017ba32aafb00f6574c38d0101f  20217856  python-3.3.1.msi\nef3058449389c4b77385e6637a911d87   6596709  python331.chm\nec10c5be176faeda17382d3ce6739f32  19601538  python-3.3.1-macosx10.5.dmg\nb208b962515d49c7e236f6dce565a723  19700219  python-3.3.1-macosx10.6.dmg\n
    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the\nIntel 64 architecture (formerly EM64T), i.e. the architecture that\nMicrosoft calls x64, and AMD called x86-64 before calling it AMD64. They\nwill not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here.
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 141, + "fields": { + "created": "2014-03-20T22:37:07.133Z", + "updated": "2014-06-10T03:41:48.483Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.2.4", + "slug": "python-324", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2013-04-06T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v3.2.4/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n**Note:** A newer security-fix release, 3.2.6, is currently `available\n`__. Its use is recommended.\n\nPython 3.2.4 was released on April 7th, 2013. This is the final 3.2 series\nbugfix release.\n\nNew features of the 3.2 series, compared to 3.1\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPython 3.2 is a continuation of the efforts to improve and stabilize the Python\n3.x line. Since the final release of Python 2.7, the 2.x line will only receive\nbugfixes, and new features are developed for 3.x only.\n\nSince :pep:`3003`, the Moratorium on Language Changes, is in effect, there are\nno changes in Python's syntax and only few changes to built-in types in Python\n3.2. Development efforts concentrated on the standard library and support for\nporting code to Python 3. Highlights are:\n\n* numerous improvements to the unittest module\n* :pep:`3147`, support for .pyc repository directories\n* :pep:`3149`, support for version tagged dynamic libraries\n* :pep:`3148`, a new futures library for concurrent programming\n* :pep:`384`, a stable ABI for extension modules\n* :pep:`391`, dictionary-based logging configuration\n* an overhauled GIL implementation that reduces contention\n* an extended email package that handles bytes messages\n* a much improved ssl module with support for SSL contexts and certificate\n hostname matching\n* a sysconfig module to access configuration information\n* additions to the shutil module, among them archive file support\n* many enhancements to configparser, among them mapping protocol support\n* improvements to pdb, the Python debugger\n* countless fixes regarding bytes/string issues; among them full support\n for a bytes environment (filenames, environment variables)\n* many consistency and behavior fixes for numeric operations\n\nMore resources\n^^^^^^^^^^^^^^\n\n* `What's new in 3.2? `_\n* `Change log for this release\n `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\nDownload\n--------\n\n.. This is a preview release, and its use is not recommended in production\n.. settings.\n\nThis is a production release. Please `report any bugs\n`_ you encounter.\n\nWe currently support these formats for download:\n\n* `Bzipped source tar ball (3.2.4) `__ `(sig)\n `__, ~ 11 MB\n\n* `XZ compressed source tar ball (3.2.4) `__\n `(sig) `__, ~ 8.5 MB\n\n* `Gzipped source tar ball (3.2.4) `__ `(sig)\n `__, ~ 13 MB\n\n..\n\n.. Windows and Mac binaries will be provided shortly.\n\n* `Windows x86 MSI Installer (3.2.4) `__ `(sig)\n `__ and `Visual Studio debug information\n files `__ `(sig)\n `__\n\n* `Windows X86-64 MSI Installer (3.2.4) `__\n [1]_ `(sig) `__ and `Visual Studio\n debug information files `__ `(sig)\n `__\n\n.. * `Windows help file `_ `(sig)\n.. `__\n\n..\n\n* `Mac OS X 64-bit/32-bit Installer (3.2.4) for Mac OS X 10.6 and later\n `__ [2]_ `(sig)\n `__.\n [You may need an updated Tcl/Tk install to run IDLE or use Tkinter,\n see note 2 for instructions.]\n\n* `Mac OS X 32-bit i386/PPC Installer (3.2.4) for Mac OS X 10.3 and later\n `__ [2]_ `(sig)\n `__\n\nThe source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is ``26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288``. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the `download\npage `_.\n\nMD5 checksums and sizes of the released files::\n\n 3af05758d0bc2b1a27249e8d622c3e91 13121703 Python-3.2.4.tgz\n 9864fc7fcb95ea6e3e3ea8d23f8c5f3f 10998399 Python-3.2.4.tar.bz2\n a52116f79701f811da9d850d3bc5bade 9223024 Python-3.2.4.tar.xz\n e4087c68fdf6db0fc611fef361c4bf8c 21849160 python-3.2.4-pdb.zip\n d2b6bea04671d5481a4c72a16f71b124 20210760 python-3.2.4.amd64-pdb.zip\n ea56e9ed6619534e0ee6a182dae7cc44 18812928 python-3.2.4.amd64.msi\n 962f3af4c90169b5f72c782645a80287 18329600 python-3.2.4.msi\n 81f330132f82f8a42de4d9c379df9b73 17771385 python-3.2.4-macosx10.3.dmg\n 3968b46a7657bbde35f4116e7d44127e 17462524 python-3.2.4-macosx10.6.dmg\n\n.. [1] The binaries for AMD64 will also work on processors that implement the\n Intel 64 architecture (formerly EM64T), i.e. the architecture that\n Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They\n will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: A newer security-fix release, 3.2.6, is currently available. Its use is recommended.

    \n

    Python 3.2.4 was released on April 7th, 2013. This is the final 3.2 series\nbugfix release.

    \n
    \n

    New features of the 3.2 series, compared to 3.1

    \n

    Python 3.2 is a continuation of the efforts to improve and stabilize the Python\n3.x line. Since the final release of Python 2.7, the 2.x line will only receive\nbugfixes, and new features are developed for 3.x only.

    \n

    Since PEP 3003, the Moratorium on Language Changes, is in effect, there are\nno changes in Python's syntax and only few changes to built-in types in Python\n3.2. Development efforts concentrated on the standard library and support for\nporting code to Python 3. Highlights are:

    \n
      \n
    • numerous improvements to the unittest module
    • \n
    • PEP 3147, support for .pyc repository directories
    • \n
    • PEP 3149, support for version tagged dynamic libraries
    • \n
    • PEP 3148, a new futures library for concurrent programming
    • \n
    • PEP 384, a stable ABI for extension modules
    • \n
    • PEP 391, dictionary-based logging configuration
    • \n
    • an overhauled GIL implementation that reduces contention
    • \n
    • an extended email package that handles bytes messages
    • \n
    • a much improved ssl module with support for SSL contexts and certificate\nhostname matching
    • \n
    • a sysconfig module to access configuration information
    • \n
    • additions to the shutil module, among them archive file support
    • \n
    • many enhancements to configparser, among them mapping protocol support
    • \n
    • improvements to pdb, the Python debugger
    • \n
    • countless fixes regarding bytes/string issues; among them full support\nfor a bytes environment (filenames, environment variables)
    • \n
    • many consistency and behavior fixes for numeric operations
    • \n
    \n
    \n
    \n

    More resources

    \n\n
    \n

    Download

    \n\n\n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n\n\n\n\n\n\n\n

    The source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is 26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the download\npage.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \n3af05758d0bc2b1a27249e8d622c3e91  13121703  Python-3.2.4.tgz\n9864fc7fcb95ea6e3e3ea8d23f8c5f3f  10998399  Python-3.2.4.tar.bz2\na52116f79701f811da9d850d3bc5bade   9223024  Python-3.2.4.tar.xz\ne4087c68fdf6db0fc611fef361c4bf8c  21849160  python-3.2.4-pdb.zip\nd2b6bea04671d5481a4c72a16f71b124  20210760  python-3.2.4.amd64-pdb.zip\nea56e9ed6619534e0ee6a182dae7cc44  18812928  python-3.2.4.amd64.msi\n962f3af4c90169b5f72c782645a80287  18329600  python-3.2.4.msi\n81f330132f82f8a42de4d9c379df9b73  17771385  python-3.2.4-macosx10.3.dmg\n3968b46a7657bbde35f4116e7d44127e  17462524  python-3.2.4-macosx10.6.dmg\n
    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the\nIntel 64 architecture (formerly EM64T), i.e. the architecture that\nMicrosoft calls x64, and AMD called x86-64 before calling it AMD64. They\nwill not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here.
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 142, + "fields": { + "created": "2014-03-20T22:37:13.165Z", + "updated": "2014-06-10T03:41:43.602Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.0.0", + "slug": "python-300", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2008-12-03T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v3.0/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 3.0 is end-of-lifed with the release of Python 3.1.**\n All users of Python 3.0.x should upgrade to the most recent version of \n Python 3; please see the `downloads `_ pages.\n\n **Python 3.0 has been replaced by a newer bugfix release of Python**.\n Please download `Python 3.0.1 `__ instead.\n\nPython 3.0 final was released on December 3rd, 2008.\n\nPython 3.0 (a.k.a. \"Python 3000\" or \"Py3k\") is a **new\nversion** of the language that is **incompatible** with the 2.x line of\nreleases. The language is mostly the same, but many details,\nespecially how built-in objects like dictionaries and strings work,\nhave changed considerably, and a lot of deprecated features have\nfinally been removed. Also, the standard library has been reorganized\nin a few prominent places.\n\nHere are some Python 3.0 resources:\n\n* `What's new in Python 3000\n `_\n* `Python 3.0 change log `_.\n* `Online Documentation `_\n* Read more in `PEP 3000 `_\n* To help out, sign up for `python-3000@python.org\n `_\n* Conversion tool for Python 2.x code:\n `2to3 `_\n\nPlease report bugs at ``_\n\n\nPython 3.0 Release: 03-Dec-2008\n===============================\n\nDownload\n--------\n\nThis is a production release; we currently support these formats:\n\n* `Gzipped source tar ball (3.0) `_\n `(sig) `_\n\n* `Bzipped source tar ball (3.0) `_\n `(sig) `__\n\n* `Windows x86 MSI Installer (3.0) `_ \n `(sig) `__\n\n* `Windows X86-64 MSI Installer (3.0)\n `_ [1]_\n `(sig) `__\n\nMD5 checksums and sizes of the released files::\n\n ac1d8aa55bd6d04232cd96abfa445ac4 11191348 Python-3.0.tgz\n 28021e4c542323b7544aace274a03bed 9474659 Python-3.0.tar.bz2\n 054131fb1dcaf0bc20b23711d1028099 13421056 python-3.0.amd64.msi\n 2b85194a040b34088b64a48fa907c0af 13168640 python-3.0.msi\n\n\nDocumentation\n-------------\n\n* `Online Documentation `_ is updated\n twice a day\n\n* `What's new in Python 3000\n `_\n\n* `Guido van Rossum's current blog\n `_\n\n* `Guido van Rossum's previous blog\n `_\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 3.0 final was released on December 3rd, 2008.

    \n

    Python 3.0 (a.k.a. "Python 3000" or "Py3k") is a new\nversion of the language that is incompatible with the 2.x line of\nreleases. The language is mostly the same, but many details,\nespecially how built-in objects like dictionaries and strings work,\nhave changed considerably, and a lot of deprecated features have\nfinally been removed. Also, the standard library has been reorganized\nin a few prominent places.

    \n

    Here are some Python 3.0 resources:

    \n\n

    Please report bugs at http://bugs.python.org

    \n
    \n

    Python 3.0 Release: 03-Dec-2008

    \n
    \n

    Download

    \n

    This is a production release; we currently support these formats:

    \n\n

    MD5 checksums and sizes of the released files:

    \n
    \nac1d8aa55bd6d04232cd96abfa445ac4  11191348  Python-3.0.tgz\n28021e4c542323b7544aace274a03bed   9474659  Python-3.0.tar.bz2\n054131fb1dcaf0bc20b23711d1028099  13421056  python-3.0.amd64.msi\n2b85194a040b34088b64a48fa907c0af  13168640  python-3.0.msi\n
    \n
    \n
    \n

    Documentation

    \n\n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 143, + "fields": { + "created": "2014-03-20T22:37:14.604Z", + "updated": "2014-06-10T03:41:25.410Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.1.3", + "slug": "python-213", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2002-04-09T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.1.3/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nNote: This is not the most current Python version. See the download page for a more recent version.\n\n\n

    On April 8 2002, we're releasing Python 2.1.3 - a bugfix\nrelease of Python 2.1. This release has a\nsmall number of critical bug fixes. \n\n

    This is the final release of Python 2.1.3.\n\n

    While the most recent release of Python is 2.2, there are a couple of\nbugs that have come up since 2.1.2 was released, in particular one bug\nthat caused Zope to crash.\n\n

    What's New?

    \n\n
      \n

    • This release has only a couple of bug fixes. This is hopefully \nbecause the 2.1.x line is now stable enough that there are very few\nbugs still lurking. Unlike the 2.1.2 release, there has not been a \nwholesale attempt to port most bug fixes from the current python code \nto this release - only critical bugs are being fixed.\n\n

    • For the full scoop about this bugfix release, see the release notes.\n\n

    • If you're interested in learning what's new in Python 2.1\nrelative to Python 2.0, see Andrew Kuchling's article What's New in Python 2.1. If\nyou're coming from Python 1.5.2, you might also want to review\nAndrew's What's New in Python\n2.0. Also see the Misc/NEWS file in the source release for an\nexhaustive list of almost every little detail that changed.\n\n
    \n\n

    Download the release

    \n\n

    Windows users should download Python-2.1.3.exe, the Windows\ninstaller, from one of the download locations\nbelow, run it, and follow the friendly instructions on the screen to\ncomplete the installation. Windows users may also be interested\nin Mark Hammond's win32all, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.\n\n

    Update (2002/04/23): Windows users should download a new UNWISE.EXE from Wise that\nfixes a bug which could cause the uninstaller to disappear in some\ncircumstances. Just drop it over the old uninstaller, which will be\nat C:\\Python21\\UNWISE.EXE unless you chose a different\ndirectory at install time.\n\n

    Users on other platforms should download the \nsource tarball. You can download Python-2.1.3.tgz, from one \nof the download locations below, and do \nthe usual \"gunzip; tar; configure; make\" dance.\n\n

    Download locations

    \n\n
      \n\n
    • Python.org: HTTP.\n\n
    \n\n

    MD5 checksums

    \n\n
    \n    a8b04cdc822a6fc833ed9b99c7fba589 Python-2.1.3.tgz (6194432 bytes)\n    fc8020b2be17c098b69368543c5589a9 Python-2.1.3.exe (6418289 bytes)\n    9ae1d572cbd2bfd4e0c4b92ac11387c6 UNWISE.EXE (162304 bytes)\n
    \n\n

    Documentation

    \n\n

    The documentation has been updated too. You can:\n\n

    \n\n\n

    Bugs and Patches

    \n\n

    To report a bug, always use the SourceForge Bug Tracker. If\nyou have a patch, please use the SourceForge Patch Manager.\nPlease mention that you are reporting a bug in 2.1.3!", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    <i>Note: This is not the most current Python version. See the <a\nhref="/download">download page</a> for a more recent version.</i>\n</blockquote>

    \n

    <p>On April 8 2002, we're releasing <b>Python 2.1.3</b> - a bugfix\nrelease of <a href="../2.1/">Python 2.1</a>. This release has a\nsmall number of critical bug fixes.

    \n

    <p>This is the final release of <b>Python 2.1.3</b>.

    \n

    <p>While the most recent release of Python is 2.2, there are a couple of\nbugs that have come up since 2.1.2 was released, in particular one bug\nthat caused <a href="http://www.zope.org/">Zope</a> to crash.

    \n

    <h3>What's New?</h3>

    \n

    <ul>\n<p><li>This release has only a couple of bug fixes. This is hopefully\nbecause the 2.1.x line is now stable enough that there are very few\nbugs still lurking. Unlike the 2.1.2 release, there has not been a\nwholesale attempt to port most bug fixes from the current python code\nto this release - only critical bugs are being fixed.

    \n

    <p><li>For the full scoop about this bugfix release, see the <a\nhref="NEWS.txt">release notes</a>.

    \n

    <p><li>If you're interested in learning what's new in Python 2.1\nrelative to Python 2.0, see Andrew Kuchling's article <a\nhref="http://www.amk.ca/python/2.1/">What's New in Python 2.1</a>. If\nyou're coming from Python 1.5.2, you might also want to review\nAndrew's <a href="http://www.amk.ca/python/2.0/">What's New in Python\n2.0</a>. Also see the Misc/NEWS file in the source release for an\nexhaustive list of almost every little detail that changed.

    \n

    </ul>

    \n

    <h3>Download the release</h3>

    \n

    <p><b>Windows</b> users should download Python-2.1.3.exe, the Windows\ninstaller, from one of the <a href="#locations">download locations</a>\nbelow, run it, and follow the friendly instructions on the screen to\ncomplete the installation. Windows users may also be interested\nin Mark Hammond's <a href=\n"http://starship.python.net/crew/mhammond/"\n>win32all</a>, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.

    \n

    <p><b>Update (2002/04/23):</b> Windows users should download a new <a\nhref="/ftp/python/2.1.3/UNWISE.EXE">UNWISE.EXE</a> from Wise that\nfixes a bug which could cause the uninstaller to disappear in some\ncircumstances. Just drop it over the old uninstaller, which will be\nat <tt>C:Python21UNWISE.EXE</tt> unless you chose a different\ndirectory at install time.

    \n

    <p>Users on <b>other platforms</b> should download the\nsource tarball. You can download Python-2.1.3.tgz, from one\nof the <a href="#locations">download locations</a> below, and do\nthe usual "gunzip; tar; configure; make" dance.

    \n

    <h4><a name="locations">Download locations</a></h4>

    \n

    <ul>

    \n

    <li>Python.org: <a href="/ftp/python/2.1.3/" >HTTP</a>.

    \n

    </ul>

    \n

    <h4><a href="/download/releases/2.1.2/md5sum.py">MD5</a> checksums</h4>

    \n
    \n
    <pre>
    \n
    a8b04cdc822a6fc833ed9b99c7fba589 <a href="/ftp/python/2.1.3/Python-2.1.3.tgz">Python-2.1.3.tgz</a> (6194432 bytes)\nfc8020b2be17c098b69368543c5589a9 <a href="/ftp/python/2.1.3/Python-2.1.3.exe">Python-2.1.3.exe</a> (6418289 bytes)\n9ae1d572cbd2bfd4e0c4b92ac11387c6 <a href="/ftp/python/2.1.3/UNWISE.EXE">UNWISE.EXE</a> (162304 bytes)
    \n
    \n

    </pre>

    \n

    <h3>Documentation</h3>

    \n

    <p>The documentation has been updated too. You can:

    \n

    <ul>\n<li><a href="/doc/2.1.3/"

    \n
    \n>Browse HTML</a> on-line, or
    \n
    \n
    <li><a href="/ftp/python/doc/2.1.3/"
    \n
    >Download the HTML documentation</a>.
    \n
    \n

    </ul>

    \n

    <h3>Bugs and Patches</h3>

    \n

    <p>To report a bug, always use the SourceForge <a\nhref="http://sourceforge.net/bugs/?group_id=5470">Bug Tracker</a>. If\nyou have a patch, please use the SourceForge <a\nhref="http://sourceforge.net/patch/?group_id=5470">Patch Manager</a>.\nPlease mention that you are reporting a bug in 2.1.3!

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 144, + "fields": { + "created": "2014-03-20T22:37:15.531Z", + "updated": "2014-06-10T03:41:50.306Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.3.2", + "slug": "python-332", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2013-05-15T00:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.3.2/whatsnew/changelog.html", + "content": ".. Migrated from Release.release_page field.\n\nregressions `_ found\nin Python 3.3.1.\n\nMajor new features of the 3.3 series, compared to 3.2\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPython 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.\n\n* :pep:`380`, syntax for delegating to a subgenerator (``yield from``)\n* :pep:`393`, flexible string representation (doing away with the distinction\n between \"wide\" and \"narrow\" Unicode builds)\n* A C implementation of the \"decimal\" module, with up to 120x speedup\n for decimal-heavy applications\n* The import system (__import__) is based on importlib by default\n* The new \"lzma\" module with LZMA/XZ support\n* :pep:`397`, a Python launcher for Windows\n* :pep:`405`, virtual environment support in core\n* :pep:`420`, namespace package support\n* :pep:`3151`, reworking the OS and IO exception hierarchy\n* :pep:`3155`, qualified name for classes and functions\n* :pep:`409`, suppressing exception context\n* :pep:`414`, explicit Unicode literals to help with porting\n* :pep:`418`, extended platform-independent clocks in the \"time\" module\n* :pep:`412`, a new key-sharing dictionary implementation that significantly\n saves memory for object-oriented code\n* :pep:`362`, the function-signature object\n* The new \"faulthandler\" module that helps diagnosing crashes\n* The new \"unittest.mock\" module\n* The new \"ipaddress\" module\n* The \"sys.implementation\" attribute\n* A policy framework for the email package, with a provisional (see\n :pep:`411`) policy that adds much improved unicode support for email\n header parsing\n* A \"collections.ChainMap\" class for linking mappings to a single unit\n* Wrappers for many more POSIX functions in the \"os\" and \"signal\" modules, as\n well as other useful functions such as \"sendfile()\"\n* Hash randomization, introduced in earlier bugfix releases, is now\n switched on by default\n\nMore resources\n^^^^^^^^^^^^^^\n\n* `Change log for this release\n `_.\n* `Online Documentation `_\n* `What's new in 3.3? `_\n* `3.3 Release Schedule `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\nDownload\n--------\n\n.. This is a preview release, and its use is not recommended in production\n.. settings.\n\nThis is a production release. Please `report any bugs\n`__ you encounter.\n\nWe currently support these formats for download:\n\n* `Bzipped source tar ball (3.3.2) `__ `(sig)\n `__, ~ 14 MB\n\n* `XZ compressed source tar ball (3.3.2) `__\n `(sig) `__, ~ 11 MB\n\n* `Gzipped source tar ball (3.3.2) `__ `(sig)\n `__, ~ 16 MB\n\n..\n\n.. Windows binaries will be provided shortly.\n\n* `Windows x86 MSI Installer (3.3.2) `__ `(sig)\n `__ and `Visual Studio debug information\n files `__ `(sig)\n `__\n \n* `Windows X86-64 MSI Installer (3.3.2) `__\n [1]_ `(sig) `__ and `Visual Studio\n debug information files `__ `(sig)\n `__\n\n* `Windows help file `_ `(sig)\n `__\n\n..\n\n* `Mac OS X 64-bit/32-bit Installer (3.3.2) for Mac OS X 10.6 and later\n `__ [2]_ `(sig)\n `__.\n [You may need an updated Tcl/Tk install to run IDLE or use Tkinter,\n see note 2 for instructions.]\n\n* `Mac OS X 32-bit i386/PPC Installer (3.3.2) for Mac OS X 10.5 and later\n `__ [2]_ `(sig)\n `__\n\nThe source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is ``26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288``. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the `download\npage `_.\n\nMD5 checksums and sizes of the released files::\n\n 0a2ea57f6184baf45b150aee53c0c8da 16530940 Python-3.3.2.tgz\n 7dffe775f3bea68a44f762a3490e5e28 13983134 Python-3.3.2.tar.bz2\n c94b78ea3b68a9bbc9906af4d5b4fdc7 11847676 Python-3.3.2.tar.xz\n 9d6094d54f5200d9c13d11c98d283cfe 19618740 python-3.3.2-macosx10.5.dmg\n ce63202f4a6caa956dac2116e21a29f4 19709642 python-3.3.2-macosx10.6.dmg\n 2a3911ed48b54ce0a25683c72154a5ca 27025960 python-3.3.2-pdb.zip\n 7ed2a017ae4f24413c9933dfba755364 22137206 python-3.3.2.amd64-pdb.zip\n 2477b4bd8e9a337705f7b5fda8b3b45f 20774912 python-3.3.2.amd64.msi\n 0d9db9c2316562c62e1e4c347b6f9430 20238336 python-3.3.2.msi\n e7eb67a7defbed74cbcf08b574f01f52 6605621 python332.chm\n\n.. [1] The binaries for AMD64 will also work on processors that implement the\n Intel 64 architecture (formerly EM64T), i.e. the architecture that\n Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They\n will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    regressions <http://docs.python.org/release/3.3.2/whatsnew/changelog.html>`_ found\nin Python 3.3.1.

    \n
    \n

    Major new features of the 3.3 series, compared to 3.2

    \n

    Python 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.

    \n
      \n
    • PEP 380, syntax for delegating to a subgenerator (yield from)
    • \n
    • PEP 393, flexible string representation (doing away with the distinction\nbetween "wide" and "narrow" Unicode builds)
    • \n
    • A C implementation of the "decimal" module, with up to 120x speedup\nfor decimal-heavy applications
    • \n
    • The import system (__import__) is based on importlib by default
    • \n
    • The new "lzma" module with LZMA/XZ support
    • \n
    • PEP 397, a Python launcher for Windows
    • \n
    • PEP 405, virtual environment support in core
    • \n
    • PEP 420, namespace package support
    • \n
    • PEP 3151, reworking the OS and IO exception hierarchy
    • \n
    • PEP 3155, qualified name for classes and functions
    • \n
    • PEP 409, suppressing exception context
    • \n
    • PEP 414, explicit Unicode literals to help with porting
    • \n
    • PEP 418, extended platform-independent clocks in the "time" module
    • \n
    • PEP 412, a new key-sharing dictionary implementation that significantly\nsaves memory for object-oriented code
    • \n
    • PEP 362, the function-signature object
    • \n
    • The new "faulthandler" module that helps diagnosing crashes
    • \n
    • The new "unittest.mock" module
    • \n
    • The new "ipaddress" module
    • \n
    • The "sys.implementation" attribute
    • \n
    • A policy framework for the email package, with a provisional (see\nPEP 411) policy that adds much improved unicode support for email\nheader parsing
    • \n
    • A "collections.ChainMap" class for linking mappings to a single unit
    • \n
    • Wrappers for many more POSIX functions in the "os" and "signal" modules, as\nwell as other useful functions such as "sendfile()"
    • \n
    • Hash randomization, introduced in earlier bugfix releases, is now\nswitched on by default
    • \n
    \n
    \n
    \n

    More resources

    \n\n
    \n

    Download

    \n\n\n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n\n\n\n\n\n

    The source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is 26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the download\npage.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \n0a2ea57f6184baf45b150aee53c0c8da  16530940  Python-3.3.2.tgz\n7dffe775f3bea68a44f762a3490e5e28  13983134  Python-3.3.2.tar.bz2\nc94b78ea3b68a9bbc9906af4d5b4fdc7  11847676  Python-3.3.2.tar.xz\n9d6094d54f5200d9c13d11c98d283cfe  19618740  python-3.3.2-macosx10.5.dmg\nce63202f4a6caa956dac2116e21a29f4  19709642  python-3.3.2-macosx10.6.dmg\n2a3911ed48b54ce0a25683c72154a5ca  27025960  python-3.3.2-pdb.zip\n7ed2a017ae4f24413c9933dfba755364  22137206  python-3.3.2.amd64-pdb.zip\n2477b4bd8e9a337705f7b5fda8b3b45f  20774912  python-3.3.2.amd64.msi\n0d9db9c2316562c62e1e4c347b6f9430  20238336  python-3.3.2.msi\ne7eb67a7defbed74cbcf08b574f01f52   6605621  python332.chm\n
    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the\nIntel 64 architecture (formerly EM64T), i.e. the architecture that\nMicrosoft calls x64, and AMD called x86-64 before calling it AMD64. They\nwill not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here.
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 145, + "fields": { + "created": "2014-03-20T22:37:21.206Z", + "updated": "2014-06-10T03:41:50.688Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.3.3", + "slug": "python-333", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2013-11-17T00:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.3.3/whatsnew/changelog.html", + "content": ".. Migrated from Release.release_page field.\n\nfixes `several security issues and various other bugs\n`_ found in Python\n3.3.2.\n\nThis release fully supports OS X 10.9 Mavericks. In particular, this release\nfixes an issue that could cause previous versions of Python to crash when typing\nin interactive mode on OS X 10.9.\n\n\nMajor new features of the 3.3 series, compared to 3.2\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPython 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.\n\n* :pep:`380`, syntax for delegating to a subgenerator (``yield from``)\n* :pep:`393`, flexible string representation (doing away with the distinction\n between \"wide\" and \"narrow\" Unicode builds)\n* A C implementation of the \"decimal\" module, with up to 120x speedup\n for decimal-heavy applications\n* The import system (__import__) is based on importlib by default\n* The new \"lzma\" module with LZMA/XZ support\n* :pep:`397`, a Python launcher for Windows\n* :pep:`405`, virtual environment support in core\n* :pep:`420`, namespace package support\n* :pep:`3151`, reworking the OS and IO exception hierarchy\n* :pep:`3155`, qualified name for classes and functions\n* :pep:`409`, suppressing exception context\n* :pep:`414`, explicit Unicode literals to help with porting\n* :pep:`418`, extended platform-independent clocks in the \"time\" module\n* :pep:`412`, a new key-sharing dictionary implementation that significantly\n saves memory for object-oriented code\n* :pep:`362`, the function-signature object\n* The new \"faulthandler\" module that helps diagnosing crashes\n* The new \"unittest.mock\" module\n* The new \"ipaddress\" module\n* The \"sys.implementation\" attribute\n* A policy framework for the email package, with a provisional (see\n :pep:`411`) policy that adds much improved unicode support for email\n header parsing\n* A \"collections.ChainMap\" class for linking mappings to a single unit\n* Wrappers for many more POSIX functions in the \"os\" and \"signal\" modules, as\n well as other useful functions such as \"sendfile()\"\n* Hash randomization, introduced in earlier bugfix releases, is now\n switched on by default\n\nMore resources\n^^^^^^^^^^^^^^\n\n* `Change log for this release\n `_.\n* `Online Documentation `_\n* `What's new in 3.3? `_\n* `3.3 Release Schedule `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\nDownload\n--------\n\n.. This is a preview release, and its use is not recommended in production\n settings.\n\nThis is a production release. Please `report any bugs\n`__ you encounter.\n\nWe currently support these formats for download:\n\n* `Bzipped source tar ball (3.3.3) `__ `(sig)\n `__, ~ 14 MB\n\n* `XZ compressed source tar ball (3.3.3) `__\n `(sig) `__, ~ 11 MB\n\n* `Gzipped source tar ball (3.3.3) `__ `(sig)\n `__, ~ 16 MB\n\n..\n\n.. Windows binaries will be provided shortly.\n\n* `Windows x86 MSI Installer (3.3.3) `__ `(sig)\n `__ and `Visual Studio debug information\n files `__ `(sig)\n `__\n\n* `Windows X86-64 MSI Installer (3.3.3) `__\n [1]_ `(sig) `__ and `Visual Studio\n debug information files `__ `(sig)\n `__\n\n* `Windows help file `_ `(sig)\n `__\n\n..\n\n.. Mac binaries will be provided shortly.\n\n* `Mac OS X 64-bit/32-bit Installer (3.3.3) for Mac OS X 10.6 and later\n `__ [2]_ `(sig)\n `__.\n [You may need an updated Tcl/Tk install to run IDLE or use Tkinter,\n see note 2 for instructions.]\n\n* `Mac OS X 32-bit i386/PPC Installer (3.3.3) for Mac OS X 10.5 and later\n `__ [2]_ `(sig)\n `__\n\n\nThe source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is ``26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288``. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the `download\npage `_.\n\nMD5 checksums and sizes of the released files::\n\n 831d59212568dc12c95df222865d3441 16808057 Python-3.3.3.tgz\n f3ebe34d4d8695bf889279b54673e10c 14122529 Python-3.3.3.tar.bz2\n 4ca001c5586eb0744e3174bc75c6fba8 12057744 Python-3.3.3.tar.xz\n 60f44c22bbd00fbf3f63d98ef761295b 19876666 python-3.3.3-macosx10.5.dmg\n 3f7b6c1dc58d7e0b5282f3b7a2e00ef7 19956580 python-3.3.3-macosx10.6.dmg\n 3fc2925746372ab8401dfabce278d418 27034152 python-3.3.3-pdb.zip\n 8af44d33ea3a1528fc56b3a362924500 22145398 python-3.3.3.amd64-pdb.zip\n 8de52d1e2e4bbb3419b7f40bdf48e855 21086208 python-3.3.3.amd64.msi\n ab6a031aeca66507e4c8697ff93a0007 20537344 python-3.3.3.msi\n c86d6d68ca1a1de7395601a4918314f9 6651185 python333.chm\n\n.. [1] The binaries for AMD64 will also work on processors that implement the\n Intel 64 architecture (formerly EM64T), i.e. the architecture that\n Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They\n will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    fixes several security issues and various other bugs found in Python\n3.3.2.

    \n

    This release fully supports OS X 10.9 Mavericks. In particular, this release\nfixes an issue that could cause previous versions of Python to crash when typing\nin interactive mode on OS X 10.9.

    \n
    \n

    Major new features of the 3.3 series, compared to 3.2

    \n

    Python 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.

    \n
      \n
    • PEP 380, syntax for delegating to a subgenerator (yield from)
    • \n
    • PEP 393, flexible string representation (doing away with the distinction\nbetween "wide" and "narrow" Unicode builds)
    • \n
    • A C implementation of the "decimal" module, with up to 120x speedup\nfor decimal-heavy applications
    • \n
    • The import system (__import__) is based on importlib by default
    • \n
    • The new "lzma" module with LZMA/XZ support
    • \n
    • PEP 397, a Python launcher for Windows
    • \n
    • PEP 405, virtual environment support in core
    • \n
    • PEP 420, namespace package support
    • \n
    • PEP 3151, reworking the OS and IO exception hierarchy
    • \n
    • PEP 3155, qualified name for classes and functions
    • \n
    • PEP 409, suppressing exception context
    • \n
    • PEP 414, explicit Unicode literals to help with porting
    • \n
    • PEP 418, extended platform-independent clocks in the "time" module
    • \n
    • PEP 412, a new key-sharing dictionary implementation that significantly\nsaves memory for object-oriented code
    • \n
    • PEP 362, the function-signature object
    • \n
    • The new "faulthandler" module that helps diagnosing crashes
    • \n
    • The new "unittest.mock" module
    • \n
    • The new "ipaddress" module
    • \n
    • The "sys.implementation" attribute
    • \n
    • A policy framework for the email package, with a provisional (see\nPEP 411) policy that adds much improved unicode support for email\nheader parsing
    • \n
    • A "collections.ChainMap" class for linking mappings to a single unit
    • \n
    • Wrappers for many more POSIX functions in the "os" and "signal" modules, as\nwell as other useful functions such as "sendfile()"
    • \n
    • Hash randomization, introduced in earlier bugfix releases, is now\nswitched on by default
    • \n
    \n
    \n
    \n

    More resources

    \n\n
    \n

    Download

    \n\n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n\n\n\n\n\n\n

    The source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is 26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the download\npage.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \n831d59212568dc12c95df222865d3441  16808057  Python-3.3.3.tgz\nf3ebe34d4d8695bf889279b54673e10c  14122529  Python-3.3.3.tar.bz2\n4ca001c5586eb0744e3174bc75c6fba8  12057744  Python-3.3.3.tar.xz\n60f44c22bbd00fbf3f63d98ef761295b  19876666  python-3.3.3-macosx10.5.dmg\n3f7b6c1dc58d7e0b5282f3b7a2e00ef7  19956580  python-3.3.3-macosx10.6.dmg\n3fc2925746372ab8401dfabce278d418  27034152  python-3.3.3-pdb.zip\n8af44d33ea3a1528fc56b3a362924500  22145398  python-3.3.3.amd64-pdb.zip\n8de52d1e2e4bbb3419b7f40bdf48e855  21086208  python-3.3.3.amd64.msi\nab6a031aeca66507e4c8697ff93a0007  20537344  python-3.3.3.msi\nc86d6d68ca1a1de7395601a4918314f9   6651185  python333.chm\n
    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the\nIntel 64 architecture (formerly EM64T), i.e. the architecture that\nMicrosoft calls x64, and AMD called x86-64 before calling it AMD64. They\nwill not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here.
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 146, + "fields": { + "created": "2014-03-20T22:37:26.503Z", + "updated": "2014-06-10T03:41:24.860Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.0.1", + "slug": "python-201", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2001-06-22T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.0.1/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Note: This is no longer the most current Python release. See the** `download page `_ **for more recent releases.**\n\nWe're releasing **Python 2.0.1** - the final bugfix release for\nPython 2.0.\n\nWhy would we come with a bugfix release now (June 2001), when `Python 2.0 <../2.0/>`_ was released in October 2000 and `Python 2.1 <../2.1/>`_ has been released for months (April\n2001)? Two very good reasons!\n\n* **We've fixed the license: Python 2.0.1 is GPL-compatible**. We took the `Python 2.1 license <../2.1/license>`_ and applied the required change to section 7 that the FSF `told us <../2.1/fsf>`_ would suffice to make it GPL-compatible. The result (after changing the version number) is the new `Python 2.0.1 license `_. The FSF was quick to `approve `_ it!\n* Some people still prefer Python 2.0 over Python 2.1; they can now benefit from many bugfixes that we've applied since 2.0 was released, without any of the feature changes.\n\nNote that Python 2.1 is still not GPL-compatible, but we're\nplanning a bugfix release there too, Python 2.1.1, with the same\nGPL-compatible license.\n\nWhat's New?\n-----------\n\n* We've been very careful to fix only bugs and not add new features. (Thanks to Moshe Zadka for taking care of the thankless chore of poring over the CVS logs and SourceForge bug reports and re-applying selected patches!)\n* One exception: the SRE package (regular expression matching, used by the \"re\" module) was brought in line with the version distributed with Python 2.1; this is stable feature-wise but much improved bug-wise.\n* For the full scoop, see the `release notes `_.\n\nDownload the release\n--------------------\n\n**Windows** users should download Python-2.0.1.exe, the Windows\ninstaller, from one of the `download locations <#locations>`_\nbelow, run it, and follow the friendly instructions on the screen to\ncomplete the installation. (Python-2.0.1-Debug.zip is a set of DLLs\nfor Windows developers compiled in debug mode; it contains nothing of\nvalue for regular Python users.) Windows users may also be interested\nin Mark Hammond's `win32all `_, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.\n\n**All others** should download Python-2.0.1.tgz, the source\ntarball, from one of the download locations below, and do the usual \"gunzip; tar; configure; make\" dance.\n\nDownload locations\n==================\n\n* Python.org: `HTTP `_.\n\n`MD5 `_ checksums\n============================\n\n ``8aa10dcf062723001b852d96e905af79`` `Python-2.0.1.tgz `_\n\n ``5940b6eea8972136f8e365346f1b1313`` `Python-2.0.1.exe `_\n\n ``0a8506c7379a2efdc95759ecbc8f16a0`` `Python-2.0.1-Debug.zip `_\n\nDocumentation\n-------------\n\nThe documentation has been changed minimally:\n\n* `Browse `_ HTML on-line\n\nBugs and Patches\n----------------\n\nTo report a bug, always use the SourceForge `Bug Tracker `_. If\nyou have a patch, please use the SourceForge `Patch Manager `_.\nPlease mention that you are reporting a bug in 2.0.1!", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    We're releasing Python 2.0.1 - the final bugfix release for\nPython 2.0.

    \n

    Why would we come with a bugfix release now (June 2001), when Python 2.0 was released in October 2000 and Python 2.1 has been released for months (April\n2001)? Two very good reasons!

    \n
      \n
    • We've fixed the license: Python 2.0.1 is GPL-compatible. We took the Python 2.1 license and applied the required change to section 7 that the FSF told us would suffice to make it GPL-compatible. The result (after changing the version number) is the new Python 2.0.1 license. The FSF was quick to approve it!
    • \n
    • Some people still prefer Python 2.0 over Python 2.1; they can now benefit from many bugfixes that we've applied since 2.0 was released, without any of the feature changes.
    • \n
    \n

    Note that Python 2.1 is still not GPL-compatible, but we're\nplanning a bugfix release there too, Python 2.1.1, with the same\nGPL-compatible license.

    \n
    \n

    What's New?

    \n
      \n
    • We've been very careful to fix only bugs and not add new features. (Thanks to Moshe Zadka for taking care of the thankless chore of poring over the CVS logs and SourceForge bug reports and re-applying selected patches!)
    • \n
    • One exception: the SRE package (regular expression matching, used by the "re" module) was brought in line with the version distributed with Python 2.1; this is stable feature-wise but much improved bug-wise.
    • \n
    • For the full scoop, see the release notes.
    • \n
    \n
    \n
    \n

    Download the release

    \n

    Windows users should download Python-2.0.1.exe, the Windows\ninstaller, from one of the download locations\nbelow, run it, and follow the friendly instructions on the screen to\ncomplete the installation. (Python-2.0.1-Debug.zip is a set of DLLs\nfor Windows developers compiled in debug mode; it contains nothing of\nvalue for regular Python users.) Windows users may also be interested\nin Mark Hammond's win32all, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.

    \n

    All others should download Python-2.0.1.tgz, the source\ntarball, from one of the download locations below, and do the usual "gunzip; tar; configure; make" dance.

    \n
    \n

    Download locations

    \n
      \n
    • Python.org: HTTP.
    • \n
    \n
    \n
    \n

    MD5 checksums

    \n
    \n

    8aa10dcf062723001b852d96e905af79 Python-2.0.1.tgz

    \n

    5940b6eea8972136f8e365346f1b1313 Python-2.0.1.exe

    \n

    0a8506c7379a2efdc95759ecbc8f16a0 Python-2.0.1-Debug.zip

    \n
    \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has been changed minimally:

    \n\n
    \n
    \n

    Bugs and Patches

    \n

    To report a bug, always use the SourceForge Bug Tracker. If\nyou have a patch, please use the SourceForge Patch Manager.\nPlease mention that you are reporting a bug in 2.0.1!

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 147, + "fields": { + "created": "2014-03-20T22:37:27.667Z", + "updated": "2014-06-10T03:41:26.671Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.2.2", + "slug": "python-222", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2002-10-14T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.2.2/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nrelease.--> See Python 2.2.3 for a patch\nrelease which supersedes 2.2.2. \n\n
    \n Important: This release is vulnerable to the problem described in\n security advisory PSF-2006-001\n \"Buffer overrun in repr() of unicode strings in wide unicode\n builds (UCS-4)\". This fix is included in\n Python 2.4.4\n and Python 2.5. If you need to remain with Python 2.2,\n there's a patch available from the security advisory page.\n
    \n\n\n

    We are pleased to announce the release of Python 2.2.2, on\nOctober 14, 2002. This is a bug-fix release for Python\n2.2 and supersedes the previous bugfix release,\nPython 2.2.1.\n\n

    Download the release

    \n\n

    Windows users should download the Windows installer, Python-2.2.2.exe,\nrun it and follow the friendly instructions on the screen to complete\nthe installation.\nWindows users may also be interested in Mark\nHammond's win32all, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.\n\n

    Linux users may find source and some binary RPMs on the\nRPM page. Debian packages are available\ndirectly from the Debian project, under interpreters (new\nreleases initially appear in unstable).\n\n

    Macintosh users can find binaries and source on \n\nJack Jansen's MacPython page.\n(MacOS X users who have a C compiler can also build from the source\ntarball below.)\n\n

    All others should download Python-2.2.2.tgz, the\nsource tarball, and do the usual \"gunzip; tar; configure; make\" dance.\n\n

    What's New?

    \n\nThis being a bug-fix release, there have been no exciting new features\nimplemented since 2.2.1 -- just heaps of fixes.\n\n

    With special dispensation from the \"bugfixes only\" rule, a brand\nnew version of the email\npackage (nee mimelib) is also included: email 2.4.3.\n\n

    For a partial list of these fixes, please see the release notes, or the Misc/NEWS file in\nthe source distribution.\n\nFor the full list of changes, you can poke around CVS.\n\n

    Other sources of information on 2.2

    \n\n\n\n

    Documentation

    \n\n

    The documentation has been updated too:\n\n

    \n\n

    Files, MD5 checksums and sizes

    \n\n
    \n    9914cd4fc203008decf9ca7fb5aa1252 Python-2.2.2.exe (7282997 bytes)\n    1c1067396e5aa0299978486eb5bd1a5c Python-2.2.2.tgz (6669400 bytes)\n
    \n\n

     ", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    release.--> See <a href="../2.2.3/">Python 2.2.3</a> for a patch\nrelease which supersedes 2.2.2.</i> </blockquote>

    \n
    \n
    <blockquote>
    \n
    <b>Important:</b> This release is vulnerable to the problem described in\n<a href="/news/security/PSF-2006-001/">security advisory PSF-2006-001</a>\n"Buffer overrun in repr() of unicode strings in wide unicode\nbuilds (UCS-4)". This fix is included in\n<a href="../2.4.4/">Python 2.4.4</a>\nand <a href="../2.5/">Python 2.5</a>. If you need to remain with Python 2.2,\nthere's a patch available from the security advisory page.
    \n
    \n

    </blockquote>

    \n

    <p>We are pleased to announce the release of <b>Python 2.2.2</b>, on\nOctober 14, 2002. This is a bug-fix release for Python\n2.2 and supersedes the previous bugfix release,\n<a href="../2.2.1/">Python 2.2.1</a>.

    \n

    <h3>Download the release</h3>

    \n

    <p><b>Windows</b> users should download the Windows installer, <a\nhref="/ftp/python/2.2.2/Python-2.2.2.exe">Python-2.2.2.exe</a>,\nrun it and follow the friendly instructions on the screen to complete\nthe installation.\nWindows users may also be interested in Mark\nHammond's <a\nhref="http://starship.python.net/crew/mhammond/"\n>win32all</a>, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.

    \n

    <p><b>Linux users</b> may find source and some binary RPMs on the\n<a href="rpms">RPM page</a>. Debian packages are available\ndirectly from the Debian project, under interpreters (new\nreleases initially appear in unstable).

    \n

    <p><b>Macintosh</b> users can find binaries and source on\n<!-- the <a href="mac.html">Mac page</a> or -->\nJack Jansen's <a\nhref="http://www.cwi.nl/~jack/macpython.html">MacPython page</a>.\n(MacOS X users who have a C compiler can also build from the source\ntarball below.)

    \n

    <p><b>All others</b> should download <a\nhref="/ftp/python/2.2.2/Python-2.2.2.tgz">Python-2.2.2.tgz</a>, the\nsource tarball, and do the usual "gunzip; tar; configure; make" dance.

    \n

    <h3>What's New?</h3>

    \n

    This being a bug-fix release, there have been no exciting new features\nimplemented since 2.2.1 -- just heaps of fixes.

    \n

    <p>With special dispensation from the "bugfixes only" rule, a brand\nnew version of the <a href="http://mimelib.sourceforge.net/">email\npackage</a> (nee mimelib) is also included: email 2.4.3.

    \n

    <p>For a partial list of these fixes, please see the <a\nhref="NEWS.txt">release notes</a>, or the <tt>Misc/NEWS</tt> file in\nthe source distribution.

    \n

    For the full list of changes, you can poke around CVS.

    \n

    <h4>Other sources of information on 2.2</h4>

    \n

    <ul>

    \n

    <p><li><a href="descrintro">Unifying types and classes in Python\n2.2</a> by Guido van Rossum -- a tutorial on the material covered by\nPEPs 252 and 253.

    \n

    <p><li><a href="/doc/2.2.2/whatsnew/">What's New in Python\n2.2</a> by Andrew Kuchling describes the most visible changes since <a\nhref="../2.1/">Python 2.1</a>.

    \n

    <p><li>Guido gave a talk on what's new in 2.2 at the ZPUG-DC meeting\non September 26, 2001; here are his <a\nhref="http://zpug.org/dc/">powerpoint slides</a>.

    \n

    <p><li><a href=\n"http://www-106.ibm.com/developerworks/library/l-pycon.html?n-l-9271"\n>Charming Python: Iterators and simple generators</a> by David Mertz\non IBM developerWorks.

    \n

    </ul>

    \n

    <h3>Documentation</h3>

    \n

    <p>The documentation has been updated too:

    \n

    <ul>

    \n

    <li><a href="/doc/2.2.2">Browse HTML on-line</a>

    \n

    <li>Download using <a href="/ftp/python/doc/2.2.2/">HTTP</a>.

    \n

    </ul>

    \n

    <h3>Files, <a href="md5sum.py">MD5</a> checksums and sizes</h3>

    \n
    \n
    <pre>
    \n
    9914cd4fc203008decf9ca7fb5aa1252 <a href="/ftp/python/2.2.2/Python-2.2.2.exe">Python-2.2.2.exe</a> (7282997 bytes)\n1c1067396e5aa0299978486eb5bd1a5c <a href="/ftp/python/2.2.2/Python-2.2.2.tgz">Python-2.2.2.tgz</a> (6669400 bytes)
    \n
    \n

    </pre>

    \n

    <p>&nbsp;

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 148, + "fields": { + "created": "2014-03-20T22:37:28.614Z", + "updated": "2014-06-10T03:41:27.247Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.2.3", + "slug": "python-223", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2003-05-30T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.2.3/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nWe are pleased to announce the release of **Python 2.2.3\n(final)**, on May 30, 2003. This is a bug-fix release for\nPython 2.2 and supersedes the previous bugfix release, `Python 2.2.2 <../2.2.2/>`_.\n\n **Note: there's a** `security fix `_ **for SimpleXMLRPCServer.py.**\n\nDownload the release\n--------------------\n\n**Windows** users should download the Windows installer, `Python-2.2.3.exe `_,\nrun it and follow the friendly instructions on the screen to complete\nthe installation.\nWindows users may also be interested in Mark\nHammond's `win32all `_, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.\n\n**Linux users** may find source and some binary RPMs on the\n`RPM page `_. Debian packages are available\ndirectly from the Debian project, under interpreters (new\nreleases initially appear in unstable).\n\n**Macintosh** users can find binaries and source on \n\nJack Jansen's \n`MacPython page `_.\n(MacOS X users who have a C compiler can also build from the source\ntarball below.)\n\n**All others** should download `Python-2.2.3.tgz `_, the\nsource archive. Unpack it with \n\"tar -zxvf Python-2.2.3.tgz\". Change to the Python-2.2.3 directory\nand run the \"./configure\", \"make\", \"make install\" commands to compile \nand install Python.\n\nWhat's New?\n-----------\n\nThis being a bug-fix release, there have been no exciting new features\nimplemented since 2.2.2 -- just heaps of fixes.\n\nFor a list of intentional incompatibilities and other details of\nthis release, see the `bugs page `_ and the `release notes `_, or the ``Misc/NEWS`` file in\nthe source distribution\n\nFor the full list of changes, you can poke around CVS.\n\nOther sources of information on 2.2\n===================================\n\n* `Unifying types and classes in Python 2.2 `_ by Guido van Rossum -- a tutorial on the material covered by PEPs 252 and 253.\n* `What's New in Python 2.2 `_ by Andrew Kuchling describes the most visible changes since `Python 2.1 <../2.1/>`_. \n* Guido gave a talk on what's new in 2.2 at the ZPUG-DC meeting on September 26, 2001; here are his `powerpoint slides `_.\n* `Charming Python: Iterators and simple generators `_ by David Mertz on IBM developerWorks.\n\nDocumentation\n-------------\n\nThe documentation has been updated too:\n\n* `Browse HTML on-line `_\n* Download using `HTTP `_\n\nFiles, `MD5 `_ checksums and sizes\n---------------------------------------------\n\n ``d76e774a4169794ae0d7a8598478e69e`` `Python-2.2.3.exe `_ (7334106 bytes)\n \n ``169f89f318e252dac0c54dd1b165d229`` `Python-2.2.3.tgz `_ (6709556 bytes)\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    We are pleased to announce the release of Python 2.2.3\n(final), on May 30, 2003. This is a bug-fix release for\nPython 2.2 and supersedes the previous bugfix release, Python 2.2.2.

    \n
    \nNote: there's a security fix for SimpleXMLRPCServer.py.
    \n
    \n

    Download the release

    \n

    Windows users should download the Windows installer, Python-2.2.3.exe,\nrun it and follow the friendly instructions on the screen to complete\nthe installation.\nWindows users may also be interested in Mark\nHammond's win32all, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.

    \n

    Linux users may find source and some binary RPMs on the\nRPM page. Debian packages are available\ndirectly from the Debian project, under interpreters (new\nreleases initially appear in unstable).

    \n

    Macintosh users can find binaries and source on

    \n

    Jack Jansen's\nMacPython page.\n(MacOS X users who have a C compiler can also build from the source\ntarball below.)

    \n

    All others should download Python-2.2.3.tgz, the\nsource archive. Unpack it with\n"tar -zxvf Python-2.2.3.tgz". Change to the Python-2.2.3 directory\nand run the "./configure", "make", "make install" commands to compile\nand install Python.

    \n
    \n
    \n

    What's New?

    \n

    This being a bug-fix release, there have been no exciting new features\nimplemented since 2.2.2 -- just heaps of fixes.

    \n

    For a list of intentional incompatibilities and other details of\nthis release, see the bugs page and the release notes, or the Misc/NEWS file in\nthe source distribution

    \n

    For the full list of changes, you can poke around CVS.

    \n
    \n

    Other sources of information on 2.2

    \n\n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has been updated too:

    \n\n
    \n
    \n

    Files, MD5 checksums and sizes

    \n
    \n

    d76e774a4169794ae0d7a8598478e69e Python-2.2.3.exe (7334106 bytes)

    \n

    169f89f318e252dac0c54dd1b165d229 Python-2.2.3.tgz (6709556 bytes)

    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 149, + "fields": { + "created": "2014-03-20T22:37:29.525Z", + "updated": "2014-06-10T03:41:43.983Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.0.1", + "slug": "python-301", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2009-02-13T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v3.0.1/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 3.0 is end-of-lifed with the release of Python 3.1.**\n All users of Python 3.0.x should upgrade to the most recent version of \n Python 3; please see the `downloads `_ pages.\n\n\nPython 3.0.1 was released on February 13, 2009. It was a bugfix\nrelease of Python `3.0 `_.\n\nThis is the first bugfix release of Python 3.0. Python 3.0 is now in\nbugfix-only mode; no new features are being added. Dozens of bugs that were\nreported since the release of 3.0 final have been fixed.\n\nPython 3.0 (a.k.a. \"Python 3000\" or \"Py3k\") is a **new\nversion** of the language that is **incompatible** with the 2.x line of\nreleases. The language is mostly the same, but many details,\nespecially how built-in objects like dictionaries and strings work,\nhave changed considerably, and a lot of deprecated features have\nfinally been removed. Also, the standard library has been reorganized\nin a few prominent places.\n\nHere are some Python 3.0 resources:\n\n* `What's new in Python 3000\n `_\n* `Python 3.0 change log `_.\n* `Online Documentation `_\n* Read more in `PEP 3000 `_\n* To help out, sign up for `python-3000@python.org\n `_\n* Conversion tool for Python 2.x code:\n `2to3 `_\n\nPlease report bugs at ``_\n\nSee also the `license `_.\n\n\nPython 3.0.1 Released: 13-Feb-2009\n==================================\n\nDownload\n--------\n\nThis is a production release; we currently support these formats:\n\n * `Gzipped source tar ball (3.0.1) `_\n `(sig) `__\n\n * `Bzipped source tar ball (3.0.1) `_\n `(sig) `__\n\n * `Windows x86 MSI Installer (3.0.1) `_\n `(sig) `__\n\n * `Windows X86-64 MSI Installer (3.0.1)\n `_ [1]_\n `(sig) `__\n\n * `Mac OS X Installer Disk Image (3.0.1)\n `_ \n (unsigned).\n\nMD5 checksums and sizes of the released files::\n\n 220b73f0a1a20c4b1cdf9f9db4cd52fe 11258272 Python-3.0.1.tgz\n 7291eac6a9a7a3642e309c78b8d744e5 9495088 Python-3.0.1.tar.bz2\n be8f57265e1419330965692a4fa15d9a 13702656 python-3.0.1.amd64.msi\n ffce874eb1a832927fb705b84720bfc6 13434880 python-3.0.1.msi\n b17949fe1aa84c7b1b5c8932046c5b6f 16984391 python-3.0.1-macosx2009-02-14.dmg\n\n\nThe signatures for the source tarballs above were generated with\n`GnuPG `_ using release manager\nBarry Warsaw's\n`public key `_ \nwhich has a key id of EA5BBD71. \nThe Windows installers were signed by Martin von L\u00f6wis'\n`public key `_ \nwhich has a key id of 7D9DC8D2.\n\nDocumentation\n-------------\n\n* `Online Documentation `_ is updated\n twice a day\n\n* `What's new in Python 3000\n `_\n\n* `Guido van Rossum's current blog\n `_\n\n* `Guido van Rossum's previous blog\n `_\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 3.0.1 was released on February 13, 2009. It was a bugfix\nrelease of Python 3.0.

    \n

    This is the first bugfix release of Python 3.0. Python 3.0 is now in\nbugfix-only mode; no new features are being added. Dozens of bugs that were\nreported since the release of 3.0 final have been fixed.

    \n

    Python 3.0 (a.k.a. "Python 3000" or "Py3k") is a new\nversion of the language that is incompatible with the 2.x line of\nreleases. The language is mostly the same, but many details,\nespecially how built-in objects like dictionaries and strings work,\nhave changed considerably, and a lot of deprecated features have\nfinally been removed. Also, the standard library has been reorganized\nin a few prominent places.

    \n

    Here are some Python 3.0 resources:

    \n\n

    Please report bugs at http://bugs.python.org

    \n

    See also the license.

    \n
    \n

    Python 3.0.1 Released: 13-Feb-2009

    \n
    \n

    Download

    \n

    This is a production release; we currently support these formats:

    \n
    \n\n
    \n

    MD5 checksums and sizes of the released files:

    \n
    \n220b73f0a1a20c4b1cdf9f9db4cd52fe  11258272  Python-3.0.1.tgz\n7291eac6a9a7a3642e309c78b8d744e5   9495088  Python-3.0.1.tar.bz2\nbe8f57265e1419330965692a4fa15d9a  13702656  python-3.0.1.amd64.msi\nffce874eb1a832927fb705b84720bfc6  13434880  python-3.0.1.msi\nb17949fe1aa84c7b1b5c8932046c5b6f  16984391  python-3.0.1-macosx2009-02-14.dmg\n
    \n

    The signatures for the source tarballs above were generated with\nGnuPG using release manager\nBarry Warsaw's\npublic key\nwhich has a key id of EA5BBD71.\nThe Windows installers were signed by Martin von L\u00f6wis'\npublic key\nwhich has a key id of 7D9DC8D2.

    \n
    \n
    \n

    Documentation

    \n\n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 150, + "fields": { + "created": "2014-03-20T22:37:31.094Z", + "updated": "2014-06-10T03:41:33.102Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.4.5", + "slug": "python-245", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2008-03-11T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.4.5/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n We are pleased to announce \n **Python 2.4.5 (final)**, a \n bugfix release of Python 2.4, on March 11, 2008. \n\n **Important:**\n 2.4.5 is a source-only release. If you need a binary release\n of 2.4, use `2.4.4 <../2.4.4>`_. If you need the fixes that are\n included in this release, use `2.5.2 <../2.5.2>`_ or later.\n\nPython 2.4 is now in security-fix-only mode. No new features are being\nadded, and bugs are not fixed anymore unless they affect the stability\nand security of the interpreter, or of Python applications. This release\nincludes just a small number of fixes, primarily preventing crashes\nof the interpreter in certain boundary cases.\n\n`Python 2.5 <../2.5>`_ is the latest release of Python. This release of \nthe older 2.4 code is to provide bug fixes for people who are still using\nPython 2.4. This is the last planned release in the Python 2.4 series - \nfuture maintenance releases of Python will be in the 2.5 series, starting\nof course with 2.5.1.\n\nWe have decided not to include binaries for Windows or OS X in this\nrelease, nor to update any online documentation, as the overhead\nfor doing so would have greatly outweighed the amount of changes that\nwe release. If you need the security fixes included in this release,\nplease build your own binaries from the sources, or (better) upgrade\nto a more recent Python release for which we still do provide binaries\nand documentation updates.\n\nSee the `detailed release notes `_ for more details.\n\nSince the release candidate, we received various reports that the\nthis release may fail to build on current operating systems, in \nparticular on OS X. We have made no attempt to fix these problems,\nas the release is targeted for systems that were current at the time\nPython 2.4 was originally released. For more recent systems, you might\nhave to come up with work-arounds. For OS X in particular, try\ninvoking::\n\n ./configure MACOSX_DEPLOYMENT_TARGET=10.5 \n\nFor more information on the new features of `Python 2.4 <../2.4/>`_ see the \n`2.4 highlights <../2.4/highlights>`_ or consult Andrew Kuchling's \n`What's New In Python `_\nfor a more detailed view.\n\nPlease see the separate `bugs page `_ for known issues and the bug \nreporting procedure.\n\nSee also the `license `_\n\nDownload the release\n--------------------\n\ngzip-compressed source code: `python-2.4.5.tgz `_\n\nbzip2-compressed source code: `python-2.4.5.tar.bz2 `_,\nthe source archive. \n\nThe bzip2-compressed version is considerably smaller, so get that one if\nyour system has the `appropriate tools `_ to deal \nwith it. \n\nUnpack the archive with ``tar -zxvf Python-2.4.5.tgz`` (or \n``bzcat Python-2.4.5.tar.bz2 | tar -xf -``). \nChange to the Python-2.4.5 directory and run the \"./configure\", \"make\", \n\"make install\" commands to compile and install Python. The source archive \nis also suitable for Windows users who feel the need to build their \nown version.\n\n\nWhat's New?\n-----------\n\n* See the `highlights <../2.4/highlights>`_ of the Python 2.4 release.\n\n* Andrew Kuchling's \n `What's New in Python 2.4 `_\n describes the most visible changes since `Python 2.3 <../2.3/>`_ in \n more detail.\n\n* A detailed list of the changes in 2.4.5 can be found in \n the `release notes `_, or the ``Misc/NEWS`` file in the \n source distribution.\n\n* For the full list of changes, you can poke around in \n `Subversion `_.\n\nDocumentation\n-------------\n\nThe documentation has also been updated:\n\n* `Browse HTML on-line `_\n\n* Download using `HTTP `_.\n\n* Documentation is available in Windows Help (.chm) format - `python24.chm `_.\n\n\nFiles, `MD5 `_ checksums, signatures and sizes\n---------------------------------------------------------\n\n ``750b652bfdd12675e102bbe25e5e9893`` `Python-2.4.5.tgz `_\n (9625509 bytes, `signature `__)\n\n ``aade3958cb097cc1c69ae0074297d359`` `Python-2.4.5.tar.bz2 `_\n (8159705 bytes, `signature `__)\n\n\nThe signatures above were generated with\n`GnuPG `_ using release manager\nMartin v. L\u00f6wis's\n`public key `_ \nwhich has a key id of 7D9DC8D2.\n\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.4 is now in security-fix-only mode. No new features are being\nadded, and bugs are not fixed anymore unless they affect the stability\nand security of the interpreter, or of Python applications. This release\nincludes just a small number of fixes, primarily preventing crashes\nof the interpreter in certain boundary cases.

    \n

    Python 2.5 is the latest release of Python. This release of\nthe older 2.4 code is to provide bug fixes for people who are still using\nPython 2.4. This is the last planned release in the Python 2.4 series -\nfuture maintenance releases of Python will be in the 2.5 series, starting\nof course with 2.5.1.

    \n

    We have decided not to include binaries for Windows or OS X in this\nrelease, nor to update any online documentation, as the overhead\nfor doing so would have greatly outweighed the amount of changes that\nwe release. If you need the security fixes included in this release,\nplease build your own binaries from the sources, or (better) upgrade\nto a more recent Python release for which we still do provide binaries\nand documentation updates.

    \n

    See the detailed release notes for more details.

    \n

    Since the release candidate, we received various reports that the\nthis release may fail to build on current operating systems, in\nparticular on OS X. We have made no attempt to fix these problems,\nas the release is targeted for systems that were current at the time\nPython 2.4 was originally released. For more recent systems, you might\nhave to come up with work-arounds. For OS X in particular, try\ninvoking:

    \n
    \n./configure MACOSX_DEPLOYMENT_TARGET=10.5\n
    \n

    For more information on the new features of Python 2.4 see the\n2.4 highlights or consult Andrew Kuchling's\nWhat's New In Python\nfor a more detailed view.

    \n

    Please see the separate bugs page for known issues and the bug\nreporting procedure.

    \n

    See also the license

    \n
    \n

    Download the release

    \n

    gzip-compressed source code: python-2.4.5.tgz

    \n

    bzip2-compressed source code: python-2.4.5.tar.bz2,\nthe source archive.

    \n

    The bzip2-compressed version is considerably smaller, so get that one if\nyour system has the appropriate tools to deal\nwith it.

    \n

    Unpack the archive with tar -zxvf Python-2.4.5.tgz (or\nbzcat Python-2.4.5.tar.bz2 | tar -xf -).\nChange to the Python-2.4.5 directory and run the "./configure", "make",\n"make install" commands to compile and install Python. The source archive\nis also suitable for Windows users who feel the need to build their\nown version.

    \n
    \n
    \n

    What's New?

    \n
      \n
    • See the highlights of the Python 2.4 release.
    • \n
    • Andrew Kuchling's\nWhat's New in Python 2.4\ndescribes the most visible changes since Python 2.3 in\nmore detail.
    • \n
    • A detailed list of the changes in 2.4.5 can be found in\nthe release notes, or the Misc/NEWS file in the\nsource distribution.
    • \n
    • For the full list of changes, you can poke around in\nSubversion.
    • \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated:

    \n\n
    \n
    \n

    Files, MD5 checksums, signatures and sizes

    \n
    \n

    750b652bfdd12675e102bbe25e5e9893 Python-2.4.5.tgz\n(9625509 bytes, signature)

    \n

    aade3958cb097cc1c69ae0074297d359 Python-2.4.5.tar.bz2\n(8159705 bytes, signature)

    \n
    \n

    The signatures above were generated with\nGnuPG using release manager\nMartin v. L\u00f6wis's\npublic key\nwhich has a key id of 7D9DC8D2.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 151, + "fields": { + "created": "2014-03-20T22:37:32.081Z", + "updated": "2014-06-10T03:41:47.325Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.2.1", + "slug": "python-321", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2011-07-09T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v3.2.1/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n**Note:** A newer security-fix release, 3.2.6, is currently `available\n`__. Its use is recommended.\n\nPython 3.2.1 was released on July 10th, 2011.\n\nPython 3.2 is a continuation of the efforts to improve and stabilize the Python\n3.x line. Since the final release of Python 2.7, the 2.x line will only receive\nbugfixes, and new features are developed for 3.x only.\n\nSince :pep:`3003`, the Moratorium on Language Changes, is in effect, there are\nno changes in Python's syntax and only few changes to built-in types in Python\n3.2. Development efforts concentrated on the standard library and support for\nporting code to Python 3. Highlights are:\n\n* numerous improvements to the unittest module\n* :pep:`3147`, support for .pyc repository directories\n* :pep:`3149`, support for version tagged dynamic libraries\n* :pep:`3148`, a new futures library for concurrent programming\n* :pep:`384`, a stable ABI for extension modules\n* :pep:`391`, dictionary-based logging configuration\n* an overhauled GIL implementation that reduces contention\n* an extended email package that handles bytes messages\n* a much improved ssl module with support for SSL contexts and certificate\n hostname matching\n* a sysconfig module to access configuration information\n* additions to the shutil module, among them archive file support\n* many enhancements to configparser, among them mapping protocol support\n* improvements to pdb, the Python debugger\n* countless fixes regarding bytes/string issues; among them full support\n for a bytes environment (filenames, environment variables)\n* many consistency and behavior fixes for numeric operations\n\nSee these resources for further information:\n\n* `What's new in 3.2? `_\n* `Change log for this release\n `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\nDownload\n--------\n\n.. This is a preview release, and its use is not recommended in production\n.. settings.\n\nThis is a production release. Please `report any bugs\n`_ you encounter.\n\nWe currently support these formats for download:\n\n* `Bzipped source tar ball (3.2.1) `__ `(sig)\n `__, ~ 11 MB\n\n* `XZ compressed source tar ball (3.2.1) `__\n `(sig) `__, ~ 8.5 MB\n\n* `Gzipped source tar ball (3.2.1) `__ `(sig)\n `__, ~ 13 MB\n\n..\n \n* `Windows x86 MSI Installer (3.2.1) `__ `(sig)\n `__ and `Visual Studio debug information\n files `__ `(sig)\n `__\n\n* `Windows X86-64 MSI Installer (3.2.1) `__\n [1]_ `(sig) `__ and `Visual Studio\n debug information files `__ `(sig)\n `__\n\n* `Windows help file `_ `(sig)\n `__\n\n..\n\n* `Mac OS X 64-bit/32-bit Installer (3.2.1) for Mac OS X 10.6 and 10.7\n `__ [2]_ `(sig)\n `__. \n [You may need an updated Tcl/Tk install to run IDLE or use Tkinter,\n see note 2 for instructions.]\n\n* `Mac OS X 32-bit i386/PPC Installer (3.2.1) for OS X 10.3 through 10.6\n `__ [2]_ `(sig)\n `__\n\nThe source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is ``26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288``. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the `download\npage `_.\n\nMD5 checksums and sizes of the released files::\n\n 6c2aa3481cadb7bdf74e625fffc352b2 12713430 Python-3.2.1.tgz\n f0869ba3f3797aacb1f954ef24c256f3 10709280 Python-3.2.1.tar.bz2\n 2cf014296afc18897daa7b79414ad773 8911452 Python-3.2.1.tar.xz\n d61f37f109d6d8c6fdec7bc4913b5ce2 19505848 python-3.2.1-macosx10.3.dmg\n add9d9d05c57e73f4891386a2d15c819 16190928 python-3.2.1-macosx10.6.dmg\n 1b230ae0f527bfc92bc0d7dec2bcf563 18233314 python-3.2.1-pdb.zip\n 2597bdae1318427401c9685b73ceed0f 19932232 python-3.2.1.amd64-pdb.zip\n 1bdb9e0eddb75f701f18a15c2d1ec3d6 18526208 python-3.2.1.amd64.msi\n c148e89b97cd07352c42ecb3bb4f42e2 18014208 python-3.2.1.msi\n c05472b404526f3979f1ebbd8234e972 5800119 python321.chm\n\n.. [1] The binaries for AMD64 will also work on processors that implement the\n Intel 64 architecture (formerly EM64T), i.e. the architecture that\n Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They\n will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_. Also, on Mac OS X 10.6, if you need to\n build C extension modules with the 32-bit-only Python installed, you will\n need Apple Xcode 3, not 4. The 64-bit/32-bit Python can use either\n Xcode 3 or Xcode 4.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: A newer security-fix release, 3.2.6, is currently available. Its use is recommended.

    \n

    Python 3.2.1 was released on July 10th, 2011.

    \n

    Python 3.2 is a continuation of the efforts to improve and stabilize the Python\n3.x line. Since the final release of Python 2.7, the 2.x line will only receive\nbugfixes, and new features are developed for 3.x only.

    \n

    Since PEP 3003, the Moratorium on Language Changes, is in effect, there are\nno changes in Python's syntax and only few changes to built-in types in Python\n3.2. Development efforts concentrated on the standard library and support for\nporting code to Python 3. Highlights are:

    \n
      \n
    • numerous improvements to the unittest module
    • \n
    • PEP 3147, support for .pyc repository directories
    • \n
    • PEP 3149, support for version tagged dynamic libraries
    • \n
    • PEP 3148, a new futures library for concurrent programming
    • \n
    • PEP 384, a stable ABI for extension modules
    • \n
    • PEP 391, dictionary-based logging configuration
    • \n
    • an overhauled GIL implementation that reduces contention
    • \n
    • an extended email package that handles bytes messages
    • \n
    • a much improved ssl module with support for SSL contexts and certificate\nhostname matching
    • \n
    • a sysconfig module to access configuration information
    • \n
    • additions to the shutil module, among them archive file support
    • \n
    • many enhancements to configparser, among them mapping protocol support
    • \n
    • improvements to pdb, the Python debugger
    • \n
    • countless fixes regarding bytes/string issues; among them full support\nfor a bytes environment (filenames, environment variables)
    • \n
    • many consistency and behavior fixes for numeric operations
    • \n
    \n

    See these resources for further information:

    \n\n
    \n

    Download

    \n\n\n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n\n\n\n\n

    The source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is 26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the download\npage.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \n6c2aa3481cadb7bdf74e625fffc352b2  12713430  Python-3.2.1.tgz\nf0869ba3f3797aacb1f954ef24c256f3  10709280  Python-3.2.1.tar.bz2\n2cf014296afc18897daa7b79414ad773   8911452  Python-3.2.1.tar.xz\nd61f37f109d6d8c6fdec7bc4913b5ce2  19505848  python-3.2.1-macosx10.3.dmg\nadd9d9d05c57e73f4891386a2d15c819  16190928  python-3.2.1-macosx10.6.dmg\n1b230ae0f527bfc92bc0d7dec2bcf563  18233314  python-3.2.1-pdb.zip\n2597bdae1318427401c9685b73ceed0f  19932232  python-3.2.1.amd64-pdb.zip\n1bdb9e0eddb75f701f18a15c2d1ec3d6  18526208  python-3.2.1.amd64.msi\nc148e89b97cd07352c42ecb3bb4f42e2  18014208  python-3.2.1.msi\nc05472b404526f3979f1ebbd8234e972   5800119  python321.chm\n
    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the\nIntel 64 architecture (formerly EM64T), i.e. the architecture that\nMicrosoft calls x64, and AMD called x86-64 before calling it AMD64. They\nwill not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here. Also, on Mac OS X 10.6, if you need to\nbuild C extension modules with the 32-bit-only Python installed, you will\nneed Apple Xcode 3, not 4. The 64-bit/32-bit Python can use either\nXcode 3 or Xcode 4.
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 152, + "fields": { + "created": "2014-03-20T22:37:37.039Z", + "updated": "2014-06-10T03:41:28.821Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.3.4", + "slug": "python-234", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2004-05-27T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.3.4/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\npatch release which supersedes earlier releases of 2.3.\n\n\n\n
    \n Important: This release is vulnerable to the problem described in\n security advisory PSF-2006-001\n \"Buffer overrun in repr() of unicode strings in wide unicode\n builds (UCS-4)\". This fix is included in\n Python 2.4.4\n and Python 2.5. If you need to remain with Python 2.3,\n there's a patch available from the security advisory page.\n
    \n\n
    Important:\n2.3.5 includes a security\nfix for SimpleXMLRPCServer.py.\n
    \n\n

    We're happy to announce the release of \nPython 2.3.4 (final) on May 27th, 2004.\nThis is a bug-fix release for Python 2.3 that fixes a number of bugs,\nincluding a couple of weakref bugs and a bug in pickle version 2.\nThere are also a number of fixes to the standard library, and some\nbuild fixes - see the release notes for details.\n\n

    Python 2.3.4 supersedes the previous Python 2.3.3 \nrelease.\n\n

    No new features have been added in Python 2.3.4. The 2.3 series is\nnow in bugfix-only mode.\n\n

    Please see the separate bugs page for known\nissues and the bug reporting procedure.\n\n

    Download the release

    \n\n

    Windows users should download the Windows installer, Python-2.3.4.exe, run\nit and follow the friendly instructions on the screen to complete the\ninstallation. Windows users may also be interested in Mark Hammond's\nwin32all, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.

    \n\n

    RPMs suitable for Red Hat/Fedora and source RPMs for other RPM-using\noperating systems are available from the RPMs page.\n\n

    All others should download either \nPython-2.3.4.tgz or\nPython-2.3.4.tar.bz2,\nthe source archive. The tar.bz2 is considerably smaller, so get that one if\nyour system has the appropriate \ntools to deal with it. Unpack it with \n\"tar -zxvf Python-2.3.4.tgz\" (or \n\"bzcat Python-2.3.4.tar.bz2 | tar -xf -\"). \nChange to the Python-2.3.4 directory\nand run the \"./configure\", \"make\", \"make install\" commands to compile \nand install Python. The source archive is also suitable for Windows users\nwho feel the need to build their own version.\n\n

    Warning for Solaris and HP-UX users: Some versions of the\nSolaris and HP/UX versions of tar(1) report checksum\nerrors and are unable to unpack the Python source tree.\nThis is caused by some pathnames being too\nlong for the vendor's version. Use\nGNU tar instead.\n\n

    If you're having trouble building on your system, check the top-level\nREADME file for platform-specific tips, or check the \nBuild Bugs section on the Bugs webpage.\n\n\n\n

    What's New?

    \n\n
      \n\n

    • A detailed list of the changes since 2.3.3 is in the release notes, or the file Misc/NEWS in\nthe source distribution.\n\n
    • See the highlights of the\nPython 2.3 release. As noted, the 2.3.4 release is a bugfix release\nof 2.3.3, itself a bugfix release of 2.3. \n\n

    • The Windows installer now includes the documentation in searchable \nhtmlhelp format, rather than individual HTML files. You can still download the\nindividual HTML files.\n\n

    • Andrew Kuchling's What's New\nin Python 2.3 describes the most visible changes since Python 2.2 in more detail.\n\n

    • For the full list of changes, you can poke around in CVS.\n\n\n\n\n
    \n\n

    Documentation

    \n\n

    The documentation has been updated too:\n\n

    \n\n

    The interim documentation for\nnew-style classes, last seen for Python 2.2.3, is still relevant\nfor Python 2.3.4. Raymond Hettinger has also written a tutorial on\ndescriptors, introduced in Python 2.2. \nIn addition, The Python 2.3 Method\nResolution Order is a nice paper by Michele Simionato that\nexplains the C3 MRO algorithm (new in Python 2.3) clearly. (Also\navailable as reStructured Text. Copied with\npermission.)\n\n

    Files, MD5 checksums, signatures, and sizes

    \n\n
    \nb6cf0b19226861a38689d2fabd0931b3 Python-2.3.4.tgz (8502738 bytes, signature)\na2c089faa2726c142419c03472fc4063 Python-2.3.4.tar.bz2 (7189129 bytes, signature)\n65275cc93b905c25d130d71c116892f2 Python-2.3.4.exe (9889611 bytes, signature)\n
    \n\n

    The signatures above were generated with\nGnuPG using the release manager's\n(Anthony Baxter)\npublic key \nwhich has a key id of 6A45C816.\n\n

     ", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    patch release which supersedes earlier releases of 2.3.</i>\n</blockquote>

    \n
    \n
    <blockquote>
    \n
    <b>Important:</b> This release is vulnerable to the problem described in\n<a href="/news/security/PSF-2006-001/">security advisory PSF-2006-001</a>\n"Buffer overrun in repr() of unicode strings in wide unicode\nbuilds (UCS-4)". This fix is included in\n<a href="../2.4.4/">Python 2.4.4</a>\nand <a href="../2.5/">Python 2.5</a>. If you need to remain with Python 2.3,\nthere's a patch available from the security advisory page.
    \n
    \n

    </blockquote>

    \n

    <blockquote> <b>Important:\n2.3.5 includes a <a href="/news/security/PSF-2005-001/" >security\nfix</a> for SimpleXMLRPCServer.py.</b>\n</blockquote>

    \n

    <p>We're happy to announce the release of\n<b>Python 2.3.4 (final)</b> on May 27th, 2004.\nThis is a bug-fix release for Python 2.3 that fixes a number of bugs,\nincluding a couple of weakref bugs and a bug in pickle version 2.\nThere are also a number of fixes to the standard library, and some\nbuild fixes - see the <a href="NEWS.txt">release notes</a> for details.

    \n

    <p>Python 2.3.4 supersedes the previous <a href="../2.3.3/">Python 2.3.3</a>\nrelease.

    \n

    <p>No new features have been added in Python 2.3.4. The 2.3 series is\nnow in bugfix-only mode.

    \n

    <p>Please see the separate <a href="bugs">bugs page</a> for known\nissues and the bug reporting procedure.

    \n

    <h3>Download the release</h3>

    \n

    <p><b>Windows</b> users should download the Windows installer, <a\nhref="/ftp/python/2.3.4/Python-2.3.4.exe">Python-2.3.4.exe</a>, run\nit and follow the friendly instructions on the screen to complete the\ninstallation. Windows users may also be interested in Mark Hammond's\n<a href="http://starship.python.net/crew/mhammond/"\n>win32all</a>, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.</p>

    \n

    <p>RPMs suitable for Red Hat/Fedora and source RPMs for other RPM-using\noperating systems are available from <a href="rpms">the RPMs page</a>.

    \n

    <p><b>All others</b> should download either\n<a href="/ftp/python/2.3.4/Python-2.3.4.tgz">Python-2.3.4.tgz</a> or\n<a href="/ftp/python/2.3.4/Python-2.3.4.tar.bz2">Python-2.3.4.tar.bz2</a>,\nthe source archive. The tar.bz2 is considerably smaller, so get that one if\nyour system has the <a href="http://sources.redhat.com/bzip2/">appropriate\ntools</a> to deal with it. Unpack it with\n"tar&nbsp;-zxvf&nbsp;Python-2.3.4.tgz" (or\n"bzcat&nbsp;Python-2.3.4.tar.bz2&nbsp;|&nbsp;tar&nbsp;-xf&nbsp;-").\nChange to the Python-2.3.4 directory\nand run the "./configure", "make", "make&nbsp;install" commands to compile\nand install Python. The source archive is also suitable for Windows users\nwho feel the need to build their own version.

    \n

    <p><b>Warning for Solaris and HP-UX users</b>: Some versions of the\nSolaris and HP/UX versions of <i>tar(1)</i> report checksum\nerrors and are unable to unpack the Python source tree.\nThis is caused by some pathnames being too\nlong for the vendor's version. Use\n<a href="http://www.gnu.org/software/tar/tar.html">GNU tar</a> instead.

    \n

    <p>If you're having trouble building on your system, check the top-level\nREADME file for platform-specific tips, or check the\n<a href="bugs#build">Build Bugs</a> section on the Bugs webpage.

    \n

    <!--mac\n<p><b>Macintosh</b> users can find binaries and source on\nJack Jansen's\n<a href="http://homepages.cwi.nl/~jack/macpython/">MacPython page</a>.\nMac OS X users who have a C compiler (which comes with the\n<a href="http://developer.apple.com/tools/macosxtools.html">OS X\nDeveloper Tools</a>) can also build from the source tarball below.\n-->

    \n

    <h3>What's New?</h3>

    \n

    <ul>

    \n

    <p><li>A detailed list of the changes since 2.3.3 is in the <a\nhref="NEWS.txt">release notes</a>, or the file <tt>Misc/NEWS</tt> in\nthe source distribution.

    \n

    <li>See the <a href="../2.3/highlights">highlights</a> of the\nPython 2.3 release. As noted, the 2.3.4 release is a bugfix release\nof 2.3.3, itself a bugfix release of 2.3.

    \n

    <p><li>The Windows installer now includes the documentation in searchable\nhtmlhelp format, rather than individual HTML files. You can still download the\n<a href="/ftp/python/doc/2.3.4/">individual HTML files</a>.

    \n

    <p><li>Andrew Kuchling's <a href="/doc/2.3.4/whatsnew/">What's New\nin Python 2.3</a> describes the most visible changes since <a\nhref="../2.2.3/">Python 2.2</a> in more detail.

    \n

    <p><li>For the full list of changes, you can poke around in <a\nhref="http://sourceforge.net/cvs/?group_id=5470">CVS</a>.

    \n

    <!--\n<p><li>The PSF's <a href="../psf/press-release/pr20031219">press\nrelease</a> announcing 2.3.3.\n-->

    \n

    </ul>

    \n

    <h3>Documentation</h3>

    \n

    <p>The documentation has been updated too:

    \n

    <ul>

    \n

    <li><a href="/doc/2.3.4/">Browse HTML documentation on-line</a></li>

    \n

    <li>Download using <a href="/ftp/python/doc/2.3.4/">HTTP</a>.

    \n

    </ul>

    \n

    <p>The <a href="../2.2.3/descrintro">interim documentation for\nnew-style classes</a>, last seen for Python 2.2.3, is still relevant\nfor Python 2.3.4. Raymond Hettinger has also written a <a\nhref="http://users.rcn.com/python/download/Descriptor.htm">tutorial on\ndescriptors</a>, introduced in Python 2.2.\nIn addition, <a href="../2.3/mro">The Python 2.3 Method\nResolution Order</a> is a nice paper by Michele Simionato that\nexplains the C3 MRO algorithm (new in Python 2.3) clearly. (Also\navailable as <a href="../2.3/mro/mro.txt">reStructured Text</a>. Copied with\npermission.)

    \n

    <h3>Files, <a href="md5sum.py">MD5</a> checksums, signatures, and sizes</h3>

    \n

    <pre>\nb6cf0b19226861a38689d2fabd0931b3 <a href="/ftp/python/2.3.4/Python-2.3.4.tgz">Python-2.3.4.tgz</A> (8502738 bytes, <a href="Python-2.3.4.tgz.asc">signature</a>)\na2c089faa2726c142419c03472fc4063 <a href="/ftp/python/2.3.4/Python-2.3.4.tar.bz2">Python-2.3.4.tar.bz2</A> (7189129 bytes, <a href="Python-2.3.4.tar.bz2.asc">signature</a>)\n65275cc93b905c25d130d71c116892f2 <a href="/ftp/python/2.3.4/Python-2.3.4.exe">Python-2.3.4.exe</a> (9889611 bytes, <a href="Python-2.3.4.exe.asc">signature</a>)\n</pre>

    \n

    <p>The signatures above were generated with\n<a href="http://www.gnupg.org">GnuPG</a> using the release manager's\n(Anthony Baxter)\n<a href="/download#pubkeys">public key</a>\nwhich has a key id of 6A45C816.

    \n

    <p>&nbsp;

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 153, + "fields": { + "created": "2014-03-20T22:37:38.068Z", + "updated": "2014-06-10T03:41:43.232Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.5", + "slug": "python-275", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2013-05-12T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.7.5/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nNote: A newer bugfix release, 2.7.6, is currently `available\n`__. Its use is recommended over previous versions\nof 2.7.\n\nPython 2.7.5 was released on May 15, 2013. This is a 2.7 series bugfix\nrelease. It contains several `regression fixes\n`_ to 2.7.4. Modules\nwith regressions fixed include `zipfile `_,\n`gzip `_, and `logging\n`_. The Python 2.7.4 binaries and source\ntarballs included a data file for testing purposes that `triggered some virus\nscanners `_. This issue is resolved in the\n2.7.5 release.\n\nAbout the 2.7 release series\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nAmong the features and improvements to Python 2.6 introduced in the 2.7 series\nare\n\n- An ordered dictionary type\n- New unittest features including test skipping, new assert methods, and test\n discovery\n- A much faster io module\n- Automatic numbering of fields in the str.format() method\n- Float repr improvements backported from 3.x\n- Tile support for Tkinter\n- A backport of the memoryview object from 3.x\n- Set literals\n- Set and dictionary comprehensions\n- Dictionary views\n- New syntax for nested with statements\n- The sysconfig module\n\nResources\n^^^^^^^^^\n\n* `What's new in 2.7? `_\n* `Complete change log for this release `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\n\nDownload\n--------\n\nThis is a production release. Please `report any bugs\n`_ you encounter.\n\nWe currently support these formats for download:\n\n* `XZ compressed source tar ball (2.7.5) `__\n `(sig) `__\n\n* `Gzipped source tar ball (2.7.5) `__\n `(sig) `__\n\n* `Bzipped source tar ball (2.7.5)\n `__ `(sig)\n `__\n\n* `Windows x86 MSI Installer (2.7.5) `__ \n `(sig) `__\n\n* `Windows x86 MSI program database (2.7.5) `__ \n `(sig) `__\n\n* `Windows X86-64 MSI Installer (2.7.5)\n `__ [1]_ \n `(sig) `__\n\n* `Windows X86-64 program database (2.7.5) `__ [1]_ \n `(sig) `__\n\n* `Windows help file `_\n `(sig) `__\n\n* `Mac OS X 64-bit/32-bit x86-64/i386 Installer (2.7.5) for Mac OS X 10.6 and\n later `__ [2]_ `(sig)\n `__. [You may need an\n updated Tcl/Tk install to run IDLE or use Tkinter, see note 2 for instructions.]\n\n* `Mac OS X 32-bit i386/PPC Installer (2.7.5) for Mac OS X 10.3 and later\n `__ [2]_ `(sig)\n `__.\n\nThe source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installer was signed\nby Martin von L\u00f6wis' public key, which has a key id of 7D9DC8D2. The Mac\ninstallers were signed with Ned Deily's key, which has a key id of 6F5E1540.\nThe public keys are located on the `download page `_.\n\nMD5 checksums and sizes of the released files::\n\n b4f01a1d0ba0b46b05c73b2ac909b1df 14492759 Python-2.7.5.tgz\n 6334b666b7ff2038c761d7b27ba699c1 12147710 Python-2.7.5.tar.bz2\n 5eea8462f69ab1369d32f9c4cd6272ab 10252148 Python-2.7.5.tar.xz\n e632ba7c34b922e4485667e332096999 18236482 python-2.7.5-pdb.zip\n 55cc56948dcee3afb53f65d8bb425f20 17556546 python-2.7.5.amd64-pdb.zip\n 83f5d9ba639bd2e33d104df9ea969f31 16617472 python-2.7.5.amd64.msi\n 0006d6219160ce6abe711a71c835ebb0 16228352 python-2.7.5.msi\n edc2df9809bcaaf704314ec387ff5ee7 5997097 python275.chm\n ead4f83ec7823325ae287295193644a7 20395084 python-2.7.5-macosx10.3.dmg\n 248ec7d77220ec6c770a23df3cb537bc 19979778 python-2.7.5-macosx10.6.dmg\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: A newer bugfix release, 2.7.6, is currently available. Its use is recommended over previous versions\nof 2.7.

    \n

    Python 2.7.5 was released on May 15, 2013. This is a 2.7 series bugfix\nrelease. It contains several regression fixes to 2.7.4. Modules\nwith regressions fixed include zipfile,\ngzip, and logging. The Python 2.7.4 binaries and source\ntarballs included a data file for testing purposes that triggered some virus\nscanners. This issue is resolved in the\n2.7.5 release.

    \n
    \n

    About the 2.7 release series

    \n

    Among the features and improvements to Python 2.6 introduced in the 2.7 series\nare

    \n
      \n
    • An ordered dictionary type
    • \n
    • New unittest features including test skipping, new assert methods, and test\ndiscovery
    • \n
    • A much faster io module
    • \n
    • Automatic numbering of fields in the str.format() method
    • \n
    • Float repr improvements backported from 3.x
    • \n
    • Tile support for Tkinter
    • \n
    • A backport of the memoryview object from 3.x
    • \n
    • Set literals
    • \n
    • Set and dictionary comprehensions
    • \n
    • Dictionary views
    • \n
    • New syntax for nested with statements
    • \n
    • The sysconfig module
    • \n
    \n
    \n
    \n

    Resources

    \n\n
    \n

    Download

    \n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n

    The source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installer was signed\nby Martin von L\u00f6wis' public key, which has a key id of 7D9DC8D2. The Mac\ninstallers were signed with Ned Deily's key, which has a key id of 6F5E1540.\nThe public keys are located on the download page.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \nb4f01a1d0ba0b46b05c73b2ac909b1df  14492759  Python-2.7.5.tgz\n6334b666b7ff2038c761d7b27ba699c1  12147710  Python-2.7.5.tar.bz2\n5eea8462f69ab1369d32f9c4cd6272ab  10252148  Python-2.7.5.tar.xz\ne632ba7c34b922e4485667e332096999  18236482  python-2.7.5-pdb.zip\n55cc56948dcee3afb53f65d8bb425f20  17556546  python-2.7.5.amd64-pdb.zip\n83f5d9ba639bd2e33d104df9ea969f31  16617472  python-2.7.5.amd64.msi\n0006d6219160ce6abe711a71c835ebb0  16228352  python-2.7.5.msi\nedc2df9809bcaaf704314ec387ff5ee7   5997097  python275.chm\nead4f83ec7823325ae287295193644a7  20395084  python-2.7.5-macosx10.3.dmg\n248ec7d77220ec6c770a23df3cb537bc  19979778  python-2.7.5-macosx10.6.dmg\n
    \n\n\n\n\n\n
    [1](1, 2) The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here.
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 154, + "fields": { + "created": "2014-03-20T22:37:42.590Z", + "updated": "2014-06-10T03:41:42.867Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.4", + "slug": "python-274", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2013-04-06T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.7.4/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nNote: A newer bugfix release, 2.7.5, is currently `available\n`__. Its use is recommended over previous versions\nof 2.7.\n\nPython 2.7.4 was released on April 6, 2013. This is a 2.7 series bugfix\nrelease. It includes `hundreds of bugfixes\n`_ over 2.7.3.\n\nAbout the 2.7 release series\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nAmong the features and improvements to Python 2.6 introduced in the 2.7 series\nare\n\n- An ordered dictionary type\n- New unittest features including test skipping, new assert methods, and test\n discovery\n- A much faster io module\n- Automatic numbering of fields in the str.format() method\n- Float repr improvements backported from 3.x\n- Tile support for Tkinter\n- A backport of the memoryview object from 3.x\n- Set literals\n- Set and dictionary comprehensions\n- Dictionary views\n- New syntax for nested with statements\n- The sysconfig module\n\nResources\n^^^^^^^^^\n\n* `What's new in 2.7? `_\n* `Complete change log for this release `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\n\nDownload\n--------\n\nThis is a production release. Please `report any bugs\n`_ you encounter.\n\nWe currently support these formats for download:\n\n* `XZ compressed source tar ball (2.7.4) `__\n `(sig) `__\n\n* `Gzipped source tar ball (2.7.4) `__\n `(sig) `__\n\n* `Bzipped source tar ball (2.7.4)\n `__ `(sig)\n `__\n\n* `Windows x86 MSI Installer (2.7.4) `__ \n `(sig) `__\n\n* `Windows x86 MSI program database (2.7.4) `__ \n `(sig) `__\n\n* `Windows X86-64 MSI Installer (2.7.4)\n `__ [1]_ \n `(sig) `__\n\n* `Windows X86-64 program database (2.7.4) `__ [1]_ \n `(sig) `__\n\n* `Windows help file `_\n `(sig) `__\n\n* `Mac OS X 64-bit/32-bit x86-64/i386 Installer (2.7.4) for Mac OS X 10.6 and\n later `__ [2]_ `(sig)\n `__. [You may need an\n updated Tcl/Tk install to run IDLE or use Tkinter, see note 2 for instructions.]\n\n* `Mac OS X 32-bit i386/PPC Installer (2.7.4) for Mac OS X 10.3 and later\n `__ [2]_ `(sig)\n `__.\n\nThe source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installer was signed\nby Martin von L\u00f6wis' public key, which has a key id of 7D9DC8D2. The Mac\ninstallers were signed with Ned Deily's key, which has a key id of 6F5E1540.\nThe public keys are located on the `download page `_.\n\nMD5 checksums and sizes of the released files::\n\n 592603cfaf4490a980e93ecb92bde44a 14489063 Python-2.7.4.tgz\n 62704ea0f125923208d84ff0568f7d50 12146770 Python-2.7.4.tar.bz2\n 86909785aa1ff13b49d87737b75b5f54 10250644 Python-2.7.4.tar.xz\n bb475605feffd85194902d5cc0ce62d6 18105410 python-2.7.4-pdb.zip\n a46a49e0f44caffd0084d032ab0447f8 17450050 python-2.7.4.amd64-pdb.zip\n 7c44c508a1594a8be8145d172b056b90 16625664 python-2.7.4.amd64.msi\n 4610171c0dbc22712d597f808dcb8d37 16232448 python-2.7.4.msi\n eff74952b544c77316982bb660eebbda 6003987 python274.chm\n 05314675faa1aa4d1b7ec0e8b21355a0 20397182 python-2.7.4-macosx10.3.dmg\n bf586a6e7419bf1f222babbfe5177208 19985319 python-2.7.4-macosx10.6.dmg\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: A newer bugfix release, 2.7.5, is currently available. Its use is recommended over previous versions\nof 2.7.

    \n

    Python 2.7.4 was released on April 6, 2013. This is a 2.7 series bugfix\nrelease. It includes hundreds of bugfixes over 2.7.3.

    \n
    \n

    About the 2.7 release series

    \n

    Among the features and improvements to Python 2.6 introduced in the 2.7 series\nare

    \n
      \n
    • An ordered dictionary type
    • \n
    • New unittest features including test skipping, new assert methods, and test\ndiscovery
    • \n
    • A much faster io module
    • \n
    • Automatic numbering of fields in the str.format() method
    • \n
    • Float repr improvements backported from 3.x
    • \n
    • Tile support for Tkinter
    • \n
    • A backport of the memoryview object from 3.x
    • \n
    • Set literals
    • \n
    • Set and dictionary comprehensions
    • \n
    • Dictionary views
    • \n
    • New syntax for nested with statements
    • \n
    • The sysconfig module
    • \n
    \n
    \n
    \n

    Resources

    \n\n
    \n

    Download

    \n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n

    The source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installer was signed\nby Martin von L\u00f6wis' public key, which has a key id of 7D9DC8D2. The Mac\ninstallers were signed with Ned Deily's key, which has a key id of 6F5E1540.\nThe public keys are located on the download page.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \n592603cfaf4490a980e93ecb92bde44a  14489063  Python-2.7.4.tgz\n62704ea0f125923208d84ff0568f7d50  12146770  Python-2.7.4.tar.bz2\n86909785aa1ff13b49d87737b75b5f54  10250644  Python-2.7.4.tar.xz\nbb475605feffd85194902d5cc0ce62d6  18105410  python-2.7.4-pdb.zip\na46a49e0f44caffd0084d032ab0447f8  17450050  python-2.7.4.amd64-pdb.zip\n7c44c508a1594a8be8145d172b056b90  16625664  python-2.7.4.amd64.msi\n4610171c0dbc22712d597f808dcb8d37  16232448  python-2.7.4.msi\neff74952b544c77316982bb660eebbda   6003987  python274.chm\n05314675faa1aa4d1b7ec0e8b21355a0  20397182  python-2.7.4-macosx10.3.dmg\nbf586a6e7419bf1f222babbfe5177208  19985319  python-2.7.4-macosx10.6.dmg\n
    \n\n\n\n\n\n
    [1](1, 2) The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here.
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 155, + "fields": { + "created": "2014-03-20T22:37:47.548Z", + "updated": "2014-06-10T03:39:07.601Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.3.5rc1", + "slug": "python-335-rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2014-02-23T00:00:00Z", + "release_page": null, + "release_notes_url": "", + "content": ".. Migrated from Release.release_page field.\n\n\nPython 3.3.5 includes fixes for these important issues:\n\n* a 3.3.4 regression in zipimport (see http://bugs.python.org/issue20621)\n* a 3.3.4 regression executing scripts with a coding declared and Windows\n newlines (see http://bugs.python.org/issue20731)\n* potential DOS using compression codecs in bytes.decode() (see\n http://bugs.python.org/issue19619 and http://bugs.python.org/issue20404)\n\nand also fixes quite a few other bugs.\n\nThis release fully supports OS X 10.9 Mavericks. In particular, this release\nfixes an issue that could cause previous versions of Python to crash when typing\nin interactive mode on OS X 10.9.\n\n\nMajor new features of the 3.3 series, compared to 3.2\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPython 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.\n\n* :pep:`380`, syntax for delegating to a subgenerator (``yield from``)\n* :pep:`393`, flexible string representation (doing away with the distinction\n between \"wide\" and \"narrow\" Unicode builds)\n* A C implementation of the \"decimal\" module, with up to 120x speedup\n for decimal-heavy applications\n* The import system (__import__) is based on importlib by default\n* The new \"lzma\" module with LZMA/XZ support\n* :pep:`397`, a Python launcher for Windows\n* :pep:`405`, virtual environment support in core\n* :pep:`420`, namespace package support\n* :pep:`3151`, reworking the OS and IO exception hierarchy\n* :pep:`3155`, qualified name for classes and functions\n* :pep:`409`, suppressing exception context\n* :pep:`414`, explicit Unicode literals to help with porting\n* :pep:`418`, extended platform-independent clocks in the \"time\" module\n* :pep:`412`, a new key-sharing dictionary implementation that significantly\n saves memory for object-oriented code\n* :pep:`362`, the function-signature object\n* The new \"faulthandler\" module that helps diagnosing crashes\n* The new \"unittest.mock\" module\n* The new \"ipaddress\" module\n* The \"sys.implementation\" attribute\n* A policy framework for the email package, with a provisional (see\n :pep:`411`) policy that adds much improved unicode support for email\n header parsing\n* A \"collections.ChainMap\" class for linking mappings to a single unit\n* Wrappers for many more POSIX functions in the \"os\" and \"signal\" modules, as\n well as other useful functions such as \"sendfile()\"\n* Hash randomization, introduced in earlier bugfix releases, is now\n switched on by default\n\nMore resources\n^^^^^^^^^^^^^^\n\n* `Change log for this release\n `_.\n* `Online Documentation `_\n* `What's new in 3.3? `_\n* `3.3 Release Schedule `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\nDownload\n--------\n\n.. This is a preview release, and its use is not recommended in production\n settings.\n\nThis is a production release. Please `report any bugs\n`__ you encounter.\n\nPlease proceed to the `download page `__ for the download.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 3.3.5 includes fixes for these important issues:

    \n\n

    and also fixes quite a few other bugs.

    \n

    This release fully supports OS X 10.9 Mavericks. In particular, this release\nfixes an issue that could cause previous versions of Python to crash when typing\nin interactive mode on OS X 10.9.

    \n
    \n

    Major new features of the 3.3 series, compared to 3.2

    \n

    Python 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.

    \n
      \n
    • PEP 380, syntax for delegating to a subgenerator (yield from)
    • \n
    • PEP 393, flexible string representation (doing away with the distinction\nbetween "wide" and "narrow" Unicode builds)
    • \n
    • A C implementation of the "decimal" module, with up to 120x speedup\nfor decimal-heavy applications
    • \n
    • The import system (__import__) is based on importlib by default
    • \n
    • The new "lzma" module with LZMA/XZ support
    • \n
    • PEP 397, a Python launcher for Windows
    • \n
    • PEP 405, virtual environment support in core
    • \n
    • PEP 420, namespace package support
    • \n
    • PEP 3151, reworking the OS and IO exception hierarchy
    • \n
    • PEP 3155, qualified name for classes and functions
    • \n
    • PEP 409, suppressing exception context
    • \n
    • PEP 414, explicit Unicode literals to help with porting
    • \n
    • PEP 418, extended platform-independent clocks in the "time" module
    • \n
    • PEP 412, a new key-sharing dictionary implementation that significantly\nsaves memory for object-oriented code
    • \n
    • PEP 362, the function-signature object
    • \n
    • The new "faulthandler" module that helps diagnosing crashes
    • \n
    • The new "unittest.mock" module
    • \n
    • The new "ipaddress" module
    • \n
    • The "sys.implementation" attribute
    • \n
    • A policy framework for the email package, with a provisional (see\nPEP 411) policy that adds much improved unicode support for email\nheader parsing
    • \n
    • A "collections.ChainMap" class for linking mappings to a single unit
    • \n
    • Wrappers for many more POSIX functions in the "os" and "signal" modules, as\nwell as other useful functions such as "sendfile()"
    • \n
    • Hash randomization, introduced in earlier bugfix releases, is now\nswitched on by default
    • \n
    \n
    \n
    \n

    More resources

    \n\n
    \n

    Download

    \n\n

    This is a production release. Please report any bugs you encounter.

    \n

    Please proceed to the download page for the download.

    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 156, + "fields": { + "created": "2014-03-20T22:37:53.232Z", + "updated": "2014-06-10T03:41:26.328Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.2.1", + "slug": "python-221", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2002-04-10T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.2.1/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nrelease.--> See Python 2.2.3 for a patch\nrelease which supersedes 2.2.1. \n\n
    \n Important: This release is vulnerable to the problem described in\n security advisory PSF-2006-001\n \"Buffer overrun in repr() of unicode strings in wide unicode\n builds (UCS-4)\". This fix is included in\n Python 2.4.4\n and Python 2.5. If you need to remain with Python 2.2,\n there's a patch available from the security advisory page.\n
    \n\n

    We are pleased to announce the release of Python 2.2.1, on\nApril 10, 2002. This is a bug-fix release for Python 2.2 and\nsupersedes the 2.2 release.\n\n

    Download the release

    \n\n

    Windows users should download the Windows installer, Python-2.2.1.exe, run\nit and follow the friendly instructions on the screen to complete the\ninstallation.\nWindows users may also be interested in Mark\nHammond's win32all, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.\n\n

    Update (2002/04/23): Windows users should download a new UNWISE.EXE from Wise that\nfixes a bug which could cause the uninstaller to disappear in some\ncircumstances. Just drop it over the old uninstaller, which will be\nat C:\\Python22\\UNWISE.EXE unless you chose a different\ndirectory at install time.\n\n

    Macintosh users can find binaries and source on the Mac page or Jack Jansen's MacPython page.\n(MacOS X users who have a C compiler can also build from the source\ntarball below.)\n\n

    Red Hat Linux 7.3, 7.2 and 6.2 users can download\nRPMs, or build from source. An SRPM is also\navailable for other RPM-based systems, or the source tar-file can be used\n(see the \"rpm\" man page for the \"-ta\" options).\n\n

    All others should download Python-2.2.1.tgz, the\nsource tarball, and do the usual \"gunzip; tar; configure; make\" dance.\n\n

    What's New?

    \n\nThis being a bug-fix release, there have been no exciting new features\nimplemented since 2.2 -- just heaps of fixes.\n\nFor a partial list of these fixes, please see the release notes, or the Misc/NEWS file in\nthe source distribution.\n\nFor the full list of changes, you can poke around CVS.\n\n

    Other sources of information on 2.2

    \n\n\n\n

    Documentation

    \n\n

    The documentation has been updated too:\n\n

      \n\n
    • Browse\nHTML on-line\n\n
    • Download using HTTP.\n\n
    \n\n

    Files, MD5 checksums and sizes

    \n\n
    \n    1d1d8c1922177fd9e603552f0507d33b Python-2.2.1.exe (7142643 bytes)\n    e7012d611602b62e36073c2fd02396a3 Python-2.2.1.tgz (6535104 bytes)\n    9ae1d572cbd2bfd4e0c4b92ac11387c6 UNWISE.EXE (162304 bytes)\n
    \n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    release.--> See <a href="../2.2.3/">Python 2.2.3</a> for a patch\nrelease which supersedes 2.2.1.</i> </blockquote>

    \n
    \n
    <blockquote>
    \n
    <b>Important:</b> This release is vulnerable to the problem described in\n<a href="/news/security/PSF-2006-001/">security advisory PSF-2006-001</a>\n"Buffer overrun in repr() of unicode strings in wide unicode\nbuilds (UCS-4)". This fix is included in\n<a href="../2.4.4/">Python 2.4.4</a>\nand <a href="../2.5/">Python 2.5</a>. If you need to remain with Python 2.2,\nthere's a patch available from the security advisory page.
    \n
    \n

    </blockquote>

    \n

    <p>We are pleased to announce the release of <b>Python 2.2.1</b>, on\nApril 10, 2002. This is a bug-fix release for Python 2.2 and\nsupersedes the <a href="../2.2/">2.2</a> release.

    \n

    <h3>Download the release</h3>

    \n

    <p><b>Windows</b> users should download the Windows installer, <a\nhref="/ftp/python/2.2.1/Python-2.2.1.exe">Python-2.2.1.exe</a>, run\nit and follow the friendly instructions on the screen to complete the\ninstallation.\nWindows users may also be interested in Mark\nHammond's <a\nhref="http://starship.python.net/crew/mhammond/"\n>win32all</a>, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.

    \n

    <p><b>Update (2002/04/23):</b> Windows users should download a new <a\nhref="/ftp/python/2.2.1/UNWISE.EXE">UNWISE.EXE</a> from Wise that\nfixes a bug which could cause the uninstaller to disappear in some\ncircumstances. Just drop it over the old uninstaller, which will be\nat <tt>C:Python22UNWISE.EXE</tt> unless you chose a different\ndirectory at install time.

    \n

    <p><b>Macintosh</b> users can find binaries and source on the <a\nhref="mac">Mac page</a> or Jack Jansen's <a\nhref="http://www.cwi.nl/~jack/macpython.html">MacPython page</a>.\n(MacOS X users who have a C compiler can also build from the source\ntarball below.)

    \n

    <p><b>Red Hat Linux 7.3, 7.2 and 6.2</b> users can download\n<a href="rpms">RPMs</a>, or build from source. An SRPM is also\navailable for other RPM-based systems, or the source tar-file can be used\n(see the "rpm" man page for the "-ta" options).

    \n

    <p><b>All others</b> should download <a\nhref="/ftp/python/2.2.1/Python-2.2.1.tgz">Python-2.2.1.tgz</a>, the\nsource tarball, and do the usual "gunzip; tar; configure; make" dance.

    \n

    <h3>What's New?</h3>

    \n

    This being a bug-fix release, there have been no exciting new features\nimplemented since 2.2 -- just heaps of fixes.

    \n

    For a partial list of these fixes, please see the <a\nhref="NEWS">release notes</a>, or the <tt>Misc/NEWS</tt> file in\nthe source distribution.

    \n

    For the full list of changes, you can poke around CVS.

    \n

    <h4>Other sources of information on 2.2</h4>

    \n

    <ul>

    \n

    <p><li><a href="descrintro">Unifying types and classes in Python\n2.2</a> by Guido van Rossum -- a tutorial on the material covered by\nPEPs 252 and 253.

    \n

    <p><li><a href="/doc/2.2.1/whatsnew/">What's New in Python\n2.2</a> by Andrew Kuchling describes the most visible changes since <a\nhref="../2.1/">Python 2.1</a>.

    \n

    <p><li>Guido gave a talk on what's new in 2.2 at the ZPUG-DC meeting\non September 26, 2001; here are his <a\nhref="http://zpug.org/dc/">powerpoint slides</a>.

    \n

    <p><li><a href=\n"http://www-106.ibm.com/developerworks/library/l-pycon.html?n-l-9271"\n>Charming Python: Iterators and simple generators</a> by David Mertz\non IBM developerWorks.

    \n

    </ul>

    \n

    <h3>Documentation</h3>

    \n

    <p>The documentation has been updated too:

    \n

    <ul>

    \n

    <li><a href="/doc/2.2.1/">Browse</a>\nHTML on-line

    \n

    <li>Download using <a href="/ftp/python/doc/2.2.1/" >HTTP</a>.

    \n

    </ul>

    \n

    <h3>Files, <a href="md5sum.py">MD5</a> checksums and sizes</h3>

    \n
    \n
    <pre>
    \n
    1d1d8c1922177fd9e603552f0507d33b <a href="/ftp/python/2.2.1/Python-2.2.1.exe">Python-2.2.1.exe</a> (7142643 bytes)\ne7012d611602b62e36073c2fd02396a3 <a href="/ftp/python/2.2.1/Python-2.2.1.tgz">Python-2.2.1.tgz</a> (6535104 bytes)\n9ae1d572cbd2bfd4e0c4b92ac11387c6 <a href="/ftp/python/2.2.1/UNWISE.EXE">UNWISE.EXE</a> (162304 bytes)
    \n
    \n

    </pre>

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 157, + "fields": { + "created": "2014-03-20T22:37:54.251Z", + "updated": "2014-06-10T03:41:47.725Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.2.2", + "slug": "python-322", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2011-09-03T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v3.2.2/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n**Note:** A newer security-fix release, 3.2.6, is currently `available\n`__. Its use is recommended.\n\nPython 3.2.2 was released on September 4th, 2011. It mainly fixes `a\nregression `_ in the ``urllib.request`` module\nthat prevented opening many HTTP resources correctly with Python 3.2.1.\n\nPython 3.2 is a continuation of the efforts to improve and stabilize the Python\n3.x line. Since the final release of Python 2.7, the 2.x line will only receive\nbugfixes, and new features are developed for 3.x only.\n\nSince :pep:`3003`, the Moratorium on Language Changes, is in effect, there are\nno changes in Python's syntax and only few changes to built-in types in Python\n3.2. Development efforts concentrated on the standard library and support for\nporting code to Python 3. Highlights are:\n\n* numerous improvements to the unittest module\n* :pep:`3147`, support for .pyc repository directories\n* :pep:`3149`, support for version tagged dynamic libraries\n* :pep:`3148`, a new futures library for concurrent programming\n* :pep:`384`, a stable ABI for extension modules\n* :pep:`391`, dictionary-based logging configuration\n* an overhauled GIL implementation that reduces contention\n* an extended email package that handles bytes messages\n* a much improved ssl module with support for SSL contexts and certificate\n hostname matching\n* a sysconfig module to access configuration information\n* additions to the shutil module, among them archive file support\n* many enhancements to configparser, among them mapping protocol support\n* improvements to pdb, the Python debugger\n* countless fixes regarding bytes/string issues; among them full support\n for a bytes environment (filenames, environment variables)\n* many consistency and behavior fixes for numeric operations\n\nSee these resources for further information:\n\n* `What's new in 3.2? `_\n* `Change log for this release\n `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\nDownload\n--------\n\n.. This is a preview release, and its use is not recommended in production\n.. settings.\n\nThis is a production release. Please `report any bugs\n`_ you encounter.\n\nWe currently support these formats for download:\n\n* `Bzipped source tar ball (3.2.2) `__ `(sig)\n `__, ~ 11 MB\n\n* `XZ compressed source tar ball (3.2.2) `__\n `(sig) `__, ~ 8.5 MB\n\n* `Gzipped source tar ball (3.2.2) `__ `(sig)\n `__, ~ 13 MB\n\n..\n\n.. Windows and Mac binaries will be provided shortly.\n\n* `Windows x86 MSI Installer (3.2.2) `__ `(sig)\n `__ and `Visual Studio debug information\n files `__ `(sig)\n `__\n \n* `Windows X86-64 MSI Installer (3.2.2) `__\n [1]_ `(sig) `__ and `Visual Studio\n debug information files `__ `(sig)\n `__\n\n.. * `Windows help file `_ `(sig)\n.. `__\n\n.. \n\n* `Mac OS X 64-bit/32-bit Installer (3.2.2) for Mac OS X 10.6 and 10.7\n `__ [2]_ `(sig)\n `__. \n [You may need an updated Tcl/Tk install to run IDLE or use Tkinter,\n see note 2 for instructions.]\n \n* `Mac OS X 32-bit i386/PPC Installer (3.2.2) for OS X 10.3 through 10.6\n `__ [2]_ `(sig)\n `__\n\nThe source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is ``26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288``. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the `download\npage `_.\n\nMD5 checksums and sizes of the released files::\n\n 3c63a6d97333f4da35976b6a0755eb67 12732276 Python-3.2.2.tgz\n 9d763097a13a59ff53428c9e4d098a05 10743647 Python-3.2.2.tar.bz2\n 3720ce9460597e49264bbb63b48b946d 8923224 Python-3.2.2.tar.xz\n f6001a9b2be57ecfbefa865e50698cdf 19519332 python-3.2.2-macosx10.3.dmg\n 8fe82d14dbb2e96a84fd6fa1985b6f73 16226426 python-3.2.2-macosx10.6.dmg\n cccb03e14146f7ef82907cf12bf5883c 18241506 python-3.2.2-pdb.zip\n 72d11475c986182bcb0e5c91acec45bc 19940424 python-3.2.2.amd64-pdb.zip\n ddeb3e3fb93ab5a900adb6f04edab21e 18542592 python-3.2.2.amd64.msi\n 8afb1b01e8fab738e7b234eb4fe3955c 18034688 python-3.2.2.msi\n\n\n.. [1] The binaries for AMD64 will also work on processors that implement the\n Intel 64 architecture (formerly EM64T), i.e. the architecture that\n Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They\n will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_. Also, on Mac OS X 10.6, if you need to\n build C extension modules with the 32-bit-only Python installed, you will\n need Apple Xcode 3, not 4. The 64-bit/32-bit Python can use either\n Xcode 3 or Xcode 4.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: A newer security-fix release, 3.2.6, is currently available. Its use is recommended.

    \n

    Python 3.2.2 was released on September 4th, 2011. It mainly fixes a\nregression in the urllib.request module\nthat prevented opening many HTTP resources correctly with Python 3.2.1.

    \n

    Python 3.2 is a continuation of the efforts to improve and stabilize the Python\n3.x line. Since the final release of Python 2.7, the 2.x line will only receive\nbugfixes, and new features are developed for 3.x only.

    \n

    Since PEP 3003, the Moratorium on Language Changes, is in effect, there are\nno changes in Python's syntax and only few changes to built-in types in Python\n3.2. Development efforts concentrated on the standard library and support for\nporting code to Python 3. Highlights are:

    \n
      \n
    • numerous improvements to the unittest module
    • \n
    • PEP 3147, support for .pyc repository directories
    • \n
    • PEP 3149, support for version tagged dynamic libraries
    • \n
    • PEP 3148, a new futures library for concurrent programming
    • \n
    • PEP 384, a stable ABI for extension modules
    • \n
    • PEP 391, dictionary-based logging configuration
    • \n
    • an overhauled GIL implementation that reduces contention
    • \n
    • an extended email package that handles bytes messages
    • \n
    • a much improved ssl module with support for SSL contexts and certificate\nhostname matching
    • \n
    • a sysconfig module to access configuration information
    • \n
    • additions to the shutil module, among them archive file support
    • \n
    • many enhancements to configparser, among them mapping protocol support
    • \n
    • improvements to pdb, the Python debugger
    • \n
    • countless fixes regarding bytes/string issues; among them full support\nfor a bytes environment (filenames, environment variables)
    • \n
    • many consistency and behavior fixes for numeric operations
    • \n
    \n

    See these resources for further information:

    \n\n
    \n

    Download

    \n\n\n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n\n\n\n\n\n\n\n

    The source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is 26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the download\npage.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \n3c63a6d97333f4da35976b6a0755eb67  12732276  Python-3.2.2.tgz\n9d763097a13a59ff53428c9e4d098a05  10743647  Python-3.2.2.tar.bz2\n3720ce9460597e49264bbb63b48b946d   8923224  Python-3.2.2.tar.xz\nf6001a9b2be57ecfbefa865e50698cdf  19519332  python-3.2.2-macosx10.3.dmg\n8fe82d14dbb2e96a84fd6fa1985b6f73  16226426  python-3.2.2-macosx10.6.dmg\ncccb03e14146f7ef82907cf12bf5883c  18241506  python-3.2.2-pdb.zip\n72d11475c986182bcb0e5c91acec45bc  19940424  python-3.2.2.amd64-pdb.zip\nddeb3e3fb93ab5a900adb6f04edab21e  18542592  python-3.2.2.amd64.msi\n8afb1b01e8fab738e7b234eb4fe3955c  18034688  python-3.2.2.msi\n
    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the\nIntel 64 architecture (formerly EM64T), i.e. the architecture that\nMicrosoft calls x64, and AMD called x86-64 before calling it AMD64. They\nwill not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here. Also, on Mac OS X 10.6, if you need to\nbuild C extension modules with the 32-bit-only Python installed, you will\nneed Apple Xcode 3, not 4. The 64-bit/32-bit Python can use either\nXcode 3 or Xcode 4.
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 158, + "fields": { + "created": "2014-03-20T22:37:59.425Z", + "updated": "2014-06-10T03:41:29.996Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.3.6", + "slug": "python-236", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2006-11-01T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.3.6/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n We are pleased to announce the release of \n **Python 2.3.6 (FINAL)**, a \n bugfix release of Python 2.3, on November 1, 2006. \n\n **Important:**\n 2.3.6 includes a \n `security fix (PSF-2006-001) `_ \n for the repr() of unicode strings in wide unicode builds (UCS-4)\n\nPython 2.3 is now well and truly in bugfix-only mode; no new features \nare being added, and only security critical bugs have been fixed.\nThere are 3 bugs fixed in this release - a problem with the email package's\nhandling of RFC2231 headers, the unicode repr() fix for PSF-2006-01, and \na fix for the deprecated PCRE module.\n\nSee the `detailed release notes `_ for more details.\n\n`Python 2.5 <../2.5/>`_ and `Python 2.4 <../2.4/>`_ are newer releases of \nPython. This release of the older 2.3 code is to provide bug fixes for people \nwho are still using Python 2.3. Most vendors shipping 2.3 should have already \nreleased patched versions of 2.3.5 - this release is for other people who want \nto build their own version, but don't want to have to fool around with patch or \nsvn. You will only need to worry about rebuilding if you are using a UCS-4 build \nof Python - see the `security announcement `_ for \ndetails on how to determine if your build is vulnerable.\n\nThis is a **source only** release. The Windows and Mac binaries of 2.3.5 \nwere built with UCS-2 unicode, and are therefore not vulnerable to the \nproblem outlined in PSF-2006-001. The PCRE fix is for a long-deprecated\nmodule (you should use the 're' module instead) and the email fix can be\nobtained by downloading the standalone version of the email package.\n\nFor more information on the new features of `Python 2.3 <../2.3/>`_ see the \n`2.3 highlights <../2.3/highlights>`_ or consult Andrew Kuchling's \n`What's New In Python `_\nfor a more detailed view.\n\nPlease see the separate `bugs page `_ for known issues and the bug \nreporting procedure.\n\nSee also the `license `_\n\nDownload the release\n--------------------\n\nAs noted, python.org is not providing binary installers for 2.3.6. Windows\nand Mac OS X users who cannot compile their own versions should continue to\nuse the `2.3.5 <../2.3.5/>`_ installers. These installers are not vulnerable\nto PSF-2006-001. \n\ngzip-compressed source code: `Python-2.3.6.tgz `_\n\nbzip2-compressed source code: `Python-2.3.6.tar.bz2 `_,\nthe source archive. \n\nThe bzip2-compressed version is considerably smaller, so get that one if\nyour system has the `appropriate tools `_ to deal \nwith it. \n\nUnpack the archive with ``tar -zxvf Python-2.3.6.tgz`` (or \n``bzcat Python-2.3.6.tar.bz2 | tar -xf -``). \nChange to the Python-2.3.6 directory and run the \"./configure\", \"make\", \n\"make install\" commands to compile and install Python. The source archive \nis also suitable for Windows users who feel the need to build their \nown version.\n\n\nWhat's New?\n-----------\n\n* See the `highlights <../2.3/highlights>`_ of the Python 2.3 release.\n\n* Andrew Kuchling's \n `What's New in Python 2.3 `_\n describes the most visible changes since `Python 2.2 <../2.2/>`_ in \n more detail.\n\n* A detailed list of the changes in 2.3.6 can be found in \n the `release notes `_, or the ``Misc/NEWS`` file in the \n source distribution. This is a very short list - only security fixes\n have been included.\n\n* For the full list of changes, you can poke around in \n `Subversion `_.\n\nDocumentation\n-------------\n\nThe documentation for 2.3.5 is still current for this release.\n\n* `Browse HTML on-line `_\n\n* Download using `HTTP `_.\n\n\nFiles, `MD5 `_ checksums, signatures and sizes\n---------------------------------------------------------\n\n ``357c79f9c914b671c9401f70853ebf3b`` `Python-2.3.6.tgz `_\n (8610359 bytes, `signature `__)\n\n ``1bd475e69e20481c6301853eef7018f1`` `Python-2.3.6.tar.bz2 `_\n (7350182 bytes, `signature `__)\n\n\nThe signatures above were generated with\n`GnuPG `_ using release manager\nAnthony Baxter's\n`public key `_ \nwhich has a key id of 6A45C816.\n\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.3 is now well and truly in bugfix-only mode; no new features\nare being added, and only security critical bugs have been fixed.\nThere are 3 bugs fixed in this release - a problem with the email package's\nhandling of RFC2231 headers, the unicode repr() fix for PSF-2006-01, and\na fix for the deprecated PCRE module.

    \n

    See the detailed release notes for more details.

    \n

    Python 2.5 and Python 2.4 are newer releases of\nPython. This release of the older 2.3 code is to provide bug fixes for people\nwho are still using Python 2.3. Most vendors shipping 2.3 should have already\nreleased patched versions of 2.3.5 - this release is for other people who want\nto build their own version, but don't want to have to fool around with patch or\nsvn. You will only need to worry about rebuilding if you are using a UCS-4 build\nof Python - see the security announcement for\ndetails on how to determine if your build is vulnerable.

    \n

    This is a source only release. The Windows and Mac binaries of 2.3.5\nwere built with UCS-2 unicode, and are therefore not vulnerable to the\nproblem outlined in PSF-2006-001. The PCRE fix is for a long-deprecated\nmodule (you should use the 're' module instead) and the email fix can be\nobtained by downloading the standalone version of the email package.

    \n

    For more information on the new features of Python 2.3 see the\n2.3 highlights or consult Andrew Kuchling's\nWhat's New In Python\nfor a more detailed view.

    \n

    Please see the separate bugs page for known issues and the bug\nreporting procedure.

    \n

    See also the license

    \n
    \n

    Download the release

    \n

    As noted, python.org is not providing binary installers for 2.3.6. Windows\nand Mac OS X users who cannot compile their own versions should continue to\nuse the 2.3.5 installers. These installers are not vulnerable\nto PSF-2006-001.

    \n

    gzip-compressed source code: Python-2.3.6.tgz

    \n

    bzip2-compressed source code: Python-2.3.6.tar.bz2,\nthe source archive.

    \n

    The bzip2-compressed version is considerably smaller, so get that one if\nyour system has the appropriate tools to deal\nwith it.

    \n

    Unpack the archive with tar -zxvf Python-2.3.6.tgz (or\nbzcat Python-2.3.6.tar.bz2 | tar -xf -).\nChange to the Python-2.3.6 directory and run the "./configure", "make",\n"make install" commands to compile and install Python. The source archive\nis also suitable for Windows users who feel the need to build their\nown version.

    \n
    \n
    \n

    What's New?

    \n
      \n
    • See the highlights of the Python 2.3 release.
    • \n
    • Andrew Kuchling's\nWhat's New in Python 2.3\ndescribes the most visible changes since Python 2.2 in\nmore detail.
    • \n
    • A detailed list of the changes in 2.3.6 can be found in\nthe release notes, or the Misc/NEWS file in the\nsource distribution. This is a very short list - only security fixes\nhave been included.
    • \n
    • For the full list of changes, you can poke around in\nSubversion.
    • \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation for 2.3.5 is still current for this release.

    \n\n
    \n
    \n

    Files, MD5 checksums, signatures and sizes

    \n
    \n

    357c79f9c914b671c9401f70853ebf3b Python-2.3.6.tgz\n(8610359 bytes, signature)

    \n

    1bd475e69e20481c6301853eef7018f1 Python-2.3.6.tar.bz2\n(7350182 bytes, signature)

    \n
    \n

    The signatures above were generated with\nGnuPG using release manager\nAnthony Baxter's\npublic key\nwhich has a key id of 6A45C816.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 159, + "fields": { + "created": "2014-03-20T22:38:00.341Z", + "updated": "2014-06-10T03:41:29.270Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.3.5", + "slug": "python-235", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2005-02-08T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.3.5/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nPython 2.3.5 (final) on \nFeb 8th, 2005.\nThis is a bug-fix release for Python 2.3. There have been around 50\nbugs fixed since 2.3.4 - in the Python interpreter, the standard library\nand also in the build process - see the release \nnotes for details.\n\n
    \n Important: This release is vulnerable to the problem described in\n security advisory PSF-2006-001\n \"Buffer overrun in repr() of unicode strings in wide unicode\n builds (UCS-4)\". This fix is included in\n Python 2.4.4\n and Python 2.5. If you need to remain with Python 2.3,\n there's a patch available from the security advisory page.\n
    \n\n\n

    Python 2.3.5 supersedes the previous Python 2.3.4 \nrelease.\n\n

    No new features have been added in Python 2.3.5 -- the 2.3 series is\nin bugfix-only mode. \n\n

    2.3.5 contains an important security fix for \nSimpleXMLRPCServer - see the \nadvisory (PSF-2005-001) for more.\n\n

    Python 2.3.5 is the last planned release in the Python 2.3 series, and \nis being released for those people who are stuck on Python 2.3 for some \nreason. Python 2.4\nis a newer release, and should be preferred where possible. \nFrom here, bugfix releases will be made from the Python 2.4 branch - \n2.4.1 will be the next Python release.\n\n

    Please see the separate bugs page for known\nissues and the bug reporting procedure.\n\n

    Download the release

    \n\n

    Windows users should download the Windows installer, Python-2.3.5.exe, run\nit and follow the friendly instructions on the screen to complete the\ninstallation. Windows users may also be interested in Mark Hammond's\nwin32all, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.

    \n\n

    RPMs suitable for Red Hat/Fedora and source RPMs for other RPM-using\noperating systems are available from the RPMs page.\n\n

    All others should download either \nPython-2.3.5.tgz or\nPython-2.3.5.tar.bz2,\nthe source archive. The tar.bz2 is considerably smaller, so get that one if\nyour system has the appropriate \ntools to deal with it. Unpack it with \n\"tar -zxvf Python-2.3.5.tgz\" (or \n\"bzcat Python-2.3.5.tar.bz2 | tar -xf -\"). \nChange to the Python-2.3.5 directory\nand run the \"./configure\", \"make\", \"make install\" commands to compile \nand install Python. The source archive is also suitable for Windows users\nwho feel the need to build their own version.\n\n

    Warning for Solaris and HP-UX users: Some versions of the\nSolaris and HP/UX versions of tar(1) report checksum\nerrors and are unable to unpack the Python source tree.\nThis is caused by some pathnames being too\nlong for the vendor's version. Use\nGNU tar instead.\n\n

    If you're having trouble building on your system, check the top-level\nREADME file for platform-specific tips, or check the \nBuild Bugs section on the Bugs webpage.\n\n\n\n

    What's New?

    \n\n
      \n\n

    • A detailed list of the changes since 2.3.4 is in the release notes, also available as the file\nMisc/NEWS in the source distribution.\n\n

    • See the highlights of the\nPython 2.3 release. As noted, the 2.3.5 release is a bugfix release\nof 2.3.4, itself a bugfix release of 2.3. \n\n

    • The Windows installer now includes the documentation in searchable \nhtmlhelp format, rather than individual HTML files. You can still download the\nindividual HTML files.\n\n

    • Andrew Kuchling's What's New\nin Python 2.3 describes the most visible changes since Python 2.2 in more detail.\n\n

    • For the full list of changes, you can poke around in CVS.\n\n\n\n\n
    \n\n

    Documentation

    \n\n

    The documentation has been updated too:\n\n

    \n\n

    The interim documentation for\nnew-style classes, last seen for Python 2.2.3, is still relevant\nfor Python 2.3.5. Raymond Hettinger has also written a tutorial on\ndescriptors, introduced in Python 2.2. \nIn addition, The Python 2.3 Method\nResolution Order is a nice paper by Michele Simionato that\nexplains the C3 MRO algorithm (new in Python 2.3) clearly. (Also\navailable as reStructured Text. Copied with\npermission.)\n\n

    Files, MD5 checksums, signatures, and sizes

    \n\n
    \n7a1ecc1196c5c0e9d4eef90ba684c4e9 Python-2.3.5.tgz (8535749 bytes, signature)\nc12b57c6e0cf8bc676fd9444d71c9e18 Python-2.3.5.tar.bz2 (7230000 bytes, signature)\nba6f9eb9da40ad23bc631a1f31149a01 Python-2.3.5.exe (9881382 bytes, signature)\n
    \n\n

    The signatures above were generated with\nGnuPG using the release manager's\n(Anthony Baxter)\npublic key \nwhich has a key id of 6A45C816.\n\n

     ", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    <b>Python 2.3.5 (final)</b> on\nFeb 8th, 2005.\nThis is a bug-fix release for Python 2.3. There have been around 50\nbugs fixed since 2.3.4 - in the Python interpreter, the standard library\nand also in the build process - see the <a href="notes">release\nnotes</a> for details.

    \n
    \n
    <blockquote>
    \n
    <b>Important:</b> This release is vulnerable to the problem described in\n<a href="/news/security/PSF-2006-001/">security advisory PSF-2006-001</a>\n"Buffer overrun in repr() of unicode strings in wide unicode\nbuilds (UCS-4)". This fix is included in\n<a href="../2.4.4/">Python 2.4.4</a>\nand <a href="../2.5/">Python 2.5</a>. If you need to remain with Python 2.3,\nthere's a patch available from the security advisory page.
    \n
    \n

    </blockquote>

    \n

    <p>Python 2.3.5 supersedes the previous <a href="/download/releases/2.3.4/">Python 2.3.4</a>\nrelease.

    \n

    <p>No new features have been added in Python 2.3.5 -- the 2.3 series is\nin bugfix-only mode.

    \n

    <p><strong>2.3.5 contains an important security fix for\nSimpleXMLRPCServer - see <a href="/news/security/PSF-2005-001/">the\nadvisory (PSF-2005-001)</a> for more.</strong>

    \n

    <p>Python 2.3.5 is the last planned release in the Python 2.3 series, and\nis being released for those people who are stuck on Python 2.3 for some\nreason. <a href="/download/releases/2.4/">Python 2.4</a>\nis a newer release, and should be preferred where possible.\nFrom here, bugfix releases will be made from the Python 2.4 branch -\n2.4.1 will be the next Python release.

    \n

    <p>Please see the separate <a href="bugs">bugs page</a> for known\nissues and the bug reporting procedure.

    \n

    <h3>Download the release</h3>

    \n

    <p><b>Windows</b> users should download the Windows installer, <a\nhref="/ftp/python/2.3.5/Python-2.3.5.exe">Python-2.3.5.exe</a>, run\nit and follow the friendly instructions on the screen to complete the\ninstallation. Windows users may also be interested in Mark Hammond's\n<a href="http://starship.python.net/crew/mhammond/"\n>win32all</a>, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.</p>

    \n

    <p>RPMs suitable for Red Hat/Fedora and source RPMs for other RPM-using\noperating systems are available from <a href="rpms">the RPMs page</a>.

    \n

    <p><b>All others</b> should download either\n<a href="/ftp/python/2.3.5/Python-2.3.5.tgz">Python-2.3.5.tgz</a> or\n<a href="/ftp/python/2.3.5/Python-2.3.5.tar.bz2">Python-2.3.5.tar.bz2</a>,\nthe source archive. The tar.bz2 is considerably smaller, so get that one if\nyour system has the <a href="http://sources.redhat.com/bzip2/">appropriate\ntools</a> to deal with it. Unpack it with\n"tar&nbsp;-zxvf&nbsp;Python-2.3.5.tgz" (or\n"bzcat&nbsp;Python-2.3.5.tar.bz2&nbsp;|&nbsp;tar&nbsp;-xf&nbsp;-").\nChange to the Python-2.3.5 directory\nand run the "./configure", "make", "make&nbsp;install" commands to compile\nand install Python. The source archive is also suitable for Windows users\nwho feel the need to build their own version.

    \n

    <p><b>Warning for Solaris and HP-UX users</b>: Some versions of the\nSolaris and HP/UX versions of <i>tar(1)</i> report checksum\nerrors and are unable to unpack the Python source tree.\nThis is caused by some pathnames being too\nlong for the vendor's version. Use\n<a href="http://www.gnu.org/software/tar/tar.html">GNU tar</a> instead.

    \n

    <p>If you're having trouble building on your system, check the top-level\nREADME file for platform-specific tips, or check the\n<a href="bugs#build">Build Bugs</a> section on the Bugs webpage.

    \n

    <!--mac\n<p><b>Macintosh</b> users can find binaries and source on\nJack Jansen's\n<a href="http://homepages.cwi.nl/~jack/macpython/">MacPython page</a>.\nMac OS X users who have a C compiler (which comes with the\n<a href="http://developer.apple.com/tools/macosxtools.html">OS X\nDeveloper Tools</a>) can also build from the source tarball below.\n-->

    \n

    <h3>What's New?</h3>

    \n

    <ul>

    \n

    <p><li>A detailed list of the changes since 2.3.4 is in the <a\nhref="notes">release notes</a>, also available as the file\n<tt>Misc/NEWS</tt> in the source distribution.

    \n

    <p><li>See the <a href="/download/releases/2.3/highlights">highlights</a> of the\nPython 2.3 release. As noted, the 2.3.5 release is a bugfix release\nof 2.3.4, itself a bugfix release of 2.3.

    \n

    <p><li>The Windows installer now includes the documentation in searchable\nhtmlhelp format, rather than individual HTML files. You can still download the\n<a href="/ftp/python/doc/2.3.5/">individual HTML files</a>.

    \n

    <p><li>Andrew Kuchling's <a href="/doc/2.3/whatsnew/">What's New\nin Python 2.3</a> describes the most visible changes since <a\nhref="/download/releases/2.2.3/">Python 2.2</a> in more detail.

    \n

    <p><li>For the full list of changes, you can poke around in <a\nhref="http://sourceforge.net/cvs/?group_id=5470">CVS</a>.

    \n

    <!--\n<p><li>The PSF's <a href="/psf/press-release/pr20031219">press\nrelease</a> announcing 2.3.4.\n-->

    \n

    </ul>

    \n

    <h3>Documentation</h3>

    \n

    <p>The documentation has been updated too:

    \n

    <ul>\n<li><a href="/doc/2.3.5/">Browse HTML documentation on-line</a></li>

    \n

    <li>Download using <a href="/ftp/python/doc/2.3.5/">HTTP</a>.</li>

    \n

    </ul>

    \n

    <p>The <a href="/download/releases/2.2.3/descrintro">interim documentation for\nnew-style classes</a>, last seen for Python 2.2.3, is still relevant\nfor Python 2.3.5. Raymond Hettinger has also written a <a\nhref="http://users.rcn.com/python/download/Descriptor.htm">tutorial on\ndescriptors</a>, introduced in Python 2.2.\nIn addition, <a href="/download/releases/2.3/mro">The Python 2.3 Method\nResolution Order</a> is a nice paper by Michele Simionato that\nexplains the C3 MRO algorithm (new in Python 2.3) clearly. (Also\navailable as <a href="/download/releases/2.3/mro/mro.txt">reStructured Text</a>. Copied with\npermission.)

    \n

    <h3>Files, <a href="md5sum.py">MD5</a> checksums, signatures, and sizes</h3>

    \n

    <pre>\n7a1ecc1196c5c0e9d4eef90ba684c4e9 <a href="/ftp/python/2.3.5/Python-2.3.5.tgz">Python-2.3.5.tgz</A> (8535749 bytes, <a href="Python-2.3.5.tgz.asc">signature</a>)\nc12b57c6e0cf8bc676fd9444d71c9e18 <a href="/ftp/python/2.3.5/Python-2.3.5.tar.bz2">Python-2.3.5.tar.bz2</A> (7230000 bytes, <a href="Python-2.3.5.tar.bz2.asc">signature</a>)\nba6f9eb9da40ad23bc631a1f31149a01 <a href="/ftp/python/2.3.5/Python-2.3.5.exe">Python-2.3.5.exe</a> (9881382 bytes, <a href="Python-2.3.5.exe.asc">signature</a>)\n</pre>

    \n

    <p>The signatures above were generated with\n<a href="http://www.gnupg.org">GnuPG</a> using the release manager's\n(Anthony Baxter)\n<a href="/download#pubkeys">public key</a>\nwhich has a key id of 6A45C816.

    \n

    <p>&nbsp;

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 161, + "fields": { + "created": "2014-03-20T22:38:03.698Z", + "updated": "2014-06-10T03:41:48.079Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.2.3", + "slug": "python-323", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2012-04-10T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v3.2.3/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n**Note:** A newer security-fix release, 3.2.6, is currently `available\n`__. Its use is recommended.\n\nPython 3.2.3 was released on April 10, 2012. It includes fixes for several\nreported security issues: `issue 13703`_ (CVE-2012-1150, hash collision denial\nof service), `issue 14234`_ (CVE-2012-0876, Expat hash collision denial of\nservice), `issue 14001`_ (CVE-2012-0845, SimpleXMLRPCServer denial of service),\nand `issue 13885`_ (CVE-2011-3389, disabling of the CBC IV attack countermeasure\nin the _ssl module).\n\n.. _`issue 13703`: http://bugs.python.org/issue13703\n.. _`issue 14001`: http://bugs.python.org/issue14001\n.. _`issue 13885`: http://bugs.python.org/issue13885\n.. _`issue 14234`: http://bugs.python.org/issue14234\n\nPython 3.2 is a continuation of the efforts to improve and stabilize the Python\n3.x line. Since the final release of Python 2.7, the 2.x line will only receive\nbugfixes, and new features are developed for 3.x only.\n\nSince :pep:`3003`, the Moratorium on Language Changes, is in effect, there are\nno changes in Python's syntax and only few changes to built-in types in Python\n3.2. Development efforts concentrated on the standard library and support for\nporting code to Python 3. Highlights are:\n\n* numerous improvements to the unittest module\n* :pep:`3147`, support for .pyc repository directories\n* :pep:`3149`, support for version tagged dynamic libraries\n* :pep:`3148`, a new futures library for concurrent programming\n* :pep:`384`, a stable ABI for extension modules\n* :pep:`391`, dictionary-based logging configuration\n* an overhauled GIL implementation that reduces contention\n* an extended email package that handles bytes messages\n* a much improved ssl module with support for SSL contexts and certificate\n hostname matching\n* a sysconfig module to access configuration information\n* additions to the shutil module, among them archive file support\n* many enhancements to configparser, among them mapping protocol support\n* improvements to pdb, the Python debugger\n* countless fixes regarding bytes/string issues; among them full support\n for a bytes environment (filenames, environment variables)\n* many consistency and behavior fixes for numeric operations\n\nSee these resources for further information:\n\n* `What's new in 3.2? `_\n* `Change log for this release\n `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\nDownload\n--------\n\n.. This is a preview release, and its use is not recommended in production\n.. settings.\n\nThis is a production release. Please `report any bugs\n`_ you encounter.\n\nWe currently support these formats for download:\n\n* `Bzipped source tar ball (3.2.3) `__ `(sig)\n `__, ~ 11 MB\n\n* `XZ compressed source tar ball (3.2.3) `__\n `(sig) `__, ~ 8.5 MB\n\n* `Gzipped source tar ball (3.2.3) `__ `(sig)\n `__, ~ 13 MB\n\n..\n\n.. Windows and Mac binaries will be provided shortly.\n\n* `Windows x86 MSI Installer (3.2.3) `__ `(sig)\n `__ and `Visual Studio debug information\n files `__ `(sig)\n `__\n \n* `Windows X86-64 MSI Installer (3.2.3) `__\n [1]_ `(sig) `__ and `Visual Studio\n debug information files `__ `(sig)\n `__\n\n* `Windows help file `_ `(sig)\n `__\n\n.. \n\n* `Mac OS X 64-bit/32-bit Installer (3.2.3) for Mac OS X 10.6 and 10.7\n `__ [2]_ `(sig)\n `__. \n [You may need an updated Tcl/Tk install to run IDLE or use Tkinter,\n see note 2 for instructions.]\n \n* `Mac OS X 32-bit i386/PPC Installer (3.2.3) for OS X 10.3 through 10.6\n `__ [2]_ `(sig)\n `__\n\nThe source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is ``26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288``. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the `download\npage `_.\n\nMD5 checksums and sizes of the released files::\n\n dcf3a738e7028f1deb41b180bf0e2cbc 12787688 Python-3.2.3.tgz\n cea34079aeb2e21e7b60ee82a0ac286b 10743046 Python-3.2.3.tar.bz2\n 187564726f2c1473d301c586acc24847 8970368 Python-3.2.3.tar.xz\n 389836f8b9d39e1366cb05e6ae302bd7 19550807 python-3.2.3-macosx10.3.dmg\n 778b4038cbd4471e409942d4148effea 16229112 python-3.2.3-macosx10.6.dmg\n d8ef37dc27ca7f8625327c4696aa5942 18307042 python-3.2.3-pdb.zip\n a8199051a911466ee5585ede15893acd 20063304 python-3.2.3.amd64-pdb.zip\n 01aae7d96fa1c5a585f596b20233c6eb 18554880 python-3.2.3.amd64.msi\n c176c60e6d780773e3085ee824b3078b 17829888 python-3.2.3.msi\n caaeaaa161de6819c10a5a8b0b208e40 5769675 python323.chm\n\n \n.. [1] The binaries for AMD64 will also work on processors that implement the\n Intel 64 architecture (formerly EM64T), i.e. the architecture that\n Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They\n will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_. Also, on Mac OS X 10.6, if you need to\n build C extension modules with the 32-bit-only Python installed, you will\n need Apple Xcode 3, not 4. The 64-bit/32-bit Python can use either\n Xcode 3 or Xcode 4.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: A newer security-fix release, 3.2.6, is currently available. Its use is recommended.

    \n

    Python 3.2.3 was released on April 10, 2012. It includes fixes for several\nreported security issues: issue 13703 (CVE-2012-1150, hash collision denial\nof service), issue 14234 (CVE-2012-0876, Expat hash collision denial of\nservice), issue 14001 (CVE-2012-0845, SimpleXMLRPCServer denial of service),\nand issue 13885 (CVE-2011-3389, disabling of the CBC IV attack countermeasure\nin the _ssl module).

    \n

    Python 3.2 is a continuation of the efforts to improve and stabilize the Python\n3.x line. Since the final release of Python 2.7, the 2.x line will only receive\nbugfixes, and new features are developed for 3.x only.

    \n

    Since PEP 3003, the Moratorium on Language Changes, is in effect, there are\nno changes in Python's syntax and only few changes to built-in types in Python\n3.2. Development efforts concentrated on the standard library and support for\nporting code to Python 3. Highlights are:

    \n
      \n
    • numerous improvements to the unittest module
    • \n
    • PEP 3147, support for .pyc repository directories
    • \n
    • PEP 3149, support for version tagged dynamic libraries
    • \n
    • PEP 3148, a new futures library for concurrent programming
    • \n
    • PEP 384, a stable ABI for extension modules
    • \n
    • PEP 391, dictionary-based logging configuration
    • \n
    • an overhauled GIL implementation that reduces contention
    • \n
    • an extended email package that handles bytes messages
    • \n
    • a much improved ssl module with support for SSL contexts and certificate\nhostname matching
    • \n
    • a sysconfig module to access configuration information
    • \n
    • additions to the shutil module, among them archive file support
    • \n
    • many enhancements to configparser, among them mapping protocol support
    • \n
    • improvements to pdb, the Python debugger
    • \n
    • countless fixes regarding bytes/string issues; among them full support\nfor a bytes environment (filenames, environment variables)
    • \n
    • many consistency and behavior fixes for numeric operations
    • \n
    \n

    See these resources for further information:

    \n\n
    \n

    Download

    \n\n\n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n\n\n\n\n\n

    The source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is 26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the download\npage.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \ndcf3a738e7028f1deb41b180bf0e2cbc  12787688  Python-3.2.3.tgz\ncea34079aeb2e21e7b60ee82a0ac286b  10743046  Python-3.2.3.tar.bz2\n187564726f2c1473d301c586acc24847   8970368  Python-3.2.3.tar.xz\n389836f8b9d39e1366cb05e6ae302bd7  19550807  python-3.2.3-macosx10.3.dmg\n778b4038cbd4471e409942d4148effea  16229112  python-3.2.3-macosx10.6.dmg\nd8ef37dc27ca7f8625327c4696aa5942  18307042  python-3.2.3-pdb.zip\na8199051a911466ee5585ede15893acd  20063304  python-3.2.3.amd64-pdb.zip\n01aae7d96fa1c5a585f596b20233c6eb  18554880  python-3.2.3.amd64.msi\nc176c60e6d780773e3085ee824b3078b  17829888  python-3.2.3.msi\ncaaeaaa161de6819c10a5a8b0b208e40   5769675  python323.chm\n
    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the\nIntel 64 architecture (formerly EM64T), i.e. the architecture that\nMicrosoft calls x64, and AMD called x86-64 before calling it AMD64. They\nwill not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here. Also, on Mac OS X 10.6, if you need to\nbuild C extension modules with the 32-bit-only Python installed, you will\nneed Apple Xcode 3, not 4. The 64-bit/32-bit Python can use either\nXcode 3 or Xcode 4.
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 162, + "fields": { + "created": "2014-03-20T22:38:08.900Z", + "updated": "2014-06-10T03:41:45.872Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.1.3", + "slug": "python-313", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2010-11-27T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v3.1.3/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nNote: It is recommended that you use the latest bug fix release of the 3.1\nseries, `3.1.4 `_.\n\nPython 3.1.3 was released on November 27th, 2010.\n\nThe Python 3.1 version series is a continuation of the work started by `Python\n3.0 `_, the **new backwards-incompatible series** of\nPython. For ongoing maintenance releases, please see the Python `3.2\n<../3.2/>`_ series. Improvements in this release include:\n\n- An ordered dictionary type\n- Various optimizations to the int type\n- New unittest features including test skipping and new assert methods.\n- A much faster io module\n- Tile support for Tkinter\n- A pure Python reference implementation of the import statement\n- New syntax for nested with statements\n\nSee these resources for further information:\n\n* `What's New in 3.1? `_\n* `What's new in Python 3000? `_\n* `Python 3.1.3 Change Log `_\n* `Online Documentation `_\n* Conversion tool for Python 2.x code:\n `2to3 `_\n* Report bugs at ``_.\n\nHelp fund Python and its community by `donating to the Python Software\nFoundation `_.\n\n\nDownload\n--------\n\nThis is a production release. Please report any bugs you may encounter to\nhttp://bugs.python.org.\n\nWe currently support these formats for download:\n\n* `Gzipped source tar ball (3.1.3) `__ `(sig)\n `__\n\n* `Bzipped source tar ball (3.1.3) `__\n `(sig) `__\n\n* `Windows x86 MSI Installer (3.1.3)\n `__ `(sig) `__\n\n* `Windows x86 MSI program database (3.1.3)\n `__ `(sig)\n `__\n\n* `Windows X86-64 MSI Installer (3.1.3)\n `__ [1]_ `(sig)\n `__\n\n* `Windows X86-64 program database (3.1.3)\n `__ [1]_ `(sig)\n `__\n\n* `Mac OS X 32-bit i386/PPC Installer (3.1.3) for Mac OS X 10.3 through 10.6\n `__ [2]_ `(sig)\n `__\n\nThe source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installers are signed\nwith Martin von L\u00f6wis' public key which has a key id of 7D9DC8D2.\nThe Mac disk image was signed by \nRonald Oussoren's public key which has a key id of E6DF025C.\nThe public\nkeys are located on the `download page `_.\n\nMD5 checksums and sizes of the released files::\n\n d797fa6abe82c21227e328f05a535424 11769584 Python-3.1.3.tgz\n ad5e5f1c07e829321e0a015f8cafe245 9875464 Python-3.1.3.tar.bz2\n e2190c128dd1ebc1364d11f65f9a9560 12695522 python-3.1.3-pdb.zip\n 5a612090f2f9c9e3ac54c69735de78a9 13522914 python-3.1.3.amd64-pdb.zip\n c077495e19641111534b974107d6b8d3 14549504 python-3.1.3.amd64.msi\n 736d8b583d553237dd602461f43dfa65 14300160 python-3.1.3.msi\n 7c56fb34443ad74a76c5a119f2f7c485 17533819 python-3.1.3-macosx10.3.dmg\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `__.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: It is recommended that you use the latest bug fix release of the 3.1\nseries, 3.1.4.

    \n

    Python 3.1.3 was released on November 27th, 2010.

    \n

    The Python 3.1 version series is a continuation of the work started by Python\n3.0, the new backwards-incompatible series of\nPython. For ongoing maintenance releases, please see the Python 3.2 series. Improvements in this release include:

    \n
      \n
    • An ordered dictionary type
    • \n
    • Various optimizations to the int type
    • \n
    • New unittest features including test skipping and new assert methods.
    • \n
    • A much faster io module
    • \n
    • Tile support for Tkinter
    • \n
    • A pure Python reference implementation of the import statement
    • \n
    • New syntax for nested with statements
    • \n
    \n

    See these resources for further information:

    \n\n

    Help fund Python and its community by donating to the Python Software\nFoundation.

    \n
    \n

    Download

    \n

    This is a production release. Please report any bugs you may encounter to\nhttp://bugs.python.org.

    \n

    We currently support these formats for download:

    \n\n

    The source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installers are signed\nwith Martin von L\u00f6wis' public key which has a key id of 7D9DC8D2.\nThe Mac disk image was signed by\nRonald Oussoren's public key which has a key id of E6DF025C.\nThe public\nkeys are located on the download page.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \nd797fa6abe82c21227e328f05a535424  11769584  Python-3.1.3.tgz\nad5e5f1c07e829321e0a015f8cafe245   9875464  Python-3.1.3.tar.bz2\ne2190c128dd1ebc1364d11f65f9a9560  12695522  python-3.1.3-pdb.zip\n5a612090f2f9c9e3ac54c69735de78a9  13522914  python-3.1.3.amd64-pdb.zip\nc077495e19641111534b974107d6b8d3  14549504  python-3.1.3.amd64.msi\n736d8b583d553237dd602461f43dfa65  14300160  python-3.1.3.msi\n7c56fb34443ad74a76c5a119f2f7c485  17533819  python-3.1.3-macosx10.3.dmg\n
    \n\n\n\n\n\n
    [1](1, 2) The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2]There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 163, + "fields": { + "created": "2014-03-20T22:38:12.597Z", + "updated": "2014-06-10T03:41:46.952Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.2.0", + "slug": "python-320", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2011-02-20T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v3.2/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n**Note:** A newer security-fix release, 3.2.6, is currently `available\n`__. Its use is recommended.\n\nPython 3.2 was released on February 20th, 2011.\n\nPython 3.2 is a continuation of the efforts to improve and stabilize the Python\n3.x line. Since the final release of Python 2.7, the 2.x line will only receive\nbugfixes, and new features are developed for 3.x only.\n\nSince :pep:`3003`, the Moratorium on Language Changes, is in effect, there are\nno changes in Python's syntax and only few changes to built-in types in Python\n3.2. Development efforts concentrated on the standard library and support for\nporting code to Python 3. Highlights are:\n\n* numerous improvements to the unittest module\n* :pep:`3147`, support for .pyc repository directories\n* :pep:`3149`, support for version tagged dynamic libraries\n* :pep:`3148`, a new futures library for concurrent programming\n* :pep:`384`, a stable ABI for extension modules\n* :pep:`391`, dictionary-based logging configuration\n* an overhauled GIL implementation that reduces contention\n* an extended email package that handles bytes messages\n* a much improved ssl module with support for SSL contexts and certificate\n hostname matching\n* a sysconfig module to access configuration information\n* additions to the shutil module, among them archive file support\n* many enhancements to configparser, among them mapping protocol support\n* improvements to pdb, the Python debugger\n* countless fixes regarding bytes/string issues; among them full support\n for a bytes environment (filenames, environment variables)\n* many consistency and behavior fixes for numeric operations\n\nSee these resources for further information:\n\n* `What's new in 3.2? `_\n* `3.2 Release Schedule `_\n* `Change log for this release\n `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\nDownload\n--------\n\n.. This is a preview release, and its use is not recommended in production\n.. settings.\n\nThis is a production release. Please `report any bugs\n`_ you encounter.\n\nWe currently support these formats for download:\n\n* `Bzipped source tar ball (3.2) `__ `(sig)\n `__, ~ 11 MB\n\n* `XZ compressed source tar ball (3.2) `__\n `(sig) `__, ~ 8.5 MB\n\n* `Gzipped source tar ball (3.2) `__ `(sig)\n `__, ~ 13 MB\n\n..\n\n* `Windows x86 MSI Installer (3.2) `__ `(sig)\n `__ and `Visual Studio debug information\n files `__ `(sig)\n `__\n\n* `Windows X86-64 MSI Installer (3.2) `__\n [1]_ `(sig) `__ and `Visual Studio\n debug information files `__ `(sig)\n `__\n\n* `Windows help file `_ `(sig)\n `__\n\n..\n\n* `Mac OS X 32-bit i386/PPC Installer (3.2) for OS X 10.3 through 10.6\n `__ [2]_ `(sig)\n `__\n\n* `Mac OS X 64-bit/32-bit Installer (3.2) for Mac OS X 10.6\n `__ [2]_ `(sig)\n `__. \n [You may need an updated Tcl/Tk install to run IDLE or use Tkinter,\n see note 2 for instructions.]\n\nThe source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is ``26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288``. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the `download\npage `_.\n\nMD5 checksums and sizes of the released files::\n\n 5efe838a7878b170f6728d7e5d7517af 12673043 Python-3.2.tgz\n 92e94b5b6652b96349d6362b8337811d 10592958 Python-3.2.tar.bz2\n 563c0b4b8c8596e332cc076c4f013971 8877208 Python-3.2.tar.xz\n 9086f91f5cb7c252752566dc8358a790 19495255 python-3.2-macosx10.3.dmg\n f827c26555e69847c63c9e350ea443c0 16199254 python-3.2-macosx10.6.dmg\n e7eb9ca03fa05131d4b6edcee050ceec 18364386 python-3.2-pdb.zip\n 18d17934e72251fd2dcaeec2040418a1 20046920 python-3.2.amd64-pdb.zip\n 2edc738a0445edc24c7e2039a269aaea 18558464 python-3.2.amd64.msi\n 5860e37c5ff15cea4cda3698a756c81a 18041344 python-3.2.msi\n 82300eb392f4f06b743d713cb2a66f11 5790291 python32.chm\n\n.. [1] The binaries for AMD64 will also work on processors that implement the\n Intel 64 architecture (formerly EM64T), i.e. the architecture that\n Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They\n will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_. Also, on Mac OS X 10.6, if you need to\n build C extension modules with the 32-bit-only Python installed, you will\n need Apple Xcode 3, not 4. The 64-bit/32-bit Python can use either\n Xcode 3 or Xcode 4.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: A newer security-fix release, 3.2.6, is currently available. Its use is recommended.

    \n

    Python 3.2 was released on February 20th, 2011.

    \n

    Python 3.2 is a continuation of the efforts to improve and stabilize the Python\n3.x line. Since the final release of Python 2.7, the 2.x line will only receive\nbugfixes, and new features are developed for 3.x only.

    \n

    Since PEP 3003, the Moratorium on Language Changes, is in effect, there are\nno changes in Python's syntax and only few changes to built-in types in Python\n3.2. Development efforts concentrated on the standard library and support for\nporting code to Python 3. Highlights are:

    \n
      \n
    • numerous improvements to the unittest module
    • \n
    • PEP 3147, support for .pyc repository directories
    • \n
    • PEP 3149, support for version tagged dynamic libraries
    • \n
    • PEP 3148, a new futures library for concurrent programming
    • \n
    • PEP 384, a stable ABI for extension modules
    • \n
    • PEP 391, dictionary-based logging configuration
    • \n
    • an overhauled GIL implementation that reduces contention
    • \n
    • an extended email package that handles bytes messages
    • \n
    • a much improved ssl module with support for SSL contexts and certificate\nhostname matching
    • \n
    • a sysconfig module to access configuration information
    • \n
    • additions to the shutil module, among them archive file support
    • \n
    • many enhancements to configparser, among them mapping protocol support
    • \n
    • improvements to pdb, the Python debugger
    • \n
    • countless fixes regarding bytes/string issues; among them full support\nfor a bytes environment (filenames, environment variables)
    • \n
    • many consistency and behavior fixes for numeric operations
    • \n
    \n

    See these resources for further information:

    \n\n
    \n

    Download

    \n\n\n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n\n\n\n\n

    The source tarballs are signed with Georg Brandl's key, which has a key id of\n36580288; the fingerprint is 26DE A9D4 6133 91EF 3E25 C9FF 0A5B 1018 3658\n0288. The Windows installer was signed by Martin von L\u00f6wis' public key, which\nhas a key id of 7D9DC8D2. The Mac installers were signed with Ned Deily's key,\nwhich has a key id of 6F5E1540. The public keys are located on the download\npage.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \n5efe838a7878b170f6728d7e5d7517af  12673043  Python-3.2.tgz\n92e94b5b6652b96349d6362b8337811d  10592958  Python-3.2.tar.bz2\n563c0b4b8c8596e332cc076c4f013971   8877208  Python-3.2.tar.xz\n9086f91f5cb7c252752566dc8358a790  19495255  python-3.2-macosx10.3.dmg\nf827c26555e69847c63c9e350ea443c0  16199254  python-3.2-macosx10.6.dmg\ne7eb9ca03fa05131d4b6edcee050ceec  18364386  python-3.2-pdb.zip\n18d17934e72251fd2dcaeec2040418a1  20046920  python-3.2.amd64-pdb.zip\n2edc738a0445edc24c7e2039a269aaea  18558464  python-3.2.amd64.msi\n5860e37c5ff15cea4cda3698a756c81a  18041344  python-3.2.msi\n82300eb392f4f06b743d713cb2a66f11   5790291  python32.chm\n
    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the\nIntel 64 architecture (formerly EM64T), i.e. the architecture that\nMicrosoft calls x64, and AMD called x86-64 before calling it AMD64. They\nwill not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here. Also, on Mac OS X 10.6, if you need to\nbuild C extension modules with the 32-bit-only Python installed, you will\nneed Apple Xcode 3, not 4. The 64-bit/32-bit Python can use either\nXcode 3 or Xcode 4.
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 164, + "fields": { + "created": "2014-03-20T22:38:17.236Z", + "updated": "2017-07-18T23:06:51.801Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.4.4", + "slug": "python-244", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2006-10-18T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.4.4/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n We are pleased to announce the release of \n **Python 2.4.4 (FINAL)**, a \n bugfix release of Python 2.4, on October 18, 2006. \n\n **Important:**\n 2.4.4 includes a \n `security fix (PSF-2006-001) `_ \n for the repr() of unicode strings in wide unicode builds (UCS-4)\n\nPython 2.4 is now in bugfix-only mode; no new features are being added. At \nleast 80 bugs have been squished since Python 2.4.3, including a number \nof bugs and potential bugs found by with the \n`Coverity `_\nand `Klocwork `_ static analysis tools. We'd like\nto offer our thanks to both these firms for making this available for open\nsource projects - see their websites if you're interested.\n\nSee the `detailed release notes `_ for more details.\n\n`Python 2.5 <../2.5>`_ is the latest release of Python. This release of \nthe older 2.4 code is to provide bug fixes for people who are still using\nPython 2.4. This is the last planned release in the Python 2.4 series - \nfuture maintenance releases of Python will be in the 2.5 series, starting\nof course with 2.5.1.\n\nThis is a final release, and is suitable for production use. There was\none change since the release candidate. This fixed a problem with cross-\ncompiling Python that was introduced between 2.4.3 and 2.4.4c1.\n\nFor more information on the new features of `Python 2.4 <../2.4/>`_ see the \n`2.4 highlights <../2.4/highlights>`_ or consult Andrew Kuchling's \n`What's New In Python `_\nfor a more detailed view.\n\nPlease see the separate `bugs page `_ for known issues and the bug \nreporting procedure.\n\nSee also the `license `_\n\nDownload the release\n--------------------\n\nWindows\n=======\n\nFor x86 processors: `python-2.4.4.msi `_ \n\nFor Win64-Itanium users: `python-2.4.4.ia64.msi `_ \n\nThis installer allows for `automated installation\n`_ and `many other new features\n`_.\n\nTo use these installers, the Windows system must support Microsoft\nInstaller 2.0. Just save the installer file to your local machine and \nthen run it to find out if your machine supports\nMSI. \n\nWindows XP and later already have MSI; many older machines will\nalready have MSI installed.\n\nIf your machine lacks Microsoft Installer, you'll have to download it\nfreely from Microsoft for `Windows 95, 98 and Me\n`_\nand for `Windows NT 4.0 and 2000\n`_.\n\nWindows users may also be interested in Mark Hammond's \n`pywin32 `_ package,\navailable from \n`Sourceforge `_.\npywin32 adds a number of Windows-specific extensions to Python, including COM support and the Pythonwin IDE.\n\n.. RPMs for Fedora Core 3 (and similar) are available, see \n.. `the 2.4.4 RPMs page `_\n\n\nMacOS X\n=================\n\nFor MacOS X 10.3 and later: `python-2.4.4-macosx2006-10-18.dmg `_. This is a Universal installer.\n\nThe Universal OS X image contains an installer for python \n2.4.4 that works on Mac OS X 10.3.9 and later, on both PPC and Intel \nMacs. The compiled libraries include both bsddb and readline.\n\n\nOther platforms\n=======================\n\ngzip-compressed source code: `python-2.4.4.tgz `_\n\nbzip2-compressed source code: `python-2.4.4.tar.bz2 `_,\nthe source archive. \n\nThe bzip2-compressed version is considerably smaller, so get that one if\nyour system has the `appropriate tools `_ to deal \nwith it. \n\nUnpack the archive with ``tar -zxvf Python-2.4.4.tgz`` (or \n``bzcat Python-2.4.4.tar.bz2 | tar -xf -``). \nChange to the Python-2.4.4 directory and run the \"./configure\", \"make\", \n\"make install\" commands to compile and install Python. The source archive \nis also suitable for Windows users who feel the need to build their \nown version.\n\n\nWhat's New?\n-----------\n\n* See the `highlights <../2.4/highlights>`_ of the Python 2.4 release.\n\n* Andrew Kuchling's \n `What's New in Python 2.4 `_\n describes the most visible changes since `Python 2.3 <../2.3/>`_ in \n more detail.\n\n* A detailed list of the changes in 2.4.4 can be found in \n the `release notes `_, or the ``Misc/NEWS`` file in the \n source distribution.\n\n* For the full list of changes, you can poke around in \n `Subversion `_.\n\nDocumentation\n-------------\n\nThe documentation has also been updated:\n\n* `Browse HTML on-line `_\n\n* Download using `HTTP `_.\n\n* Documentation is available in Windows Help (.chm) format - `python24.chm `_.\n\n\nFiles, `MD5 `_ checksums, signatures and sizes\n---------------------------------------------------------\n\n ``82d000617baaef269ad5795c595fdc58`` `Python-2.4.4.tgz `_\n (9531474 bytes, `signature `__)\n\n ``0ba90c79175c017101100ebf5978e906`` `Python-2.4.4.tar.bz2 `_\n (8158073 bytes, `signature `__)\n\n ``8b1517fdbf287d402ac06cc809abfad6`` `python-2.4.4.msi `_\n (9668608 bytes, `signature `__)\n\n ``e153f8e72e53b34694323321d1a6654c`` `python-2.4.4.ia64.msi `_\n (8212992 bytes, `signature `__)\n\n ``3b7a449a1ae321a1609912c1e507d005`` `python-2.4.4-macosx2006-10-18.dmg `_\n (16744696 bytes, `signature `__)\n\n ``95540ad75b566a3934cad6b77fb6ebea`` `python24.chm `_\n (3777664 bytes, `signature `__)\n\n\nThe signatures above were generated with\n`GnuPG `_ using release manager\nAnthony Baxter's\n`public key `_ \nwhich has a key id of 6A45C816.\n\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.4 is now in bugfix-only mode; no new features are being added. At\nleast 80 bugs have been squished since Python 2.4.3, including a number\nof bugs and potential bugs found by with the\nCoverity\nand Klocwork static analysis tools. We'd like\nto offer our thanks to both these firms for making this available for open\nsource projects - see their websites if you're interested.

    \n

    See the detailed release notes for more details.

    \n

    Python 2.5 is the latest release of Python. This release of\nthe older 2.4 code is to provide bug fixes for people who are still using\nPython 2.4. This is the last planned release in the Python 2.4 series -\nfuture maintenance releases of Python will be in the 2.5 series, starting\nof course with 2.5.1.

    \n

    This is a final release, and is suitable for production use. There was\none change since the release candidate. This fixed a problem with cross-\ncompiling Python that was introduced between 2.4.3 and 2.4.4c1.

    \n

    For more information on the new features of Python 2.4 see the\n2.4 highlights or consult Andrew Kuchling's\nWhat's New In Python\nfor a more detailed view.

    \n

    Please see the separate bugs page for known issues and the bug\nreporting procedure.

    \n

    See also the license

    \n
    \n

    Download the release

    \n
    \n

    Windows

    \n

    For x86 processors: python-2.4.4.msi

    \n

    For Win64-Itanium users: python-2.4.4.ia64.msi

    \n

    This installer allows for automated installation and many other new features.

    \n

    To use these installers, the Windows system must support Microsoft\nInstaller 2.0. Just save the installer file to your local machine and\nthen run it to find out if your machine supports\nMSI.

    \n

    Windows XP and later already have MSI; many older machines will\nalready have MSI installed.

    \n

    If your machine lacks Microsoft Installer, you'll have to download it\nfreely from Microsoft for Windows 95, 98 and Me\nand for Windows NT 4.0 and 2000.

    \n

    Windows users may also be interested in Mark Hammond's\npywin32 package,\navailable from\nSourceforge.\npywin32 adds a number of Windows-specific extensions to Python, including COM support and the Pythonwin IDE.

    \n\n\n
    \n
    \n

    MacOS X

    \n

    For MacOS X 10.3 and later: python-2.4.4-macosx2006-10-18.dmg. This is a Universal installer.

    \n

    The Universal OS X image contains an installer for python\n2.4.4 that works on Mac OS X 10.3.9 and later, on both PPC and Intel\nMacs. The compiled libraries include both bsddb and readline.

    \n
    \n
    \n

    Other platforms

    \n

    gzip-compressed source code: python-2.4.4.tgz

    \n

    bzip2-compressed source code: python-2.4.4.tar.bz2,\nthe source archive.

    \n

    The bzip2-compressed version is considerably smaller, so get that one if\nyour system has the appropriate tools to deal\nwith it.

    \n

    Unpack the archive with tar -zxvf Python-2.4.4.tgz (or\nbzcat Python-2.4.4.tar.bz2 | tar -xf -).\nChange to the Python-2.4.4 directory and run the "./configure", "make",\n"make install" commands to compile and install Python. The source archive\nis also suitable for Windows users who feel the need to build their\nown version.

    \n
    \n
    \n
    \n

    What's New?

    \n
      \n
    • See the highlights of the Python 2.4 release.
    • \n
    • Andrew Kuchling's\nWhat's New in Python 2.4\ndescribes the most visible changes since Python 2.3 in\nmore detail.
    • \n
    • A detailed list of the changes in 2.4.4 can be found in\nthe release notes, or the Misc/NEWS file in the\nsource distribution.
    • \n
    • For the full list of changes, you can poke around in\nSubversion.
    • \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated:

    \n\n
    \n
    \n

    Files, MD5 checksums, signatures and sizes

    \n
    \n

    82d000617baaef269ad5795c595fdc58 Python-2.4.4.tgz\n(9531474 bytes, signature)

    \n

    0ba90c79175c017101100ebf5978e906 Python-2.4.4.tar.bz2\n(8158073 bytes, signature)

    \n

    8b1517fdbf287d402ac06cc809abfad6 python-2.4.4.msi\n(9668608 bytes, signature)

    \n

    e153f8e72e53b34694323321d1a6654c python-2.4.4.ia64.msi\n(8212992 bytes, signature)

    \n

    3b7a449a1ae321a1609912c1e507d005 python-2.4.4-macosx2006-10-18.dmg\n(16744696 bytes, signature)

    \n

    95540ad75b566a3934cad6b77fb6ebea python24.chm\n(3777664 bytes, signature)

    \n
    \n

    The signatures above were generated with\nGnuPG using release manager\nAnthony Baxter's\npublic key\nwhich has a key id of 6A45C816.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 165, + "fields": { + "created": "2014-03-20T22:38:21.229Z", + "updated": "2014-06-10T03:41:30.413Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.3.7", + "slug": "python-237", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2008-03-11T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.3.7/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n We are pleased to announce\n **Python 2.3.7 (final)**, a \n bugfix release of Python 2.3, on March 11, 2008.\n\n **Important:**\n 2.3.7 is a source-only release. If you need a binary release\n of 2.3, use `2.3.5 <../2.3.5>`__. If you need the fixes that are\n included in this release, use `2.5.2 <../2.5.2>`_ or later.\n\nPython 2.3 is now well and truly in bugfix-only mode; no new features\nare being added, and only security critical bugs have been fixed.\nThis release addresses a number of cases interpreter might have\ncrashed in certain boundary conditions.\n\nSee the `detailed release notes `_ for more details.\n\n`Python 2.5 <../2.5/>`_ and `Python 2.4 <../2.4/>`_ are newer releases of \nPython. This release of the older 2.3 code is to provide bug fixes for people \nwho are still using Python 2.3. \n\nFor more information on the new features of `Python 2.3 <../2.3/>`_ see the \n`2.3 highlights <../2.3/highlights>`_ or consult Andrew Kuchling's \n`What's New In Python `_\nfor a more detailed view.\n\nSince the release candidate, we received various reports that the\nthis release may fail to build on current operating systems, in \nparticular on OS X. We have made no attempt to fix these problems,\nas the release is targeted for systems that were current at the time\nPython 2.3 was originally released. For more recent systems, you might\nhave to come up with work-arounds. For OS X in particular, try\ninvoking::\n\n ./configure MACOSX_DEPLOYMENT_TARGET=10.5 \n\n\nPlease see the separate `bugs page `_ for known issues and the bug \nreporting procedure.\n\nSee also the `license `_\n\nDownload the release\n--------------------\n\nAs noted, python.org is not providing binary installers for 2.3.7. Windows\nand Mac OS X users who cannot compile their own versions should continue to\nuse the `2.3.5 <../2.3.5/>`__ installers. These installers are not vulnerable\nto PSF-2006-001. \n\ngzip-compressed source code: `Python-2.3.7.tgz `_\n\nbzip2-compressed source code: `Python-2.3.7.tar.bz2 `_,\nthe source archive. \n\nThe bzip2-compressed version is considerably smaller, so get that one if\nyour system has the `appropriate tools `_ to deal \nwith it. \n\nUnpack the archive with ``tar -zxvf Python-2.3.7.tgz`` (or \n``bzcat Python-2.3.7.tar.bz2 | tar -xf -``). \nChange to the Python-2.3.7 directory and run the \"./configure\", \"make\", \n\"make install\" commands to compile and install Python. The source archive \nis also suitable for Windows users who feel the need to build their \nown version.\n\n\nWhat's New?\n-----------\n\n* See the `highlights <../2.3/highlights>`_ of the Python 2.3 release.\n\n* Andrew Kuchling's \n `What's New in Python 2.3 `_\n describes the most visible changes since `Python 2.2 <../2.2/>`_ in \n more detail.\n\n* A detailed list of the changes in 2.3.7 can be found in \n the `release notes `_, or the ``Misc/NEWS`` file in the \n source distribution. This is a very short list - only security fixes\n have been included.\n\n* For the full list of changes, you can poke around in \n `Subversion `_.\n\nDocumentation\n-------------\n\nThe documentation for 2.3.5 is still current for this release.\n\n* `Browse HTML on-line `_\n\n* Download using `HTTP `_.\n\n\nFiles, `MD5 `_ checksums, signatures and sizes\n---------------------------------------------------------\n\n ``0b4861edfaa6d8451458d5d7ed735e4a`` `Python-2.3.7.tgz `_\n (8694077 bytes, `signature `__)\n\n ``fa73476c5214c57d0751fae527f991e1`` `Python-2.3.7.tar.bz2 `_\n (7352771 bytes, `signature `__)\n\n\nThe signatures above were generated with\n`GnuPG `_ using release manager\nMartin v. L\u00f6wis's\n`public key `_ \nwhich has a key id of 7D9DC8D2.\n\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.3 is now well and truly in bugfix-only mode; no new features\nare being added, and only security critical bugs have been fixed.\nThis release addresses a number of cases interpreter might have\ncrashed in certain boundary conditions.

    \n

    See the detailed release notes for more details.

    \n

    Python 2.5 and Python 2.4 are newer releases of\nPython. This release of the older 2.3 code is to provide bug fixes for people\nwho are still using Python 2.3.

    \n

    For more information on the new features of Python 2.3 see the\n2.3 highlights or consult Andrew Kuchling's\nWhat's New In Python\nfor a more detailed view.

    \n

    Since the release candidate, we received various reports that the\nthis release may fail to build on current operating systems, in\nparticular on OS X. We have made no attempt to fix these problems,\nas the release is targeted for systems that were current at the time\nPython 2.3 was originally released. For more recent systems, you might\nhave to come up with work-arounds. For OS X in particular, try\ninvoking:

    \n
    \n./configure MACOSX_DEPLOYMENT_TARGET=10.5\n
    \n

    Please see the separate bugs page for known issues and the bug\nreporting procedure.

    \n

    See also the license

    \n
    \n

    Download the release

    \n

    As noted, python.org is not providing binary installers for 2.3.7. Windows\nand Mac OS X users who cannot compile their own versions should continue to\nuse the 2.3.5 installers. These installers are not vulnerable\nto PSF-2006-001.

    \n

    gzip-compressed source code: Python-2.3.7.tgz

    \n

    bzip2-compressed source code: Python-2.3.7.tar.bz2,\nthe source archive.

    \n

    The bzip2-compressed version is considerably smaller, so get that one if\nyour system has the appropriate tools to deal\nwith it.

    \n

    Unpack the archive with tar -zxvf Python-2.3.7.tgz (or\nbzcat Python-2.3.7.tar.bz2 | tar -xf -).\nChange to the Python-2.3.7 directory and run the "./configure", "make",\n"make install" commands to compile and install Python. The source archive\nis also suitable for Windows users who feel the need to build their\nown version.

    \n
    \n
    \n

    What's New?

    \n
      \n
    • See the highlights of the Python 2.3 release.
    • \n
    • Andrew Kuchling's\nWhat's New in Python 2.3\ndescribes the most visible changes since Python 2.2 in\nmore detail.
    • \n
    • A detailed list of the changes in 2.3.7 can be found in\nthe release notes, or the Misc/NEWS file in the\nsource distribution. This is a very short list - only security fixes\nhave been included.
    • \n
    • For the full list of changes, you can poke around in\nSubversion.
    • \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation for 2.3.5 is still current for this release.

    \n\n
    \n
    \n

    Files, MD5 checksums, signatures and sizes

    \n
    \n

    0b4861edfaa6d8451458d5d7ed735e4a Python-2.3.7.tgz\n(8694077 bytes, signature)

    \n

    fa73476c5214c57d0751fae527f991e1 Python-2.3.7.tar.bz2\n(7352771 bytes, signature)

    \n
    \n

    The signatures above were generated with\nGnuPG using release manager\nMartin v. L\u00f6wis's\npublic key\nwhich has a key id of 7D9DC8D2.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 166, + "fields": { + "created": "2014-03-20T22:38:22.092Z", + "updated": "2014-06-10T03:41:36.045Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.5.6", + "slug": "python-256", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2011-05-26T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.5.6/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n We are pleased to announce the release of \n **Python 2.5.6**, a security fix release of Python 2.5, on May 26th, \n 2011. \n \n The last binary release of Python 2.5 was `2.5.4 `_.\n\nThis is a source-only release that only includes security fixes. The\nlast full bug-fix release of Python 2.5 was `Python 2.5.4\n<../2.5.4/>`_. User are encouraged to upgrade to the latest release of\nPython 2.7 (which is `2.7.2 <../2.7.2/>`_ at this point). This release\nis the final release of Python 2.5; under the current release policy,\nno security issues in Python 2.5 will be fixed anymore.\n\nThis releases fixes issues with the urllib, urllib2, SimpleHTTPServer,\nand audiop modules. See the `detailed release notes `_ for\nmore details.\n\nSee also the `license `_.\n\nDownload the release\n--------------------\n\nSource code\n===========\n\ngzip-compressed source code: `Python-2.5.6.tgz `_\n\nbzip2-compressed source code: `Python-2.5.6.tar.bz2 `_,\nthe source archive. \n\nThe bzip2-compressed version is considerably smaller, so get that one if\nyour system has the `appropriate tools `_ to deal \nwith it. \n\nUnpack the archive with ``tar -zxvf Python-2.5.6.tgz`` (or \n``bzcat Python-2.5.6.tar.bz2 | tar -xf -``). \nChange to the Python-2.5.6 directory and run the \"./configure\", \"make\", \n\"make install\" commands to compile and install Python. The source archive \nis also suitable for Windows users who feel the need to build their \nown version.\n\n\nWhat's New?\n-----------\n\n* See the `highlights <../2.5/highlights>`_ of the Python 2.5 release.\n\n* Andrew Kuchling's \n `What's New in Python 2.5 `_\n describes the most visible changes since `Python 2.4 <../2.4/>`_ in \n more detail.\n\n* A detailed list of the changes in 2.5.6 can be found in \n the `release notes `_, or the ``Misc/NEWS`` file in the \n source distribution.\n\n* For the full list of changes, you can poke around in \n `Subversion `_.\n\nDocumentation\n-------------\n\nThe documentation has not been updated since the 2.5.4 release:\n\n* `Browse HTML on-line `_\n\nFiles, `MD5 `_ checksums, signatures and sizes\n----------------------------------------------------------------------------------\n\n ``d1d9c83928561addf11d00b22a18ca50`` `Python-2.5.6.tgz `_\n (11608002 bytes, `signature `__)\n\n ``5d45979c5f30fb2dd5f067c6b06b88e4`` `Python-2.5.6.tar.bz2 `_\n (9821788 bytes, `signature `__)\n\n\nThe signatures above were generated with\n`GnuPG `_ using release manager\nMartin v. L\u00f6wis's `public key `_ \nwhich has a key id of 7D9DC8D2.\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    This is a source-only release that only includes security fixes. The\nlast full bug-fix release of Python 2.5 was Python 2.5.4. User are encouraged to upgrade to the latest release of\nPython 2.7 (which is 2.7.2 at this point). This release\nis the final release of Python 2.5; under the current release policy,\nno security issues in Python 2.5 will be fixed anymore.

    \n

    This releases fixes issues with the urllib, urllib2, SimpleHTTPServer,\nand audiop modules. See the detailed release notes for\nmore details.

    \n

    See also the license.

    \n
    \n

    Download the release

    \n
    \n

    Source code

    \n

    gzip-compressed source code: Python-2.5.6.tgz

    \n

    bzip2-compressed source code: Python-2.5.6.tar.bz2,\nthe source archive.

    \n

    The bzip2-compressed version is considerably smaller, so get that one if\nyour system has the appropriate tools to deal\nwith it.

    \n

    Unpack the archive with tar -zxvf Python-2.5.6.tgz (or\nbzcat Python-2.5.6.tar.bz2 | tar -xf -).\nChange to the Python-2.5.6 directory and run the "./configure", "make",\n"make install" commands to compile and install Python. The source archive\nis also suitable for Windows users who feel the need to build their\nown version.

    \n
    \n
    \n
    \n

    What's New?

    \n
      \n
    • See the highlights of the Python 2.5 release.
    • \n
    • Andrew Kuchling's\nWhat's New in Python 2.5\ndescribes the most visible changes since Python 2.4 in\nmore detail.
    • \n
    • A detailed list of the changes in 2.5.6 can be found in\nthe release notes, or the Misc/NEWS file in the\nsource distribution.
    • \n
    • For the full list of changes, you can poke around in\nSubversion.
    • \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has not been updated since the 2.5.4 release:

    \n\n
    \n
    \n

    Files, MD5 checksums, signatures and sizes

    \n
    \n

    d1d9c83928561addf11d00b22a18ca50 Python-2.5.6.tgz\n(11608002 bytes, signature)

    \n

    5d45979c5f30fb2dd5f067c6b06b88e4 Python-2.5.6.tar.bz2\n(9821788 bytes, signature)

    \n
    \n

    The signatures above were generated with\nGnuPG using release manager\nMartin v. L\u00f6wis's public key\nwhich has a key id of 7D9DC8D2.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 167, + "fields": { + "created": "2014-03-20T22:38:22.994Z", + "updated": "2014-06-10T03:41:45.500Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.1.2", + "slug": "python-312", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2010-03-20T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v3.1.2/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nNote: It is recommended that you use the latest bug fix release of the 3.1\nseries, `3.1.4 `_.\n\nPython 3.1.2 was released on March 21st, 2010.\n\nThe Python 3.1 version series is a continuation of the work started by `Python\n3.0 `_, the **new backwards-incompatible series** of\nPython. Improvements in this release include:\n\n- An ordered dictionary type\n- Various optimizations to the int type\n- New unittest features including test skipping and new assert methods.\n- A much faster io module\n- Tile support for Tkinter\n- A pure Python reference implementation of the import statement\n- New syntax for nested with statements\n\nSee these resources for further information:\n\n* `What's New in 3.1? `_\n* `What's new in Python 3000 `_\n* `Python 3.1.2 Change Log `_\n* `Online Documentation `_\n* Conversion tool for Python 2.x code:\n `2to3 `_\n* Report bugs at ``_.\n\nHelp fund Python and its community by `donating to the Python Software\nFoundation `_.\n\n\nDownload\n--------\n\nThis is a production release. Please report any bugs you may encounter to\nhttp://bugs.python.org.\n\nWe currently support these formats for download:\n\n* `Gzipped source tar ball (3.1.2) `_ `(sig)\n `__\n\n* `Bzipped source tar ball (3.1.2) `_\n `(sig) `__\n\n* `Windows x86 MSI Installer (3.1.2) `_\n `(sig) `__\n\n* `Windows X86-64 MSI Installer (3.1.2) `_ [1]_ `(sig) `__\n\n* `Mac Installer disk image (3.1.2) `_ `(sig) `__\n\nThe source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installers are signed\nwith Martin von L\u00f6wis' public key which has a key id of 7D9DC8D2.\nThe Mac disk image was signed by \nRonald Oussoren's public key which has a key id of E6DF025C.\nThe public\nkeys are located on the `download page `_.\n\nMD5 checksums and sizes of the released files::\n\n 08d01c468989d1f2cc560c23f8e6a7ea 11661773 Python-3.1.2.tgz\n 45350b51b58a46b029fb06c61257e350 9719769 Python-3.1.2.tar.bz2 \n a50d1fe2648783126c7a70654a08b755 14369280 python-3.1.2.amd64.msi\n 098269f6057916821e41e82e7a7be227 14098432 python-3.1.2.msi\n 597ba520c9c989f23464e0bf534db389 17418524 python-3.1.2-macosx10.3-2010-03-24.dmg\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: It is recommended that you use the latest bug fix release of the 3.1\nseries, 3.1.4.

    \n

    Python 3.1.2 was released on March 21st, 2010.

    \n

    The Python 3.1 version series is a continuation of the work started by Python\n3.0, the new backwards-incompatible series of\nPython. Improvements in this release include:

    \n
      \n
    • An ordered dictionary type
    • \n
    • Various optimizations to the int type
    • \n
    • New unittest features including test skipping and new assert methods.
    • \n
    • A much faster io module
    • \n
    • Tile support for Tkinter
    • \n
    • A pure Python reference implementation of the import statement
    • \n
    • New syntax for nested with statements
    • \n
    \n

    See these resources for further information:

    \n\n

    Help fund Python and its community by donating to the Python Software\nFoundation.

    \n
    \n

    Download

    \n

    This is a production release. Please report any bugs you may encounter to\nhttp://bugs.python.org.

    \n

    We currently support these formats for download:

    \n\n

    The source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installers are signed\nwith Martin von L\u00f6wis' public key which has a key id of 7D9DC8D2.\nThe Mac disk image was signed by\nRonald Oussoren's public key which has a key id of E6DF025C.\nThe public\nkeys are located on the download page.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \n08d01c468989d1f2cc560c23f8e6a7ea  11661773  Python-3.1.2.tgz\n45350b51b58a46b029fb06c61257e350   9719769  Python-3.1.2.tar.bz2\na50d1fe2648783126c7a70654a08b755  14369280  python-3.1.2.amd64.msi\n098269f6057916821e41e82e7a7be227  14098432  python-3.1.2.msi\n597ba520c9c989f23464e0bf534db389  17418524  python-3.1.2-macosx10.3-2010-03-24.dmg\n
    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 168, + "fields": { + "created": "2014-03-20T22:38:24.769Z", + "updated": "2014-06-10T03:41:33.494Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.4.6", + "slug": "python-246", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2008-12-19T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.4.6/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n We are pleased to announce \n **Python 2.4.6 (final)**, a \n bugfix release of Python 2.4, on Dec 19, 2008. \n\n **Important:**\n 2.4.6 is a source-only release. If you need a binary release\n of 2.4, use `2.4.4 <../2.4.4>`_. If you need the fixes that are\n included in this release, use `2.6.1 <../2.6.1>`_ or later.\n\nThis release includes just a small number of fixes, primarily preventing\ncrashes of the interpreter in certain boundary cases. This is the last\nplanned release in the Python 2.4 series.\n\nWe have decided not to include binaries for Windows or OS X in this\nrelease, nor to update any online documentation, as the overhead\nfor doing so would have greatly outweighed the amount of changes that\nwe release. If you need the security fixes included in this release,\nplease build your own binaries from the sources, or (better) upgrade\nto a more recent Python release for which we still do provide binaries\nand documentation updates.\n\nSee the `detailed release notes `_ for more details.\n\nFor the previous release (2.4.5), we received various reports that the\nthis release may fail to build on current operating systems, in \nparticular on OS X. We have made no attempt to fix these problems,\nas the release is targeted for systems that were current at the time\nPython 2.4 was originally released. For more recent systems, you might\nhave to come up with work-arounds. For OS X in particular, try\ninvoking::\n\n ./configure MACOSX_DEPLOYMENT_TARGET=10.5 \n\nFor more information on the new features of `Python 2.4 <../2.4/>`_ see the \n`2.4 highlights <../2.4/highlights>`_ or consult Andrew Kuchling's \n`What's New In Python `_\nfor a more detailed view.\n\nPlease see the separate `bugs page `_ for known issues and the bug \nreporting procedure.\n\nSee also the `license `_\n\nDownload the release\n--------------------\n\ngzip-compressed source code: `python-2.4.6.tgz `_\n\nbzip2-compressed source code: `python-2.4.6.tar.bz2 `_,\nthe source archive. \n\nThe bzip2-compressed version is considerably smaller, so get that one if\nyour system has the `appropriate tools `_ to deal \nwith it. \n\nUnpack the archive with ``tar -zxvf Python-2.4.6.tgz`` (or \n``bzcat Python-2.4.6.tar.bz2 | tar -xf -``). \nChange to the Python-2.4.6 directory and run the \"./configure\", \"make\", \n\"make install\" commands to compile and install Python. The source archive \nis also suitable for Windows users who feel the need to build their \nown version.\n\n\nWhat's New?\n-----------\n\n* See the `highlights <../2.4/highlights>`_ of the Python 2.4 release.\n\n* Andrew Kuchling's \n `What's New in Python 2.4 `_\n describes the most visible changes since `Python 2.3 <../2.3/>`_ in \n more detail.\n\n* A detailed list of the changes in 2.4.6 can be found in \n the `release notes `_, or the ``Misc/NEWS`` file in the \n source distribution.\n\n* For the full list of changes, you can poke around in \n `Subversion `_.\n\nDocumentation\n-------------\n\nThe documentation has also been updated:\n\n* `Browse HTML on-line `_\n\n* Download using `HTTP `_.\n\n* Documentation is available in Windows Help (.chm) format - `python24.chm `_.\n\n\nFiles, `MD5 `_ checksums, signatures and sizes\n---------------------------------------------------------\n\n ``7564b2b142b1b8345cd5358b7aaaa482`` `Python-2.4.6.tgz `_\n (9550168 bytes, `signature `__)\n\n ``76083277f6c7e4d78992f36d7ad9018d`` `Python-2.4.6.tar.bz2 `_\n (8154677 bytes, `signature `__)\n\n\nThe signatures above were generated with\n`GnuPG `_ using release manager\nMartin v. L\u00f6wis's\n`public key `_ \nwhich has a key id of 7D9DC8D2.\n\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    This release includes just a small number of fixes, primarily preventing\ncrashes of the interpreter in certain boundary cases. This is the last\nplanned release in the Python 2.4 series.

    \n

    We have decided not to include binaries for Windows or OS X in this\nrelease, nor to update any online documentation, as the overhead\nfor doing so would have greatly outweighed the amount of changes that\nwe release. If you need the security fixes included in this release,\nplease build your own binaries from the sources, or (better) upgrade\nto a more recent Python release for which we still do provide binaries\nand documentation updates.

    \n

    See the detailed release notes for more details.

    \n

    For the previous release (2.4.5), we received various reports that the\nthis release may fail to build on current operating systems, in\nparticular on OS X. We have made no attempt to fix these problems,\nas the release is targeted for systems that were current at the time\nPython 2.4 was originally released. For more recent systems, you might\nhave to come up with work-arounds. For OS X in particular, try\ninvoking:

    \n
    \n./configure MACOSX_DEPLOYMENT_TARGET=10.5\n
    \n

    For more information on the new features of Python 2.4 see the\n2.4 highlights or consult Andrew Kuchling's\nWhat's New In Python\nfor a more detailed view.

    \n

    Please see the separate bugs page for known issues and the bug\nreporting procedure.

    \n

    See also the license

    \n
    \n

    Download the release

    \n

    gzip-compressed source code: python-2.4.6.tgz

    \n

    bzip2-compressed source code: python-2.4.6.tar.bz2,\nthe source archive.

    \n

    The bzip2-compressed version is considerably smaller, so get that one if\nyour system has the appropriate tools to deal\nwith it.

    \n

    Unpack the archive with tar -zxvf Python-2.4.6.tgz (or\nbzcat Python-2.4.6.tar.bz2 | tar -xf -).\nChange to the Python-2.4.6 directory and run the "./configure", "make",\n"make install" commands to compile and install Python. The source archive\nis also suitable for Windows users who feel the need to build their\nown version.

    \n
    \n
    \n

    What's New?

    \n
      \n
    • See the highlights of the Python 2.4 release.
    • \n
    • Andrew Kuchling's\nWhat's New in Python 2.4\ndescribes the most visible changes since Python 2.3 in\nmore detail.
    • \n
    • A detailed list of the changes in 2.4.6 can be found in\nthe release notes, or the Misc/NEWS file in the\nsource distribution.
    • \n
    • For the full list of changes, you can poke around in\nSubversion.
    • \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated:

    \n\n
    \n
    \n

    Files, MD5 checksums, signatures and sizes

    \n
    \n

    7564b2b142b1b8345cd5358b7aaaa482 Python-2.4.6.tgz\n(9550168 bytes, signature)

    \n

    76083277f6c7e4d78992f36d7ad9018d Python-2.4.6.tar.bz2\n(8154677 bytes, signature)

    \n
    \n

    The signatures above were generated with\nGnuPG using release manager\nMartin v. L\u00f6wis's\npublic key\nwhich has a key id of 7D9DC8D2.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 169, + "fields": { + "created": "2014-03-20T22:38:25.604Z", + "updated": "2014-06-10T03:41:39.326Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.6.6", + "slug": "python-266", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2010-08-24T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.6.6/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.6.6 has been replaced by a newer security-fix only source release\n of Python**. Please download `Python 2.6.8 <../2.6.8/>`_ instead.\n\nPython 2.6 is now in security-fix-only mode; no new features are being added,\nand no new bug fix releases are planned. We intend to provide source-only\nsecurity fixes for the Python 2.6 series until October 2013 (five years after\nthe 2.6 final release). For ongoing maintenance releases, please see the\nPython `2.7 <../2.7/>`_ series. The `NEWS file `_ lists every\nchange in each alpha, beta, and release candidate of Python 2.6.\n\n * `What's New in Python 2.6 `_.\n * Report bugs at ``_.\n * Read the `Python license `_.\n * `PEP 361 `_ set out the development schedule for 2.6.\n\nHelp fund Python and its community by `donating to the Python Software Foundation `_.\n\nDownload\n--------\n\nThis is a production release; we currently support these formats:\n\n * `Gzipped source tar ball (2.6.6) `_\n `(sig) `__\n\n * `Bzipped source tar ball (2.6.6) `_\n `(sig) `__\n\n * `Windows x86 MSI Installer (2.6.6) `_\n `(sig) `__\n\n * `Windows X86-64 MSI Installer (2.6.6)\n `_ [1]_\n `(sig) `__\n\n * `Windows help file\n `_ `(sig)\n `__\n\n * `Mac Installer disk image (2.6.6)\n `_ `(sig)\n `__\n\nMD5 checksums and sizes of the released files::\n\n b2f209df270a33315e62c1ffac1937f0 13318547 Python-2.6.6.tgz\n cf4e6881bb84a7ce6089e4a307f71f14 11080872 Python-2.6.6.tar.bz2\n 6f91625fe7744771da04dd1cabef0adc 15561216 python-2.6.6.amd64.msi\n 80b1ef074a3b86f34a2e6b454a05c8eb 15227904 python-2.6.6.msi\n 29af0ada063ca98257a7d4e3e685e2e8 5468483 python266.chm\n f9b532a7e674a4d67fa214419c83398a 20452372 python-2.6.6-macosx10.3.dmg\n\nThe signatures for the source tarballs above were generated with\n`GnuPG `_ using release manager\nBarry Warsaw's\n`public key `_ \nwhich has a key id of A74B06BF. \nThe Windows installers were signed by Martin von L\u00f6wis'\n`public key `_ \nwhich has a key id of 7D9DC8D2.\nThe Mac disk image was signed by \nRonald Oussoren's public key which has a key id of E6DF025C.\n\nDocumentation\n-------------\n\nThe documentation has also been updated. You can `browse the HTML on-line\n`_ or `download the HTML\n`_.\n\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64\n architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64,\n and AMD called x86-64 before calling it AMD64. They will not work on Intel\n Itanium Processors (formerly IA-64).", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.6 is now in security-fix-only mode; no new features are being added,\nand no new bug fix releases are planned. We intend to provide source-only\nsecurity fixes for the Python 2.6 series until October 2013 (five years after\nthe 2.6 final release). For ongoing maintenance releases, please see the\nPython 2.7 series. The NEWS file lists every\nchange in each alpha, beta, and release candidate of Python 2.6.

    \n
    \n\n
    \n

    Help fund Python and its community by donating to the Python Software Foundation.

    \n
    \n

    Download

    \n

    This is a production release; we currently support these formats:

    \n
    \n\n
    \n

    MD5 checksums and sizes of the released files:

    \n
    \nb2f209df270a33315e62c1ffac1937f0  13318547  Python-2.6.6.tgz\ncf4e6881bb84a7ce6089e4a307f71f14  11080872  Python-2.6.6.tar.bz2\n6f91625fe7744771da04dd1cabef0adc  15561216  python-2.6.6.amd64.msi\n80b1ef074a3b86f34a2e6b454a05c8eb  15227904  python-2.6.6.msi\n29af0ada063ca98257a7d4e3e685e2e8   5468483  python266.chm\nf9b532a7e674a4d67fa214419c83398a  20452372  python-2.6.6-macosx10.3.dmg\n
    \n

    The signatures for the source tarballs above were generated with\nGnuPG using release manager\nBarry Warsaw's\npublic key\nwhich has a key id of A74B06BF.\nThe Windows installers were signed by Martin von L\u00f6wis'\npublic key\nwhich has a key id of 7D9DC8D2.\nThe Mac disk image was signed by\nRonald Oussoren's public key which has a key id of E6DF025C.

    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated. You can browse the HTML on-line or download the HTML.

    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the Intel 64\narchitecture (formerly EM64T), i.e. the architecture that Microsoft calls x64,\nand AMD called x86-64 before calling it AMD64. They will not work on Intel\nItanium Processors (formerly IA-64).
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 170, + "fields": { + "created": "2014-03-20T22:38:27.300Z", + "updated": "2014-06-10T03:41:28.433Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.3.3", + "slug": "python-233", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2003-12-19T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.3.3/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\npatch release release which supersedes earlier releases of 2.3.\n\n\n\n
    \n Important: This release is vulnerable to the problem described in\n security advisory PSF-2006-001\n \"Buffer overrun in repr() of unicode strings in wide unicode\n builds (UCS-4)\". This fix is included in\n Python 2.4.4\n and Python 2.5. If you need to remain with Python 2.3,\n there's a patch available from the security advisory page.\n
    \n\n
    Important:\n2.3.5 includes a security\nfix for SimpleXMLRPCServer.py.\n
    \n\n

    We're happy to announce the release of \nPython 2.3.3 (final) on December 19th, 2003.\nThis is a bug-fix release for Python 2.3 that fixes a number of bugs,\nincluding a couple of serious errors with weakrefs and the cyclic garbage\ncollector. There are also a number of fixes to the standard library - see\nthe release notes for details.\nPython 2.3.3 supersedes the previous Python 2.3.2 \nrelease.\n\n

    No new features have been added in Python 2.3.3. The 2.3 series is\nnow in bugfix-only mode.\n\n

    Please see the separate bugs page for known\nissues and the bug reporting procedure.\n\n

    Download the release

    \n\n

    Windows users should download the Windows installer, Python-2.3.3.exe, run\nit and follow the friendly instructions on the screen to complete the\ninstallation. Windows users may also be interested in Mark Hammond's\nwin32all, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.

    \n\n

    RPMs suitable for Red Hat/Fedora and source RPMs for other RPM-using\noperating systems are available from the RPMs page.\n\n

    All others should download either \nPython-2.3.3.tgz or\nPython-2.3.3.tar.bz2, \nthe source archive. The tar.bz2 is considerably smaller, so get that one if\nyour system has the appropriate \ntools to deal with it. Unpack it with \n\"tar -zxvf Python-2.3.3.tgz\" (or \n\"bzcat Python-2.3.3.tar.bz2 | tar -xf -\"). \nChange to the Python-2.3.3 directory\nand run the \"./configure\", \"make\", \"make install\" commands to compile \nand install Python. The source archive is also suitable for Windows users\nwho feel the need to build their own version.\n\n

    Warning for Solaris/HP-UX users: Some versions of the\nSolaris and HP/UX versions of tar(1) report checksum\nerrors and are unable to unpack the Python source tree.\nThis is caused by some pathnames being too\nlong for the vendor's version. Use\nGNU tar instead.\n\n

    If you're having trouble building on your system, check the top-level\nREADME file for platform-specific tips, or check the \nBuild Bugs section on the Bugs webpage.\n\n\n\n

    What's New?

    \n\n
      \n\n

    • A detailed list of the changes since 2.3.2 is in the release notes, or the file Misc/NEWS in\nthe source distribution.\n\n
    • See the highlights of the\nPython 2.3 release. As noted, the 2.3.3 release is a bugfix release\nof 2.3.2, itself a bugfix release of 2.3. \n\n

    • The Windows installer now includes the documentation in searchable \nhtmlhelp format, rather than individual HTML files. You can still download the\nindividual HTML files.\n\n

    • Andrew Kuchling's What's New\nin Python 2.3 describes the most visible changes since Python 2.2 in more detail.\n\n

    • For the full list of changes, you can poke around in CVS.\n\n

    • The PSF's press\nrelease announcing 2.3.3.\n\n\n
    \n\n

    Documentation

    \n\n

    The documentation has been updated too:\n\n

    \n\n

    The interim documentation for\nnew-style classes, last seen for Python 2.2.3, is still relevant\nfor Python 2.3.3. Raymond Hettinger has also written a tutorial on\ndescriptors, introduced in Python 2.2. \nIn addition, The Python 2.3 Method\nResolution Order is a nice paper by Michele Simionato that\nexplains the C3 MRO algorithm (new in Python 2.3) clearly. (Also\navailable as reStructured Text. Copied with\npermission.)\n\n

    Files, MD5 checksums, signatures, and sizes

    \n\n
    \n4d16732b1cfccc0ed250956d41463c61 Python-2.3.3.tgz (8491380 bytes, signature)\n70ada9f65742ab2c77a96bcd6dffd9b1 Python-2.3.3.tar.bz2 (7195007 bytes, signature)\n92b8e2bb82f0589b70ef5afff204da39 Python-2.3.3.exe (9557065 bytes, signature)\n
    \n\n

    The signatures above were generated with\nGnuPG using the release manager's\n(Anthony Baxter)\npublic key \nwhich has a key id of 6A45C816.\n\n

     ", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    patch release release which supersedes earlier releases of 2.3.</i>\n</blockquote>

    \n
    \n
    <blockquote>
    \n
    <b>Important:</b> This release is vulnerable to the problem described in\n<a href="/news/security/PSF-2006-001/">security advisory PSF-2006-001</a>\n"Buffer overrun in repr() of unicode strings in wide unicode\nbuilds (UCS-4)". This fix is included in\n<a href="../2.4.4/">Python 2.4.4</a>\nand <a href="../2.5/">Python 2.5</a>. If you need to remain with Python 2.3,\nthere's a patch available from the security advisory page.
    \n
    \n

    </blockquote>

    \n

    <blockquote> <b>Important:\n2.3.5 includes a <a href="/news/security/PSF-2005-001/" >security\nfix</a> for SimpleXMLRPCServer.py.</b>\n</blockquote>

    \n

    <p>We're happy to announce the release of\n<b>Python 2.3.3 (final)</b> on December 19th, 2003.\nThis is a bug-fix release for Python 2.3 that fixes a number of bugs,\nincluding a couple of serious errors with weakrefs and the cyclic garbage\ncollector. There are also a number of fixes to the standard library - see\nthe <a href="NEWS.txt">release notes</a> for details.\nPython 2.3.3 supersedes the previous <a href="../2.3.2/">Python 2.3.2</a>\nrelease.

    \n

    <p>No new features have been added in Python 2.3.3. The 2.3 series is\nnow in bugfix-only mode.

    \n

    <p>Please see the separate <a href="bugs">bugs page</a> for known\nissues and the bug reporting procedure.

    \n

    <h3>Download the release</h3>

    \n

    <p><b>Windows</b> users should download the Windows installer, <a\nhref="/ftp/python/2.3.3/Python-2.3.3.exe">Python-2.3.3.exe</a>, run\nit and follow the friendly instructions on the screen to complete the\ninstallation. Windows users may also be interested in Mark Hammond's\n<a href="http://starship.python.net/crew/mhammond/"\n>win32all</a>, a collection of Windows-specific extensions including\nCOM support and Pythonwin, an IDE built using Windows components.</p>

    \n

    <p>RPMs suitable for Red Hat/Fedora and source RPMs for other RPM-using\noperating systems are available from <a href="rpms">the RPMs page</a>.

    \n

    <p><b>All others</b> should download either\n<a href="/ftp/python/2.3.3/Python-2.3.3.tgz">Python-2.3.3.tgz</a> or\n<a href="/ftp/python/2.3.3/Python-2.3.3.tar.bz2">Python-2.3.3.tar.bz2</a>,\nthe source archive. The tar.bz2 is considerably smaller, so get that one if\nyour system has the <a href="http://sources.redhat.com/bzip2/">appropriate\ntools</a> to deal with it. Unpack it with\n"tar&nbsp;-zxvf&nbsp;Python-2.3.3.tgz" (or\n"bzcat&nbsp;Python-2.3.3.tar.bz2&nbsp;|&nbsp;tar&nbsp;-xf&nbsp;-").\nChange to the Python-2.3.3 directory\nand run the "./configure", "make", "make&nbsp;install" commands to compile\nand install Python. The source archive is also suitable for Windows users\nwho feel the need to build their own version.

    \n

    <p><b>Warning for Solaris/HP-UX users</b>: Some versions of the\nSolaris and HP/UX versions of <i>tar(1)</i> report checksum\nerrors and are unable to unpack the Python source tree.\nThis is caused by some pathnames being too\nlong for the vendor's version. Use\n<a href="http://www.gnu.org/software/tar/tar.html">GNU tar</a> instead.

    \n

    <p>If you're having trouble building on your system, check the top-level\nREADME file for platform-specific tips, or check the\n<a href="bugs#build">Build Bugs</a> section on the Bugs webpage.

    \n

    <!--mac\n<p><b>Macintosh</b> users can find binaries and source on\nJack Jansen's\n<a href="http://homepages.cwi.nl/~jack/macpython/">MacPython page</a>.\nMac OS X users who have a C compiler (which comes with the\n<a href="http://developer.apple.com/tools/macosxtools.html">OS X\nDeveloper Tools</a>) can also build from the source tarball below.\n-->

    \n

    <h3>What's New?</h3>

    \n

    <ul>

    \n

    <p><li>A detailed list of the changes since 2.3.2 is in the <a\nhref="NEWS.txt">release notes</a>, or the file <tt>Misc/NEWS</tt> in\nthe source distribution.

    \n

    <li>See the <a href="../2.3/highlights">highlights</a> of the\nPython 2.3 release. As noted, the 2.3.3 release is a bugfix release\nof 2.3.2, itself a bugfix release of 2.3.

    \n

    <p><li>The Windows installer now includes the documentation in searchable\nhtmlhelp format, rather than individual HTML files. You can still download the\n<a href="/ftp/python/doc/2.3.3/">individual HTML files</a>.

    \n

    <p><li>Andrew Kuchling's <a href="/doc/2.3.3/whatsnew/">What's New\nin Python 2.3</a> describes the most visible changes since <a\nhref="../2.2.3/">Python 2.2</a> in more detail.

    \n

    <p><li>For the full list of changes, you can poke around in <a\nhref="http://sourceforge.net/cvs/?group_id=5470">CVS</a>.

    \n

    <p><li>The PSF's <a href="/psf/press-release/pr20031219">press\nrelease</a> announcing 2.3.3.

    \n

    </ul>

    \n

    <h3>Documentation</h3>

    \n

    <p>The documentation has been updated too:

    \n

    <ul>

    \n

    <li><a href="/doc/2.3.3/">Browse HTML documentation on-line</a></li>

    \n

    <li>Download using <a href="/ftp/python/doc/2.3.3/">HTTP</a>.

    \n

    </ul>

    \n

    <p>The <a href="/2.2.3/descrintro">interim documentation for\nnew-style classes</a>, last seen for Python 2.2.3, is still relevant\nfor Python 2.3.3. Raymond Hettinger has also written a <a\nhref="http://users.rcn.com/python/download/Descriptor.htm">tutorial on\ndescriptors</a>, introduced in Python 2.2.\nIn addition, <a href="/download/releases/2.3/mro">The Python 2.3 Method\nResolution Order</a> is a nice paper by Michele Simionato that\nexplains the C3 MRO algorithm (new in Python 2.3) clearly. (Also\navailable as <a href="/download/releases/2.3/mro/mro.txt">reStructured Text</a>. Copied with\npermission.)

    \n

    <h3>Files, <a href="md5sum.py">MD5</a> checksums, signatures, and sizes</h3>

    \n

    <pre>\n4d16732b1cfccc0ed250956d41463c61 <a href="/ftp/python/2.3.3/Python-2.3.3.tgz">Python-2.3.3.tgz</A> (8491380 bytes, <a href="Python-2.3.3.tgz.asc">signature</a>)\n70ada9f65742ab2c77a96bcd6dffd9b1 <a href="/ftp/python/2.3.3/Python-2.3.3.tar.bz2">Python-2.3.3.tar.bz2</A> (7195007 bytes, <a href="Python-2.3.3.tar.bz2.asc">signature</a>)\n92b8e2bb82f0589b70ef5afff204da39 <a href="/ftp/python/2.3.3/Python-2.3.3.exe">Python-2.3.3.exe</a> (9557065 bytes, <a href="Python-2.3.3.exe.asc">signature</a>)\n</pre>

    \n

    <p>The signatures above were generated with\n<a href="http://www.gnupg.org">GnuPG</a> using the release manager's\n(Anthony Baxter)\n<a href="/download#pubkeys">public key</a>\nwhich has a key id of 6A45C816.

    \n

    <p>&nbsp;

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 171, + "fields": { + "created": "2014-03-20T22:38:28.378Z", + "updated": "2014-06-10T03:41:39.737Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.6.7", + "slug": "python-267", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2011-06-03T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.6.7/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.6.7 has been replaced by a newer security-fix only source release\n of Python**. Please download `Python 2.6.8 <../2.6.8/>`_ instead.\n\n\n **Python 2.6.7** is a security-fix only source release for Python `2.6.6\n <../2.6.6/>`_, fixing several reported security issues. Python 2.6.7 was\n released on June 3, 2011.\n \n The last binary release of Python 2.6 was `2.6.6`_.\n\n\nPython 2.6 is now in security-fix-only mode; no new features are being added,\nand no new bug fix releases are planned. We intend to provide source-only\nsecurity fixes for the Python 2.6 series until October 2013 (five years after\nthe 2.6 final release). For ongoing maintenance releases, please see the\nPython `2.7 <../2.7/>`_ series. The `NEWS file `_ lists every\nchange in each alpha, beta, and release candidate of Python 2.6.\n\n * `What's New in Python 2.6 `_.\n * Report bugs at ``_.\n * Read the `Python license `_.\n * `PEP 361 `_ set out the development schedule for 2.6.\n\nHelp fund Python and its community by `donating to the Python Software Foundation `_.\n\nDownload\n--------\n\nThis is a production release; we currently support these formats:\n\n * `Gzipped source tar ball (2.6.7) `_\n `(sig) `__\n\n * `Bzipped source tar ball (2.6.7) `_\n `(sig) `__\n\nMD5 checksums and sizes of the released files::\n\n af474f85a3af69ea50438a2a48039d7d 13322372 Python-2.6.7.tgz\n d40ef58ed88438a870bbeb0ac5d4217b 11084667 Python-2.6.7.tar.bz2\n\nThe signatures for the source tarballs above were generated with\n`GnuPG `_ using release manager\nBarry Warsaw's\n`public key `_ \nwhich has a key id of A74B06BF. \n\nDocumentation\n-------------\n\nThe documentation has also been updated. You can `browse the HTML on-line\n`_ or `download the HTML\n`_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.6 is now in security-fix-only mode; no new features are being added,\nand no new bug fix releases are planned. We intend to provide source-only\nsecurity fixes for the Python 2.6 series until October 2013 (five years after\nthe 2.6 final release). For ongoing maintenance releases, please see the\nPython 2.7 series. The NEWS file lists every\nchange in each alpha, beta, and release candidate of Python 2.6.

    \n
    \n\n
    \n

    Help fund Python and its community by donating to the Python Software Foundation.

    \n
    \n

    Download

    \n

    This is a production release; we currently support these formats:

    \n
    \n\n
    \n

    MD5 checksums and sizes of the released files:

    \n
    \naf474f85a3af69ea50438a2a48039d7d  13322372  Python-2.6.7.tgz\nd40ef58ed88438a870bbeb0ac5d4217b  11084667  Python-2.6.7.tar.bz2\n
    \n

    The signatures for the source tarballs above were generated with\nGnuPG using release manager\nBarry Warsaw's\npublic key\nwhich has a key id of A74B06BF.

    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated. You can browse the HTML on-line or download the HTML.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 172, + "fields": { + "created": "2014-03-20T22:38:29.213Z", + "updated": "2014-06-10T03:41:35.287Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.5.4", + "slug": "python-254", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2008-12-23T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.5.4/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n We are pleased to announce the release of \n **Python 2.5.4 (final)**, a \n bugfix release of Python 2.5, on December 23rd, 2008.\n\n **Python 2.5.4 has been replaced by a newer bugfix release of\n Python**. Please download `Python 2.5.6 <../2.5.6/>`__ instead,\n unless you need to use the Windows and OS X binaries provided here.\n\nThis is the last bugfix release of Python 2.5. Future releases of\nPython 2.5 will only contain security patches; no new features are\nbeing added, and no \"regular\" bugs will be fixed anymore. According to\nthe release notes, about 80 bugs and patches have been addressed since\nPython 2.5.2, many of them improving the stability of the interpreter,\nand improving its portability. Python 2.5.3 unfortunately contained an\nincorrect patch that could cause interpreter crashes; the only change\nin Python 2.5.4 relative to 2.5.4 is the reversal of this patch.\nFuture releases will only address security isses, and no binaries or\ndocumentation updates will be provided in future releases of Python\n2.5.\n\nIf you want the latest production version of Python, use\n`Python 2.7.2 <../2.7.2/>`_ or later.\n\nSee the `detailed release notes `_ for more details.\n\nFor more information on the new features of `Python 2.5 <../2.5/>`_ see the \n`2.5 highlights <../2.5/highlights>`_ or consult Andrew Kuchling's \n`What's New In Python `_\nfor a more detailed view.\n\nPlease see the separate `bugs page `_ for known issues and the bug \nreporting procedure.\n\nSee also the `license `_.\n\nDownload the release\n--------------------\n\nWindows\n=======\n\nFor x86 processors: `python-2.5.4.msi `_ \n\nFor Win64-Itanium users: `python-2.5.4.ia64.msi `_ \n\nFor Win64-AMD64 users: `python-2.5.4.amd64.msi `_ \n\nThis installer allows for `automated installation\n`_ and `many other new features\n`_.\n\nTo use these installers, the Windows system must support Microsoft\nInstaller 2.0. Just save the installer file to your local machine and \nthen run it to find out if your machine supports\nMSI. \n\nWindows XP and later already have MSI; many older machines will\nalready have MSI installed.\n\nIf your machine lacks Microsoft Installer, you'll have to download it\nfreely from Microsoft for `Windows 95, 98 and Me\n`_\nand for `Windows NT 4.0 and 2000\n`_.\n\nWindows users may also be interested in Mark Hammond's \n`pywin32 `_ package,\navailable from \n`Sourceforge `_.\npywin32 adds a number of Windows-specific extensions to Python, including COM support and the Pythonwin IDE.\n\n\nMacOS X\n=======\n\nFor MacOS X 10.3 and later: `python-2.5.4-macosx.dmg `_. This is a Universal installer.\n\nThe Universal OS X image contains an installer for python \n2.5.4 that works on Mac OS X 10.3.9 and later, on both PPC and Intel \nMacs. The compiled libraries include both bsddb and readline.\n\n\nOther platforms\n===============\n\ngzip-compressed source code: `Python-2.5.4.tgz `_\n\nbzip2-compressed source code: `Python-2.5.4.tar.bz2 `_,\nthe source archive. \n\nThe bzip2-compressed version is considerably smaller, so get that one if\nyour system has the `appropriate tools `_ to deal \nwith it. \n\nUnpack the archive with ``tar -zxvf Python-2.5.4.tgz`` (or \n``bzcat Python-2.5.4.tar.bz2 | tar -xf -``). \nChange to the Python-2.5.4 directory and run the \"./configure\", \"make\", \n\"make install\" commands to compile and install Python. The source archive \nis also suitable for Windows users who feel the need to build their \nown version.\n\n\nWhat's New?\n-----------\n\n* See the `highlights <../2.5/highlights>`_ of the Python 2.5 release.\n\n* Andrew Kuchling's \n `What's New in Python 2.5 `_\n describes the most visible changes since `Python 2.4 <../2.4/>`_ in \n more detail.\n\n* A detailed list of the changes in 2.5.4 can be found in \n the `release notes `_, or the ``Misc/NEWS`` file in the \n source distribution.\n\n* For the full list of changes, you can poke around in \n `Subversion `_.\n\nDocumentation\n-------------\n\nThe documentation has also been updated:\n\n* `Browse HTML on-line `_\n\n.. * Download using `HTTP `_.\n\n.. * Documentation is available in Windows Help (.chm) format - `Python25.chm `_.\n\n\nFiles, `MD5 `_ checksums, signatures and sizes\n---------------------------------------------------------\n\n ``ad47b23778f64edadaaa8b5534986eed`` `Python-2.5.4.tgz `_\n (11604497 bytes, `signature `__)\n\n ``394a5f56a5ce811fb0f023197ec0833e`` `Python-2.5.4.tar.bz2 `_\n (9821313 bytes, `signature `__)\n\n ``b4bbaf5a24f7f0f5389706d768b4d210`` `python-2.5.4.msi `_\n (11323392 bytes, `signature `__)\n\n ``b1e1e2a43324b0b6ddaff101ecbd8913`` `python-2.5.4.amd64.msi `_\n (11340800 bytes, `signature `__)\n\n ``1acf900a3daf3f99d1a5511c2df98853`` `python-2.5.4.ia64.msi `_\n (13567488 bytes, `signature `__)\n\n ``d8bd62fd175f5f9e9f4573e31096747e`` `python-2.5.4-macosx.dmg `_\n (19277129 bytes, `signature `__)\n\n ``46d82531cfb9384d19d1bb4c9bbcfbab`` `Python25.chm `_\n (4182312 bytes, `signature `__)\n\n\nThe signatures above were generated with\n`GnuPG `_ using release manager\nMartin v. L\u00f6wis's\n`public key `_ \nwhich has a key id of 7D9DC8D2.\n\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    This is the last bugfix release of Python 2.5. Future releases of\nPython 2.5 will only contain security patches; no new features are\nbeing added, and no "regular" bugs will be fixed anymore. According to\nthe release notes, about 80 bugs and patches have been addressed since\nPython 2.5.2, many of them improving the stability of the interpreter,\nand improving its portability. Python 2.5.3 unfortunately contained an\nincorrect patch that could cause interpreter crashes; the only change\nin Python 2.5.4 relative to 2.5.4 is the reversal of this patch.\nFuture releases will only address security isses, and no binaries or\ndocumentation updates will be provided in future releases of Python\n2.5.

    \n

    If you want the latest production version of Python, use\nPython 2.7.2 or later.

    \n

    See the detailed release notes for more details.

    \n

    For more information on the new features of Python 2.5 see the\n2.5 highlights or consult Andrew Kuchling's\nWhat's New In Python\nfor a more detailed view.

    \n

    Please see the separate bugs page for known issues and the bug\nreporting procedure.

    \n

    See also the license.

    \n
    \n

    Download the release

    \n
    \n

    Windows

    \n

    For x86 processors: python-2.5.4.msi

    \n

    For Win64-Itanium users: python-2.5.4.ia64.msi

    \n

    For Win64-AMD64 users: python-2.5.4.amd64.msi

    \n

    This installer allows for automated installation and many other new features.

    \n

    To use these installers, the Windows system must support Microsoft\nInstaller 2.0. Just save the installer file to your local machine and\nthen run it to find out if your machine supports\nMSI.

    \n

    Windows XP and later already have MSI; many older machines will\nalready have MSI installed.

    \n

    If your machine lacks Microsoft Installer, you'll have to download it\nfreely from Microsoft for Windows 95, 98 and Me\nand for Windows NT 4.0 and 2000.

    \n

    Windows users may also be interested in Mark Hammond's\npywin32 package,\navailable from\nSourceforge.\npywin32 adds a number of Windows-specific extensions to Python, including COM support and the Pythonwin IDE.

    \n
    \n
    \n

    MacOS X

    \n

    For MacOS X 10.3 and later: python-2.5.4-macosx.dmg. This is a Universal installer.

    \n

    The Universal OS X image contains an installer for python\n2.5.4 that works on Mac OS X 10.3.9 and later, on both PPC and Intel\nMacs. The compiled libraries include both bsddb and readline.

    \n
    \n
    \n

    Other platforms

    \n

    gzip-compressed source code: Python-2.5.4.tgz

    \n

    bzip2-compressed source code: Python-2.5.4.tar.bz2,\nthe source archive.

    \n

    The bzip2-compressed version is considerably smaller, so get that one if\nyour system has the appropriate tools to deal\nwith it.

    \n

    Unpack the archive with tar -zxvf Python-2.5.4.tgz (or\nbzcat Python-2.5.4.tar.bz2 | tar -xf -).\nChange to the Python-2.5.4 directory and run the "./configure", "make",\n"make install" commands to compile and install Python. The source archive\nis also suitable for Windows users who feel the need to build their\nown version.

    \n
    \n
    \n
    \n

    What's New?

    \n
      \n
    • See the highlights of the Python 2.5 release.
    • \n
    • Andrew Kuchling's\nWhat's New in Python 2.5\ndescribes the most visible changes since Python 2.4 in\nmore detail.
    • \n
    • A detailed list of the changes in 2.5.4 can be found in\nthe release notes, or the Misc/NEWS file in the\nsource distribution.
    • \n
    • For the full list of changes, you can poke around in\nSubversion.
    • \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated:

    \n\n\n\n
    \n
    \n

    Files, MD5 checksums, signatures and sizes

    \n
    \n

    ad47b23778f64edadaaa8b5534986eed Python-2.5.4.tgz\n(11604497 bytes, signature)

    \n

    394a5f56a5ce811fb0f023197ec0833e Python-2.5.4.tar.bz2\n(9821313 bytes, signature)

    \n

    b4bbaf5a24f7f0f5389706d768b4d210 python-2.5.4.msi\n(11323392 bytes, signature)

    \n

    b1e1e2a43324b0b6ddaff101ecbd8913 python-2.5.4.amd64.msi\n(11340800 bytes, signature)

    \n

    1acf900a3daf3f99d1a5511c2df98853 python-2.5.4.ia64.msi\n(13567488 bytes, signature)

    \n

    d8bd62fd175f5f9e9f4573e31096747e python-2.5.4-macosx.dmg\n(19277129 bytes, signature)

    \n

    46d82531cfb9384d19d1bb4c9bbcfbab Python25.chm\n(4182312 bytes, signature)

    \n
    \n

    The signatures above were generated with\nGnuPG using release manager\nMartin v. L\u00f6wis's\npublic key\nwhich has a key id of 7D9DC8D2.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 173, + "fields": { + "created": "2014-03-20T22:38:33.509Z", + "updated": "2017-07-18T23:09:51.015Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.4.2", + "slug": "python-242", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2005-09-27T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.4.2/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.4.2 has been replaced by a newer bugfix\n release of Python.** Please see the `releases page <../>`_ to select a more\n recent release.\n\nWe are pleased to announce the release of **Python 2.4.2 (final)**, a \nbugfix release, on September 28, 2005. \n\n **Important:** This release is vulnerable to the problem described in\n `security advisory PSF-2006-001 `_\n \"Buffer overrun in repr() of unicode strings in wide unicode\n builds (UCS-4)\". This fix is included in `Python 2.4.4 <../2.4.4/>`_\n\nPython 2.4 is now in bugfix-only mode, no new features are being added. More than 60 \nbugs have been squashed since Python 2.4.1, including bugs that prevented\nPython working properly on 64 bit AIX and HP/UX. See the \n`detailed release notes `_ for more, \n\nFor more information on the new features of \n`Python 2.4 <../2.4/>`_ see the \n`2.4 highlights <../2.4/highlights>`_ or consult Andrew \nKuchling's `What's New In Python `_\nfor a more detailed view.\n\nPlease see the separate `bugs page `_ for known\nissues and the bug reporting procedure.\n\nSee also the `license `_\n\nDownload the release\n--------------------\n\nStarting with the Python 2.4 releases the **Windows** Python \ninstaller is being distributed as a Microsoft Installer (.msi) file. \nTo use this, the Windows system must support Microsoft Installer\n2.0. Just save the installer file \n`Python-2.4.2.msi `_ \nto your local machine, then double-click python-2.4.2.msi to find \nout if your machine supports MSI. If it doesn't, you'll need to \ninstall Microsoft Installer first. Many other packages (such as \nWord and Office) also include MSI, so you \nmay already have it on your system. If not, you can download it freely\nfrom Microsoft for `Windows 95, 98 and Me `_\nand for `Windows NT 4.0 and 2000 `_.\nWindows XP and later already have MSI; many older machines will already have MSI installed. \n\nThe new format installer allows for `automated installation `_ \nand `many other shiny new features `_.\nThere is also a separate installer \n`Python-2.4.2.ia64.msi `_ \nfor Win64-Itanium users.\n\nWindows users may also be\ninterested in Mark Hammond's `pywin32 `_ package,\navailable from `Sourceforge `_.\npywin32 adds a number of Windows-specific extensions to Python, including COM support and the Pythonwin IDE.\n\nRPMs for Fedora Core 3 (and similar) are available, see \n`the 2.4.2 RPMs page `_\n\n.. Bob Ippolito has created an installer for Mac OS X 10.3 and\n.. later - you can fetch this from `his site `_, or directly from `here `_.\n\n**All others** should download either \n`python-2.4.2.tgz `_ or\n`python-2.4.2.tar.bz2 `_,\nthe source archive. The tar.bz2 is considerably smaller, so get that one if\nyour system has the `appropriate tools `_ to deal with it. Unpack it with \n``tar -zxvf Python-2.4.2.tgz`` (or \n``bzcat Python-2.4.2.tar.bz2 | tar -xf -``). \nChange to the Python-2.4.2 directory\nand run the \"./configure\", \"make\", \"make install\" commands to compile \nand install Python. The source archive is also suitable for Windows users\nwho feel the need to build their own version.\n\nWhat's New?\n-----------\n\n* See the `highlights <../2.4/highlights>`_ of the Python 2.4 release.\n\n* Andrew Kuchling's `What's New in Python 2.4 `_\n describes the most visible changes since `Python 2.3 <../2.3/>`_ in more detail.\n\n* A detailed list of the changes in 2.4.2 can be found in the `release notes `_,\n or the ``Misc/NEWS`` file in the source distribution.\n\n* For the full list of changes, you can poke around in `CVS `_.\n\nDocumentation\n-------------\n\nThe documentation has also been updated:\n\n* `Browse HTML on-line `_\n\n* Download using `HTTP `_.\n\n* Documentation is available in Windows Help (.chm) format - `python24.chm `_.\n\n\nFiles, `MD5 `_ checksums, signatures and sizes\n---------------------------------------------------------\n\n\t``07cfc759546f6723bb367be5b1ce9875`` `Python-2.4.2.tgz `_ \n (9239975 bytes, `signature `__)\n\n\t``98db1465629693fc434d4dc52db93838`` `Python-2.4.2.tar.bz2 `_ \n (7853169 bytes, `signature `__)\n\n\t``bfb6fc0704d225c7a86d4ba8c922c7f5`` `python-2.4.2.msi `_\n (9671168 bytes, `signature `__)\n\n\t``f9a189a11316dc523732b38334c9dd7b`` `python-2.4.2.ia64.msi `_ \n (8110080 bytes, `signature `__)\n\n\t``XXXXX575a2c5d6ab24be10c38154551a`` `MacPython-OSX-2.4.2-1.dmg `_ \n (7918391 bytes, `signature `__)\n\nThe signatures above were generated with\n`GnuPG `_ using release manager\nAnthony Baxter's\n`public key `_ \nwhich has a key id of 6A45C816.\n\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    We are pleased to announce the release of Python 2.4.2 (final), a\nbugfix release, on September 28, 2005.

    \n
    \nImportant: This release is vulnerable to the problem described in\nsecurity advisory PSF-2006-001\n"Buffer overrun in repr() of unicode strings in wide unicode\nbuilds (UCS-4)". This fix is included in Python 2.4.4
    \n

    Python 2.4 is now in bugfix-only mode, no new features are being added. More than 60\nbugs have been squashed since Python 2.4.1, including bugs that prevented\nPython working properly on 64 bit AIX and HP/UX. See the\ndetailed release notes for more,

    \n

    For more information on the new features of\nPython 2.4 see the\n2.4 highlights or consult Andrew\nKuchling's What's New In Python\nfor a more detailed view.

    \n

    Please see the separate bugs page for known\nissues and the bug reporting procedure.

    \n

    See also the license

    \n
    \n

    Download the release

    \n

    Starting with the Python 2.4 releases the Windows Python\ninstaller is being distributed as a Microsoft Installer (.msi) file.\nTo use this, the Windows system must support Microsoft Installer\n2.0. Just save the installer file\nPython-2.4.2.msi\nto your local machine, then double-click python-2.4.2.msi to find\nout if your machine supports MSI. If it doesn't, you'll need to\ninstall Microsoft Installer first. Many other packages (such as\nWord and Office) also include MSI, so you\nmay already have it on your system. If not, you can download it freely\nfrom Microsoft for Windows 95, 98 and Me\nand for Windows NT 4.0 and 2000.\nWindows XP and later already have MSI; many older machines will already have MSI installed.

    \n

    The new format installer allows for automated installation\nand many other shiny new features.\nThere is also a separate installer\nPython-2.4.2.ia64.msi\nfor Win64-Itanium users.

    \n

    Windows users may also be\ninterested in Mark Hammond's pywin32 package,\navailable from Sourceforge.\npywin32 adds a number of Windows-specific extensions to Python, including COM support and the Pythonwin IDE.

    \n

    RPMs for Fedora Core 3 (and similar) are available, see\nthe 2.4.2 RPMs page

    \n\n\n

    All others should download either\npython-2.4.2.tgz or\npython-2.4.2.tar.bz2,\nthe source archive. The tar.bz2 is considerably smaller, so get that one if\nyour system has the appropriate tools to deal with it. Unpack it with\ntar -zxvf Python-2.4.2.tgz (or\nbzcat Python-2.4.2.tar.bz2 | tar -xf -).\nChange to the Python-2.4.2 directory\nand run the "./configure", "make", "make install" commands to compile\nand install Python. The source archive is also suitable for Windows users\nwho feel the need to build their own version.

    \n
    \n
    \n

    What's New?

    \n
      \n
    • See the highlights of the Python 2.4 release.
    • \n
    • Andrew Kuchling's What's New in Python 2.4\ndescribes the most visible changes since Python 2.3 in more detail.
    • \n
    • A detailed list of the changes in 2.4.2 can be found in the release notes,\nor the Misc/NEWS file in the source distribution.
    • \n
    • For the full list of changes, you can poke around in CVS.
    • \n
    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated:

    \n\n
    \n
    \n

    Files, MD5 checksums, signatures and sizes

    \n
    \n

    07cfc759546f6723bb367be5b1ce9875 Python-2.4.2.tgz\n(9239975 bytes, signature)

    \n

    98db1465629693fc434d4dc52db93838 Python-2.4.2.tar.bz2\n(7853169 bytes, signature)

    \n

    bfb6fc0704d225c7a86d4ba8c922c7f5 python-2.4.2.msi\n(9671168 bytes, signature)

    \n

    f9a189a11316dc523732b38334c9dd7b python-2.4.2.ia64.msi\n(8110080 bytes, signature)

    \n

    XXXXX575a2c5d6ab24be10c38154551a MacPython-OSX-2.4.2-1.dmg\n(7918391 bytes, signature)

    \n
    \n

    The signatures above were generated with\nGnuPG using release manager\nAnthony Baxter's\npublic key\nwhich has a key id of 6A45C816.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 174, + "fields": { + "created": "2014-03-20T22:38:36.788Z", + "updated": "2014-06-10T03:41:41.164Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.0", + "slug": "python-270", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2010-07-03T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.7/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nNote: A bugfix release, 2.7.13, is currently `available `__. Its use is recommended.\n\nPython 2.7.0 was released on July 3rd, 2010.\n\nPython 2.7 is scheduled to be the last major version in the 2.x series before it\nmoves into an extended maintenance period. This release contains many of the\nfeatures that were first released in Python 3.1. Improvements in this release\ninclude:\n\n- An ordered dictionary type\n- New unittest features including test skipping, new assert methods, and test\n discovery\n- A much faster io module\n- Automatic numbering of fields in the str.format() method\n- Float repr improvements backported from 3.x\n- Tile support for Tkinter\n- A backport of the memoryview object from 3.x\n- Set literals\n- Set and dictionary comprehensions\n- Dictionary views\n- New syntax for nested with statements\n- The sysconfig module\n\nSee these resources for further information:\n\n* `What's new in 2.7? `_\n* `Change log for this release `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\n\nDownload\n--------\n\nThis is a production release. Please `report any bugs\n`_ you encounter.\n\nWe currently support these formats for download:\n\n* `Gzipped source tar ball (2.7.0) `_ `(sig)\n `__\n\n* `Bzipped source tar ball (2.7.0) `_\n `(sig) `__\n\n* `Windows x86 MSI Installer (2.7.0) `_ `(sig)\n `__\n\n* `Windows X86-64 MSI Installer (2.7.0) `_\n [1]_ `(sig) `_\n\n* `Mac Installer disk image (2.7.0) for OS X 10.5 and later `__ `(sig) `__. It contains code for PPC, i386, and x86-64.\n\n* `32-bit Mac Installer disk image (2.7.0) for OS X 10.3 and later `__ `(sig) `__.\n\n* `Windows help file `_\n `(sig) `__\n\nThe source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installer was signed\nby Martin von L\u00f6wis' public key, which has a key id of 7D9DC8D2. The Mac\ninstallers were signed with Ronald Oussoren's key, which has a key id of\nE6DF025C. The public keys are located on the `download page\n`_.\n\nMD5 checksums and sizes of the released files::\n\n 35f56b092ecf39a6bd59d64f142aae0f 14026384 Python-2.7.tgz\n 0e8c9ec32abf5b732bea7d91b38c3339 11735195 Python-2.7.tar.bz2\n bd0dc174cbefbc37064ea81db1f669b7 16247296 python-2.7.amd64.msi\n 1719febcbc0e0af3a6d3a47ba5fbf851 15913472 python-2.7.msi\n 759077d3763134b3272f0e04ea082bd9 21420655 python-2.7-macosx10.3.dmg\n bb3d6f1e300da7fbc2730f1af9317d99 21509961 python-2.7-macosx10.5.dmg\n 575156d33dc71b6581865a374f5c7ad2 5754439 python27.chm\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: A bugfix release, 2.7.13, is currently available. Its use is recommended.

    \n

    Python 2.7.0 was released on July 3rd, 2010.

    \n

    Python 2.7 is scheduled to be the last major version in the 2.x series before it\nmoves into an extended maintenance period. This release contains many of the\nfeatures that were first released in Python 3.1. Improvements in this release\ninclude:

    \n
      \n
    • An ordered dictionary type
    • \n
    • New unittest features including test skipping, new assert methods, and test\ndiscovery
    • \n
    • A much faster io module
    • \n
    • Automatic numbering of fields in the str.format() method
    • \n
    • Float repr improvements backported from 3.x
    • \n
    • Tile support for Tkinter
    • \n
    • A backport of the memoryview object from 3.x
    • \n
    • Set literals
    • \n
    • Set and dictionary comprehensions
    • \n
    • Dictionary views
    • \n
    • New syntax for nested with statements
    • \n
    • The sysconfig module
    • \n
    \n

    See these resources for further information:

    \n\n
    \n

    Download

    \n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n

    The source tarballs are signed with Benjamin Peterson's key (fingerprint: 12EF\n3DC3 8047 DA38 2D18 A5B9 99CD EA9D A413 5B38). The Windows installer was signed\nby Martin von L\u00f6wis' public key, which has a key id of 7D9DC8D2. The Mac\ninstallers were signed with Ronald Oussoren's key, which has a key id of\nE6DF025C. The public keys are located on the download page.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \n35f56b092ecf39a6bd59d64f142aae0f  14026384  Python-2.7.tgz\n0e8c9ec32abf5b732bea7d91b38c3339  11735195  Python-2.7.tar.bz2\nbd0dc174cbefbc37064ea81db1f669b7  16247296  python-2.7.amd64.msi\n1719febcbc0e0af3a6d3a47ba5fbf851  15913472  python-2.7.msi\n759077d3763134b3272f0e04ea082bd9  21420655  python-2.7-macosx10.3.dmg\nbb3d6f1e300da7fbc2730f1af9317d99  21509961  python-2.7-macosx10.5.dmg\n575156d33dc71b6581865a374f5c7ad2   5754439  python27.chm\n
    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 175, + "fields": { + "created": "2014-03-20T22:38:40.442Z", + "updated": "2014-06-10T03:41:38.214Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.6.4", + "slug": "python-264", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2009-10-26T00:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.6.4/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\n **Python 2.6.4 has been replaced by a newer bugfix release of Python**.\n Please download `Python 2.6.6 <../2.6.6/>`__ instead.\n\nPython 2.6.4 was a critical bug fix for Python `2.6.3 <../2.6.3/>`_, which had\nregressions in the logging package and in setuptools compatibility. Python\n2.6.4 was released on 25-Oct-2009.\n\nPython 2.6 is now in bugfix-only mode; no new features are being\nadded. The `NEWS file `_ lists every change in each alpha,\nbeta, and release candidate of Python 2.6.\n\n * `What's New in Python 2.6 `_.\n * Report bugs at ``_.\n * Read the `Python license `_.\n * `PEP 361 `_ set out the development schedule for 2.6.\n\nHelp fund Python and its community by `donating to the Python Software Foundation `_.\n\nDownload\n--------\n\nThis is a release candidate; we currently support these formats:\n\n * `Gzipped source tar ball (2.6.4) `_\n `(sig) `__\n\n * `Bzipped source tar ball (2.6.4) `_\n `(sig) `__\n\n * `Windows x86 MSI Installer (2.6.4) `_\n `(sig) `__\n\n * `Windows X86-64 MSI Installer (2.6.4)\n `_ [1]_\n `(sig) `__\n\n * `Mac Installer disk image (2.6.4)\n `_ `(sig)\n `__\n\n\nMD5 checksums and sizes of the released files::\n\n 17dcac33e4f3adb69a57c2607b6de246 13322131 Python-2.6.4.tgz\n fee5408634a54e721a93531aba37f8c1 11249486 Python-2.6.4.tar.bz2\n d6c51dfa162bbecc22cfcf11544243f7 15223296 python-2.6.4.amd64.msi\n 2e2b60ae73e9e99cd343a3fe9ed6e770 14890496 python-2.6.4.msi\n 252c4d06cb84132c42d00fae93ee8ceb 20347856 python-2.6.4_macosx10.3.dmg\n\n\nThe signatures for the source tarballs above were generated with\n`GnuPG `_ using release manager\nBarry Warsaw's\n`public key `_ \nwhich has a key id of A74B06BF. \nThe Windows installers were signed by Martin von L\u00f6wis'\n`public key `_ \nwhich has a key id of 7D9DC8D2.\nThe Mac disk image was signed by \nRonald Oussoren's public key which has a key id of E6DF025C.\n\nDocumentation\n-------------\n\nThe documentation has also been updated. You can `browse the HTML on-line\n`_ or `download the HTML\n`_.\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Python 2.6.4 was a critical bug fix for Python 2.6.3, which had\nregressions in the logging package and in setuptools compatibility. Python\n2.6.4 was released on 25-Oct-2009.

    \n

    Python 2.6 is now in bugfix-only mode; no new features are being\nadded. The NEWS file lists every change in each alpha,\nbeta, and release candidate of Python 2.6.

    \n
    \n\n
    \n

    Help fund Python and its community by donating to the Python Software Foundation.

    \n
    \n

    Download

    \n

    This is a release candidate; we currently support these formats:

    \n
    \n\n
    \n

    MD5 checksums and sizes of the released files:

    \n
    \n17dcac33e4f3adb69a57c2607b6de246  13322131  Python-2.6.4.tgz\nfee5408634a54e721a93531aba37f8c1  11249486  Python-2.6.4.tar.bz2\nd6c51dfa162bbecc22cfcf11544243f7  15223296  python-2.6.4.amd64.msi\n2e2b60ae73e9e99cd343a3fe9ed6e770  14890496  python-2.6.4.msi\n252c4d06cb84132c42d00fae93ee8ceb  20347856  python-2.6.4_macosx10.3.dmg\n
    \n

    The signatures for the source tarballs above were generated with\nGnuPG using release manager\nBarry Warsaw's\npublic key\nwhich has a key id of A74B06BF.\nThe Windows installers were signed by Martin von L\u00f6wis'\npublic key\nwhich has a key id of 7D9DC8D2.\nThe Mac disk image was signed by\nRonald Oussoren's public key which has a key id of E6DF025C.

    \n
    \n
    \n

    Documentation

    \n

    The documentation has also been updated. You can browse the HTML on-line or download the HTML.

    \n\n\n\n\n\n
    [1]The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 176, + "fields": { + "created": "2014-05-05T10:44:20.731Z", + "updated": "2020-10-22T16:44:31.624Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.1rc1", + "slug": "python-341rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2014-05-05T10:34:44Z", + "release_page": null, + "release_notes_url": "", + "content": ".. Migrated from Release.release_page field.\r\n\r\nPython 3.4.1rc1\r\n-----------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.1 was released on May 18th, 2014.\r\n\r\nPython 3.4.1 has over three hundred bugfixes and other improvements over 3.4.0. One notable change: the version of OpenSSL bundled with the Windows installer no longer has the `\"HeartBleed\" `_ vulnerability.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nDownload\r\n--------\r\n\r\nPlease proceed to the `download page `__ for the download.\r\n\r\nNotes on this release:\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n
    \n

    Python 3.4.1rc1

    \n

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.1 was released on May 18th, 2014.

    \n

    Python 3.4.1 has over three hundred bugfixes and other improvements over 3.4.0. One notable change: the version of OpenSSL bundled with the Windows installer no longer has the "HeartBleed" vulnerability.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n
    \n
    \n

    Download

    \n

    Please proceed to the download page for the download.

    \n

    Notes on this release:

    \n\n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 177, + "fields": { + "created": "2014-05-18T01:08:19.384Z", + "updated": "2014-06-01T20:07:33.346Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.7rc1", + "slug": "python-277rc1", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2014-05-17T19:00:00Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/e32e3a9f3902/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nNote: Python 2.7.7 has been superseded by `Python 2.7.8 `_\n\nPython 2.7.7 was released on May 31, 2014. This is a regularly scheduled 2.7\nseries bugfix and includes `numerous bugfixes\n`_ over 2.7.6.\n\nDownload\n^^^^^^^^\n\nThis is a production release. Please `report any bugs\n`_ you encounter.\n\nWe currently support these formats for download:\n\n* `Windows x86 MSI Installer (2.7.7) `__\n\n* `Windows x86 MSI program database (2.7.7) `__ \n\n* `Windows X86-64 MSI Installer (2.7.7)\n `__ [1]_ \n\n* `Windows X86-64 MSI program database (2.7.7) `__ [1]_ \n\n* `Windows help file `_\n\n* `Mac OS X 64-bit/32-bit x86-64/i386 Installer (2.7.7) for Mac OS X\n 10.6 and later `__ [2]_\n `(sig) `__. [You may need an\n updated Tcl/Tk install to run IDLE or use Tkinter, see note 2 for instructions.]\n\n* `Mac OS X 32-bit i386/PPC Installer (2.7.7) for Mac OS X 10.5 and\n later `__ [2]_ `(sig)\n `__.\n\n* `Mac OS X 32-bit i386/PPC Installer (2.7.7) for Mac OS X 10.3 and\n later (deprecated, see below) `__ [2]_ \n `(sig) `__.\n\n* `XZ compressed source tar ball (2.7.7) `__\n `(sig) `__\n\n* `Gzipped source tar ball (2.7.7) `__\n `(sig) `__\n\nThe source tarballs are signed with Benjamin Peterson's key, which has key id\n18ADD4FF. The Mac installers were signed with Ned Deily's\nkey, which has a key id of 6F5E1540. The public keys are located on the\n`download page `_.\n\nMD5 checksums and sizes of the released files::\n\n 35ff484a9cf08d155e64dc0fb4965f90 16674816 python-2.7.7.msi\n 497e749747ebd31e40b06bffdfebb2ee 17199104 python-2.7.7.amd64.msi\n 4dd516ec405d3378dc37804e0223a95a 23643202 python-2.7.7.amd64-pdb.zip\n 6df424e541a37e2dc0d2946f66e87678 25297986 python-2.7.7-pdb.zip\n 0b7bd740a41edda10cfe403fa8a00ca3 6049272 python277.chm\n 79c57d065a49fd17eea53761f402229d 20731709 python-2.7.7-macosx10.3.dmg\n 1cdd1596652baea9cb4777d06573d467 473 python-2.7.7-macosx10.3.dmg.asc\n 73aa1007f721bcb4addf3255cc9c9494 20444003 python-2.7.7-macosx10.5.dmg\n fee877c55e11f0def1fc6806c49a62e7 473 python-2.7.7-macosx10.5.dmg.asc\n 7f79090c979299e3f5e918e150a75c83 20330236 python-2.7.7-macosx10.6.dmg\n 999182107aa59d788c5e535ae2052e18 473 python-2.7.7-macosx10.6.dmg.asc\n cf842800b67841d64e7fb3cd8acb5663 14809415 Python-2.7.7.tgz\n 41f7348b348e3f72fcfb4f4d76701352 10496500 Python-2.7.7.tar.xz\n\nResources\n^^^^^^^^^\n\n* `What's new in 2.7? `_\n* `Complete change log for this release `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\n\nAbout the 2.7 release series\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nAmong the features and improvements to Python 2.6 introduced in the 2.7 series\nare\n\n- An ordered dictionary type\n- New unittest features including test skipping, new assert methods, and test\n discovery\n- A much faster io module\n- Automatic numbering of fields in the str.format() method\n- Float repr improvements backported from 3.x\n- Tile support for Tkinter\n- A backport of the memoryview object from 3.x\n- Set literals\n- Set and dictionary comprehensions\n- Dictionary views\n- New syntax for nested with statements\n- The sysconfig module\n\nBinary installer support for OS X 10.4 and 10.3.9 to be discontinued\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPython 2.7.7 is the last release for which binary installers will be\nreleased on python.org that support Mac OS X 10.3.9 (Panther) and 10.4.x\n(Tiger) systems. For Python 2.7.7 only, we are providing three OS X\nbinary installers: the unchanged 10.6+ 64-bit/32-bit format, the deprecated 10.3+ 32-bit-only format,\nand the newer 10.5+ 32-bit-only format.\nSee the README included with the installer downloads for more information.\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: Python 2.7.7 has been superseded by Python 2.7.8

    \n

    Python 2.7.7 was released on May 31, 2014. This is a regularly scheduled 2.7\nseries bugfix and includes numerous bugfixes over 2.7.6.

    \n
    \n

    Download

    \n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n

    The source tarballs are signed with Benjamin Peterson's key, which has key id\n18ADD4FF. The Mac installers were signed with Ned Deily's\nkey, which has a key id of 6F5E1540. The public keys are located on the\ndownload page.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \n35ff484a9cf08d155e64dc0fb4965f90  16674816  python-2.7.7.msi\n497e749747ebd31e40b06bffdfebb2ee  17199104  python-2.7.7.amd64.msi\n4dd516ec405d3378dc37804e0223a95a  23643202  python-2.7.7.amd64-pdb.zip\n6df424e541a37e2dc0d2946f66e87678  25297986  python-2.7.7-pdb.zip\n0b7bd740a41edda10cfe403fa8a00ca3   6049272  python277.chm\n79c57d065a49fd17eea53761f402229d  20731709  python-2.7.7-macosx10.3.dmg\n1cdd1596652baea9cb4777d06573d467       473  python-2.7.7-macosx10.3.dmg.asc\n73aa1007f721bcb4addf3255cc9c9494  20444003  python-2.7.7-macosx10.5.dmg\nfee877c55e11f0def1fc6806c49a62e7       473  python-2.7.7-macosx10.5.dmg.asc\n7f79090c979299e3f5e918e150a75c83  20330236  python-2.7.7-macosx10.6.dmg\n999182107aa59d788c5e535ae2052e18       473  python-2.7.7-macosx10.6.dmg.asc\ncf842800b67841d64e7fb3cd8acb5663  14809415  Python-2.7.7.tgz\n41f7348b348e3f72fcfb4f4d76701352  10496500  Python-2.7.7.tar.xz\n
    \n
    \n\n
    \n

    About the 2.7 release series

    \n

    Among the features and improvements to Python 2.6 introduced in the 2.7 series\nare

    \n
      \n
    • An ordered dictionary type
    • \n
    • New unittest features including test skipping, new assert methods, and test\ndiscovery
    • \n
    • A much faster io module
    • \n
    • Automatic numbering of fields in the str.format() method
    • \n
    • Float repr improvements backported from 3.x
    • \n
    • Tile support for Tkinter
    • \n
    • A backport of the memoryview object from 3.x
    • \n
    • Set literals
    • \n
    • Set and dictionary comprehensions
    • \n
    • Dictionary views
    • \n
    • New syntax for nested with statements
    • \n
    • The sysconfig module
    • \n
    \n
    \n
    \n

    Binary installer support for OS X 10.4 and 10.3.9 to be discontinued

    \n

    Python 2.7.7 is the last release for which binary installers will be\nreleased on python.org that support Mac OS X 10.3.9 (Panther) and 10.4.x\n(Tiger) systems. For Python 2.7.7 only, we are providing three OS X\nbinary installers: the unchanged 10.6+ 64-bit/32-bit format, the deprecated 10.3+ 32-bit-only format,\nand the newer 10.5+ 32-bit-only format.\nSee the README included with the installer downloads for more information.

    \n\n\n\n\n\n
    [1](1, 2) The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2, 3) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here.
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 178, + "fields": { + "created": "2014-05-19T05:29:13.867Z", + "updated": "2019-05-08T16:03:28.379Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.1", + "slug": "python-341", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2014-05-19T05:28:37Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-1", + "content": "Python 3.4.1\r\n--------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.1 was released on May 18th, 2014.\r\n\r\nPython 3.4.1 has over three hundred bugfixes and other improvements over 3.4.0. One notable change: the version of OpenSSL bundled with the Windows installer no longer has the `\"HeartBleed\" `_ vulnerability.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nDownload\r\n--------\r\n\r\nNotes on this release:\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.4.1

    \n

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.1 was released on May 18th, 2014.

    \n

    Python 3.4.1 has over three hundred bugfixes and other improvements over 3.4.0. One notable change: the version of OpenSSL bundled with the Windows installer no longer has the "HeartBleed" vulnerability.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n
    \n
    \n

    Download

    \n

    Notes on this release:

    \n\n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 179, + "fields": { + "created": "2014-06-01T20:08:49.024Z", + "updated": "2014-06-10T01:32:04.219Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.7", + "slug": "python-277", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2014-06-01T20:06:46Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.7.7/Misc/NEWS", + "content": ".. Migrated from Release.release_page field.\n\nNote: Python 2.7.7 has been superseded by `Python 2.7.8 `_\n\nPython 2.7.7 was released on May 31, 2014. This is a regularly scheduled 2.7\nseries bugfix and includes `numerous bugfixes\n`_ over 2.7.6.\n\nDownload\n^^^^^^^^\n\nThis is a production release. Please `report any bugs\n`_ you encounter.\n\nWe currently support these formats for download:\n\n* `Windows x86 MSI Installer (2.7.7) `__\n\n* `Windows x86 MSI program database (2.7.7) `__ \n\n* `Windows X86-64 MSI Installer (2.7.7)\n `__ [1]_ \n\n* `Windows X86-64 MSI program database (2.7.7) `__ [1]_ \n\n* `Windows help file `_\n\n* `Mac OS X 64-bit/32-bit x86-64/i386 Installer (2.7.7) for Mac OS X\n 10.6 and later `__ [2]_\n `(sig) `__. [You may need an\n updated Tcl/Tk install to run IDLE or use Tkinter, see note 2 for instructions.]\n\n* `Mac OS X 32-bit i386/PPC Installer (2.7.7) for Mac OS X 10.5 and\n later `__ [2]_ `(sig)\n `__.\n\n* `Mac OS X 32-bit i386/PPC Installer (2.7.7) for Mac OS X 10.3 and\n later (deprecated, see below) `__ [2]_ \n `(sig) `__.\n\n* `XZ compressed source tar ball (2.7.7) `__\n `(sig) `__\n\n* `Gzipped source tar ball (2.7.7) `__\n `(sig) `__\n\nThe source tarballs are signed with Benjamin Peterson's key, which has key id\n18ADD4FF. The Mac installers were signed with Ned Deily's\nkey, which has a key id of 6F5E1540. The public keys are located on the\n`download page `_.\n\nMD5 checksums and sizes of the released files::\n\n 35ff484a9cf08d155e64dc0fb4965f90 16674816 python-2.7.7.msi\n 497e749747ebd31e40b06bffdfebb2ee 17199104 python-2.7.7.amd64.msi\n 4dd516ec405d3378dc37804e0223a95a 23643202 python-2.7.7.amd64-pdb.zip\n 6df424e541a37e2dc0d2946f66e87678 25297986 python-2.7.7-pdb.zip\n 0b7bd740a41edda10cfe403fa8a00ca3 6049272 python277.chm\n 79c57d065a49fd17eea53761f402229d 20731709 python-2.7.7-macosx10.3.dmg\n 1cdd1596652baea9cb4777d06573d467 473 python-2.7.7-macosx10.3.dmg.asc\n 73aa1007f721bcb4addf3255cc9c9494 20444003 python-2.7.7-macosx10.5.dmg\n fee877c55e11f0def1fc6806c49a62e7 473 python-2.7.7-macosx10.5.dmg.asc\n 7f79090c979299e3f5e918e150a75c83 20330236 python-2.7.7-macosx10.6.dmg\n 999182107aa59d788c5e535ae2052e18 473 python-2.7.7-macosx10.6.dmg.asc\n cf842800b67841d64e7fb3cd8acb5663 14809415 Python-2.7.7.tgz\n 41f7348b348e3f72fcfb4f4d76701352 10496500 Python-2.7.7.tar.xz\n\nResources\n^^^^^^^^^\n\n* `What's new in 2.7? `_\n* `Complete change log for this release `_.\n* `Online Documentation `_\n* Report bugs at ``_.\n* `Help fund Python and its community `_.\n\n\nAbout the 2.7 release series\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nAmong the features and improvements to Python 2.6 introduced in the 2.7 series\nare\n\n- An ordered dictionary type\n- New unittest features including test skipping, new assert methods, and test\n discovery\n- A much faster io module\n- Automatic numbering of fields in the str.format() method\n- Float repr improvements backported from 3.x\n- Tile support for Tkinter\n- A backport of the memoryview object from 3.x\n- Set literals\n- Set and dictionary comprehensions\n- Dictionary views\n- New syntax for nested with statements\n- The sysconfig module\n\nBinary installer support for OS X 10.4 and 10.3.9 to be discontinued\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPython 2.7.7 is the last release for which binary installers will be\nreleased on python.org that support Mac OS X 10.3.9 (Panther) and 10.4.x\n(Tiger) systems. For Python 2.7.7 only, we are providing three OS X\nbinary installers: the unchanged 10.6+ 64-bit/32-bit format, the deprecated 10.3+ 32-bit-only format,\nand the newer 10.5+ 32-bit-only format.\nSee the README included with the installer downloads for more information.\n\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).\n\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\n X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "\n

    Note: Python 2.7.7 has been superseded by Python 2.7.8

    \n

    Python 2.7.7 was released on May 31, 2014. This is a regularly scheduled 2.7\nseries bugfix and includes numerous bugfixes over 2.7.6.

    \n
    \n

    Download

    \n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n

    The source tarballs are signed with Benjamin Peterson's key, which has key id\n18ADD4FF. The Mac installers were signed with Ned Deily's\nkey, which has a key id of 6F5E1540. The public keys are located on the\ndownload page.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \n35ff484a9cf08d155e64dc0fb4965f90  16674816  python-2.7.7.msi\n497e749747ebd31e40b06bffdfebb2ee  17199104  python-2.7.7.amd64.msi\n4dd516ec405d3378dc37804e0223a95a  23643202  python-2.7.7.amd64-pdb.zip\n6df424e541a37e2dc0d2946f66e87678  25297986  python-2.7.7-pdb.zip\n0b7bd740a41edda10cfe403fa8a00ca3   6049272  python277.chm\n79c57d065a49fd17eea53761f402229d  20731709  python-2.7.7-macosx10.3.dmg\n1cdd1596652baea9cb4777d06573d467       473  python-2.7.7-macosx10.3.dmg.asc\n73aa1007f721bcb4addf3255cc9c9494  20444003  python-2.7.7-macosx10.5.dmg\nfee877c55e11f0def1fc6806c49a62e7       473  python-2.7.7-macosx10.5.dmg.asc\n7f79090c979299e3f5e918e150a75c83  20330236  python-2.7.7-macosx10.6.dmg\n999182107aa59d788c5e535ae2052e18       473  python-2.7.7-macosx10.6.dmg.asc\ncf842800b67841d64e7fb3cd8acb5663  14809415  Python-2.7.7.tgz\n41f7348b348e3f72fcfb4f4d76701352  10496500  Python-2.7.7.tar.xz\n
    \n
    \n\n
    \n

    About the 2.7 release series

    \n

    Among the features and improvements to Python 2.6 introduced in the 2.7 series\nare

    \n
      \n
    • An ordered dictionary type
    • \n
    • New unittest features including test skipping, new assert methods, and test\ndiscovery
    • \n
    • A much faster io module
    • \n
    • Automatic numbering of fields in the str.format() method
    • \n
    • Float repr improvements backported from 3.x
    • \n
    • Tile support for Tkinter
    • \n
    • A backport of the memoryview object from 3.x
    • \n
    • Set literals
    • \n
    • Set and dictionary comprehensions
    • \n
    • Dictionary views
    • \n
    • New syntax for nested with statements
    • \n
    • The sysconfig module
    • \n
    \n
    \n
    \n

    Binary installer support for OS X 10.4 and 10.3.9 to be discontinued

    \n

    Python 2.7.7 is the last release for which binary installers will be\nreleased on python.org that support Mac OS X 10.3.9 (Panther) and 10.4.x\n(Tiger) systems. For Python 2.7.7 only, we are providing three OS X\nbinary installers: the unchanged 10.6+ 64-bit/32-bit format, the deprecated 10.3+ 32-bit-only format,\nand the newer 10.5+ 32-bit-only format.\nSee the README included with the installer downloads for more information.

    \n\n\n\n\n\n
    [1](1, 2) The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2, 3) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here.
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 180, + "fields": { + "created": "2014-07-02T04:46:40.935Z", + "updated": "2014-09-11T16:06:12.798Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.8", + "slug": "python-278", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2014-07-02T04:42:26Z", + "release_page": null, + "release_notes_url": "http://hg.python.org/cpython/raw-file/v2.7.8/Misc/NEWS", + "content": "Python 2.7.8\r\n------------\r\n\r\nPython 2.7.8 was released on July 1, 2014. This release includes regression and security fixes over 2.7.7 including:\r\n\r\n* The openssl version bundled in the Windows installer has been updated.\r\n\r\n* A `regression in the mimetypes `__ module on Windows has been fixed.\r\n\r\n* A `possible overflow `__ in the buffer type has been fixed.\r\n\r\n* A `bug in the CGIHTTPServer `__ module which allows arbitrary execution of code in the server root has been patched.\r\n\r\n* A `regression in the handling of UNC paths `__ in ``os.path.join`` has been fixed.\r\n\r\nDownload\r\n^^^^^^^^\r\n\r\nThis is a production release. Please `report any bugs\r\n`_ you encounter.\r\n\r\nWe currently support these formats for download:\r\n\r\n* `Windows x86 MSI Installer (2.7.8) `__\r\n\r\n* `Windows x86 MSI program database (2.7.8) `__ \r\n\r\n* `Windows X86-64 MSI Installer (2.7.8)\r\n `__ [1]_ \r\n\r\n* `Windows X86-64 MSI program database (2.7.8) `__ [1]_ \r\n\r\n* `Windows help file `_\r\n\r\n* `Mac OS X 64-bit/32-bit x86-64/i386 Installer (2.7.8) for Mac OS X\r\n 10.6 and later `__ [2]_\r\n `(sig) `__. [You may need an\r\n updated Tcl/Tk install to run IDLE or use Tkinter, see note 2 for instructions.]\r\n\r\n* `Mac OS X 32-bit i386/PPC Installer (2.7.8) for Mac OS X 10.5 and\r\n later `__ [2]_ `(sig)\r\n `__.\r\n\r\n* `Mac OS X 32-bit i386/PPC Installer (2.7.8) for Mac OS X 10.3 and\r\n later (deprecated, see below) `__ [2]_ \r\n `(sig) `__.\r\n\r\n* `XZ compressed source tar ball (2.7.8) `__\r\n `(sig) `__\r\n\r\n* `Gzipped source tar ball (2.7.8) `__\r\n `(sig) `__\r\n\r\nThe source tarballs are signed with Benjamin Peterson's key, which has key id\r\n18ADD4FF. The Mac installers were signed with Ned Deily's\r\nkey, which has a key id of 6F5E1540. The public keys are located on the\r\n`download page `_.\r\n\r\nMD5 checksums and sizes of the released files::\r\n\r\n 38cadfcac6dd56ecf772f2f3f14ee846 17231872 python-2.7.8.amd64.msi\r\n 1d573b6422d4b00aeb39c1ed5aa05d8c 23561282 python-2.7.8.amd64-pdb.zip\r\n ef95d83ace85d1577b915dbd481977d4 16703488 python-2.7.8.msi\r\n 83c1b28264ca8eb1ea97100065988192 25355330 python-2.7.8-pdb.zip\r\n 1cda33c3546f20b484869bed243d8726 6062806 python278.chm\r\n 56f664f1813852585fc0bd28f5d71147 20772301 python-2.7.8-macosx10.3.dmg\r\n b5d6b720d436b8305263612fd7d36642 473 python-2.7.8-macosx10.3.dmg.asc\r\n 23e9a3e4e0e4ef2f0989148edaa507e5 20469575 python-2.7.8-macosx10.5.dmg\r\n 44f8259d11bdda96b1e0ffcd9f701fa6 473 python-2.7.8-macosx10.5.dmg.asc\r\n 183f72950e4d04a7137fc29848740d09 20370972 python-2.7.8-macosx10.6.dmg\r\n 166d9b5b63133fae74e9a38903239472 473 python-2.7.8-macosx10.6.dmg.asc\r\n d4bca0159acb0b44a781292b5231936f 14846119 Python-2.7.8.tgz\r\n d235bdfa75b8396942e360a70487ee00 10525244 Python-2.7.8.tar.xz\r\n\r\nResources\r\n^^^^^^^^^\r\n\r\n* `What's new in 2.7? `_\r\n* `Complete change log for this release `_.\r\n* `Online Documentation `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nAbout the 2.7 release series\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the features and improvements to Python 2.6 introduced in the 2.7 series\r\nare\r\n\r\n- An ordered dictionary type\r\n- New unittest features including test skipping, new assert methods, and test\r\n discovery\r\n- A much faster io module\r\n- Automatic numbering of fields in the str.format() method\r\n- Float repr improvements backported from 3.x\r\n- Tile support for Tkinter\r\n- A backport of the memoryview object from 3.x\r\n- Set literals\r\n- Set and dictionary comprehensions\r\n- Dictionary views\r\n- New syntax for nested with statements\r\n- The sysconfig module\r\n\r\nBinary installer support for OS X 10.4 and 10.3.9 to be discontinued\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 2.7.8 is the last release for which binary installers will be\r\nreleased on python.org that support Mac OS X 10.3.9 (Panther) and 10.4.x\r\n(Tiger) systems. For Python 2.7.8 only, we are providing three OS X\r\nbinary installers: the unchanged 10.6+ 64-bit/32-bit format, the deprecated 10.3+ 32-bit-only format,\r\nand the newer 10.5+ 32-bit-only format.\r\nSee the README included with the installer downloads for more information.\r\n\r\n.. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).\r\n\r\n.. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\r\n X here `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.8 was released on July 1, 2014. This release includes regression and security fixes over 2.7.7 including:

    \n\n
    \n

    Download

    \n

    This is a production release. Please report any bugs you encounter.

    \n

    We currently support these formats for download:

    \n\n

    The source tarballs are signed with Benjamin Peterson's key, which has key id\n18ADD4FF. The Mac installers were signed with Ned Deily's\nkey, which has a key id of 6F5E1540. The public keys are located on the\ndownload page.

    \n

    MD5 checksums and sizes of the released files:

    \n
    \n38cadfcac6dd56ecf772f2f3f14ee846  17231872  python-2.7.8.amd64.msi\n1d573b6422d4b00aeb39c1ed5aa05d8c  23561282  python-2.7.8.amd64-pdb.zip\nef95d83ace85d1577b915dbd481977d4  16703488  python-2.7.8.msi\n83c1b28264ca8eb1ea97100065988192  25355330  python-2.7.8-pdb.zip\n1cda33c3546f20b484869bed243d8726   6062806  python278.chm\n56f664f1813852585fc0bd28f5d71147  20772301  python-2.7.8-macosx10.3.dmg\nb5d6b720d436b8305263612fd7d36642       473  python-2.7.8-macosx10.3.dmg.asc\n23e9a3e4e0e4ef2f0989148edaa507e5  20469575  python-2.7.8-macosx10.5.dmg\n44f8259d11bdda96b1e0ffcd9f701fa6       473  python-2.7.8-macosx10.5.dmg.asc\n183f72950e4d04a7137fc29848740d09  20370972  python-2.7.8-macosx10.6.dmg\n166d9b5b63133fae74e9a38903239472       473  python-2.7.8-macosx10.6.dmg.asc\nd4bca0159acb0b44a781292b5231936f  14846119  Python-2.7.8.tgz\nd235bdfa75b8396942e360a70487ee00  10525244  Python-2.7.8.tar.xz\n
    \n
    \n\n
    \n

    About the 2.7 release series

    \n

    Among the features and improvements to Python 2.6 introduced in the 2.7 series\nare

    \n
      \n
    • An ordered dictionary type
    • \n
    • New unittest features including test skipping, new assert methods, and test\ndiscovery
    • \n
    • A much faster io module
    • \n
    • Automatic numbering of fields in the str.format() method
    • \n
    • Float repr improvements backported from 3.x
    • \n
    • Tile support for Tkinter
    • \n
    • A backport of the memoryview object from 3.x
    • \n
    • Set literals
    • \n
    • Set and dictionary comprehensions
    • \n
    • Dictionary views
    • \n
    • New syntax for nested with statements
    • \n
    • The sysconfig module
    • \n
    \n
    \n
    \n

    Binary installer support for OS X 10.4 and 10.3.9 to be discontinued

    \n

    Python 2.7.8 is the last release for which binary installers will be\nreleased on python.org that support Mac OS X 10.3.9 (Panther) and 10.4.x\n(Tiger) systems. For Python 2.7.8 only, we are providing three OS X\nbinary installers: the unchanged 10.6+ 64-bit/32-bit format, the deprecated 10.3+ 32-bit-only format,\nand the newer 10.5+ 32-bit-only format.\nSee the README included with the installer downloads for more information.

    \n\n\n\n\n\n
    [1](1, 2) The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).
    \n\n\n\n\n\n
    [2](1, 2, 3) There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\nX here.
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 181, + "fields": { + "created": "2014-09-22T13:36:44.569Z", + "updated": "2019-05-08T16:03:16.954Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.2rc1", + "slug": "python-342rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2014-09-22T13:33:03Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-2", + "content": "Python 3.4.2rc1\r\n-----------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.2rc1 was released on September 22nd, 2014.\r\n\r\nPython 3.4.2 has many bugfixes and other small improvements over 3.4.1. One new feature for Mac OS X users: the OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nDownload\r\n--------\r\n\r\nNotes on this release:\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.4.2rc1

    \n

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.2rc1 was released on September 22nd, 2014.

    \n

    Python 3.4.2 has many bugfixes and other small improvements over 3.4.1. One new feature for Mac OS X users: the OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n
    \n
    \n

    Download

    \n

    Notes on this release:

    \n\n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 182, + "fields": { + "created": "2014-10-04T12:40:00.379Z", + "updated": "2014-10-12T07:14:23.197Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.2.6rc1", + "slug": "python-326rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2014-10-04T12:38:39Z", + "release_page": null, + "release_notes_url": "https://hg.python.org/cpython/file/v3.2.6rc1/Misc/NEWS", + "content": "**This is a security-fix source-only release.**\r\nThe last binary release was `3.2.5 `_.\r\n\r\nThe list of fixed security related issues can be found in the `NEWS file `_.\r\n\r\nNew features of the 3.2 series, compared to 3.1\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.2 is a continuation of the efforts to improve and stabilize the Python\r\n3.x line. Since the final release of Python 2.7, the 2.x line will only receive\r\nbugfixes, and new features are developed for 3.x only.\r\n\r\nSince :pep:`3003`, the Moratorium on Language Changes, is in effect, there are\r\nno changes in Python's syntax and only few changes to built-in types in Python\r\n3.2. Development efforts concentrated on the standard library and support for\r\nporting code to Python 3. Highlights are:\r\n\r\n* numerous improvements to the unittest module\r\n* :pep:`3147`, support for .pyc repository directories\r\n* :pep:`3149`, support for version tagged dynamic libraries\r\n* :pep:`3148`, a new futures library for concurrent programming\r\n* :pep:`384`, a stable ABI for extension modules\r\n* :pep:`391`, dictionary-based logging configuration\r\n* an overhauled GIL implementation that reduces contention\r\n* an extended email package that handles bytes messages\r\n* a much improved ssl module with support for SSL contexts and certificate\r\n hostname matching\r\n* a sysconfig module to access configuration information\r\n* additions to the shutil module, among them archive file support\r\n* many enhancements to configparser, among them mapping protocol support\r\n* improvements to pdb, the Python debugger\r\n* countless fixes regarding bytes/string issues; among them full support\r\n for a bytes environment (filenames, environment variables)\r\n* many consistency and behavior fixes for numeric operations\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `What's new in 3.2? `_\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nThis is a preview release, and its use is not recommended in production settings.\r\n\r\n.. This is a production release. Please `report any bugs `_ you encounter.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    This is a security-fix source-only release.\nThe last binary release was 3.2.5.

    \n

    The list of fixed security related issues can be found in the NEWS file.

    \n
    \n

    New features of the 3.2 series, compared to 3.1

    \n

    Python 3.2 is a continuation of the efforts to improve and stabilize the Python\n3.x line. Since the final release of Python 2.7, the 2.x line will only receive\nbugfixes, and new features are developed for 3.x only.

    \n

    Since PEP 3003, the Moratorium on Language Changes, is in effect, there are\nno changes in Python's syntax and only few changes to built-in types in Python\n3.2. Development efforts concentrated on the standard library and support for\nporting code to Python 3. Highlights are:

    \n
      \n
    • numerous improvements to the unittest module
    • \n
    • PEP 3147, support for .pyc repository directories
    • \n
    • PEP 3149, support for version tagged dynamic libraries
    • \n
    • PEP 3148, a new futures library for concurrent programming
    • \n
    • PEP 384, a stable ABI for extension modules
    • \n
    • PEP 391, dictionary-based logging configuration
    • \n
    • an overhauled GIL implementation that reduces contention
    • \n
    • an extended email package that handles bytes messages
    • \n
    • a much improved ssl module with support for SSL contexts and certificate\nhostname matching
    • \n
    • a sysconfig module to access configuration information
    • \n
    • additions to the shutil module, among them archive file support
    • \n
    • many enhancements to configparser, among them mapping protocol support
    • \n
    • improvements to pdb, the Python debugger
    • \n
    • countless fixes regarding bytes/string issues; among them full support\nfor a bytes environment (filenames, environment variables)
    • \n
    • many consistency and behavior fixes for numeric operations
    • \n
    \n
    \n
    \n

    More resources

    \n\n

    This is a preview release, and its use is not recommended in production settings.

    \n\n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 183, + "fields": { + "created": "2014-10-04T12:40:14.579Z", + "updated": "2014-10-04T13:12:08.597Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.3.6rc1", + "slug": "python-336rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2014-10-04T12:40:00Z", + "release_page": null, + "release_notes_url": "https://hg.python.org/cpython/file/v3.3.6rc1/Misc/NEWS", + "content": "**This is a security-fix source-only release.**\r\nThe last binary release was `3.3.5 `_.\r\n\r\nThe list of fixed security related issues can be found in the `NEWS file `_.\r\n\r\nMajor new features of the 3.3 series, compared to 3.2\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.3 includes a range of improvements of the 3.x series, as well as easier\r\nporting between 2.x and 3.x.\r\n\r\n* :pep:`380`, syntax for delegating to a subgenerator (``yield from``)\r\n* :pep:`393`, flexible string representation (doing away with the distinction\r\n between \"wide\" and \"narrow\" Unicode builds)\r\n* A C implementation of the \"decimal\" module, with up to 120x speedup\r\n for decimal-heavy applications\r\n* The import system (__import__) is based on importlib by default\r\n* The new \"lzma\" module with LZMA/XZ support\r\n* :pep:`397`, a Python launcher for Windows\r\n* :pep:`405`, virtual environment support in core\r\n* :pep:`420`, namespace package support\r\n* :pep:`3151`, reworking the OS and IO exception hierarchy\r\n* :pep:`3155`, qualified name for classes and functions\r\n* :pep:`409`, suppressing exception context\r\n* :pep:`414`, explicit Unicode literals to help with porting\r\n* :pep:`418`, extended platform-independent clocks in the \"time\" module\r\n* :pep:`412`, a new key-sharing dictionary implementation that significantly\r\n saves memory for object-oriented code\r\n* :pep:`362`, the function-signature object\r\n* The new \"faulthandler\" module that helps diagnosing crashes\r\n* The new \"unittest.mock\" module\r\n* The new \"ipaddress\" module\r\n* The \"sys.implementation\" attribute\r\n* A policy framework for the email package, with a provisional (see\r\n :pep:`411`) policy that adds much improved unicode support for email\r\n header parsing\r\n* A \"collections.ChainMap\" class for linking mappings to a single unit\r\n* Wrappers for many more POSIX functions in the \"os\" and \"signal\" modules, as\r\n well as other useful functions such as \"sendfile()\"\r\n* Hash randomization, introduced in earlier bugfix releases, is now\r\n switched on by default\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.3? `_\r\n* `3.3 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n**This is a preview release, and its use is not recommended in production settings.**\r\n\r\n.. This is a production release. Please `report any bugs `__ you encounter.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    This is a security-fix source-only release.\nThe last binary release was 3.3.5.

    \n

    The list of fixed security related issues can be found in the NEWS file.

    \n
    \n

    Major new features of the 3.3 series, compared to 3.2

    \n

    Python 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.

    \n
      \n
    • PEP 380, syntax for delegating to a subgenerator (yield from)
    • \n
    • PEP 393, flexible string representation (doing away with the distinction\nbetween "wide" and "narrow" Unicode builds)
    • \n
    • A C implementation of the "decimal" module, with up to 120x speedup\nfor decimal-heavy applications
    • \n
    • The import system (__import__) is based on importlib by default
    • \n
    • The new "lzma" module with LZMA/XZ support
    • \n
    • PEP 397, a Python launcher for Windows
    • \n
    • PEP 405, virtual environment support in core
    • \n
    • PEP 420, namespace package support
    • \n
    • PEP 3151, reworking the OS and IO exception hierarchy
    • \n
    • PEP 3155, qualified name for classes and functions
    • \n
    • PEP 409, suppressing exception context
    • \n
    • PEP 414, explicit Unicode literals to help with porting
    • \n
    • PEP 418, extended platform-independent clocks in the "time" module
    • \n
    • PEP 412, a new key-sharing dictionary implementation that significantly\nsaves memory for object-oriented code
    • \n
    • PEP 362, the function-signature object
    • \n
    • The new "faulthandler" module that helps diagnosing crashes
    • \n
    • The new "unittest.mock" module
    • \n
    • The new "ipaddress" module
    • \n
    • The "sys.implementation" attribute
    • \n
    • A policy framework for the email package, with a provisional (see\nPEP 411) policy that adds much improved unicode support for email\nheader parsing
    • \n
    • A "collections.ChainMap" class for linking mappings to a single unit
    • \n
    • Wrappers for many more POSIX functions in the "os" and "signal" modules, as\nwell as other useful functions such as "sendfile()"
    • \n
    • Hash randomization, introduced in earlier bugfix releases, is now\nswitched on by default
    • \n
    \n
    \n
    \n

    More resources

    \n\n

    This is a preview release, and its use is not recommended in production settings.

    \n\n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 184, + "fields": { + "created": "2014-10-08T08:47:13.521Z", + "updated": "2019-05-08T16:03:06.020Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.2", + "slug": "python-342", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2014-10-13T08:45:59Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-2", + "content": "Python 3.4.2\r\n--------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.2 was released on October 8th, 2014.\r\n\r\nPython 3.4.2 has many bugfixes and other small improvements over 3.4.1. One new feature for Mac OS X users: the OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nDownload\r\n--------\r\n\r\nNotes on this release:\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.4.2

    \n

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.2 was released on October 8th, 2014.

    \n

    Python 3.4.2 has many bugfixes and other small improvements over 3.4.1. One new feature for Mac OS X users: the OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n
    \n
    \n

    Download

    \n

    Notes on this release:

    \n\n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 185, + "fields": { + "created": "2014-10-12T07:14:40.955Z", + "updated": "2017-07-13T00:32:35.731Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.2.6", + "slug": "python-326", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2014-10-12T07:13:35Z", + "release_page": null, + "release_notes_url": "https://hg.python.org/cpython/file/v3.2.6/Misc/NEWS", + "content": "**This is a security-fix source-only release.**\r\nThe last binary release was `3.2.5 `_.\r\n\r\nWith the 3.2.6 release, and five years after its first release, the\r\nPython 3.2 series is now officially retired. All official maintenance\r\nfor Python 3.2, including security patches, has ended. For ongoing\r\nmaintenance releases, please see the `downloads `_ page for\r\ninformation about the latest Python 3 series.\r\n\r\nThe list of fixed security related issues can be found in the `NEWS file `_.\r\n\r\nNew features of the 3.2 series, compared to 3.1\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.2 is a continuation of the efforts to improve and stabilize the Python\r\n3.x line. Since the final release of Python 2.7, the 2.x line will only receive\r\nbugfixes, and new features are developed for 3.x only.\r\n\r\nSince :pep:`3003`, the Moratorium on Language Changes, is in effect, there are\r\nno changes in Python's syntax and only few changes to built-in types in Python\r\n3.2. Development efforts concentrated on the standard library and support for\r\nporting code to Python 3. Highlights are:\r\n\r\n* numerous improvements to the unittest module\r\n* :pep:`3147`, support for .pyc repository directories\r\n* :pep:`3149`, support for version tagged dynamic libraries\r\n* :pep:`3148`, a new futures library for concurrent programming\r\n* :pep:`384`, a stable ABI for extension modules\r\n* :pep:`391`, dictionary-based logging configuration\r\n* an overhauled GIL implementation that reduces contention\r\n* an extended email package that handles bytes messages\r\n* a much improved ssl module with support for SSL contexts and certificate\r\n hostname matching\r\n* a sysconfig module to access configuration information\r\n* additions to the shutil module, among them archive file support\r\n* many enhancements to configparser, among them mapping protocol support\r\n* improvements to pdb, the Python debugger\r\n* countless fixes regarding bytes/string issues; among them full support\r\n for a bytes environment (filenames, environment variables)\r\n* many consistency and behavior fixes for numeric operations\r\n\r\nNote\r\n^^^^\r\n\r\nUsers of Mac OS X 10.9 (Mavericks) or later may be affected by `issue 18458`_,\r\nexperiencing crashes when using the interactive interpreter. This bug\r\nis *not* fixed by the Python 3.2.6 release. If you are having this\r\nproblem, please review your options by visiting the issue tracker.\r\n\r\n.. _`issue 18458`: http://bugs.python.org/issue18458\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `What's new in 3.2? `_\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n.. This is a preview release, and its use is not recommended in production settings.\r\n\r\nThis is a production release. Please `report any bugs `_ you encounter.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    This is a security-fix source-only release.\nThe last binary release was 3.2.5.

    \n

    With the 3.2.6 release, and five years after its first release, the\nPython 3.2 series is now officially retired. All official maintenance\nfor Python 3.2, including security patches, has ended. For ongoing\nmaintenance releases, please see the downloads page for\ninformation about the latest Python 3 series.

    \n

    The list of fixed security related issues can be found in the NEWS file.

    \n
    \n

    New features of the 3.2 series, compared to 3.1

    \n

    Python 3.2 is a continuation of the efforts to improve and stabilize the Python\n3.x line. Since the final release of Python 2.7, the 2.x line will only receive\nbugfixes, and new features are developed for 3.x only.

    \n

    Since PEP 3003, the Moratorium on Language Changes, is in effect, there are\nno changes in Python's syntax and only few changes to built-in types in Python\n3.2. Development efforts concentrated on the standard library and support for\nporting code to Python 3. Highlights are:

    \n
      \n
    • numerous improvements to the unittest module
    • \n
    • PEP 3147, support for .pyc repository directories
    • \n
    • PEP 3149, support for version tagged dynamic libraries
    • \n
    • PEP 3148, a new futures library for concurrent programming
    • \n
    • PEP 384, a stable ABI for extension modules
    • \n
    • PEP 391, dictionary-based logging configuration
    • \n
    • an overhauled GIL implementation that reduces contention
    • \n
    • an extended email package that handles bytes messages
    • \n
    • a much improved ssl module with support for SSL contexts and certificate\nhostname matching
    • \n
    • a sysconfig module to access configuration information
    • \n
    • additions to the shutil module, among them archive file support
    • \n
    • many enhancements to configparser, among them mapping protocol support
    • \n
    • improvements to pdb, the Python debugger
    • \n
    • countless fixes regarding bytes/string issues; among them full support\nfor a bytes environment (filenames, environment variables)
    • \n
    • many consistency and behavior fixes for numeric operations
    • \n
    \n
    \n
    \n

    Note

    \n

    Users of Mac OS X 10.9 (Mavericks) or later may be affected by issue 18458,\nexperiencing crashes when using the interactive interpreter. This bug\nis not fixed by the Python 3.2.6 release. If you are having this\nproblem, please review your options by visiting the issue tracker.

    \n
    \n
    \n

    More resources

    \n\n\n

    This is a production release. Please report any bugs you encounter.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 186, + "fields": { + "created": "2014-10-12T07:18:01.903Z", + "updated": "2017-10-06T23:09:03.538Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.3.6", + "slug": "python-336", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2014-10-12T07:17:26Z", + "release_page": null, + "release_notes_url": "https://hg.python.org/cpython/file/v3.3.6/Misc/NEWS", + "content": "**Python 3.3.x has reached end-of-life. Python 3.3.7, the final security-fix release, is available** `here `__.\r\n\r\nThis is a security-fix source-only release.\r\n\r\nThe list of fixed security related issues can be found in the `NEWS file `_.\r\n\r\nMajor new features of the 3.3 series, compared to 3.2\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.3 includes a range of improvements of the 3.x series, as well as easier\r\nporting between 2.x and 3.x.\r\n\r\n* :pep:`380`, syntax for delegating to a subgenerator (``yield from``)\r\n* :pep:`393`, flexible string representation (doing away with the distinction\r\n between \"wide\" and \"narrow\" Unicode builds)\r\n* A C implementation of the \"decimal\" module, with up to 120x speedup\r\n for decimal-heavy applications\r\n* The import system (__import__) is based on importlib by default\r\n* The new \"lzma\" module with LZMA/XZ support\r\n* :pep:`397`, a Python launcher for Windows\r\n* :pep:`405`, virtual environment support in core\r\n* :pep:`420`, namespace package support\r\n* :pep:`3151`, reworking the OS and IO exception hierarchy\r\n* :pep:`3155`, qualified name for classes and functions\r\n* :pep:`409`, suppressing exception context\r\n* :pep:`414`, explicit Unicode literals to help with porting\r\n* :pep:`418`, extended platform-independent clocks in the \"time\" module\r\n* :pep:`412`, a new key-sharing dictionary implementation that significantly\r\n saves memory for object-oriented code\r\n* :pep:`362`, the function-signature object\r\n* The new \"faulthandler\" module that helps diagnosing crashes\r\n* The new \"unittest.mock\" module\r\n* The new \"ipaddress\" module\r\n* The \"sys.implementation\" attribute\r\n* A policy framework for the email package, with a provisional (see\r\n :pep:`411`) policy that adds much improved unicode support for email\r\n header parsing\r\n* A \"collections.ChainMap\" class for linking mappings to a single unit\r\n* Wrappers for many more POSIX functions in the \"os\" and \"signal\" modules, as\r\n well as other useful functions such as \"sendfile()\"\r\n* Hash randomization, introduced in earlier bugfix releases, is now\r\n switched on by default\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.3? `_\r\n* `3.3 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n.. **This is a preview release, and its use is not recommended in production settings.**\r\n\r\nThis is a production release. Please `report any bugs `__ you encounter.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.3.x has reached end-of-life. Python 3.3.7, the final security-fix release, is available here.

    \n

    This is a security-fix source-only release.

    \n

    The list of fixed security related issues can be found in the NEWS file.

    \n
    \n

    Major new features of the 3.3 series, compared to 3.2

    \n

    Python 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.

    \n
      \n
    • PEP 380, syntax for delegating to a subgenerator (yield from)
    • \n
    • PEP 393, flexible string representation (doing away with the distinction\nbetween "wide" and "narrow" Unicode builds)
    • \n
    • A C implementation of the "decimal" module, with up to 120x speedup\nfor decimal-heavy applications
    • \n
    • The import system (__import__) is based on importlib by default
    • \n
    • The new "lzma" module with LZMA/XZ support
    • \n
    • PEP 397, a Python launcher for Windows
    • \n
    • PEP 405, virtual environment support in core
    • \n
    • PEP 420, namespace package support
    • \n
    • PEP 3151, reworking the OS and IO exception hierarchy
    • \n
    • PEP 3155, qualified name for classes and functions
    • \n
    • PEP 409, suppressing exception context
    • \n
    • PEP 414, explicit Unicode literals to help with porting
    • \n
    • PEP 418, extended platform-independent clocks in the "time" module
    • \n
    • PEP 412, a new key-sharing dictionary implementation that significantly\nsaves memory for object-oriented code
    • \n
    • PEP 362, the function-signature object
    • \n
    • The new "faulthandler" module that helps diagnosing crashes
    • \n
    • The new "unittest.mock" module
    • \n
    • The new "ipaddress" module
    • \n
    • The "sys.implementation" attribute
    • \n
    • A policy framework for the email package, with a provisional (see\nPEP 411) policy that adds much improved unicode support for email\nheader parsing
    • \n
    • A "collections.ChainMap" class for linking mappings to a single unit
    • \n
    • Wrappers for many more POSIX functions in the "os" and "signal" modules, as\nwell as other useful functions such as "sendfile()"
    • \n
    • Hash randomization, introduced in earlier bugfix releases, is now\nswitched on by default
    • \n
    \n
    \n
    \n

    More resources

    \n\n\n

    This is a production release. Please report any bugs you encounter.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 187, + "fields": { + "created": "2014-11-26T00:52:30.929Z", + "updated": "2014-11-26T18:30:46.996Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.9rc1", + "slug": "python-279rc1", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2014-11-26T00:45:19Z", + "release_page": null, + "release_notes_url": "https://hg.python.org/cpython/raw-file/v2.7.9rc1/Misc/NEWS", + "content": "Python 2.7.9 release candidate 1\r\n--------------------------------\r\n\r\nPython 2.7.9rc1 is the first release candidate for the next bugfix version of\r\nthe Python 2.7 series. Python 2.7.9 will include several significant changes\r\nunprecedented in a \"bugfix\" release:\r\n\r\n* The entirety of `Python 3.4's ssl module\r\n `__ has been backported for Python\r\n 2.7.9. See `PEP 466 `__ for\r\n justification.\r\n\r\n* HTTPS certificate validation using the system's certificate store is now\r\n enabled by default. See `PEP 476\r\n `__ for details.\r\n\r\n* SSLv3 has been disabled by default due to the `POODLE attack\r\n `__.\r\n\r\n* The `ensurepip module `__\r\n module has been backported, which provides the pip package manager in every\r\n Python 2.7 installation. See `PEP 477\r\n `__.\r\n\r\n2.7 series resources\r\n^^^^^^^^^^^^^^^^^^^^\r\n\r\n* `What's new in 2.7? `_\r\n* `Complete change log for this release `_.\r\n* `Online Documentation `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n..\r\n Download\r\n ^^^^^^^^\r\n\r\n This is a testing release. Please `report any bugs `_\r\n you encounter.\r\n\r\n We currently support these formats for download:\r\n\r\n * `Windows x86 MSI Installer (2.7.9rc1) `__\r\n\r\n * `Windows x86 MSI program database (2.7.9rc1) `__ \r\n\r\n * `Windows X86-64 MSI Installer (2.7.9rc1)\r\n `__ [1]_ \r\n\r\n * `Windows X86-64 MSI program database (2.7.9rc1) `__ [1]_ \r\n\r\n * `Windows help file `_\r\n\r\n * `Mac OS X 64-bit/32-bit x86-64/i386 Installer (2.7.9rc1) for Mac OS X\r\n 10.6 and later `__ [2]_\r\n `(sig) `__. [You may need an\r\n updated Tcl/Tk install to run IDLE or use Tkinter, see note 2 for instructions.]\r\n\r\n * `Mac OS X 32-bit i386/PPC Installer (2.7.9rc1) for Mac OS X 10.5 and\r\n later `__ [2]_ `(sig)\r\n `__.\r\n\r\n * `Mac OS X 32-bit i386/PPC Installer (2.7.9rc1) for Mac OS X 10.3 and\r\n later (deprecated, see below) `__ [2]_ \r\n `(sig) `__.\r\n\r\n * `XZ compressed source tar ball (2.7.9rc1) `__\r\n `(sig) `__\r\n\r\n * `Gzipped source tar ball (2.7.9rc1) `__\r\n `(sig) `__\r\n\r\n The source tarballs are signed with `Benjamin Peterson's key\r\n `__, which has key id 18ADD4FF. The Mac\r\n installers were signed with `Ned Deily's key\r\n `__, which has a key id of 6F5E1540. The public\r\n keys are located on the `download page `_.\r\n\r\n MD5 checksums and sizes of the released files::\r\n\r\n 38cadfcac6dd56ecf772f2f3f14ee846 17231872 python-2.7.8.amd64.msi\r\n 1d573b6422d4b00aeb39c1ed5aa05d8c 23561282 python-2.7.8.amd64-pdb.zip\r\n ef95d83ace85d1577b915dbd481977d4 16703488 python-2.7.8.msi\r\n 83c1b28264ca8eb1ea97100065988192 25355330 python-2.7.8-pdb.zip\r\n 1cda33c3546f20b484869bed243d8726 6062806 python278.chm\r\n 7388f64c61d1e5c7770d6782c50c339d 22109307 python-2.7.9rc1-macosx10.5.pkg\r\n 3c38713a1beadfa520f2a0c1cc25af87 22002818 python-2.7.9rc1-macosx10.6.pkg\r\n 59fd7bd181fc26464dfac8c4a61174d3 16646401 Python-2.7.9rc1.tgz\r\n 3976ad214d5813fd659de13e3c446390 12159788 Python-2.7.9rc1.tar.xz\r\n\r\n Resources\r\n ^^^^^^^^^\r\n\r\n * `What's new in 2.7? `_\r\n * `Complete change log for this release `_.\r\n * `Online Documentation `_\r\n * Report bugs at ``_.\r\n * `Help fund Python and its community `_.\r\n\r\n\r\n About the 2.7 release series\r\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\n Among the features and improvements to Python 2.6 introduced in the 2.7 series\r\n are\r\n\r\n - An ordered dictionary type\r\n - New unittest features including test skipping, new assert methods, and test\r\n discovery\r\n - A much faster io module\r\n - Automatic numbering of fields in the str.format() method\r\n - Float repr improvements backported from 3.x\r\n - Tile support for Tkinter\r\n - A backport of the memoryview object from 3.x\r\n - Set literals\r\n - Set and dictionary comprehensions\r\n - Dictionary views\r\n - New syntax for nested with statements\r\n - The sysconfig module\r\n\r\n .. [1] The binaries for AMD64 will also work on processors that implement the Intel 64 architecture (formerly EM64T), i.e. the architecture that Microsoft calls x64, and AMD called x86-64 before calling it AMD64. They will not work on Intel Itanium Processors (formerly IA-64).\r\n\r\n .. [2] There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS\r\n X here `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.9rc1 is the first release candidate for the next bugfix version of\nthe Python 2.7 series. Python 2.7.9 will include several significant changes\nunprecedented in a "bugfix" release:

    \n
      \n
    • The entirety of Python 3.4's ssl module has been backported for Python\n2.7.9. See PEP 466 for\njustification.
    • \n
    • HTTPS certificate validation using the system's certificate store is now\nenabled by default. See PEP 476 for details.
    • \n
    • SSLv3 has been disabled by default due to the POODLE attack.
    • \n
    • The ensurepip module\nmodule has been backported, which provides the pip package manager in every\nPython 2.7 installation. See PEP 477.
    • \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 188, + "fields": { + "created": "2014-12-10T16:15:26.178Z", + "updated": "2015-01-12T02:16:59.871Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.9", + "slug": "python-279", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2014-12-10T16:12:27Z", + "release_page": null, + "release_notes_url": "https://hg.python.org/cpython/raw-file/v2.7.9/Misc/NEWS", + "content": "Python 2.7.9\r\n------------\r\n\r\nPython 2.7.9 is a bugfix version for the Python 2.7 release series. Python\r\n2.7.9 includes several significant changes unprecedented in a \"bugfix\" release:\r\n\r\n* The entirety of `Python 3.4's ssl module\r\n `__ has been backported for Python\r\n 2.7.9. See `PEP 466 `__ for\r\n justification.\r\n\r\n* HTTPS certificate validation using the system's certificate store is now\r\n enabled by default. See `PEP 476\r\n `__ for details.\r\n\r\n* SSLv3 has been disabled by default in httplib and its reverse dependencies due to the `POODLE attack\r\n `__.\r\n\r\n* The `ensurepip module `__\r\n module has been backported, which provides the pip package manager in every\r\n Python 2.7 installation. See `PEP 477\r\n `__.\r\n\r\n2.7 series resources\r\n^^^^^^^^^^^^^^^^^^^^\r\n\r\n* `What's new in 2.7? `_\r\n* `Online Documentation `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.9 is a bugfix version for the Python 2.7 release series. Python\n2.7.9 includes several significant changes unprecedented in a "bugfix" release:

    \n
      \n
    • The entirety of Python 3.4's ssl module has been backported for Python\n2.7.9. See PEP 466 for\njustification.
    • \n
    • HTTPS certificate validation using the system's certificate store is now\nenabled by default. See PEP 476 for details.
    • \n
    • SSLv3 has been disabled by default in httplib and its reverse dependencies due to the POODLE attack.
    • \n
    • The ensurepip module\nmodule has been backported, which provides the pip package manager in every\nPython 2.7 installation. See PEP 477.
    • \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 189, + "fields": { + "created": "2015-02-08T21:01:00.174Z", + "updated": "2019-05-08T16:02:56.201Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.3rc1", + "slug": "python-343rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2015-02-08T20:59:15Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-3", + "content": "Python 3.4.3rc1\r\n---------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.3rc1 was released on February 8th, 2015.\r\n\r\nPython 3.4.3rc1 has many bugfixes and other small improvements over 3.4.2.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nDownload\r\n--------\r\n\r\nNotes on this release:\r\n\r\n* The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.4.3rc1

    \n

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.3rc1 was released on February 8th, 2015.

    \n

    Python 3.4.3rc1 has many bugfixes and other small improvements over 3.4.2.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n
    \n
    \n

    Download

    \n

    Notes on this release:

    \n
      \n
    • The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 190, + "fields": { + "created": "2015-02-08T21:37:17.360Z", + "updated": "2020-10-22T16:38:54.135Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.0a1", + "slug": "python-350a1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2015-02-08T21:21:49Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-alpha-1", + "content": "Python 3.5.0a1\r\n------------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.0a1 was released on February 8th, 2015.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.5 is still in development, and 3.5.0a1 is the first alpha release.\r\nMany new features are still being planned and written. Among the new major new features\r\nand changes in the 3.4 release series so far are\r\n\r\n* :pep:`461`, adding support for \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nDownload\r\n--------\r\n\r\nNotes on this release:\r\n\r\n* The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed su at installation time.\r\n\r\n* The Windows binaries were built with Microsoft Visual Studio 2015, which is not yet officially released. (It's currently offered in \"Preview\" mode, which is akin to a \"beta\".) It is our intention to ship Python 3.5 using VS2015, although right now VS2015's final release date is unclear.\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.0a1

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.0a1 was released on February 8th, 2015.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Python 3.5 is still in development, and 3.5.0a1 is the first alpha release.\nMany new features are still being planned and written. Among the new major new features\nand changes in the 3.4 release series so far are

    \n
      \n
    • PEP 461, adding support for "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    \n
    \n\n
    \n
    \n

    Download

    \n

    Notes on this release:

    \n
      \n
    • The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • There are now "web-based" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed su at installation time.
    • \n
    • The Windows binaries were built with Microsoft Visual Studio 2015, which is not yet officially released. (It's currently offered in "Preview" mode, which is akin to a "beta".) It is our intention to ship Python 3.5 using VS2015, although right now VS2015's final release date is unclear.
    • \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 191, + "fields": { + "created": "2015-02-25T12:40:47.543Z", + "updated": "2019-05-08T16:02:27.476Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.3", + "slug": "python-343", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2015-02-25T12:37:55Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-3", + "content": "Python 3.4.3\r\n------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.3 was released on February 25th, 2015.\r\n\r\nPython 3.4.3 has many bugfixes and other small improvements over 3.4.2.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release:\r\n\r\n* The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.3 was released on February 25th, 2015.

    \n

    Python 3.4.3 has many bugfixes and other small improvements over 3.4.2.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n
    \n

    More resources

    \n\n

    Notes on this release:

    \n
      \n
    • The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 192, + "fields": { + "created": "2015-03-09T09:14:30.315Z", + "updated": "2020-10-22T16:38:45.630Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.0a2", + "slug": "python-350a2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2015-03-09T08:57:53Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-alpha-2", + "content": "Python 3.5.0a2\r\n-------------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.0a2 was released on March 9th, 2015.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.5 is still in development, and 3.5.0a1 is the second alpha release.\r\nMany new features are still being planned and written. Among the new major new features\r\nand changes in the 3.4 release series so far are\r\n\r\n* :pep:`461`, adding support for \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`471`, os.scandir()\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nDownload\r\n--------\r\n\r\nNotes on this release:\r\n\r\n * Windows users: if you have previously installed Python 3.5.0a1, you must manually uninstall it before installing Python 3.5.0a2 (issue23612).\r\n\r\n * Windows users: If installing Python 3.5.0a2 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed su at installation time.\r\n\r\n* The Windows binaries were built with Microsoft Visual Studio 2015, which is not yet officially released. (It's currently offered in \"Preview\" mode, which is akin to a \"beta\".) It is our intention to ship Python 3.5 using VS2015, although right now VS2015's final release date is unclear.\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.0a2

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.0a2 was released on March 9th, 2015.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Python 3.5 is still in development, and 3.5.0a1 is the second alpha release.\nMany new features are still being planned and written. Among the new major new features\nand changes in the 3.4 release series so far are

    \n
      \n
    • PEP 461, adding support for "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 471, os.scandir()
    • \n
    \n
    \n\n
    \n
    \n

    Download

    \n

    Notes on this release:

    \n
    \n
      \n
    • Windows users: if you have previously installed Python 3.5.0a1, you must manually uninstall it before installing Python 3.5.0a2 (issue23612).
    • \n
    • Windows users: If installing Python 3.5.0a2 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    \n
    \n
      \n
    • The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • There are now "web-based" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed su at installation time.
    • \n
    • The Windows binaries were built with Microsoft Visual Studio 2015, which is not yet officially released. (It's currently offered in "Preview" mode, which is akin to a "beta".) It is our intention to ship Python 3.5 using VS2015, although right now VS2015's final release date is unclear.
    • \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 193, + "fields": { + "created": "2015-03-30T08:23:07.198Z", + "updated": "2020-10-22T16:38:38.571Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.0a3", + "slug": "python-350a3", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2015-03-30T08:21:30Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-alpha-3", + "content": "Python 3.5.0a3\r\n----------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.0a3 was released on March 30th, 2015.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.5 is still in development, and 3.5.0a1 is the second alpha release.\r\nMany new features are still being planned and written. Among the new major new features\r\nand changes in the 3.4 release series so far are\r\n\r\n* :pep:`461`, adding support for \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`471`, os.scandir()\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nDownload\r\n--------\r\n\r\nNotes on this release:\r\n\r\n * Windows users: if you have previously installed Python 3.5.0a1, you must manually uninstall it before installing Python 3.5.0a3 (issue23612).\r\n\r\n * Windows users: If installing Python 3.5.0a3 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed su at installation time.\r\n\r\n* The Windows binaries were built with Microsoft Visual Studio 2015, which is not yet officially released. (It's currently offered in \"Preview\" mode, which is akin to a \"beta\".) It is our intention to ship Python 3.5 using VS2015, although right now VS2015's final release date is unclear.\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.0a3

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.0a3 was released on March 30th, 2015.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Python 3.5 is still in development, and 3.5.0a1 is the second alpha release.\nMany new features are still being planned and written. Among the new major new features\nand changes in the 3.4 release series so far are

    \n
      \n
    • PEP 461, adding support for "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 471, os.scandir()
    • \n
    \n
    \n\n
    \n
    \n

    Download

    \n

    Notes on this release:

    \n
    \n
      \n
    • Windows users: if you have previously installed Python 3.5.0a1, you must manually uninstall it before installing Python 3.5.0a3 (issue23612).
    • \n
    • Windows users: If installing Python 3.5.0a3 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    \n
    \n
      \n
    • The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • There are now "web-based" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed su at installation time.
    • \n
    • The Windows binaries were built with Microsoft Visual Studio 2015, which is not yet officially released. (It's currently offered in "Preview" mode, which is akin to a "beta".) It is our intention to ship Python 3.5 using VS2015, although right now VS2015's final release date is unclear.
    • \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 194, + "fields": { + "created": "2015-04-20T07:57:03.843Z", + "updated": "2020-10-22T16:38:31.765Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.0a4", + "slug": "python-350a4", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2015-04-20T07:52:51Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-alpha-4", + "content": "Python 3.5.0a4\r\n--------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.0a4 was released on April 20th, 2015.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.5 is still in development, and 3.5.0a4 is the fourth and final alpha release.\r\nMany new features are still being planned and written. Among the new major new features\r\nand changes in the 3.5 release series so far are\r\n\r\n* :pep:`461`, adding support for \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir()\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n\r\nThe next release of Python 3.5 will be 3.5.0b1, the first beta release. Python 3.5 will\r\nenter \"feature freeze\" at this time; no new features will be added to 3.5 after this point.\r\nPython 3.5.0b1 is scheduled to be released May 22, 2015.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n * Windows users: if you have previously installed Python 3.5.0a1, you must manually uninstall it before installing Python 3.5.0a4 (issue23612).\r\n\r\n * Windows users: If installing Python 3.5.0a4 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed software at installation time.\r\n\r\n* The Windows binaries were built with Microsoft Visual Studio 2015, which is not yet officially released. (It's currently offered in \"Preview\" mode, which is akin to a \"beta\".) It is our intention to ship Python 3.5 using VS2015, although right now VS2015's final release date is unclear.\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.0a4

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.0a4 was released on April 20th, 2015.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Python 3.5 is still in development, and 3.5.0a4 is the fourth and final alpha release.\nMany new features are still being planned and written. Among the new major new features\nand changes in the 3.5 release series so far are

    \n
      \n
    • PEP 461, adding support for "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir()
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    \n

    The next release of Python 3.5 will be 3.5.0b1, the first beta release. Python 3.5 will\nenter "feature freeze" at this time; no new features will be added to 3.5 after this point.\nPython 3.5.0b1 is scheduled to be released May 22, 2015.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
    \n
      \n
    • Windows users: if you have previously installed Python 3.5.0a1, you must manually uninstall it before installing Python 3.5.0a4 (issue23612).
    • \n
    • Windows users: If installing Python 3.5.0a4 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    \n
    \n
      \n
    • The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • There are now "web-based" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed software at installation time.
    • \n
    • The Windows binaries were built with Microsoft Visual Studio 2015, which is not yet officially released. (It's currently offered in "Preview" mode, which is akin to a "beta".) It is our intention to ship Python 3.5 using VS2015, although right now VS2015's final release date is unclear.
    • \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 195, + "fields": { + "created": "2015-05-11T15:02:51.012Z", + "updated": "2015-05-11T15:14:34.583Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.10rc1", + "slug": "python-2710rc1", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2015-05-11T14:40:12Z", + "release_page": null, + "release_notes_url": "https://hg.python.org/cpython/raw-file/80ccce248ba2/Misc/NEWS", + "content": "Python 2.7.10 release candidate 1 is the first release candidate for 2.7.10, the next bugfix release in the 2.x series. It includes numerous bugfixes over 2.7.9.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.10 release candidate 1 is the first release candidate for 2.7.10, the next bugfix release in the 2.x series. It includes numerous bugfixes over 2.7.9.

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 196, + "fields": { + "created": "2015-05-23T23:39:17.216Z", + "updated": "2015-05-23T23:40:11.535Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.10", + "slug": "python-2710", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2015-05-23T23:37:37Z", + "release_page": null, + "release_notes_url": "https://hg.python.org/cpython/raw-file/15c95b7d81dc/Misc/NEWS", + "content": "Python 2.7.10 is a bug fix release of the Python 2.7.x series.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.10 is a bug fix release of the Python 2.7.x series.

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 197, + "fields": { + "created": "2015-05-24T23:01:43.418Z", + "updated": "2020-10-22T16:38:24.518Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.0b1", + "slug": "python-350b1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2015-05-24T22:38:57Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-beta-1", + "content": "Python 3.5.0b1\r\n--------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.0b1 was released on May 24th, 2015.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series so far are\r\n\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, adding support for \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a faster alternative to os.walk()\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, multi-phase extension module initialization\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\nPython 3.5 has now entered \"feature freeze\". By default new features may no longer be added to Python 3.5. (However, there are a handful of features that weren't quite ready for Python 3.5.0 beta 1; these were granted exceptions to the freeze, and are scheduled to be added before beta 2.)\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.0b1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed software at installation time.\r\n\r\n* Windows users: The Windows binaries were built with Microsoft Visual Studio 2015, which is not yet officially released. (It's currently offered in \"Preview\" mode, which is akin to a \"beta\".) It is our intention to ship Python 3.5 using VS2015, although right now VS2015's final release date is unclear.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.0b1

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.0b1 was released on May 24th, 2015.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series so far are

    \n
      \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, adding support for "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a faster alternative to os.walk()
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, multi-phase extension module initialization
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n

    Python 3.5 has now entered "feature freeze". By default new features may no longer be added to Python 3.5. (However, there are a handful of features that weren't quite ready for Python 3.5.0 beta 1; these were granted exceptions to the freeze, and are scheduled to be added before beta 2.)

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.0b1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed software at installation time.
    • \n
    • Windows users: The Windows binaries were built with Microsoft Visual Studio 2015, which is not yet officially released. (It's currently offered in "Preview" mode, which is akin to a "beta".) It is our intention to ship Python 3.5 using VS2015, although right now VS2015's final release date is unclear.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 199, + "fields": { + "created": "2015-06-01T04:30:17.480Z", + "updated": "2020-10-22T16:38:14.949Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.0b2", + "slug": "python-350b2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2015-06-01T04:28:29Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-beta-2", + "content": "Python 3.5.0b2\r\n--------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.0b2 was released on May 31st, 2015.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series so far are\r\n\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, adding support for \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a faster alternative to os.walk()\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, multi-phase extension module initialization\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\nPython 3.5 has now entered \"feature freeze\". By default new features may no longer be added to Python 3.5. (However, there are a handful of features that weren't quite ready for Python 3.5.0 beta 2; these were granted exceptions to the freeze, and are scheduled to be added before beta 3.)\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.0b1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed software at installation time.\r\n\r\n* Windows users: The Windows binaries were built with Microsoft Visual Studio 2015, which is not yet officially released. (It's currently offered in \"Preview\" mode, which is akin to a \"beta\".) It is our intention to ship Python 3.5 using VS2015, although right now VS2015's final release date is unclear.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.0b2

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.0b2 was released on May 31st, 2015.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series so far are

    \n
      \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, adding support for "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a faster alternative to os.walk()
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, multi-phase extension module initialization
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n

    Python 3.5 has now entered "feature freeze". By default new features may no longer be added to Python 3.5. (However, there are a handful of features that weren't quite ready for Python 3.5.0 beta 2; these were granted exceptions to the freeze, and are scheduled to be added before beta 3.)

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.0b1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed software at installation time.
    • \n
    • Windows users: The Windows binaries were built with Microsoft Visual Studio 2015, which is not yet officially released. (It's currently offered in "Preview" mode, which is akin to a "beta".) It is our intention to ship Python 3.5 using VS2015, although right now VS2015's final release date is unclear.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 200, + "fields": { + "created": "2015-07-05T17:12:03.293Z", + "updated": "2020-10-22T16:38:08.182Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.0b3", + "slug": "python-350b3", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2015-07-05T17:10:04Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-beta-3", + "content": "Python 3.5.0b3\r\n--------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.0b3 was released on July 5th, 2015.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, adding support for \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a faster alternative to os.walk()\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, multi-phase extension module initialization\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\nPython 3.5 has now entered \"feature freeze\". By default new features may no longer be added to Python 3.5.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.0b1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed software at installation time.\r\n\r\n* Windows users: The Windows binaries were built with Microsoft Visual Studio 2015, which is not yet officially released. (It's currently offered in \"Preview\" mode, which is akin to a \"beta\".) It is our intention to ship Python 3.5 using VS2015, although right now VS2015's final release date is unclear.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.0b3

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.0b3 was released on July 5th, 2015.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, adding support for "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a faster alternative to os.walk()
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, multi-phase extension module initialization
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n

    Python 3.5 has now entered "feature freeze". By default new features may no longer be added to Python 3.5.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.0b1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed software at installation time.
    • \n
    • Windows users: The Windows binaries were built with Microsoft Visual Studio 2015, which is not yet officially released. (It's currently offered in "Preview" mode, which is akin to a "beta".) It is our intention to ship Python 3.5 using VS2015, although right now VS2015's final release date is unclear.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 201, + "fields": { + "created": "2015-07-26T14:34:59.675Z", + "updated": "2020-10-22T16:37:59.512Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.0b4", + "slug": "python-350b4", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2015-07-26T14:17:33Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-beta-4", + "content": "Python 3.5.0b4\r\n--------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.0b4 was released on July 26th, 2015.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, adding support for \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, multi-phase extension module initialization\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\nPython 3.5 has now entered \"feature freeze\". By default new features may no longer be added to Python 3.5.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.0b1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed software at installation time.\r\n\r\n* Windows users: The Windows binaries were built with Microsoft Visual Studio 2015, which is not yet officially released. (It's currently offered in \"Preview\" mode, which is akin to a \"beta\".) It is our intention to ship Python 3.5 using VS2015, although right now VS2015's final release date is unclear.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.0b4

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.0b4 was released on July 26th, 2015.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, adding support for "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, multi-phase extension module initialization
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n

    Python 3.5 has now entered "feature freeze". By default new features may no longer be added to Python 3.5.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.0b1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed software at installation time.
    • \n
    • Windows users: The Windows binaries were built with Microsoft Visual Studio 2015, which is not yet officially released. (It's currently offered in "Preview" mode, which is akin to a "beta".) It is our intention to ship Python 3.5 using VS2015, although right now VS2015's final release date is unclear.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 202, + "fields": { + "created": "2015-08-11T00:20:21.207Z", + "updated": "2020-10-22T16:37:50.937Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.0rc1", + "slug": "python-350rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2015-08-11T00:04:13Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-0-release-candidate-1", + "content": "Python 3.5.0rc1\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.0rc1 was released on August 10th, 2015.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\nPython 3.5 has now entered \"feature freeze\". By default new features may no longer be added to Python 3.5.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed software at installation time.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.0rc1

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.0rc1 was released on August 10th, 2015.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n

    Python 3.5 has now entered "feature freeze". By default new features may no longer be added to Python 3.5.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer does not contain Python, but instead downloads just the needed software at installation time.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 203, + "fields": { + "created": "2015-08-25T18:01:21.621Z", + "updated": "2020-10-22T16:37:44.011Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.0rc2", + "slug": "python-350rc2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2015-08-25T17:52:30Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-0-release-candidate-2", + "content": "Python 3.5.0rc2\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.0rc2 was released on August 25th, 2015.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\nPython 3.5 has now entered \"feature freeze\". By default new features may no longer be added to Python 3.5.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time. There are also zip files containing the Windows build making it easy to redistribute Python as part of another software package.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.0rc2

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.0rc2 was released on August 25th, 2015.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n

    Python 3.5 has now entered "feature freeze". By default new features may no longer be added to Python 3.5.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time. There are also zip files containing the Windows build making it easy to redistribute Python as part of another software package.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 204, + "fields": { + "created": "2015-09-08T01:25:06.538Z", + "updated": "2020-10-22T16:37:36.030Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.0rc3", + "slug": "python-350rc3", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2015-09-08T01:11:28Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-0-release-candidate-3", + "content": "Python 3.5.0rc3\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.0rc3 was released on September 7th, 2015.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\nThe next release of Python 3.5 will be Python 3.5.0 final.\r\nThere should be few (or no) changes to Python 3.5 between rc3 and final.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.0rc3

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.0rc3 was released on September 7th, 2015.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n

    The next release of Python 3.5 will be Python 3.5.0 final.\nThere should be few (or no) changes to Python 3.5 between rc3 and final.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 205, + "fields": { + "created": "2015-09-09T13:04:39.583Z", + "updated": "2020-10-22T16:37:28.828Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.0rc4", + "slug": "python-350rc4", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2015-09-09T13:03:59Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-0-release-candidate-4", + "content": "Python 3.5.0rc4\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.0rc4 was released on September 9th, 2015.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\nThe next release of Python 3.5 will be Python 3.5.0 final.\r\nThere should be few (or no) changes to Python 3.5 between rc4 and final.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.0rc4

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.0rc4 was released on September 9th, 2015.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n

    The next release of Python 3.5 will be Python 3.5.0 final.\nThere should be few (or no) changes to Python 3.5 between rc4 and final.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 206, + "fields": { + "created": "2015-09-13T14:27:20.846Z", + "updated": "2020-10-22T16:37:21.680Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.0", + "slug": "python-350", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2015-09-13T14:07:58Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-0-final", + "content": "Python 3.5.0\r\n------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.0 was released on September 13th, 2015.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\nFor more detailed information, please read\r\n`What's New In Python 3.5. `_ \r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.0

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.0 was released on September 13th, 2015.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n

    For more detailed information, please read\nWhat's New In Python 3.5.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 207, + "fields": { + "created": "2015-11-21T22:27:42.345Z", + "updated": "2015-11-21T22:28:02.824Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.11rc1", + "slug": "python-2711rc1", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2015-11-21T22:25:31Z", + "release_page": null, + "release_notes_url": "https://hg.python.org/cpython/raw-file/82dd9545bd93/Misc/NEWS", + "content": "Python 2.7.11 release candidate 1 is the first release candidate for 2.7.11, the next bugfix release in the 2.x series.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.11 release candidate 1 is the first release candidate for 2.7.11, the next bugfix release in the 2.x series.

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 208, + "fields": { + "created": "2015-11-23T07:07:58.319Z", + "updated": "2020-10-22T16:37:12.803Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.1rc1", + "slug": "python-351rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2015-11-23T07:04:49Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-1-release-candidate-1", + "content": "Python 3.5.1rc1\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.1rc1 was released on November 22th, 2015.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.1rc1

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.1rc1 was released on November 22th, 2015.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 209, + "fields": { + "created": "2015-12-05T22:04:06.750Z", + "updated": "2016-08-02T11:21:21.669Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.11", + "slug": "python-2711", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2015-12-05T22:03:05Z", + "release_page": null, + "release_notes_url": "https://hg.python.org/cpython/raw-file/53d30ab403f1/Misc/NEWS", + "content": "Python 2.7.11 is a bugfix release of the Python 2.7 series.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.11 is a bugfix release of the Python 2.7 series.

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 210, + "fields": { + "created": "2015-12-07T05:03:22.787Z", + "updated": "2020-10-22T16:41:46.637Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.1", + "slug": "python-351", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2015-12-07T02:58:42Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-1-final", + "content": "Python 3.5.1\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.1 was released on December 6th, 2015.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.1

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.1 was released on December 6th, 2015.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 211, + "fields": { + "created": "2015-12-07T05:04:35.632Z", + "updated": "2019-05-08T16:02:15.002Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.4rc1", + "slug": "python-344rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2015-12-07T02:58:40Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-4-release-candidate-1", + "content": "Python 3.4.4rc1\r\n------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.4rc1 was released on December 6th, 2015.\r\n\r\nPython 3.4.4rc1 has many bugfixes and other small improvements over 3.4.3.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release:\r\n\r\n* The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.4rc1 was released on December 6th, 2015.

    \n

    Python 3.4.4rc1 has many bugfixes and other small improvements over 3.4.3.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n
    \n

    More resources

    \n\n

    Notes on this release:

    \n
      \n
    • The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 212, + "fields": { + "created": "2015-12-21T06:32:18.611Z", + "updated": "2019-05-08T16:01:52.782Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.4", + "slug": "python-344", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2015-12-21T06:23:24Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-4", + "content": "Python 3.4.4\r\n------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.4 was released on December 6th, 2015.\r\n\r\nPython 3.4.4 has many bugfixes and other small improvements over 3.4.3.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release:\r\n\r\n* The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.4 was released on December 6th, 2015.

    \n

    Python 3.4.4 has many bugfixes and other small improvements over 3.4.3.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n
    \n

    More resources

    \n\n

    Notes on this release:

    \n
      \n
    • The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 213, + "fields": { + "created": "2016-05-17T19:58:35.793Z", + "updated": "2016-05-17T20:36:17.323Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.0a1", + "slug": "python-360a1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2016-05-17T19:21:25Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-0-alpha-1", + "content": "Python 3.6.0a1\r\n--------------\r\n\r\nPython 3.6.0a1 was released on 2016-05-17.\r\n\r\nMajor new features of the 3.6 series, compared to 3.5\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.6 is still in development; 3.6.0a1 is the first of four planned alpha releases.\r\nAlpha releases are intended to make it easier to\r\ntest the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added, modified, or deleted up until the start of\r\nthe beta phase (2016-09-07). Please keep in mind that this is a preview release\r\nand its use is not recommended for production environments.\r\n\r\nMany new features for Python 3.6 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* :pep:`498`, Formatted string literals\r\n\r\nThe next release of Python 3.6 will be 3.6.0a2, currently scheduled for\r\n2016-06-13.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.6 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.6.0a1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.6.0a1

    \n

    Python 3.6.0a1 was released on 2016-05-17.

    \n
    \n

    Major new features of the 3.6 series, compared to 3.5

    \n

    Python 3.6 is still in development; 3.6.0a1 is the first of four planned alpha releases.\nAlpha releases are intended to make it easier to\ntest the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added, modified, or deleted up until the start of\nthe beta phase (2016-09-07). Please keep in mind that this is a preview release\nand its use is not recommended for production environments.

    \n

    Many new features for Python 3.6 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 498, Formatted string literals
    • \n
    \n

    The next release of Python 3.6 will be 3.6.0a2, currently scheduled for\n2016-06-13.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.6.0a1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 214, + "fields": { + "created": "2016-06-13T03:00:53.433Z", + "updated": "2019-05-08T16:01:38.119Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.5rc1", + "slug": "python-345rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2016-06-13T02:50:21Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-5-release-candidate-1", + "content": "Python 3.4.5rc1\r\n------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.5rc1 was released on June 12th, 2016.\r\n\r\nPython 3.4 has now entered \"security fixes only\" mode, and as such the only improvements between Python 3.4.4 and Python 3.4.5rc1 are security fixes. Also, Python 3.4 will only be released in source code form; no more official binary installers will be released.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release:\r\n\r\n* The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.5rc1 was released on June 12th, 2016.

    \n

    Python 3.4 has now entered "security fixes only" mode, and as such the only improvements between Python 3.4.4 and Python 3.4.5rc1 are security fixes. Also, Python 3.4 will only be released in source code form; no more official binary installers will be released.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n
    \n

    More resources

    \n\n

    Notes on this release:

    \n
      \n
    • The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 215, + "fields": { + "created": "2016-06-13T03:02:15.702Z", + "updated": "2020-10-22T16:36:44.834Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.2rc1", + "slug": "python-352rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2016-06-13T02:50:27Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-2-release-candidate-1", + "content": "Python 3.5.2rc1\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.2rc1 was released on June 12th, 2016.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.2rc1

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.2rc1 was released on June 12th, 2016.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 216, + "fields": { + "created": "2016-06-13T03:16:50.233Z", + "updated": "2016-06-13T03:20:06.292Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.12rc1", + "slug": "python-2712rc1", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2016-06-13T03:14:08Z", + "release_page": null, + "release_notes_url": "https://hg.python.org/cpython/raw-file/v2.7.12rc1/Misc/NEWS", + "content": "Python 2.7.12 release candidate 1 is the first release candidate for 2.7.12, a bugfix release in the 2.x series.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.12 release candidate 1 is the first release candidate for 2.7.12, a bugfix release in the 2.x series.

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 217, + "fields": { + "created": "2016-06-14T03:28:37.418Z", + "updated": "2016-06-14T03:33:46.115Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.0a2", + "slug": "python-360a2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2016-06-13T23:45:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-0-alpha-2", + "content": "Python 3.6.0a2\r\n--------------\r\n\r\nPython 3.6.0a2 was released on 2016-06-13.\r\n\r\nMajor new features of the 3.6 series, compared to 3.5\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.6 is still in development; 3.6.0a2 is the second of four planned alpha releases.\r\nAlpha releases are intended to make it easier to\r\ntest the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added, modified, or deleted up until the start of\r\nthe beta phase (2016-09-07). Please keep in mind that this is a preview release\r\nand its use is not recommended for production environments.\r\n\r\nMany new features for Python 3.6 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* :pep:`498`, Formatted string literals\r\n\r\nThe next pre-release of Python 3.6 will be 3.6.0a3, currently scheduled for\r\n2016-07-11.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.6 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.6.0a1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.6.0a2

    \n

    Python 3.6.0a2 was released on 2016-06-13.

    \n
    \n

    Major new features of the 3.6 series, compared to 3.5

    \n

    Python 3.6 is still in development; 3.6.0a2 is the second of four planned alpha releases.\nAlpha releases are intended to make it easier to\ntest the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added, modified, or deleted up until the start of\nthe beta phase (2016-09-07). Please keep in mind that this is a preview release\nand its use is not recommended for production environments.

    \n

    Many new features for Python 3.6 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 498, Formatted string literals
    • \n
    \n

    The next pre-release of Python 3.6 will be 3.6.0a3, currently scheduled for\n2016-07-11.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.6.0a1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 218, + "fields": { + "created": "2016-06-27T02:27:34.791Z", + "updated": "2020-10-22T16:36:39.085Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.2", + "slug": "python-352", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2016-06-27T02:14:53Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-2", + "content": "Python 3.5.2\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.2 was released on June 26th, 2016.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.2

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.2 was released on June 26th, 2016.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 219, + "fields": { + "created": "2016-06-27T02:27:40.629Z", + "updated": "2019-05-08T16:01:28.342Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.5", + "slug": "python-345", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2016-06-27T02:15:57Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-5", + "content": "Python 3.4.5\r\n------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.5 was released on June 26th, 2016.\r\n\r\nPython 3.4 has now entered \"security fixes only\" mode, and as such the only improvements between Python 3.4.4 and Python 3.4.5 are security fixes. Also, Python 3.4.5 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.5 was released on June 26th, 2016.

    \n

    Python 3.4 has now entered "security fixes only" mode, and as such the only improvements between Python 3.4.4 and Python 3.4.5 are security fixes. Also, Python 3.4.5 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 220, + "fields": { + "created": "2016-06-28T04:19:15.523Z", + "updated": "2016-06-28T04:23:04.436Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.12", + "slug": "python-2712", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2016-06-25T04:17:44Z", + "release_page": null, + "release_notes_url": "https://hg.python.org/cpython/raw-file/v2.7.12/Misc/NEWS", + "content": "Python 2.7.12 is a bugfix release in the Python 2.7.x series.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.12 is a bugfix release in the Python 2.7.x series.

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 221, + "fields": { + "created": "2016-07-12T04:54:31.302Z", + "updated": "2016-07-12T04:54:31.316Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.0a3", + "slug": "python-360a3", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2016-07-12T04:48:30Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-0-alpha-3", + "content": "Python 3.6.0a3\r\n--------------\r\n\r\nPython 3.6.0a3 was released on 2016-07-12.\r\n\r\nMajor new features of the 3.6 series, compared to 3.5\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.6 is still in development; 3.6.0a3 is the third of four planned alpha releases.\r\nAlpha releases are intended to make it easier to\r\ntest the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added, modified, or deleted up until the start of\r\nthe beta phase (2016-09-12). Please keep in mind that this is a preview release\r\nand its use is not recommended for production environments.\r\n\r\nMany new features for Python 3.6 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* :pep:`498`, Formatted string literals\r\n\r\nThe next pre-release of Python 3.6 will be 3.6.0a4, currently scheduled for\r\n2016-08-15.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.6 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.6.0a1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.6.0a3

    \n

    Python 3.6.0a3 was released on 2016-07-12.

    \n
    \n

    Major new features of the 3.6 series, compared to 3.5

    \n

    Python 3.6 is still in development; 3.6.0a3 is the third of four planned alpha releases.\nAlpha releases are intended to make it easier to\ntest the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added, modified, or deleted up until the start of\nthe beta phase (2016-09-12). Please keep in mind that this is a preview release\nand its use is not recommended for production environments.

    \n

    Many new features for Python 3.6 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 498, Formatted string literals
    • \n
    \n

    The next pre-release of Python 3.6 will be 3.6.0a4, currently scheduled for\n2016-08-15.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.6.0a1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 222, + "fields": { + "created": "2016-08-16T02:20:30.043Z", + "updated": "2016-08-16T02:20:30.063Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.0a4", + "slug": "python-360a4", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2016-08-15T23:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-0-alpha-4", + "content": "Python 3.6.0a4\r\n--------------\r\n\r\nPython 3.6.0a4 was released on 2016-08-15.\r\n\r\nMajor new features of the 3.6 series, compared to 3.5\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.6 is still in development; 3.6.0a4 is the last of four planned alpha releases.\r\nAlpha releases are intended to make it easier to\r\ntest the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added, modified, or deleted up until the start of\r\nthe beta phase (2016-09-12). Please keep in mind that this is a preview release\r\nand its use is not recommended for production environments.\r\n\r\nMany new features for Python 3.6 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* :pep:`498`, Formatted string literals\r\n\r\nThe next pre-release of Python 3.6 will be 3.6.0b1, currently scheduled for\r\n2016-09-12.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.6 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.6.0a1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.6.0a4

    \n

    Python 3.6.0a4 was released on 2016-08-15.

    \n
    \n

    Major new features of the 3.6 series, compared to 3.5

    \n

    Python 3.6 is still in development; 3.6.0a4 is the last of four planned alpha releases.\nAlpha releases are intended to make it easier to\ntest the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added, modified, or deleted up until the start of\nthe beta phase (2016-09-12). Please keep in mind that this is a preview release\nand its use is not recommended for production environments.

    \n

    Many new features for Python 3.6 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 498, Formatted string literals
    • \n
    \n

    The next pre-release of Python 3.6 will be 3.6.0b1, currently scheduled for\n2016-09-12.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.6.0a1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 223, + "fields": { + "created": "2016-09-12T22:58:16.110Z", + "updated": "2016-09-16T19:58:22.545Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.0b1", + "slug": "python-360b1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2016-09-12T22:33:30Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-0-beta-1", + "content": "Python 3.6.0b1\r\n--------------\r\n\r\nPython 3.6.0b1 was released on 2016-09-12.\r\n\r\nMajor new features of the 3.6 series, compared to 3.5\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.6 is still in development; 3.6.0b1 is the first of four planned beta releases.\r\n\r\nAmong the new major new features in Python 3.6 are:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customisation of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8 (provisional)\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8 (provisional)\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information. \r\nAdditional documentation for these features and other changes will be updated during the beta phase.\r\n\r\nBeta releases are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.6 during the beta phase and report issues found to bugs.python.org as soon as possible. While the release will be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2016-12-05). Our goal is have no changes after rc1. To achieve that, it will be extremely important to get as much exposure for 3.6 as possible during the beta phase. Please keep in mind that this is a preview release\r\nand its use is not recommended for production environments.\r\n\r\nThe next pre-release of Python 3.6 will be 3.6.0b2, currently scheduled for\r\n2016-10-03.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.6 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.6.0a1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.6.0b1

    \n

    Python 3.6.0b1 was released on 2016-09-12.

    \n
    \n

    Major new features of the 3.6 series, compared to 3.5

    \n

    Python 3.6 is still in development; 3.6.0b1 is the first of four planned beta releases.

    \n

    Among the new major new features in Python 3.6 are:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customisation of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8 (provisional)
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8 (provisional)
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.\nAdditional documentation for these features and other changes will be updated during the beta phase.

    \n

    Beta releases are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.6 during the beta phase and report issues found to bugs.python.org as soon as possible. While the release will be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2016-12-05). Our goal is have no changes after rc1. To achieve that, it will be extremely important to get as much exposure for 3.6 as possible during the beta phase. Please keep in mind that this is a preview release\nand its use is not recommended for production environments.

    \n

    The next pre-release of Python 3.6 will be 3.6.0b2, currently scheduled for\n2016-10-03.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.6.0a1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 224, + "fields": { + "created": "2016-10-11T00:37:03.668Z", + "updated": "2016-10-12T19:27:02.160Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.0b2", + "slug": "python-360b2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2016-10-10T23:55:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-0-beta-2", + "content": "Python 3.6.0b2\r\n--------------\r\n\r\nPython 3.6.0b2 was released on 2016-10-10.\r\n\r\nMajor new features of the 3.6 series, compared to 3.5\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.6 is still in development; 3.6.0b2 is the second of four planned beta releases.\r\n\r\nAmong the new major new features in Python 3.6 are:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customisation of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8 (provisional)\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8 (provisional)\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information. \r\nAdditional documentation for these features and other changes will be updated during the beta phase.\r\n\r\nBeta releases are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.6 during the beta phase and report issues found to bugs.python.org as soon as possible. While the release will be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2016-12-05). Our goal is have no changes after rc1. To achieve that, it will be extremely important to get as much exposure for 3.6 as possible during the beta phase. Please keep in mind that this is a preview release\r\nand its use is not recommended for production environments.\r\n\r\nThe next pre-release of Python 3.6 will be 3.6.0b3, currently scheduled for\r\n2016-10-31.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.6 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.6.0 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.6.0b2

    \n

    Python 3.6.0b2 was released on 2016-10-10.

    \n
    \n

    Major new features of the 3.6 series, compared to 3.5

    \n

    Python 3.6 is still in development; 3.6.0b2 is the second of four planned beta releases.

    \n

    Among the new major new features in Python 3.6 are:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customisation of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8 (provisional)
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8 (provisional)
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.\nAdditional documentation for these features and other changes will be updated during the beta phase.

    \n

    Beta releases are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.6 during the beta phase and report issues found to bugs.python.org as soon as possible. While the release will be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2016-12-05). Our goal is have no changes after rc1. To achieve that, it will be extremely important to get as much exposure for 3.6 as possible during the beta phase. Please keep in mind that this is a preview release\nand its use is not recommended for production environments.

    \n

    The next pre-release of Python 3.6 will be 3.6.0b3, currently scheduled for\n2016-10-31.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.6.0 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 225, + "fields": { + "created": "2016-11-01T04:22:50.035Z", + "updated": "2016-11-01T05:16:38.985Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.0b3", + "slug": "python-360b3", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2016-10-31T23:59:59Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-0-beta-3", + "content": "Python 3.6.0b3\r\n--------------\r\n\r\nPython 3.6.0b3 was released on 2016-10-31.\r\n\r\nMajor new features of the 3.6 series, compared to 3.5\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.6 is still in development; 3.6.0b3 is the third of four planned beta releases.\r\n\r\nAmong the new major new features in Python 3.6 are:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customisation of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information. \r\nAdditional documentation for these features and other changes will be updated during the beta phase.\r\n\r\nBeta releases are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.6 during the beta phase and report issues found to bugs.python.org as soon as possible. While the release was feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2016-12-05). Our goal is have no changes after rc1. To achieve that, it will be extremely important to get as much exposure for 3.6 as possible during the beta phase. Please keep in mind that this is a preview release and its use is not recommended for production environments.\r\n\r\nThe next pre-release of Python 3.6 will be 3.6.0b4, currently scheduled for\r\n2016-11-21.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.6 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.6.0 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.6.0b3

    \n

    Python 3.6.0b3 was released on 2016-10-31.

    \n
    \n

    Major new features of the 3.6 series, compared to 3.5

    \n

    Python 3.6 is still in development; 3.6.0b3 is the third of four planned beta releases.

    \n

    Among the new major new features in Python 3.6 are:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customisation of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.\nAdditional documentation for these features and other changes will be updated during the beta phase.

    \n

    Beta releases are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.6 during the beta phase and report issues found to bugs.python.org as soon as possible. While the release was feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2016-12-05). Our goal is have no changes after rc1. To achieve that, it will be extremely important to get as much exposure for 3.6 as possible during the beta phase. Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    The next pre-release of Python 3.6 will be 3.6.0b4, currently scheduled for\n2016-11-21.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.6.0 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 226, + "fields": { + "created": "2016-11-22T06:33:49.008Z", + "updated": "2016-11-22T06:36:02.612Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.0b4", + "slug": "python-360b4", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2016-11-21T23:59:59Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-0-beta-4", + "content": "Python 3.6.0b4\r\n--------------\r\n\r\nPython 3.6.0b4 was released on 2016-11-21.\r\n\r\nMajor new features of the 3.6 series, compared to 3.5\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.6 is still in development; 3.6.0b4 is the final planned beta release.\r\n\r\nAmong the new major new features in Python 3.6 are:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customisation of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information. \r\nAdditional documentation for these features and other changes will be updated during the beta phase.\r\n\r\nBeta releases are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.6 during the beta phase and report issues found to bugs.python.org as soon as possible. While the release was feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2016-12-05). Our goal is have no changes after rc1. To achieve that, it will be extremely important to get as much exposure for 3.6 as possible during the beta phase. Please keep in mind that this is a preview release and its use is not recommended for production environments.\r\n\r\nThe next pre-release of Python 3.6 will be 3.6.0rc1, the release candidate, currently scheduled for\r\n2016-12-05.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.6 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.6.0 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.6.0b4

    \n

    Python 3.6.0b4 was released on 2016-11-21.

    \n
    \n

    Major new features of the 3.6 series, compared to 3.5

    \n

    Python 3.6 is still in development; 3.6.0b4 is the final planned beta release.

    \n

    Among the new major new features in Python 3.6 are:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customisation of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.\nAdditional documentation for these features and other changes will be updated during the beta phase.

    \n

    Beta releases are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.6 during the beta phase and report issues found to bugs.python.org as soon as possible. While the release was feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2016-12-05). Our goal is have no changes after rc1. To achieve that, it will be extremely important to get as much exposure for 3.6 as possible during the beta phase. Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    The next pre-release of Python 3.6 will be 3.6.0rc1, the release candidate, currently scheduled for\n2016-12-05.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.6.0 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 227, + "fields": { + "created": "2016-12-04T03:51:05.077Z", + "updated": "2016-12-04T03:51:40.263Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.13rc1", + "slug": "python-2713rc1", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2016-12-04T03:50:13Z", + "release_page": null, + "release_notes_url": "https://hg.python.org/cpython/raw-file/v2.7.13rc1/Misc/NEWS", + "content": "Python 2.7.13 release candidate 1 is the first release candidate for 2.7.13, a bugfix release in the 2.x series.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.13 release candidate 1 is the first release candidate for 2.7.13, a bugfix release in the 2.x series.

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 228, + "fields": { + "created": "2016-12-07T06:23:30.852Z", + "updated": "2016-12-16T03:54:51.568Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.0rc1", + "slug": "python-360rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2016-12-06T23:59:59Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-0-release-candidate-1", + "content": "Python 3.6.0rc1\r\n---------------\r\n\r\nPython 3.6.0rc1 was released on 2016-12-06.\r\n\r\n3.6.0rc1 is the first release candidate for the 3.6.0 release.\r\nCode for 3.6.0 is now frozen.\r\nAssuming no release critical problems are found prior to the\r\n3.6.0 final release date, currently 2016-12-16, the 3.6.0 final\r\nrelease will be the same code base as this 3.6.0rc1.\r\nMaintenance releases for the 3.6 series will follow at regular\r\nintervals starting in the first quarter of 2017.\r\n\r\nMajor new features of the 3.6 series, compared to 3.5\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features in Python 3.6 are:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customisation of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information. \r\n\r\nNote that 3.6.0rc1 is still a preview release and thus its use is not recommended for production environments.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.6 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* If you are building Python from source, beware that the OpenSSL 1.1.0c release, the most recent as of this update, is known to cause Python 3.6 test suite failures and its use should be avoided without additional patches. It is expected that the next release of the OpenSSL 1.1.0 series will fix these problems. See http://bugs.python.org/issue28689 for more information.\r\n \r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.6.0 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.6.0rc1

    \n

    Python 3.6.0rc1 was released on 2016-12-06.

    \n

    3.6.0rc1 is the first release candidate for the 3.6.0 release.\nCode for 3.6.0 is now frozen.\nAssuming no release critical problems are found prior to the\n3.6.0 final release date, currently 2016-12-16, the 3.6.0 final\nrelease will be the same code base as this 3.6.0rc1.\nMaintenance releases for the 3.6 series will follow at regular\nintervals starting in the first quarter of 2017.

    \n
    \n

    Major new features of the 3.6 series, compared to 3.5

    \n

    Among the new major new features in Python 3.6 are:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customisation of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.

    \n

    Note that 3.6.0rc1 is still a preview release and thus its use is not recommended for production environments.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • If you are building Python from source, beware that the OpenSSL 1.1.0c release, the most recent as of this update, is known to cause Python 3.6 test suite failures and its use should be avoided without additional patches. It is expected that the next release of the OpenSSL 1.1.0 series will fix these problems. See http://bugs.python.org/issue28689 for more information.
    • \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.6.0 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 229, + "fields": { + "created": "2016-12-17T03:39:55.491Z", + "updated": "2016-12-17T03:39:55.506Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.0rc2", + "slug": "python-360rc2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2016-12-16T23:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-0-release-candidate-2", + "content": "Python 3.6.0rc2\r\n---------------\r\n\r\nPython 3.6.0rc2 was released on 2016-12-16.\r\n\r\n3.6.0rc2 is the second release candidate for the 3.6.0 release.\r\nCode for 3.6.0 is now frozen.\r\nAssuming no release critical problems are found prior to the\r\n3.6.0 final release date, currently 2016-12-23, the 3.6.0 final\r\nrelease will be the same code base as this 3.6.0rc2.\r\nMaintenance releases for the 3.6 series will follow at regular\r\nintervals starting in the first quarter of 2017.\r\n\r\nMajor new features of the 3.6 series, compared to 3.5\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features in Python 3.6 are:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information. \r\n\r\nNote that 3.6.0rc2 is still a preview release and thus its use is not recommended for production environments.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.6 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* If you are building Python from source, beware that the OpenSSL 1.1.0c release, the most recent as of this update, is known to cause Python 3.6 test suite failures and its use should be avoided without additional patches. It is expected that the next release of the OpenSSL 1.1.0 series will fix these problems. See http://bugs.python.org/issue28689 for more information.\r\n \r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.6.0 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.6.0rc2

    \n

    Python 3.6.0rc2 was released on 2016-12-16.

    \n

    3.6.0rc2 is the second release candidate for the 3.6.0 release.\nCode for 3.6.0 is now frozen.\nAssuming no release critical problems are found prior to the\n3.6.0 final release date, currently 2016-12-23, the 3.6.0 final\nrelease will be the same code base as this 3.6.0rc2.\nMaintenance releases for the 3.6 series will follow at regular\nintervals starting in the first quarter of 2017.

    \n
    \n

    Major new features of the 3.6 series, compared to 3.5

    \n

    Among the new major new features in Python 3.6 are:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.

    \n

    Note that 3.6.0rc2 is still a preview release and thus its use is not recommended for production environments.

    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • If you are building Python from source, beware that the OpenSSL 1.1.0c release, the most recent as of this update, is known to cause Python 3.6 test suite failures and its use should be avoided without additional patches. It is expected that the next release of the OpenSSL 1.1.0 series will fix these problems. See http://bugs.python.org/issue28689 for more information.
    • \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.6.0 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 230, + "fields": { + "created": "2016-12-17T21:29:48.004Z", + "updated": "2016-12-17T21:30:53.620Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.13", + "slug": "python-2713", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2016-12-17T21:29:04Z", + "release_page": null, + "release_notes_url": "https://hg.python.org/cpython/raw-file/v2.7.13/Misc/NEWS", + "content": "Python 2.7.13 is a bugfix release in the Python 2.7.x series.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.13 is a bugfix release in the Python 2.7.x series.

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 231, + "fields": { + "created": "2016-12-23T09:29:52.833Z", + "updated": "2022-01-07T22:24:14.295Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.0", + "slug": "python-360", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2016-12-23T09:30:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-0-final", + "content": "**Note:** The release you are looking at is **Python 3.6.0**, the initial **feature release** for the legacy **3.6** series which has now reached **end-of-life** and is no longer supported. See the `downloads page `_ for currently supported versions of Python. The final source-only **security fix** release for 3.6 was `3.6.15 `_ and the final **bugfix release** was `3.6.8 `_.\r\n\r\nAmong the new major new features in Python 3.6 were:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.6 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* If you are building Python from source, beware that the OpenSSL 1.1.0c release, the most recent as of this update, is known to cause Python 3.6 test suite failures and its use should be avoided without additional patches. It is expected that the next release of the OpenSSL 1.1.0 series will fix these problems. See http://bugs.python.org/issue28689 for more information.\r\n \r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.6.0 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.6/ReadMe.rtf``. There is important information there about changes in the 3.6.0 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n\r\n* macOS users: There is `important information about IDLE, Tkinter, and Tcl/Tk on macOS here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.6.0, the initial feature release for the legacy 3.6 series which has now reached end-of-life and is no longer supported. See the downloads page for currently supported versions of Python. The final source-only security fix release for 3.6 was 3.6.15 and the final bugfix release was 3.6.8.

    \n

    Among the new major new features in Python 3.6 were:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n
    \n

    More resources

    \n\n
    \n

    Notes on this release

    \n
      \n
    • If you are building Python from source, beware that the OpenSSL 1.1.0c release, the most recent as of this update, is known to cause Python 3.6 test suite failures and its use should be avoided without additional patches. It is expected that the next release of the OpenSSL 1.1.0 series will fix these problems. See http://bugs.python.org/issue28689 for more information.
    • \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.6.0 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.6/ReadMe.rtf. There is important information there about changes in the 3.6.0 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    • macOS users: There is important information about IDLE, Tkinter, and Tcl/Tk on macOS here.
    • \n
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 232, + "fields": { + "created": "2017-01-03T02:17:38.410Z", + "updated": "2020-10-22T16:36:27.745Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.3rc1", + "slug": "python-353rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2017-01-03T02:08:15Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-3-release-candidate-1", + "content": "Python 3.5.3 release candidate 1\r\n--------------------------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.3 release candidate 1 was released on January 2nd, 2017.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.3 release candidate 1

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.3 release candidate 1 was released on January 2nd, 2017.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 233, + "fields": { + "created": "2017-01-03T02:17:41.839Z", + "updated": "2019-05-08T16:01:15.566Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.6rc1", + "slug": "python-346rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2017-01-03T02:08:11Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-6-release-candidate-1", + "content": "Python 3.4.6 release candidate 1\r\n--------------------------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.6 release candidate 1 was released on January 2nd, 2017.\r\n\r\nPython 3.4 has now entered \"security fixes only\" mode, and as such the only improvements between Python 3.4.4 and Python 3.4.5 are security fixes. Also, Python 3.4.6 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.6 release candidate 1 was released on January 2nd, 2017.

    \n

    Python 3.4 has now entered "security fixes only" mode, and as such the only improvements between Python 3.4.4 and Python 3.4.5 are security fixes. Also, Python 3.4.6 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 234, + "fields": { + "created": "2017-01-17T08:37:56.201Z", + "updated": "2020-10-22T16:36:20.737Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.3", + "slug": "python-353", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2017-01-17T08:24:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-3", + "content": "Python 3.5.3\r\n--------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.3 was released on January 17th, 2017.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.3

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.3 was released on January 17th, 2017.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 235, + "fields": { + "created": "2017-01-17T08:38:00.840Z", + "updated": "2019-05-08T16:01:02.744Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.6", + "slug": "python-346", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2017-01-17T08:24:03Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-6", + "content": "Python 3.4.6\r\n--------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.6 was released on January 17th, 2017.\r\n\r\nPython 3.4 has now entered \"security fixes only\" mode, and as such the only improvements between Python 3.4.4 and Python 3.4.5 are security fixes. Also, Python 3.4.6 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.6 was released on January 17th, 2017.

    \n

    Python 3.4 has now entered "security fixes only" mode, and as such the only improvements between Python 3.4.4 and Python 3.4.5 are security fixes. Also, Python 3.4.6 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 236, + "fields": { + "created": "2017-03-05T10:15:09.120Z", + "updated": "2017-03-05T10:15:09.138Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.1rc1", + "slug": "python-361rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2017-03-05T10:07:05Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-1", + "content": "Python 3.6.1rc1 is a release candidate preview of the first maintenance release of Python 3.6.\r\nThe Python 3.6 series contains many new features and optimizations. See the\r\n`What\u2019s New In Python 3.6 `_\r\ndocument for more information.\r\n\r\nMajor new features of the 3.6 series, compared to 3.5\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features in Python 3.6 are:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nNote that 3.6.1rc1 is a preview release and thus its use is not recommended for production environments.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.6 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.6.0 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.6/ReadMe.rtf``. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n\r\n* macOS users: There is `important information about IDLE, Tkinter, and Tcl/Tk on macOS here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.6.1rc1 is a release candidate preview of the first maintenance release of Python 3.6.\nThe Python 3.6 series contains many new features and optimizations. See the\nWhat\u2019s New In Python 3.6\ndocument for more information.

    \n
    \n

    Major new features of the 3.6 series, compared to 3.5

    \n

    Among the new major new features in Python 3.6 are:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Note that 3.6.1rc1 is a preview release and thus its use is not recommended for production environments.

    \n
    \n
    \n

    More resources

    \n\n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.6.0 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.6/ReadMe.rtf. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    • macOS users: There is important information about IDLE, Tkinter, and Tcl/Tk on macOS here.
    • \n
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 237, + "fields": { + "created": "2017-03-22T02:17:05.113Z", + "updated": "2022-01-07T22:22:25.548Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.1", + "slug": "python-361", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2017-03-21T23:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-1-final", + "content": "**Note:** The release you are looking at is **Python 3.6.1**, a **bugfix release** for the legacy **3.6** series which has now reached **end-of-life** and is no longer supported. See the `downloads page `_ for currently supported versions of Python. The final source-only **security fix** release for 3.6 was `3.6.15 `_ and the final **bugfix release** was `3.6.8 `_.\r\n\r\nAmong the new major new features in Python 3.6 were:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.6 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* While it should be generally transparent to you, 3.6.1 is the first release produced using a major change to our software development and release processes. Please report any issues via our issue tracker at https://bugs.python.org.\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.6.0 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.6/ReadMe.rtf``. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n\r\n* macOS users: There is `important information about IDLE, Tkinter, and Tcl/Tk on macOS here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.6.1, a bugfix release for the legacy 3.6 series which has now reached end-of-life and is no longer supported. See the downloads page for currently supported versions of Python. The final source-only security fix release for 3.6 was 3.6.15 and the final bugfix release was 3.6.8.

    \n

    Among the new major new features in Python 3.6 were:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n
    \n

    More resources

    \n\n
    \n

    Notes on this release

    \n
      \n
    • While it should be generally transparent to you, 3.6.1 is the first release produced using a major change to our software development and release processes. Please report any issues via our issue tracker at https://bugs.python.org.
    • \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.6.0 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.6/ReadMe.rtf. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    • macOS users: There is important information about IDLE, Tkinter, and Tcl/Tk on macOS here.
    • \n
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 238, + "fields": { + "created": "2017-06-18T01:35:38.310Z", + "updated": "2017-06-18T02:14:04.161Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.2rc1", + "slug": "python-362rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2017-06-17T23:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-2-release-candidate-1", + "content": "Python 3.6.2rc1 is a release candidate preview of the second maintenance release of Python 3.6.\r\nThe Python 3.6 series contains many new features and optimizations. See the\r\n`What\u2019s New In Python 3.6 `_\r\ndocument for more information.\r\n\r\nMajor new features of the 3.6 series, compared to 3.5\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features in Python 3.6 are:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nNote that 3.6.2rc1 is a preview release and thus its use is not recommended for production environments.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.6 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.6/ReadMe.rtf``. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n\r\n* macOS users: There is `important information about IDLE, Tkinter, and Tcl/Tk on macOS here `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.6.2rc1 is a release candidate preview of the second maintenance release of Python 3.6.\nThe Python 3.6 series contains many new features and optimizations. See the\nWhat\u2019s New In Python 3.6\ndocument for more information.

    \n
    \n

    Major new features of the 3.6 series, compared to 3.5

    \n

    Among the new major new features in Python 3.6 are:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Note that 3.6.2rc1 is a preview release and thus its use is not recommended for production environments.

    \n
    \n
    \n

    More resources

    \n\n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.6/ReadMe.rtf. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    • macOS users: There is important information about IDLE, Tkinter, and Tcl/Tk on macOS here.
    • \n
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 239, + "fields": { + "created": "2017-07-08T03:51:38.527Z", + "updated": "2017-07-08T03:51:38.541Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.2rc2", + "slug": "python-362rc2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2017-07-07T23:59:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-2-release-candidate-2", + "content": "Python 3.6.2rc2 is a release candidate preview of the second maintenance release of Python 3.6.\r\nThe Python 3.6 series contains many new features and optimizations. See the\r\n`What\u2019s New In Python 3.6 `_\r\ndocument for more information.\r\n\r\nMajor new features of the 3.6 series, compared to 3.5\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features in Python 3.6 are:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nNote that 3.6.2rc2 is a preview release and thus its use is not recommended for production environments.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* `3.6 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.6/ReadMe.rtf``. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n\r\n* macOS users: There is `important information about IDLE, Tkinter, and Tcl/Tk on macOS here `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.6.2rc2 is a release candidate preview of the second maintenance release of Python 3.6.\nThe Python 3.6 series contains many new features and optimizations. See the\nWhat\u2019s New In Python 3.6\ndocument for more information.

    \n
    \n

    Major new features of the 3.6 series, compared to 3.5

    \n

    Among the new major new features in Python 3.6 are:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Note that 3.6.2rc2 is a preview release and thus its use is not recommended for production environments.

    \n
    \n
    \n

    More resources

    \n\n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.6/ReadMe.rtf. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    • macOS users: There is important information about IDLE, Tkinter, and Tcl/Tk on macOS here.
    • \n
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 240, + "fields": { + "created": "2017-07-17T04:11:08.654Z", + "updated": "2022-01-07T22:21:27.225Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.2", + "slug": "python-362", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2017-07-17T00:30:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-2-final", + "content": "**Note:** The release you are looking at is **Python 3.6.2**, a **bugfix release** for the legacy **3.6** series which has now reached **end-of-life** and is no longer supported. See the `downloads page `_ for currently supported versions of Python. The final source-only **security fix** release for 3.6 was `3.6.15 `_ and the final **bugfix release** was `3.6.8 `_.\r\n\r\nAmong the new major new features in Python 3.6 were:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* Windows users: If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.6/ReadMe.rtf``. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n\r\n* macOS users: There is `important information about IDLE, Tkinter, and Tcl/Tk on macOS here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.6.2, a bugfix release for the legacy 3.6 series which has now reached end-of-life and is no longer supported. See the downloads page for currently supported versions of Python. The final source-only security fix release for 3.6 was 3.6.15 and the final bugfix release was 3.6.8.

    \n

    Among the new major new features in Python 3.6 were:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n
    \n

    More resources

    \n\n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • Windows users: If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.6/ReadMe.rtf. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    • macOS users: There is important information about IDLE, Tkinter, and Tcl/Tk on macOS here.
    • \n
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 241, + "fields": { + "created": "2017-07-25T08:35:26.408Z", + "updated": "2019-05-08T16:00:43.344Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.7rc1", + "slug": "python-347rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2017-07-25T08:19:49Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-7rc1", + "content": "Python 3.4.7rc1\r\n---------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.7rc1 was released on July 25th, 2017.\r\n\r\nPython 3.4 has now entered \"security fixes only\" mode, and as such the only improvements between Python 3.4.6 and Python 3.4.7 are security fixes. Also, Python 3.4.7 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.7rc1 was released on July 25th, 2017.

    \n

    Python 3.4 has now entered "security fixes only" mode, and as such the only improvements between Python 3.4.6 and Python 3.4.7 are security fixes. Also, Python 3.4.7 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 242, + "fields": { + "created": "2017-07-25T08:35:29.399Z", + "updated": "2020-10-22T16:36:10.177Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.4rc1", + "slug": "python-354rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2017-07-25T08:19:51Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-4rc1", + "content": "Python 3.5.4rc1\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.4rc1 was released on July 25th, 2017.\r\n\r\nPython 3.5.4 will be the last \"bugfixes\" release of 3.5. After 3.5.4 final is released, 3.5 will enter \"security fixes only\" mode, and as such the only improvements made in the 3.5 branch will be security fixes.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.4rc1

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.4rc1 was released on July 25th, 2017.

    \n

    Python 3.5.4 will be the last "bugfixes" release of 3.5. After 3.5.4 final is released, 3.5 will enter "security fixes only" mode, and as such the only improvements made in the 3.5 branch will be security fixes.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 243, + "fields": { + "created": "2017-08-08T10:57:44.649Z", + "updated": "2020-10-22T16:36:01.671Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.4", + "slug": "python-354", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2017-08-08T10:52:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-4", + "content": "Python 3.5.4\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.4 was released on August 8th, 2017.\r\n\r\nPython 3.5.4 is the last \"bugfix\" release of 3.5. The Python 3.5 branch has now entered \"security fixes only\" mode; going forward, the only improvements made in the 3.5 branch will be security fixes.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.4

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.4 was released on August 8th, 2017.

    \n

    Python 3.5.4 is the last "bugfix" release of 3.5. The Python 3.5 branch has now entered "security fixes only" mode; going forward, the only improvements made in the 3.5 branch will be security fixes.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 244, + "fields": { + "created": "2017-08-09T07:30:34.769Z", + "updated": "2019-05-08T16:00:20.739Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.7", + "slug": "python-347", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2017-08-09T07:26:45Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-7", + "content": "Python 3.4.7\r\n---------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.7 was released on August 9th, 2017.\r\n\r\nPython 3.4 has now entered \"security fixes only\" mode, and as such the only improvements between Python 3.4.6 and Python 3.4.7 are security fixes. Also, Python 3.4.7 has only been released in source code form; no more official binary installers will be produced for Python 3.4.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.7 was released on August 9th, 2017.

    \n

    Python 3.4 has now entered "security fixes only" mode, and as such the only improvements between Python 3.4.6 and Python 3.4.7 are security fixes. Also, Python 3.4.7 has only been released in source code form; no more official binary installers will be produced for Python 3.4.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 245, + "fields": { + "created": "2017-08-27T03:37:15.899Z", + "updated": "2017-08-27T03:38:29.089Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.14rc1", + "slug": "python-2714rc1", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2017-08-27T03:35:28Z", + "release_page": null, + "release_notes_url": "https://raw.githubusercontent.com/python/cpython/c707893f9cee870bba8364b3a06eb9cfa3b80e58/Misc/NEWS", + "content": "Python 2.7.14 is the latest bug fix release in the Python 2.7 series.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.14 is the latest bug fix release in the Python 2.7 series.

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 246, + "fields": { + "created": "2017-09-06T22:28:49.672Z", + "updated": "2017-09-06T22:48:51.974Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.3.7rc1", + "slug": "python-337rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2017-09-06T22:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.3.7/whatsnew/changelog.html", + "content": "**This is a security-fix source-only release.**\r\nThe last binary release was `3.3.5 `_.\r\n\r\nThis is the release candidate of Python 3.3.7. Python 3.3.0 was released on 2012-09-29 and has been in security-fix-only mode since 2014-03-08. Per Python Development policy, **all support for the 3.3 series of releases ends on 2017-09-29**, five years after the initial release. **Python 3.3.7 is expected to be the final security-fix release for the 3.3 series.** Python 3.3.7 final is expected to be released by 2017-09-18.\r\n\r\nAfter 2017-09-29, **we will no longer accept bug reports nor provide fixes of any kind for Python 3.3.x** (third-party distributors of Python 3.3.x may choose to offer their own extended support). Because 3.3.x has long been in security-fix mode, 3.3.7 may no longer build correctly on all current operating system releases and some tests may fail. If you are still using Python 3.3.x, we **strongly** encourage you to **upgrade to a more recent, fully supported version** of Python 3; see https://www.python.org/downloads/.\r\n\r\nMajor new features of the 3.3 series, compared to 3.2\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.3 includes a range of improvements of the 3.x series, as well as easier\r\nporting between 2.x and 3.x.\r\n\r\n* :pep:`380`, syntax for delegating to a subgenerator (``yield from``)\r\n* :pep:`393`, flexible string representation (doing away with the distinction\r\n between \"wide\" and \"narrow\" Unicode builds)\r\n* A C implementation of the \"decimal\" module, with up to 120x speedup\r\n for decimal-heavy applications\r\n* The import system (__import__) is based on importlib by default\r\n* The new \"lzma\" module with LZMA/XZ support\r\n* :pep:`397`, a Python launcher for Windows\r\n* :pep:`405`, virtual environment support in core\r\n* :pep:`420`, namespace package support\r\n* :pep:`3151`, reworking the OS and IO exception hierarchy\r\n* :pep:`3155`, qualified name for classes and functions\r\n* :pep:`409`, suppressing exception context\r\n* :pep:`414`, explicit Unicode literals to help with porting\r\n* :pep:`418`, extended platform-independent clocks in the \"time\" module\r\n* :pep:`412`, a new key-sharing dictionary implementation that significantly\r\n saves memory for object-oriented code\r\n* :pep:`362`, the function-signature object\r\n* The new \"faulthandler\" module that helps diagnosing crashes\r\n* The new \"unittest.mock\" module\r\n* The new \"ipaddress\" module\r\n* The \"sys.implementation\" attribute\r\n* A policy framework for the email package, with a provisional (see\r\n :pep:`411`) policy that adds much improved unicode support for email\r\n header parsing\r\n* A \"collections.ChainMap\" class for linking mappings to a single unit\r\n* Wrappers for many more POSIX functions in the \"os\" and \"signal\" modules, as\r\n well as other useful functions such as \"sendfile()\"\r\n* Hash randomization, introduced in earlier bugfix releases, is now\r\n switched on by default\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.3? `_\r\n* `3.3 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n**This is a preview release, and its use is not recommended in production settings.**\r\n\r\n.. This is a production release. Please `report any bugs `__ you encounter.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    This is a security-fix source-only release.\nThe last binary release was 3.3.5.

    \n

    This is the release candidate of Python 3.3.7. Python 3.3.0 was released on 2012-09-29 and has been in security-fix-only mode since 2014-03-08. Per Python Development policy, all support for the 3.3 series of releases ends on 2017-09-29, five years after the initial release. Python 3.3.7 is expected to be the final security-fix release for the 3.3 series. Python 3.3.7 final is expected to be released by 2017-09-18.

    \n

    After 2017-09-29, we will no longer accept bug reports nor provide fixes of any kind for Python 3.3.x (third-party distributors of Python 3.3.x may choose to offer their own extended support). Because 3.3.x has long been in security-fix mode, 3.3.7 may no longer build correctly on all current operating system releases and some tests may fail. If you are still using Python 3.3.x, we strongly encourage you to upgrade to a more recent, fully supported version of Python 3; see https://www.python.org/downloads/.

    \n
    \n

    Major new features of the 3.3 series, compared to 3.2

    \n

    Python 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.

    \n
      \n
    • PEP 380, syntax for delegating to a subgenerator (yield from)
    • \n
    • PEP 393, flexible string representation (doing away with the distinction\nbetween "wide" and "narrow" Unicode builds)
    • \n
    • A C implementation of the "decimal" module, with up to 120x speedup\nfor decimal-heavy applications
    • \n
    • The import system (__import__) is based on importlib by default
    • \n
    • The new "lzma" module with LZMA/XZ support
    • \n
    • PEP 397, a Python launcher for Windows
    • \n
    • PEP 405, virtual environment support in core
    • \n
    • PEP 420, namespace package support
    • \n
    • PEP 3151, reworking the OS and IO exception hierarchy
    • \n
    • PEP 3155, qualified name for classes and functions
    • \n
    • PEP 409, suppressing exception context
    • \n
    • PEP 414, explicit Unicode literals to help with porting
    • \n
    • PEP 418, extended platform-independent clocks in the "time" module
    • \n
    • PEP 412, a new key-sharing dictionary implementation that significantly\nsaves memory for object-oriented code
    • \n
    • PEP 362, the function-signature object
    • \n
    • The new "faulthandler" module that helps diagnosing crashes
    • \n
    • The new "unittest.mock" module
    • \n
    • The new "ipaddress" module
    • \n
    • The "sys.implementation" attribute
    • \n
    • A policy framework for the email package, with a provisional (see\nPEP 411) policy that adds much improved unicode support for email\nheader parsing
    • \n
    • A "collections.ChainMap" class for linking mappings to a single unit
    • \n
    • Wrappers for many more POSIX functions in the "os" and "signal" modules, as\nwell as other useful functions such as "sendfile()"
    • \n
    • Hash randomization, introduced in earlier bugfix releases, is now\nswitched on by default
    • \n
    \n
    \n
    \n

    More resources

    \n\n

    This is a preview release, and its use is not recommended in production settings.

    \n\n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 247, + "fields": { + "created": "2017-09-16T18:30:02.824Z", + "updated": "2019-12-06T03:40:40.874Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.14", + "slug": "python-2714", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2017-09-16T18:29:18Z", + "release_page": null, + "release_notes_url": "https://raw.githubusercontent.com/python/cpython/84471935ed2f62b8c5758fd544c7d37076fe0fa5/Misc/NEWS", + "content": "Python 2.7.14 is a bugfix release in the Python 2.7 series.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.14 is a bugfix release in the Python 2.7 series.

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 248, + "fields": { + "created": "2017-09-19T08:49:51.583Z", + "updated": "2017-10-06T23:06:34.652Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.3.7", + "slug": "python-337", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2017-09-19T08:49:42Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.3.7/whatsnew/changelog.html", + "content": "**Python 3.3.x has reached end-of-life. This is its final release.**\r\nIt is a security-fix source-only release.\r\n\r\nPython 3.3.0 was released on 2012-09-29 and has been in security-fix-only mode since 2014-03-08. Per Python Development policy, **all support for the 3.3 series of releases ended on 2017-09-29**, five years after the initial release. **This release, Python 3.3.7, was the final release for the 3.3 series.**\r\n\r\nAfter 2017-09-29, **we no longer accept bug reports nor provide fixes of any kind for Python 3.3.x** (third-party distributors of Python 3.3.x may choose to offer their own extended support). Because 3.3.x has long been in security-fix mode, 3.3.7 may no longer build correctly on all current operating system releases and some tests may fail. If you are still using Python 3.3.x, we **strongly** encourage you to **upgrade to a more recent, fully supported version** of Python 3; see https://www.python.org/downloads/.\r\n\r\nMajor new features of the 3.3 series, compared to 3.2\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.3 includes a range of improvements of the 3.x series, as well as easier\r\nporting between 2.x and 3.x.\r\n\r\n* :pep:`380`, syntax for delegating to a subgenerator (``yield from``)\r\n* :pep:`393`, flexible string representation (doing away with the distinction\r\n between \"wide\" and \"narrow\" Unicode builds)\r\n* A C implementation of the \"decimal\" module, with up to 120x speedup\r\n for decimal-heavy applications\r\n* The import system (__import__) is based on importlib by default\r\n* The new \"lzma\" module with LZMA/XZ support\r\n* :pep:`397`, a Python launcher for Windows\r\n* :pep:`405`, virtual environment support in core\r\n* :pep:`420`, namespace package support\r\n* :pep:`3151`, reworking the OS and IO exception hierarchy\r\n* :pep:`3155`, qualified name for classes and functions\r\n* :pep:`409`, suppressing exception context\r\n* :pep:`414`, explicit Unicode literals to help with porting\r\n* :pep:`418`, extended platform-independent clocks in the \"time\" module\r\n* :pep:`412`, a new key-sharing dictionary implementation that significantly\r\n saves memory for object-oriented code\r\n* :pep:`362`, the function-signature object\r\n* The new \"faulthandler\" module that helps diagnosing crashes\r\n* The new \"unittest.mock\" module\r\n* The new \"ipaddress\" module\r\n* The \"sys.implementation\" attribute\r\n* A policy framework for the email package, with a provisional (see\r\n :pep:`411`) policy that adds much improved unicode support for email\r\n header parsing\r\n* A \"collections.ChainMap\" class for linking mappings to a single unit\r\n* Wrappers for many more POSIX functions in the \"os\" and \"signal\" modules, as\r\n well as other useful functions such as \"sendfile()\"\r\n* Hash randomization, introduced in earlier bugfix releases, is now\r\n switched on by default\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.3? `_\r\n* `3.3 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.3.x has reached end-of-life. This is its final release.\nIt is a security-fix source-only release.

    \n

    Python 3.3.0 was released on 2012-09-29 and has been in security-fix-only mode since 2014-03-08. Per Python Development policy, all support for the 3.3 series of releases ended on 2017-09-29, five years after the initial release. This release, Python 3.3.7, was the final release for the 3.3 series.

    \n

    After 2017-09-29, we no longer accept bug reports nor provide fixes of any kind for Python 3.3.x (third-party distributors of Python 3.3.x may choose to offer their own extended support). Because 3.3.x has long been in security-fix mode, 3.3.7 may no longer build correctly on all current operating system releases and some tests may fail. If you are still using Python 3.3.x, we strongly encourage you to upgrade to a more recent, fully supported version of Python 3; see https://www.python.org/downloads/.

    \n
    \n

    Major new features of the 3.3 series, compared to 3.2

    \n

    Python 3.3 includes a range of improvements of the 3.x series, as well as easier\nporting between 2.x and 3.x.

    \n
      \n
    • PEP 380, syntax for delegating to a subgenerator (yield from)
    • \n
    • PEP 393, flexible string representation (doing away with the distinction\nbetween "wide" and "narrow" Unicode builds)
    • \n
    • A C implementation of the "decimal" module, with up to 120x speedup\nfor decimal-heavy applications
    • \n
    • The import system (__import__) is based on importlib by default
    • \n
    • The new "lzma" module with LZMA/XZ support
    • \n
    • PEP 397, a Python launcher for Windows
    • \n
    • PEP 405, virtual environment support in core
    • \n
    • PEP 420, namespace package support
    • \n
    • PEP 3151, reworking the OS and IO exception hierarchy
    • \n
    • PEP 3155, qualified name for classes and functions
    • \n
    • PEP 409, suppressing exception context
    • \n
    • PEP 414, explicit Unicode literals to help with porting
    • \n
    • PEP 418, extended platform-independent clocks in the "time" module
    • \n
    • PEP 412, a new key-sharing dictionary implementation that significantly\nsaves memory for object-oriented code
    • \n
    • PEP 362, the function-signature object
    • \n
    • The new "faulthandler" module that helps diagnosing crashes
    • \n
    • The new "unittest.mock" module
    • \n
    • The new "ipaddress" module
    • \n
    • The "sys.implementation" attribute
    • \n
    • A policy framework for the email package, with a provisional (see\nPEP 411) policy that adds much improved unicode support for email\nheader parsing
    • \n
    • A "collections.ChainMap" class for linking mappings to a single unit
    • \n
    • Wrappers for many more POSIX functions in the "os" and "signal" modules, as\nwell as other useful functions such as "sendfile()"
    • \n
    • Hash randomization, introduced in earlier bugfix releases, is now\nswitched on by default
    • \n
    \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 249, + "fields": { + "created": "2017-09-19T17:57:08.253Z", + "updated": "2017-09-19T18:55:19.191Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.3rc1", + "slug": "python-363rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2017-09-19T18:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-3-release-candidate-1", + "content": "Python 3.6.3rc1 is a release candidate preview of the third maintenance release of Python 3.6.\r\nThe Python 3.6 series contains many new features and optimizations. See the\r\n`What\u2019s New In Python 3.6 `_\r\ndocument for more information.\r\n\r\nMajor new features of the 3.6 series, compared to 3.5\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features in Python 3.6 are:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nNote that 3.6.3rc1 is a preview release and thus its use is not recommended for production environments.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* Windows users: If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.6/ReadMe.rtf``. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n\r\n* macOS users: There is `important information about IDLE, Tkinter, and Tcl/Tk on macOS here `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.6.3rc1 is a release candidate preview of the third maintenance release of Python 3.6.\nThe Python 3.6 series contains many new features and optimizations. See the\nWhat\u2019s New In Python 3.6\ndocument for more information.

    \n
    \n

    Major new features of the 3.6 series, compared to 3.5

    \n

    Among the new major new features in Python 3.6 are:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Note that 3.6.3rc1 is a preview release and thus its use is not recommended for production environments.

    \n
    \n
    \n

    More resources

    \n\n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • Windows users: If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.6/ReadMe.rtf. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    • macOS users: There is important information about IDLE, Tkinter, and Tcl/Tk on macOS here.
    • \n
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 250, + "fields": { + "created": "2017-09-19T18:52:18.985Z", + "updated": "2017-10-17T18:46:23.932Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.0a1", + "slug": "python-370a1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2017-09-19T20:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-0-alpha-1", + "content": "**This is an early developer preview of Python 3.7**\r\n\r\nMajor new features of the 3.7 series, compared to 3.6\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.7 is still in development. This releasee, 3.7.0a1 is the first of four planned alpha releases.\r\nAlpha releases are intended to make it easier to\r\ntest the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of\r\nthe beta phase (2018-01-29) and, if necessary, may be modified or deleted up until the release\r\ncandidate (2018-05-21) . Please keep in mind that this is a preview release\r\nand its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.7 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* :pep:`538`, Coercing the legacy C locale to a UTF-8 based locale\r\n\r\nThe next pre-release of Python 3.7 will be 3.7.0a2, currently scheduled for\r\n2017-10-16.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* Windows users: If installing Python 3.7 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* macOS users: If you are using the Python 3.7 from the python.org binary installer linked on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.7/ReadMe.rtf``. There is important information there about changes in the 3.7 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n\r\n* macOS users: There is `important information about IDLE, Tkinter, and Tcl/Tk on macOS here `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    This is an early developer preview of Python 3.7

    \n
    \n

    Major new features of the 3.7 series, compared to 3.6

    \n

    Python 3.7 is still in development. This releasee, 3.7.0a1 is the first of four planned alpha releases.\nAlpha releases are intended to make it easier to\ntest the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of\nthe beta phase (2018-01-29) and, if necessary, may be modified or deleted up until the release\ncandidate (2018-05-21) . Please keep in mind that this is a preview release\nand its use is not recommended for production environments.

    \n

    Many new features for Python 3.7 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 538, Coercing the legacy C locale to a UTF-8 based locale
    • \n
    \n

    The next pre-release of Python 3.7 will be 3.7.0a2, currently scheduled for\n2017-10-16.

    \n
    \n
    \n

    More resources

    \n\n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • Windows users: If installing Python 3.7 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • macOS users: If you are using the Python 3.7 from the python.org binary installer linked on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.7/ReadMe.rtf. There is important information there about changes in the 3.7 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    • macOS users: There is important information about IDLE, Tkinter, and Tcl/Tk on macOS here.
    • \n
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 251, + "fields": { + "created": "2017-10-03T08:22:12.662Z", + "updated": "2022-01-07T22:20:02.213Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.3", + "slug": "python-363", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2017-10-03T19:30:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-3-final", + "content": "**Note:** The release you are looking at is **Python 3.6.3**, a **bugfix release** for the legacy **3.6** series which has now reached **end-of-life** and is no longer supported. See the `downloads page `_ for currently supported versions of Python. The final source-only **security fix** release for 3.6 was `3.6.15 `_ and the final **bugfix release** was `3.6.8 `_.\r\n\r\nAmong the new major new features in Python 3.6 were:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* Windows users: If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.6/ReadMe.rtf``. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n\r\n* macOS users: There is `important information about IDLE, Tkinter, and Tcl/Tk on macOS here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.6.3, a bugfix release for the legacy 3.6 series which has now reached end-of-life and is no longer supported. See the downloads page for currently supported versions of Python. The final source-only security fix release for 3.6 was 3.6.15 and the final bugfix release was 3.6.8.

    \n

    Among the new major new features in Python 3.6 were:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n
    \n

    More resources

    \n\n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • Windows users: If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.6/ReadMe.rtf. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    • macOS users: There is important information about IDLE, Tkinter, and Tcl/Tk on macOS here.
    • \n
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 252, + "fields": { + "created": "2017-10-17T05:52:14.761Z", + "updated": "2017-10-17T18:45:24.190Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.0a2", + "slug": "python-370a2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2017-10-17T18:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-0-alpha-2", + "content": "**This is an early developer preview of Python 3.7**\r\n\r\nMajor new features of the 3.7 series, compared to 3.6\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.7 is still in development. This releasee, 3.7.0a2, is the second of four planned alpha releases.\r\nAlpha releases are intended to make it easier to\r\ntest the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of\r\nthe beta phase (2018-01-29) and, if necessary, may be modified or deleted up until the release\r\ncandidate (2018-05-21) . Please keep in mind that this is a preview release\r\nand its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.7 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* :pep:`538`, Coercing the legacy C locale to a UTF-8 based locale\r\n* :pep:`539`, A New C-API for Thread-Local Storage in CPython\r\n* :pep:`553`, Built-in breakpoint()\r\n\r\nThe next pre-release of Python 3.7 will be 3.7.0a3, currently scheduled for\r\n2017-11-27.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* Windows users: If installing Python 3.7 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* macOS users: If you are using the Python 3.7 from the python.org binary installer linked on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.7/ReadMe.rtf``. There is important information there about changes in the 3.7 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n\r\n* macOS users: There is `important information about IDLE, Tkinter, and Tcl/Tk on macOS here `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    This is an early developer preview of Python 3.7

    \n
    \n

    Major new features of the 3.7 series, compared to 3.6

    \n

    Python 3.7 is still in development. This releasee, 3.7.0a2, is the second of four planned alpha releases.\nAlpha releases are intended to make it easier to\ntest the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of\nthe beta phase (2018-01-29) and, if necessary, may be modified or deleted up until the release\ncandidate (2018-05-21) . Please keep in mind that this is a preview release\nand its use is not recommended for production environments.

    \n

    Many new features for Python 3.7 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 538, Coercing the legacy C locale to a UTF-8 based locale
    • \n
    • PEP 539, A New C-API for Thread-Local Storage in CPython
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    \n

    The next pre-release of Python 3.7 will be 3.7.0a3, currently scheduled for\n2017-11-27.

    \n
    \n
    \n

    More resources

    \n\n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • Windows users: If installing Python 3.7 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • macOS users: If you are using the Python 3.7 from the python.org binary installer linked on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.7/ReadMe.rtf. There is important information there about changes in the 3.7 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    • macOS users: There is important information about IDLE, Tkinter, and Tcl/Tk on macOS here.
    • \n
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 253, + "fields": { + "created": "2017-12-06T00:57:38.392Z", + "updated": "2017-12-06T00:57:38.405Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.4rc1", + "slug": "python-364rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2017-12-05T23:55:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-4-release-candidate-1", + "content": "Python 3.6.4rc1 is a release candidate preview of the fourth maintenance release of Python 3.6.\r\nThe Python 3.6 series contains many new features and optimizations. See the\r\n`What\u2019s New In Python 3.6 `_\r\ndocument for more information.\r\n\r\nMajor new features of the 3.6 series, compared to 3.5\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features in Python 3.6 are:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nNote that 3.6.4rc1 is a preview release and thus its use is not recommended for production environments.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* Windows users: If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.6/ReadMe.rtf``. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n\r\n* macOS users: There is `important information about IDLE, Tkinter, and Tcl/Tk on macOS here `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.6.4rc1 is a release candidate preview of the fourth maintenance release of Python 3.6.\nThe Python 3.6 series contains many new features and optimizations. See the\nWhat\u2019s New In Python 3.6\ndocument for more information.

    \n
    \n

    Major new features of the 3.6 series, compared to 3.5

    \n

    Among the new major new features in Python 3.6 are:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Note that 3.6.4rc1 is a preview release and thus its use is not recommended for production environments.

    \n
    \n
    \n

    More resources

    \n\n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • Windows users: If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.6/ReadMe.rtf. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    • macOS users: There is important information about IDLE, Tkinter, and Tcl/Tk on macOS here.
    • \n
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 254, + "fields": { + "created": "2017-12-06T01:19:48.373Z", + "updated": "2017-12-06T01:19:48.383Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.0a3", + "slug": "python-370a3", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2017-12-05T23:55:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-0-alpha-3", + "content": "**This is an early developer preview of Python 3.7**\r\n\r\nMajor new features of the 3.7 series, compared to 3.6\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.7 is still in development. This releasee, 3.7.0a3, is the third of four planned alpha releases.\r\nAlpha releases are intended to make it easier to\r\ntest the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of\r\nthe beta phase (2018-01-29) and, if necessary, may be modified or deleted up until the release\r\ncandidate (2018-05-21) . Please keep in mind that this is a preview release\r\nand its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.7 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* :pep:`538`, Coercing the legacy C locale to a UTF-8 based locale\r\n* :pep:`539`, A New C-API for Thread-Local Storage in CPython\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n\r\nThe next pre-release of Python 3.7 will be 3.7.0a4, currently scheduled for\r\n2018-01-08.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* Windows users: If installing Python 3.7 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* macOS users: If you are using the Python 3.7 from the python.org binary installer linked on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.7/ReadMe.rtf``. There is important information there about changes in the 3.7 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n\r\n* macOS users: There is `important information about IDLE, Tkinter, and Tcl/Tk on macOS here `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    This is an early developer preview of Python 3.7

    \n
    \n

    Major new features of the 3.7 series, compared to 3.6

    \n

    Python 3.7 is still in development. This releasee, 3.7.0a3, is the third of four planned alpha releases.\nAlpha releases are intended to make it easier to\ntest the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of\nthe beta phase (2018-01-29) and, if necessary, may be modified or deleted up until the release\ncandidate (2018-05-21) . Please keep in mind that this is a preview release\nand its use is not recommended for production environments.

    \n

    Many new features for Python 3.7 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 538, Coercing the legacy C locale to a UTF-8 based locale
    • \n
    • PEP 539, A New C-API for Thread-Local Storage in CPython
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    \n

    The next pre-release of Python 3.7 will be 3.7.0a4, currently scheduled for\n2018-01-08.

    \n
    \n
    \n

    More resources

    \n\n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • Windows users: If installing Python 3.7 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • macOS users: If you are using the Python 3.7 from the python.org binary installer linked on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.7/ReadMe.rtf. There is important information there about changes in the 3.7 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    • macOS users: There is important information about IDLE, Tkinter, and Tcl/Tk on macOS here.
    • \n
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 255, + "fields": { + "created": "2017-12-19T07:00:55.805Z", + "updated": "2022-01-07T22:18:43.560Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.4", + "slug": "python-364", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2017-12-19T06:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-4-final", + "content": "**Note:** The release you are looking at is **Python 3.6.4**, a **bugfix release** for the legacy **3.6** series which has now reached **end-of-life** and is no longer supported. See the `downloads page `_ for currently supported versions of Python. The final source-only **security fix** release for 3.6 was `3.6.15 `_ and the final **bugfix release** was `3.6.8 `_.\r\n\r\nAmong the new major new features in Python 3.6 were:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* Windows users: If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.6/ReadMe.rtf``. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n\r\n* macOS users: There is `important information about IDLE, Tkinter, and Tcl/Tk on macOS here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.6.4, a bugfix release for the legacy 3.6 series which has now reached end-of-life and is no longer supported. See the downloads page for currently supported versions of Python. The final source-only security fix release for 3.6 was 3.6.15 and the final bugfix release was 3.6.8.

    \n

    Among the new major new features in Python 3.6 were:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n
    \n

    More resources

    \n\n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • Windows users: If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • macOS users: If you are using the Python 3.6 from the python.org binary installer linked on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.6/ReadMe.rtf. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    • macOS users: There is important information about IDLE, Tkinter, and Tcl/Tk on macOS here.
    • \n
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 256, + "fields": { + "created": "2018-01-09T04:26:32.360Z", + "updated": "2018-01-31T04:51:04.757Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.0a4", + "slug": "python-370a4", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2018-01-09T04:08:12Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-0-alpha-4", + "content": "**This is an early developer preview of Python 3.7**\r\n\r\nPython 3.7 is still in development. This releasee, 3.7.0a4, is the last of four planned alpha releases.\r\nAlpha releases are intended to make it easier to\r\ntest the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of\r\nthe beta phase (2018-01-29) and, if necessary, may be modified or deleted up until the release\r\ncandidate (2018-05-21) . Please keep in mind that this is a preview release\r\nand its use is **not** recommended for production environments.\r\n\r\nMajor new features of the 3.7 series, compared to 3.6\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nMany new features for Python 3.7 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* :pep:`538`, Coercing the legacy C locale to a UTF-8 based locale\r\n* :pep:`539`, A New C-API for Thread-Local Storage in CPython\r\n* :pep:`540`, ``UTF-8`` mode\r\n* :pep:`552`, Deterministic ``pyc``\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Module ``__getattr__`` and ``__dir__``\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n\r\nThe next pre-release of Python 3.7 will be 3.7.0 beta 1, currently scheduled for\r\n2018-01-29.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* Windows users: If installing Python 3.7 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* macOS users: If you are using the Python 3.7 from the python.org binary installer linked on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.7/ReadMe.rtf``. There is important information there about changes in the 3.7 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n\r\n* macOS users: There is `important information about IDLE, Tkinter, and Tcl/Tk on macOS here `_.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    This is an early developer preview of Python 3.7

    \n

    Python 3.7 is still in development. This releasee, 3.7.0a4, is the last of four planned alpha releases.\nAlpha releases are intended to make it easier to\ntest the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of\nthe beta phase (2018-01-29) and, if necessary, may be modified or deleted up until the release\ncandidate (2018-05-21) . Please keep in mind that this is a preview release\nand its use is not recommended for production environments.

    \n
    \n

    Major new features of the 3.7 series, compared to 3.6

    \n

    Many new features for Python 3.7 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 538, Coercing the legacy C locale to a UTF-8 based locale
    • \n
    • PEP 539, A New C-API for Thread-Local Storage in CPython
    • \n
    • PEP 540, UTF-8 mode
    • \n
    • PEP 552, Deterministic pyc
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Module __getattr__ and __dir__
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    \n

    The next pre-release of Python 3.7 will be 3.7.0 beta 1, currently scheduled for\n2018-01-29.

    \n
    \n
    \n

    More resources

    \n\n
    \n

    Notes on this release

    \n
      \n
    • Windows users: The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • Windows users: If installing Python 3.7 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows Users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • macOS users: If you are using the Python 3.7 from the python.org binary installer linked on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.7/ReadMe.rtf. There is important information there about changes in the 3.7 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    • macOS users: There is important information about IDLE, Tkinter, and Tcl/Tk on macOS here.
    • \n
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 257, + "fields": { + "created": "2018-01-23T14:22:50.960Z", + "updated": "2019-05-08T16:00:08.592Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.8rc1", + "slug": "python-348rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2018-01-23T14:15:31Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-8rc1", + "content": "Python 3.4.8rc1\r\n---------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.8rc1 was released on January 23rd, 2018.\r\n\r\nPython 3.4 has now entered \"security fixes only\" mode, and as such the only improvements between Python 3.4.7 and Python 3.4.8rc1 are security fixes. Also, Python 3.4.8rc1 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.8rc1 was released on January 23rd, 2018.

    \n

    Python 3.4 has now entered "security fixes only" mode, and as such the only improvements between Python 3.4.7 and Python 3.4.8rc1 are security fixes. Also, Python 3.4.8rc1 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 258, + "fields": { + "created": "2018-01-23T14:22:54.889Z", + "updated": "2020-10-22T16:35:51.324Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.5rc1", + "slug": "python-355rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2018-01-23T14:15:22Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-5rc1", + "content": "Python 3.5.5rc1\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.5rc1 was released on January 23rd, 2018.\r\n\r\nPython 3.5 has now entered \"security fixes only\" mode, and as such the only improvements between Python 3.5.4 and Python 3.5.5rc1 are security fixes. Also, Python 3.5.5rc1 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.5rc1

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.5rc1 was released on January 23rd, 2018.

    \n

    Python 3.5 has now entered "security fixes only" mode, and as such the only improvements between Python 3.5.4 and Python 3.5.5rc1 are security fixes. Also, Python 3.5.5rc1 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 259, + "fields": { + "created": "2018-01-31T06:01:56.039Z", + "updated": "2018-02-01T00:06:14.819Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.0b1", + "slug": "python-370b1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2018-01-31T12:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-0-beta-1", + "content": "**This is a beta preview of Python 3.7**\r\n\r\nPython 3.7 is still in development. This release, 3.7.0b1, is the first of four planned beta release previews.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`538`, Coercing the legacy C locale to a UTF-8 based locale\r\n* :pep:`539`, A New C-API for Thread-Local Storage in CPython\r\n* :pep:`540`, ``UTF-8`` mode\r\n* :pep:`552`, Deterministic ``pyc``\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Module ``__getattr__`` and ``__dir__``\r\n* :pep:`563`, Postponed Evaluation of Annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Show DeprecationWarning in ``__main__``\r\n* :pep:`567`, Context Variables\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\nAdditional documentation for these features and other changes will be updated during the beta phase.\r\n\r\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.7 during the beta phase and report issues found to `the Python bug tracker `_ as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2018-05-21). Our goal is have no ABI changes after beta 3 and no code changes after 3.7.0rc1, the release candidate. To achieve that, it will be extremely important to get as much exposure for 3.7 as possible during the beta phase. Please keep in mind that this is a preview release\r\nand its use is not recommended for production environments.\r\n\r\nThe next pre-release of Python 3.7 will be 3.7.0 beta 2, currently scheduled for\r\n2018-02-26. The official release of 3.7.0 is planned for 2018-06-15.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* If installing Python 3.7 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* **NEW** with this release (3.7.b1), we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only. We also continue to provide the traditional variant that works on all versions of macOS from 10.6 (Snow Leopard) on. This variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems.\r\n \r\n* If you are using the Python 3.7 from one of the python.org binary installers linked to on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.7/ReadMe.rtf``. There is important information there about changes in the 3.7 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    This is a beta preview of Python 3.7

    \n

    Python 3.7 is still in development. This release, 3.7.0b1, is the first of four planned beta release previews.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 538, Coercing the legacy C locale to a UTF-8 based locale
    • \n
    • PEP 539, A New C-API for Thread-Local Storage in CPython
    • \n
    • PEP 540, UTF-8 mode
    • \n
    • PEP 552, Deterministic pyc
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Module __getattr__ and __dir__
    • \n
    • PEP 563, Postponed Evaluation of Annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Show DeprecationWarning in __main__
    • \n
    • PEP 567, Context Variables
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.\nAdditional documentation for these features and other changes will be updated during the beta phase.

    \n

    Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.7 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2018-05-21). Our goal is have no ABI changes after beta 3 and no code changes after 3.7.0rc1, the release candidate. To achieve that, it will be extremely important to get as much exposure for 3.7 as possible during the beta phase. Please keep in mind that this is a preview release\nand its use is not recommended for production environments.

    \n

    The next pre-release of Python 3.7 will be 3.7.0 beta 2, currently scheduled for\n2018-02-26. The official release of 3.7.0 is planned for 2018-06-15.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • If installing Python 3.7 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • NEW with this release (3.7.b1), we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only. We also continue to provide the traditional variant that works on all versions of macOS from 10.6 (Snow Leopard) on. This variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems.
    • \n
    • If you are using the Python 3.7 from one of the python.org binary installers linked to on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.7/ReadMe.rtf. There is important information there about changes in the 3.7 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 260, + "fields": { + "created": "2018-02-05T00:33:55.371Z", + "updated": "2020-10-22T16:35:42.378Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.5", + "slug": "python-355", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2018-02-05T00:27:09Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-5-final", + "content": "Python 3.5.5\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.5 was released on February 4th, 2018.\r\n\r\nPython 3.5 has now entered \"security fixes only\" mode, and as such the only improvements between Python 3.5.4 and Python 3.5.5 are security fixes. Also, Python 3.5.5 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.5

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.5 was released on February 4th, 2018.

    \n

    Python 3.5 has now entered "security fixes only" mode, and as such the only improvements between Python 3.5.4 and Python 3.5.5 are security fixes. Also, Python 3.5.5 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 261, + "fields": { + "created": "2018-02-05T00:34:01.255Z", + "updated": "2019-05-08T15:59:53.900Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.8", + "slug": "python-348", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2018-02-05T00:27:10Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-8-final", + "content": "Python 3.4.8\r\n---------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.8 was released on February 4th, 2018.\r\n\r\nPython 3.4 has now entered \"security fixes only\" mode, and as such the only improvements between Python 3.4.7 and Python 3.4.8 are security fixes. Also, Python 3.4.8 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.8 was released on February 4th, 2018.

    \n

    Python 3.4 has now entered "security fixes only" mode, and as such the only improvements between Python 3.4.7 and Python 3.4.8 are security fixes. Also, Python 3.4.8 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 262, + "fields": { + "created": "2018-02-28T04:41:49.707Z", + "updated": "2018-02-28T18:27:04.394Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.0b2", + "slug": "python-370b2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2018-02-28T04:33:19Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-0-beta-2", + "content": "**This is a beta preview of Python 3.7**\r\n\r\nPython 3.7 is still in development. This release, 3.7.0b2, is the second of four planned beta release previews.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`538`, Coercing the legacy C locale to a UTF-8 based locale\r\n* :pep:`539`, A New C-API for Thread-Local Storage in CPython\r\n* :pep:`540`, ``UTF-8`` mode\r\n* :pep:`552`, Deterministic ``pyc``\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Module ``__getattr__`` and ``__dir__``\r\n* :pep:`563`, Postponed Evaluation of Annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Show DeprecationWarning in ``__main__``\r\n* :pep:`567`, Context Variables\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\nAdditional documentation for these features and other changes will be updated during the beta phase.\r\n\r\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.7 during the beta phase and report issues found to `the Python bug tracker `_ as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2018-05-21). Our goal is have no ABI changes after beta 3 and no code changes after 3.7.0rc1, the release candidate. To achieve that, it will be extremely important to get as much exposure for 3.7 as possible during the beta phase. Please keep in mind that this is a preview release and its use is not recommended for production environments.\r\n\r\nThe next pre-release of Python 3.7 will be 3.7.0 beta 3, currently scheduled for\r\n2018-03-26. The official release of 3.7.0 is planned for 2018-06-15.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* **NEW** as of 3.7.0 b1: we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only. We also continue to provide the traditional variant that works on all versions of macOS from 10.6 (Snow Leopard) on. This variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems.\r\n \r\n* If you are using the Python 3.7 from one of the python.org binary installers linked to on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.7/ReadMe.rtf``. There is important information there about changes in the 3.7 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    This is a beta preview of Python 3.7

    \n

    Python 3.7 is still in development. This release, 3.7.0b2, is the second of four planned beta release previews.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 538, Coercing the legacy C locale to a UTF-8 based locale
    • \n
    • PEP 539, A New C-API for Thread-Local Storage in CPython
    • \n
    • PEP 540, UTF-8 mode
    • \n
    • PEP 552, Deterministic pyc
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Module __getattr__ and __dir__
    • \n
    • PEP 563, Postponed Evaluation of Annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Show DeprecationWarning in __main__
    • \n
    • PEP 567, Context Variables
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.\nAdditional documentation for these features and other changes will be updated during the beta phase.

    \n

    Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.7 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2018-05-21). Our goal is have no ABI changes after beta 3 and no code changes after 3.7.0rc1, the release candidate. To achieve that, it will be extremely important to get as much exposure for 3.7 as possible during the beta phase. Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    The next pre-release of Python 3.7 will be 3.7.0 beta 3, currently scheduled for\n2018-03-26. The official release of 3.7.0 is planned for 2018-06-15.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • NEW as of 3.7.0 b1: we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only. We also continue to provide the traditional variant that works on all versions of macOS from 10.6 (Snow Leopard) on. This variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems.
    • \n
    • If you are using the Python 3.7 from one of the python.org binary installers linked to on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.7/ReadMe.rtf. There is important information there about changes in the 3.7 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 263, + "fields": { + "created": "2018-03-14T04:04:32.302Z", + "updated": "2018-03-14T04:04:32.320Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.5rc1", + "slug": "python-365rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2018-03-13T23:59:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-5-release-candidate-1", + "content": "Python 3.6.5rc1 is a release candidate preview of the fifth maintenance release of Python 3.6.\r\nThe Python 3.6 series contains many new features and optimizations.\r\n\r\nAmong the new major new features in Python 3.6 are:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information.\r\nNote that 3.6.5rc1 is a preview release and thus its use is not recommended for production environments.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* **NEW** as of 3.6.5: we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only as Apple is deprecating 32-bit support in future macOS releases. For 3.6.5, the 10.9+ variant is offered as an additional more modern alternative to the traditional 10.6+ variant in earlier 3.6.x releases. The 10.6+ variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.5 variant without recompilation.\r\n \r\n* If you are using Python 3.6.5 from one of the python.org binary installers linked to on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.6/ReadMe.rtf``. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.6.5rc1 is a release candidate preview of the fifth maintenance release of Python 3.6.\nThe Python 3.6 series contains many new features and optimizations.

    \n

    Among the new major new features in Python 3.6 are:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.\nNote that 3.6.5rc1 is a preview release and thus its use is not recommended for production environments.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • NEW as of 3.6.5: we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only as Apple is deprecating 32-bit support in future macOS releases. For 3.6.5, the 10.9+ variant is offered as an additional more modern alternative to the traditional 10.6+ variant in earlier 3.6.x releases. The 10.6+ variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.5 variant without recompilation.
    • \n
    • If you are using Python 3.6.5 from one of the python.org binary installers linked to on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.6/ReadMe.rtf. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 264, + "fields": { + "created": "2018-03-28T19:15:56.220Z", + "updated": "2022-01-07T22:17:23.228Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.5", + "slug": "python-365", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2018-03-28T19:30:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-5-final", + "content": "**Note:** The release you are looking at is **Python 3.6.5**, a **bugfix release** for the legacy **3.6** series which has now reached **end-of-life** and is no longer supported. See the `downloads page `_ for currently supported versions of Python. The final source-only **security fix** release for 3.6 was `3.6.15 `_ and the final **bugfix release** was `3.6.8 `_.\r\n\r\nAmong the new major new features in Python 3.6 were:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* **NEW** as of 3.6.5: we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only as Apple is deprecating 32-bit support in future macOS releases. For 3.6.5, the 10.9+ variant is offered as an additional more modern alternative to the traditional 10.6+ variant in earlier 3.6.x releases. The 10.6+ variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.5 variant without recompilation.\r\n \r\n* If you are using Python 3.6.5 from one of the python.org binary installers linked to on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.6/ReadMe.rtf``. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.6.5, a bugfix release for the legacy 3.6 series which has now reached end-of-life and is no longer supported. See the downloads page for currently supported versions of Python. The final source-only security fix release for 3.6 was 3.6.15 and the final bugfix release was 3.6.8.

    \n

    Among the new major new features in Python 3.6 were:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • NEW as of 3.6.5: we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only as Apple is deprecating 32-bit support in future macOS releases. For 3.6.5, the 10.9+ variant is offered as an additional more modern alternative to the traditional 10.6+ variant in earlier 3.6.x releases. The 10.6+ variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.5 variant without recompilation.
    • \n
    • If you are using Python 3.6.5 from one of the python.org binary installers linked to on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.6/ReadMe.rtf. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 265, + "fields": { + "created": "2018-03-29T13:15:15.648Z", + "updated": "2018-03-29T13:15:15.662Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.0b3", + "slug": "python-370b3", + "version": 3, + "is_latest": false, + "is_published": false, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2018-03-29T13:03:06Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-0-beta-3", + "content": "**This is a beta preview of Python 3.7**\r\n\r\nPython 3.7 is still in development. This release, 3.7.0b3, is the third of four planned beta release previews.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`538`, Coercing the legacy C locale to a UTF-8 based locale\r\n* :pep:`539`, A New C-API for Thread-Local Storage in CPython\r\n* :pep:`540`, ``UTF-8`` mode\r\n* :pep:`552`, Deterministic ``pyc``\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Module ``__getattr__`` and ``__dir__``\r\n* :pep:`563`, Postponed Evaluation of Annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Show DeprecationWarning in ``__main__``\r\n* :pep:`567`, Context Variables\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\nAdditional documentation for these features and other changes will be updated during the beta phase.\r\n\r\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.7 during the beta phase and report issues found to `the Python bug tracker `_ as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2018-05-21). Our goal is have no ABI changes after beta 3 and no code changes after 3.7.0rc1, the release candidate. To achieve that, it will be extremely important to get as much exposure for 3.7 as possible during the beta phase. Please keep in mind that this is a preview release and its use is not recommended for production environments.\r\n\r\nThe next pre-release of Python 3.7 will be 3.7.0 beta 4, currently scheduled for\r\n2018-04-30. The official release of 3.7.0 is planned for 2018-06-15.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* **NEW/CHANGED** as of 3.7.0b1: we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only. We also continue to provide the traditional variant that works on all versions of macOS from 10.6 (Snow Leopard) on. As of 3.7.0 b3, this variant also comes with its own batteries-included version oF Tcl/Tk 8.6. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems.\r\n \r\n* If you are using the Python 3.7 from one of the python.org binary installers linked to on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.7/ReadMe.rtf``. There is important information there about changes in the 3.7 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    This is a beta preview of Python 3.7

    \n

    Python 3.7 is still in development. This release, 3.7.0b3, is the third of four planned beta release previews.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 538, Coercing the legacy C locale to a UTF-8 based locale
    • \n
    • PEP 539, A New C-API for Thread-Local Storage in CPython
    • \n
    • PEP 540, UTF-8 mode
    • \n
    • PEP 552, Deterministic pyc
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Module __getattr__ and __dir__
    • \n
    • PEP 563, Postponed Evaluation of Annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Show DeprecationWarning in __main__
    • \n
    • PEP 567, Context Variables
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.\nAdditional documentation for these features and other changes will be updated during the beta phase.

    \n

    Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.7 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2018-05-21). Our goal is have no ABI changes after beta 3 and no code changes after 3.7.0rc1, the release candidate. To achieve that, it will be extremely important to get as much exposure for 3.7 as possible during the beta phase. Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    The next pre-release of Python 3.7 will be 3.7.0 beta 4, currently scheduled for\n2018-04-30. The official release of 3.7.0 is planned for 2018-06-15.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • NEW/CHANGED as of 3.7.0b1: we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only. We also continue to provide the traditional variant that works on all versions of macOS from 10.6 (Snow Leopard) on. As of 3.7.0 b3, this variant also comes with its own batteries-included version oF Tcl/Tk 8.6. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems.
    • \n
    • If you are using the Python 3.7 from one of the python.org binary installers linked to on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.7/ReadMe.rtf. There is important information there about changes in the 3.7 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 266, + "fields": { + "created": "2018-04-15T02:12:05.091Z", + "updated": "2018-04-15T02:33:02.864Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.15rc1", + "slug": "python-2715rc1", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2018-04-15T02:10:34Z", + "release_page": null, + "release_notes_url": "", + "content": "Python 2.7.15 release candidate one is a preview release for Pthon 2.7.15, the next bug fix release in the Python 2.x series.\r\n\r\n.. note::\r\n\r\n Attention macOS users: as of 2.7.15, all python.org macOS installers\r\n ship with a builtin copy of OpenSSL. Additionally, there is a new additional\r\n installer variant for macOS 10.9+ that includes a built-in version of\r\n Tcl/Tk 8.6. See the installer README for more information.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.15 release candidate one is a preview release for Pthon 2.7.15, the next bug fix release in the Python 2.x series.

    \n
    \n

    Note

    \n

    Attention macOS users: as of 2.7.15, all python.org macOS installers\nship with a builtin copy of OpenSSL. Additionally, there is a new additional\ninstaller variant for macOS 10.9+ that includes a built-in version of\nTcl/Tk 8.6. See the installer README for more information.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 267, + "fields": { + "created": "2018-05-01T03:39:43.832Z", + "updated": "2018-11-08T22:26:31.841Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.15", + "slug": "python-2715", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2018-05-01T03:35:28Z", + "release_page": null, + "release_notes_url": "", + "content": "Python 2.7.15 is a bugfix release in the Python 2.7 series.\r\n\r\n.. note::\r\n\r\n Attention macOS users: as of 2.7.15, all python.org macOS installers ship with a builtin copy of OpenSSL. Additionally, there is a new additional installer variant for macOS 10.9+ that includes a built-in version of Tcl/Tk 8.6. See the installer README for more information.\r\n\r\n* `Full changelog for 2.7.15rc1 `_\r\n* `Full changelog for changes between 2.7.15rc1 and 2.7.15 `_", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.15 is a bugfix release in the Python 2.7 series.

    \n
    \n

    Note

    \n

    Attention macOS users: as of 2.7.15, all python.org macOS installers ship with a builtin copy of OpenSSL. Additionally, there is a new additional installer variant for macOS 10.9+ that includes a built-in version of Tcl/Tk 8.6. See the installer README for more information.

    \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 268, + "fields": { + "created": "2018-05-02T23:50:24.435Z", + "updated": "2018-05-02T23:52:46.292Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.0b4", + "slug": "python-370b4", + "version": 3, + "is_latest": false, + "is_published": false, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2018-05-02T23:45:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-0-beta-4", + "content": "**This is a beta preview of Python 3.7**\r\n\r\nPython 3.7 is still in development. This release, 3.7.0b4, is the final planned beta release preview.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`538`, Coercing the legacy C locale to a UTF-8 based locale\r\n* :pep:`539`, A New C-API for Thread-Local Storage in CPython\r\n* :pep:`540`, ``UTF-8`` mode\r\n* :pep:`552`, Deterministic ``pyc``\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Module ``__getattr__`` and ``__dir__``\r\n* :pep:`563`, Postponed Evaluation of Annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Show DeprecationWarning in ``__main__``\r\n* :pep:`567`, Context Variables\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\nAdditional documentation for these features and other changes will be included prior to the release candidate.\r\n\r\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.7 during the beta phase and report issues found to `the Python bug tracker `_ as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2018-05-21). Our goal is have no ABI changes after beta 3 and no code changes after 3.7.0rc1, the release candidate. To achieve that, it is extremely important to get as much exposure for 3.7 as possible during the beta phase. Please keep in mind that this is a preview release and its use is not recommended for production environments.\r\n\r\nThe next preview of Python 3.7 will be 3.7.0 release candidate, currently scheduled for\r\n2018-05-21. The official release of 3.7.0 is planned for 2018-06-15.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* For 3.7.0, we are providing two binary installer options for download. The new preferred variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the new 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    This is a beta preview of Python 3.7

    \n

    Python 3.7 is still in development. This release, 3.7.0b4, is the final planned beta release preview.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 538, Coercing the legacy C locale to a UTF-8 based locale
    • \n
    • PEP 539, A New C-API for Thread-Local Storage in CPython
    • \n
    • PEP 540, UTF-8 mode
    • \n
    • PEP 552, Deterministic pyc
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Module __getattr__ and __dir__
    • \n
    • PEP 563, Postponed Evaluation of Annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Show DeprecationWarning in __main__
    • \n
    • PEP 567, Context Variables
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.\nAdditional documentation for these features and other changes will be included prior to the release candidate.

    \n

    Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.7 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2018-05-21). Our goal is have no ABI changes after beta 3 and no code changes after 3.7.0rc1, the release candidate. To achieve that, it is extremely important to get as much exposure for 3.7 as possible during the beta phase. Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    The next preview of Python 3.7 will be 3.7.0 release candidate, currently scheduled for\n2018-05-21. The official release of 3.7.0 is planned for 2018-06-15.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • For 3.7.0, we are providing two binary installer options for download. The new preferred variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the new 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.
    • \n
    • Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 269, + "fields": { + "created": "2018-05-31T01:29:25.057Z", + "updated": "2018-05-31T05:16:04.802Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.0b5", + "slug": "python-370b5", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2018-05-30T23:45:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-0-beta-5", + "content": "**This is a beta preview of Python 3.7**\r\n\r\nPython 3.7 is still in development. This release, **3.7.0b5**, is now the final planned beta release preview. Originally, **3.7.0b4** was intended to be the final beta but, due to some unexpected compatibility issues discovered during beta testing of third-party packages, we decided to revert some changes in how Python's 3.7 Abstract Syntax Tree parser deals with docstrings; 3.7.0b5 now behaves like 3.6.x and previous releases (refer to the 3.7.0b5 changelog for more information). **If your code makes use of the** ``ast`` **module, you are strongly encouraged to test (or retest) that code with 3.7.0b5, especially if you previously made changes to work with earlier preview versions of 3.7.0.** \r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`538`, Coercing the legacy C locale to a UTF-8 based locale\r\n* :pep:`539`, A New C-API for Thread-Local Storage in CPython\r\n* :pep:`540`, ``UTF-8`` mode\r\n* :pep:`552`, Deterministic ``pyc``\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Module ``__getattr__`` and ``__dir__``\r\n* :pep:`563`, Postponed Evaluation of Annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Show DeprecationWarning in ``__main__``\r\n* :pep:`567`, Context Variables\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\nAdditional documentation for these features and other changes may be included prior to the release candidate.\r\n\r\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.7 during the beta phase and report issues found to `the Python bug tracker `_ as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase. Our goal is have no ABI changes after beta 3 and no code changes after 3.7.0rc1, the release candidate. To achieve that, it is extremely important to get as much exposure for 3.7 as possible during the beta phase. Please keep in mind that this is a preview release and its use is not recommended for production environments.\r\n\r\nThe next preview of Python 3.7 will be the **3.7.0 release candidate**, now scheduled for\r\n**2018-06-11**. The **official release of 3.7.0** is now planned for **2018-06-27**.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* For 3.7.0, we are providing two binary installer options for download. The new preferred variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the new 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    This is a beta preview of Python 3.7

    \n

    Python 3.7 is still in development. This release, 3.7.0b5, is now the final planned beta release preview. Originally, 3.7.0b4 was intended to be the final beta but, due to some unexpected compatibility issues discovered during beta testing of third-party packages, we decided to revert some changes in how Python's 3.7 Abstract Syntax Tree parser deals with docstrings; 3.7.0b5 now behaves like 3.6.x and previous releases (refer to the 3.7.0b5 changelog for more information). If your code makes use of the ast module, you are strongly encouraged to test (or retest) that code with 3.7.0b5, especially if you previously made changes to work with earlier preview versions of 3.7.0.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 538, Coercing the legacy C locale to a UTF-8 based locale
    • \n
    • PEP 539, A New C-API for Thread-Local Storage in CPython
    • \n
    • PEP 540, UTF-8 mode
    • \n
    • PEP 552, Deterministic pyc
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Module __getattr__ and __dir__
    • \n
    • PEP 563, Postponed Evaluation of Annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Show DeprecationWarning in __main__
    • \n
    • PEP 567, Context Variables
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.\nAdditional documentation for these features and other changes may be included prior to the release candidate.

    \n

    Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. We strongly encourage maintainers of third-party Python projects to test with 3.7 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase. Our goal is have no ABI changes after beta 3 and no code changes after 3.7.0rc1, the release candidate. To achieve that, it is extremely important to get as much exposure for 3.7 as possible during the beta phase. Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    The next preview of Python 3.7 will be the 3.7.0 release candidate, now scheduled for\n2018-06-11. The official release of 3.7.0 is now planned for 2018-06-27.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • For 3.7.0, we are providing two binary installer options for download. The new preferred variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the new 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.
    • \n
    • Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 270, + "fields": { + "created": "2018-06-12T08:46:40.232Z", + "updated": "2018-06-12T20:24:18.363Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.0rc1", + "slug": "python-370rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2018-06-11T23:45:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-0-release-candidate-1", + "content": "**This is the release candidate of Python 3.7.0**\r\n\r\nThis release, **3.7.0rc1**, is the final planned release preview. Assuming no critical problems are found prior to **2018-06-27**, the scheduled release date for 3.7.0, no code changes are planned between this release candidate and the final release.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`538`, Coercing the legacy C locale to a UTF-8 based locale\r\n* :pep:`539`, A New C-API for Thread-Local Storage in CPython\r\n* :pep:`540`, ``UTF-8`` mode\r\n* :pep:`552`, Deterministic ``pyc``\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Module ``__getattr__`` and ``__dir__``\r\n* :pep:`563`, Postponed Evaluation of Annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Show DeprecationWarning in ``__main__``\r\n* :pep:`567`, Context Variables\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\n\r\nThis release candidate is intended to give the wider community the opportunity to test the new features and bug fixes in 3.7.0 and to prepare their projects to support it. We strongly encourage maintainers of third-party Python projects to test with the 3.7.0 release candidate and report issues found to `the Python bug tracker `_ as soon as possible. Please keep in mind that this release candidate is still a preview release and, as such, its use is not recommended for production environments.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* For 3.7.0, we are providing two binary installer options for download. The new preferred variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the new 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    This is the release candidate of Python 3.7.0

    \n

    This release, 3.7.0rc1, is the final planned release preview. Assuming no critical problems are found prior to 2018-06-27, the scheduled release date for 3.7.0, no code changes are planned between this release candidate and the final release.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 538, Coercing the legacy C locale to a UTF-8 based locale
    • \n
    • PEP 539, A New C-API for Thread-Local Storage in CPython
    • \n
    • PEP 540, UTF-8 mode
    • \n
    • PEP 552, Deterministic pyc
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Module __getattr__ and __dir__
    • \n
    • PEP 563, Postponed Evaluation of Annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Show DeprecationWarning in __main__
    • \n
    • PEP 567, Context Variables
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.

    \n

    This release candidate is intended to give the wider community the opportunity to test the new features and bug fixes in 3.7.0 and to prepare their projects to support it. We strongly encourage maintainers of third-party Python projects to test with the 3.7.0 release candidate and report issues found to the Python bug tracker as soon as possible. Please keep in mind that this release candidate is still a preview release and, as such, its use is not recommended for production environments.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • For 3.7.0, we are providing two binary installer options for download. The new preferred variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the new 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.
    • \n
    • Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 271, + "fields": { + "created": "2018-06-12T15:18:53.099Z", + "updated": "2018-06-12T20:22:38.716Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.6rc1", + "slug": "python-366rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2018-06-12T15:16:09Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-6-release-candidate-1", + "content": "Python 3.6.6rc1 is a release candidate preview of the sixth maintenance release of Python 3.6.\r\nThe Python 3.6 series contains many new features and optimizations.\r\n\r\nAmong the new major new features in Python 3.6 are:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information.\r\nNote that 3.6.6rc1 is a preview release and thus its use is not recommended for production environments.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* **NEW** as of 3.6.5: we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only as Apple is deprecating 32-bit support in future macOS releases. For 3.6.6, the 10.9+ variant is offered as an additional more modern alternative to the traditional 10.6+ variant in earlier 3.6.x releases. The 10.6+ variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.6 variant without recompilation.\r\n \r\n* If you are using Python 3.6.6 from one of the python.org binary installers linked to on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.6/ReadMe.rtf``. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.6.6rc1 is a release candidate preview of the sixth maintenance release of Python 3.6.\nThe Python 3.6 series contains many new features and optimizations.

    \n

    Among the new major new features in Python 3.6 are:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.\nNote that 3.6.6rc1 is a preview release and thus its use is not recommended for production environments.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • NEW as of 3.6.5: we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only as Apple is deprecating 32-bit support in future macOS releases. For 3.6.6, the 10.9+ variant is offered as an additional more modern alternative to the traditional 10.6+ variant in earlier 3.6.x releases. The 10.6+ variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.6 variant without recompilation.
    • \n
    • If you are using Python 3.6.6 from one of the python.org binary installers linked to on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.6/ReadMe.rtf. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 272, + "fields": { + "created": "2018-06-27T18:31:03.232Z", + "updated": "2022-01-07T22:15:36.460Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.6", + "slug": "python-366", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2018-06-27T21:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-6-final", + "content": "**Note:** The release you are looking at is **Python 3.6.6**, a **bugfix release** for the legacy **3.6** series which has now reached **end-of-life** and is no longer supported. See the `downloads page `_ for currently supported versions of Python. The final source-only **security fix** release for 3.6 was `3.6.15 `_ and the final **bugfix release** was `3.6.8 `_.\r\n\r\nAmong the new major new features in Python 3.6 were:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* **NEW** as of 3.6.5: we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only as Apple is deprecating 32-bit support in future macOS releases. For 3.6.5+, the 10.9+ variant is offered as an additional more modern alternative to the traditional 10.6+ variant in earlier 3.6.x releases. The 10.6+ variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.6 variant without recompilation.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL 1.0.2. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.6.6, a bugfix release for the legacy 3.6 series which has now reached end-of-life and is no longer supported. See the downloads page for currently supported versions of Python. The final source-only security fix release for 3.6 was 3.6.15 and the final bugfix release was 3.6.8.

    \n

    Among the new major new features in Python 3.6 were:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • NEW as of 3.6.5: we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only as Apple is deprecating 32-bit support in future macOS releases. For 3.6.5+, the 10.9+ variant is offered as an additional more modern alternative to the traditional 10.6+ variant in earlier 3.6.x releases. The 10.6+ variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.6 variant without recompilation.
    • \n
    • Both python.org installer variants include private copies of OpenSSL 1.0.2. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 273, + "fields": { + "created": "2018-06-27T19:05:34.537Z", + "updated": "2022-01-07T22:36:24.221Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.0", + "slug": "python-370", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2018-06-27T22:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-0-final", + "content": "**Note:** The release you are looking at is **Python 3.7.0**, the initial **feature release** for the legacy **3.7** series which is now in the **security fix** phase of its life cycle. See the `downloads page `_ for currently supported versions of Python and for the most recent source-only **security fix** release for 3.7. The final **bugfix release** with binary installers for 3.7 was `3.7.9 `_.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`539`, new C API for thread-local storage\r\n* :pep:`545`, Python documentation translations\r\n* New documentation translations: `Japanese `_,\r\n `French `_, and\r\n `Korean `_.\r\n* :pep:`552`, Deterministic ``pyc`` files\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Customization of access to module attributes\r\n* :pep:`563`, Postponed evaluation of annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Improved ``DeprecationWarning`` handling\r\n* :pep:`567`, Context Variables\r\n* Avoiding the use of ASCII as a default text encoding (:pep:`538`, legacy C locale coercion\r\n and :pep:`540`, forced UTF-8 runtime mode)\r\n* The insertion-order preservation nature of ``dict`` objects is now an official part of the Python language spec.\r\n* Notable performance improvements in many areas.\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* For 3.7.0, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the new 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.7.0, the initial feature release for the legacy 3.7 series which is now in the security fix phase of its life cycle. See the downloads page for currently supported versions of Python and for the most recent source-only security fix release for 3.7. The final bugfix release with binary installers for 3.7 was 3.7.9.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 539, new C API for thread-local storage
    • \n
    • PEP 545, Python documentation translations
    • \n
    • New documentation translations: Japanese,\nFrench, and\nKorean.
    • \n
    • PEP 552, Deterministic pyc files
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Customization of access to module attributes
    • \n
    • PEP 563, Postponed evaluation of annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Improved DeprecationWarning handling
    • \n
    • PEP 567, Context Variables
    • \n
    • Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion\nand PEP 540, forced UTF-8 runtime mode)
    • \n
    • The insertion-order preservation nature of dict objects is now an official part of the Python language spec.
    • \n
    • Notable performance improvements in many areas.
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • For 3.7.0, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the new 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.
    • \n
    • Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 274, + "fields": { + "created": "2018-07-20T02:19:38.303Z", + "updated": "2019-05-08T15:59:40.802Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.9rc1", + "slug": "python-349rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2018-07-20T02:13:51Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-9rc1", + "content": "Python 3.4.9rc1\r\n---------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.9rc1 was released on July 19th, 2018.\r\n\r\nPython 3.4 has now entered \"security fixes only\" mode, and as such the only changes since Python 3.4.7 are security fixes. Also, Python 3.4.9rc1 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.9rc1 was released on July 19th, 2018.

    \n

    Python 3.4 has now entered "security fixes only" mode, and as such the only changes since Python 3.4.7 are security fixes. Also, Python 3.4.9rc1 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 275, + "fields": { + "created": "2018-07-20T02:19:41.787Z", + "updated": "2020-10-22T16:35:31.692Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.6rc1", + "slug": "python-356rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2018-07-20T02:13:44Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-6rc1", + "content": "Python 3.5.6rc1\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.6rc1 was released on July 19th, 2018.\r\n\r\nPython 3.5 has now entered \"security fixes only\" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.6rc1 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.6rc1

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.6rc1 was released on July 19th, 2018.

    \n

    Python 3.5 has now entered "security fixes only" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.6rc1 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 276, + "fields": { + "created": "2018-08-02T13:33:23.129Z", + "updated": "2019-05-08T15:59:22.661Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.9", + "slug": "python-349", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2018-08-02T13:29:41Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-9", + "content": "Python 3.4.9\r\n---------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.9 was released on August 2nd, 2018.\r\n\r\nPython 3.4 has now entered \"security fixes only\" mode, and as such the only changes since Python 3.4.7 are security fixes. Also, Python 3.4.9 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.9 was released on August 2nd, 2018.

    \n

    Python 3.4 has now entered "security fixes only" mode, and as such the only changes since Python 3.4.7 are security fixes. Also, Python 3.4.9 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 277, + "fields": { + "created": "2018-08-02T13:33:25.955Z", + "updated": "2020-10-22T16:41:18.411Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.6", + "slug": "python-356", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2018-08-02T13:29:46Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-6", + "content": "Python 3.5.6\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.6 was released on August 2nd, 2018.\r\n\r\nPython 3.5 has now entered \"security fixes only\" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.6 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.6

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.6 was released on August 2nd, 2018.

    \n

    Python 3.5 has now entered "security fixes only" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.6 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 278, + "fields": { + "created": "2018-09-27T00:18:31.644Z", + "updated": "2018-09-27T01:49:40.694Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.7rc1", + "slug": "python-367rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2018-09-26T23:47:41Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-7-release-candidate-1", + "content": "Python 3.6.7rc1 is a release candidate preview of the seventh maintenance release of Python 3.6.\r\nThe Python 3.6 series contains many new features and optimizations.\r\n\r\nAmong the new major new features in Python 3.6 are:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information.\r\nNote that 3.6.7rc1 is a preview release and thus its use is not recommended for production environments.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* **NEW** as of 3.6.5: we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only as Apple is deprecating 32-bit support in future macOS releases. For 3.6.6, the 10.9+ variant is offered as an additional more modern alternative to the traditional 10.6+ variant in earlier 3.6.x releases. The 10.6+ variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.6 variant without recompilation.\r\n \r\n* If you are using Python 3.6.x from one of the python.org binary installers linked to on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.6/ReadMe.rtf``. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.6.7rc1 is a release candidate preview of the seventh maintenance release of Python 3.6.\nThe Python 3.6 series contains many new features and optimizations.

    \n

    Among the new major new features in Python 3.6 are:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.\nNote that 3.6.7rc1 is a preview release and thus its use is not recommended for production environments.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • NEW as of 3.6.5: we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only as Apple is deprecating 32-bit support in future macOS releases. For 3.6.6, the 10.9+ variant is offered as an additional more modern alternative to the traditional 10.6+ variant in earlier 3.6.x releases. The 10.6+ variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.6 variant without recompilation.
    • \n
    • If you are using Python 3.6.x from one of the python.org binary installers linked to on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.6/ReadMe.rtf. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 279, + "fields": { + "created": "2018-09-27T00:28:37.745Z", + "updated": "2019-02-25T22:34:14.314Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.1rc1", + "slug": "python-371rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2018-09-26T23:55:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-1-release-candidate-1", + "content": "Python 3.7.1rc1 is a release candidate preview of the first maintenance release of Python 3.7.\r\nThe Python 3.7 series is the newest major release of the Python language and contains many new features and optimizations.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`539`, new C API for thread-local storage\r\n* :pep:`545`, Python documentation translations\r\n* New documentation translations: `Japanese `_,\r\n `French `_, and\r\n `Korean `_.\r\n* :pep:`552`, Deterministic ``pyc`` files\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Customization of access to module attributes\r\n* :pep:`563`, Postponed evaluation of annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Improved ``DeprecationWarning`` handling\r\n* :pep:`567`, Context Variables\r\n* Avoiding the use of ASCII as a default text encoding (:pep:`538`, legacy C locale coercion\r\n and :pep:`540`, forced UTF-8 runtime mode)\r\n* The insertion-order preservation nature of ``dict`` objects is now an official part of the Python language spec.\r\n* Notable performance improvements in many areas.\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\nNote that 3.7.1rc1 is a preview release and thus its use is not recommended for production environments.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* For 3.7, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.7.1rc1 is a release candidate preview of the first maintenance release of Python 3.7.\nThe Python 3.7 series is the newest major release of the Python language and contains many new features and optimizations.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 539, new C API for thread-local storage
    • \n
    • PEP 545, Python documentation translations
    • \n
    • New documentation translations: Japanese,\nFrench, and\nKorean.
    • \n
    • PEP 552, Deterministic pyc files
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Customization of access to module attributes
    • \n
    • PEP 563, Postponed evaluation of annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Improved DeprecationWarning handling
    • \n
    • PEP 567, Context Variables
    • \n
    • Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion\nand PEP 540, forced UTF-8 runtime mode)
    • \n
    • The insertion-order preservation nature of dict objects is now an official part of the Python language spec.
    • \n
    • Notable performance improvements in many areas.
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.\nNote that 3.7.1rc1 is a preview release and thus its use is not recommended for production environments.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • For 3.7, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.
    • \n
    • Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 280, + "fields": { + "created": "2018-10-13T20:54:46.311Z", + "updated": "2018-10-13T20:59:00.053Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.7rc2", + "slug": "python-367rc2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2018-10-13T21:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-7-release-candidate-2", + "content": "Python 3.6.7rc2 is the second release candidate preview of the seventh maintenance release of Python 3.6.\r\nThe Python 3.6 series contains many new features and optimizations.\r\n\r\nAmong the new major new features in Python 3.6 are:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information.\r\nNote that 3.6.7rc2 is a preview release and thus its use is not recommended for production environments.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* **NEW** as of 3.6.5: we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only as Apple is deprecating 32-bit support in future macOS releases. For 3.6.6, the 10.9+ variant is offered as an additional more modern alternative to the traditional 10.6+ variant in earlier 3.6.x releases. The 10.6+ variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.6 variant without recompilation.\r\n \r\n* If you are using Python 3.6.x from one of the python.org binary installers linked to on this page, please carefully read the ``Important Information`` displayed during installation; this information is also available after installation by clicking on ``/Applications/Python 3.6/ReadMe.rtf``. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.6.7rc2 is the second release candidate preview of the seventh maintenance release of Python 3.6.\nThe Python 3.6 series contains many new features and optimizations.

    \n

    Among the new major new features in Python 3.6 are:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.\nNote that 3.6.7rc2 is a preview release and thus its use is not recommended for production environments.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • NEW as of 3.6.5: we are providing two binary installer options for download. The new variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only as Apple is deprecating 32-bit support in future macOS releases. For 3.6.6, the 10.9+ variant is offered as an additional more modern alternative to the traditional 10.6+ variant in earlier 3.6.x releases. The 10.6+ variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.6 variant without recompilation.
    • \n
    • If you are using Python 3.6.x from one of the python.org binary installers linked to on this page, please carefully read the Important Information displayed during installation; this information is also available after installation by clicking on /Applications/Python 3.6/ReadMe.rtf. There is important information there about changes in the 3.6 installer-supplied Python, particularly with regard to SSL certificate validation.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 281, + "fields": { + "created": "2018-10-13T21:02:54.917Z", + "updated": "2018-10-13T21:04:46.589Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.1rc2", + "slug": "python-371rc2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2018-10-13T21:00:01Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-1-release-candidate-2", + "content": "Python 3.7.1rc2 is the second release candidate preview of the first maintenance release of Python 3.7.\r\nThe Python 3.7 series is the newest major release of the Python language and contains many new features and optimizations.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`539`, new C API for thread-local storage\r\n* :pep:`545`, Python documentation translations\r\n* New documentation translations: `Japanese `_,\r\n `French `_, and\r\n `Korean `_.\r\n* :pep:`552`, Deterministic ``pyc`` files\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Customization of access to module attributes\r\n* :pep:`563`, Postponed evaluation of annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Improved ``DeprecationWarning`` handling\r\n* :pep:`567`, Context Variables\r\n* Avoiding the use of ASCII as a default text encoding (:pep:`538`, legacy C locale coercion\r\n and :pep:`540`, forced UTF-8 runtime mode)\r\n* The insertion-order preservation nature of ``dict`` objects is now an official part of the Python language spec.\r\n* Notable performance improvements in many areas.\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\nNote that 3.7.1rc2 is a preview release and thus its use is not recommended for production environments.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* For 3.7, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.7.1rc2 is the second release candidate preview of the first maintenance release of Python 3.7.\nThe Python 3.7 series is the newest major release of the Python language and contains many new features and optimizations.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 539, new C API for thread-local storage
    • \n
    • PEP 545, Python documentation translations
    • \n
    • New documentation translations: Japanese,\nFrench, and\nKorean.
    • \n
    • PEP 552, Deterministic pyc files
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Customization of access to module attributes
    • \n
    • PEP 563, Postponed evaluation of annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Improved DeprecationWarning handling
    • \n
    • PEP 567, Context Variables
    • \n
    • Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion\nand PEP 540, forced UTF-8 runtime mode)
    • \n
    • The insertion-order preservation nature of dict objects is now an official part of the Python language spec.
    • \n
    • Notable performance improvements in many areas.
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.\nNote that 3.7.1rc2 is a preview release and thus its use is not recommended for production environments.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • For 3.7, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.
    • \n
    • Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 282, + "fields": { + "created": "2018-10-20T15:54:18.372Z", + "updated": "2022-01-07T22:14:23.633Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.7", + "slug": "python-367", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2018-10-20T12:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-7-final", + "content": "**Note:** The release you are looking at is **Python 3.6.7**, a **bugfix release** for the legacy **3.6** series which has now reached **end-of-life** and is no longer supported. See the `downloads page `_ for currently supported versions of Python. The final source-only **security fix** release for 3.6 was `3.6.15 `_ and the final **bugfix release** was `3.6.8 `_.\r\n\r\nAmong the new major new features in Python 3.6 were:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* As of 3.6.5 we provide two binary installer options for download. The newer variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only as Apple is deprecating 32-bit support in future macOS releases. For 3.6.5+, the 10.9+ variant is offered as an additional more modern alternative to the traditional 10.6+ variant in earlier 3.6.x releases. The 10.6+ variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.6 variant without recompilation.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL 1.0.2. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.6.7, a bugfix release for the legacy 3.6 series which has now reached end-of-life and is no longer supported. See the downloads page for currently supported versions of Python. The final source-only security fix release for 3.6 was 3.6.15 and the final bugfix release was 3.6.8.

    \n

    Among the new major new features in Python 3.6 were:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • As of 3.6.5 we provide two binary installer options for download. The newer variant works on macOS 10.9 (Mavericks) and later systems and comes with its own batteries-included version oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications. It is 64-bit only as Apple is deprecating 32-bit support in future macOS releases. For 3.6.5+, the 10.9+ variant is offered as an additional more modern alternative to the traditional 10.6+ variant in earlier 3.6.x releases. The 10.6+ variant still requires installing a third-party version of Tcl/Tk 8.5. If you are using macOS 10.9 or later, consider using the new installer variant, unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.6 variant without recompilation.
    • \n
    • Both python.org installer variants include private copies of OpenSSL 1.0.2. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 283, + "fields": { + "created": "2018-10-20T16:02:05.585Z", + "updated": "2022-01-07T22:37:17.359Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.1", + "slug": "python-371", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2018-10-20T12:00:01Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-1-final", + "content": "**Note:** The release you are looking at is **Python 3.7.1**, a **bugfix release** for the legacy **3.7** series which is now in the **security fix** phase of its life cycle. See the `downloads page `_ for currently supported versions of Python and for the most recent source-only **security fix** release for 3.7. The final **bugfix release** with binary installers for 3.7 was `3.7.9 `_.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`539`, new C API for thread-local storage\r\n* :pep:`545`, Python documentation translations\r\n* New documentation translations: `Japanese `_,\r\n `French `_, and\r\n `Korean `_.\r\n* :pep:`552`, Deterministic ``pyc`` files\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Customization of access to module attributes\r\n* :pep:`563`, Postponed evaluation of annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Improved ``DeprecationWarning`` handling\r\n* :pep:`567`, Context Variables\r\n* Avoiding the use of ASCII as a default text encoding (:pep:`538`, legacy C locale coercion\r\n and :pep:`540`, forced UTF-8 runtime mode)\r\n* The insertion-order preservation nature of ``dict`` objects is now an official part of the Python language spec.\r\n* Notable performance improvements in many areas.\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* For Python 3.7 releases, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the newer 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.7.1, a bugfix release for the legacy 3.7 series which is now in the security fix phase of its life cycle. See the downloads page for currently supported versions of Python and for the most recent source-only security fix release for 3.7. The final bugfix release with binary installers for 3.7 was 3.7.9.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 539, new C API for thread-local storage
    • \n
    • PEP 545, Python documentation translations
    • \n
    • New documentation translations: Japanese,\nFrench, and\nKorean.
    • \n
    • PEP 552, Deterministic pyc files
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Customization of access to module attributes
    • \n
    • PEP 563, Postponed evaluation of annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Improved DeprecationWarning handling
    • \n
    • PEP 567, Context Variables
    • \n
    • Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion\nand PEP 540, forced UTF-8 runtime mode)
    • \n
    • The insertion-order preservation nature of dict objects is now an official part of the Python language spec.
    • \n
    • Notable performance improvements in many areas.
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • For Python 3.7 releases, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the newer 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.
    • \n
    • Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 284, + "fields": { + "created": "2018-12-12T01:29:27.293Z", + "updated": "2018-12-12T02:31:37.779Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.2rc1", + "slug": "python-372rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2018-12-11T23:55:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-2-release-candidate-1", + "content": "Python 3.7.2rc1 is the release candidate preview of the second maintenance release of Python 3.7.\r\nThe Python 3.7 series is the newest major release of the Python language and contains many new features and optimizations.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`539`, new C API for thread-local storage\r\n* :pep:`545`, Python documentation translations\r\n* New documentation translations: `Japanese `_,\r\n `French `_, and\r\n `Korean `_.\r\n* :pep:`552`, Deterministic ``pyc`` files\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Customization of access to module attributes\r\n* :pep:`563`, Postponed evaluation of annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Improved ``DeprecationWarning`` handling\r\n* :pep:`567`, Context Variables\r\n* Avoiding the use of ASCII as a default text encoding (:pep:`538`, legacy C locale coercion\r\n and :pep:`540`, forced UTF-8 runtime mode)\r\n* The insertion-order preservation nature of ``dict`` objects is now an official part of the Python language spec.\r\n* Notable performance improvements in many areas.\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* For Python 3.7 releases, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the newer 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.\r\n", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.7.2rc1 is the release candidate preview of the second maintenance release of Python 3.7.\nThe Python 3.7 series is the newest major release of the Python language and contains many new features and optimizations.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 539, new C API for thread-local storage
    • \n
    • PEP 545, Python documentation translations
    • \n
    • New documentation translations: Japanese,\nFrench, and\nKorean.
    • \n
    • PEP 552, Deterministic pyc files
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Customization of access to module attributes
    • \n
    • PEP 563, Postponed evaluation of annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Improved DeprecationWarning handling
    • \n
    • PEP 567, Context Variables
    • \n
    • Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion\nand PEP 540, forced UTF-8 runtime mode)
    • \n
    • The insertion-order preservation nature of dict objects is now an official part of the Python language spec.
    • \n
    • Notable performance improvements in many areas.
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • For Python 3.7 releases, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the newer 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.
    • \n
    • Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 285, + "fields": { + "created": "2018-12-12T01:43:23.535Z", + "updated": "2018-12-12T02:31:24.593Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.8rc1", + "slug": "python-368rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2018-12-11T23:54:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-8-release-candidate-1", + "content": "Python 3.6.8rc1 is a release candidate preview of the eighth and last maintenance release of Python 3.6.\r\nThe Python 3.6 series contains many new features and optimizations.\r\n\r\nNote\r\n----\r\n\r\nPython 3.7 is now released and is the latest feature release of Python 3. `Get the latest release of 3.7.x here `_. Python 3.6.8 is planned to be the last bugfix release\r\nfor 3.6.x. Following the release of 3.6.8, we plan to provide security fixes for Python 3.6 as needed through 2021, five years following its initial release. \r\n\r\nAmong the new major new features in Python 3.6 are:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* For Python 3.6 releases, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. As of 3.6.8rc1, both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.8 variant without recompilation.\r\n\r\n* Both python.org installer variants include private copies of OpenSSL 1.0.2. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.6.8rc1 is a release candidate preview of the eighth and last maintenance release of Python 3.6.\nThe Python 3.6 series contains many new features and optimizations.

    \n
    \n

    Note

    \n

    Python 3.7 is now released and is the latest feature release of Python 3. Get the latest release of 3.7.x here. Python 3.6.8 is planned to be the last bugfix release\nfor 3.6.x. Following the release of 3.6.8, we plan to provide security fixes for Python 3.6 as needed through 2021, five years following its initial release.

    \n

    Among the new major new features in Python 3.6 are:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • For Python 3.6 releases, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. As of 3.6.8rc1, both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.8 variant without recompilation.
    • \n
    • Both python.org installer variants include private copies of OpenSSL 1.0.2. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 286, + "fields": { + "created": "2018-12-24T09:55:09.589Z", + "updated": "2022-01-07T22:12:05.415Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.8", + "slug": "python-368", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2018-12-24T10:25:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-8-final", + "content": "**Note:** The release you are looking at is **Python 3.6.8**, the final **bugfix release** for the legacy **3.6** series which has now reached **end-of-life** and is no longer supported. See the `downloads page `_ for currently supported versions of Python. The final source-only **security fix** release for 3.6 was `3.6.15 `_.\r\n\r\nAmong the new major new features in Python 3.6 were:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* For Python 3.6 releases, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. As of 3.6.8, both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the 10.9 64-bit-only installer variant unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.8 variant without recompilation.\r\n\r\n* Both python.org installer variants include private copies of OpenSSL 1.0.2. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.6.8, the final bugfix release for the legacy 3.6 series which has now reached end-of-life and is no longer supported. See the downloads page for currently supported versions of Python. The final source-only security fix release for 3.6 was 3.6.15.

    \n

    Among the new major new features in Python 3.6 were:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • If installing Python 3.6 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • For Python 3.6 releases, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. As of 3.6.8, both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the 10.9 64-bit-only installer variant unless you are building Python applications that also need to work on older macOS systems. Binary extension modules (including wheels) built for earlier versions of 3.6.x with the 10.6 variant should continue to work with either 3.6.8 variant without recompilation.
    • \n
    • Both python.org installer variants include private copies of OpenSSL 1.0.2. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 287, + "fields": { + "created": "2018-12-24T10:15:26.219Z", + "updated": "2022-01-07T22:38:42.586Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.2", + "slug": "python-372", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2018-12-24T10:30:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-2-final", + "content": "**Note:** The release you are looking at is **Python 3.7.2**, a **bugfix release** for the legacy **3.7** series which is now in the **security fix** phase of its life cycle. See the `downloads page `_ for currently supported versions of Python and for the most recent source-only **security fix** release for 3.7. The final **bugfix release** with binary installers for 3.7 was `3.7.9 `_.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`539`, new C API for thread-local storage\r\n* :pep:`545`, Python documentation translations\r\n* New documentation translations: `Japanese `_,\r\n `French `_, and\r\n `Korean `_.\r\n* :pep:`552`, Deterministic ``pyc`` files\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Customization of access to module attributes\r\n* :pep:`563`, Postponed evaluation of annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Improved ``DeprecationWarning`` handling\r\n* :pep:`567`, Context Variables\r\n* Avoiding the use of ASCII as a default text encoding (:pep:`538`, legacy C locale coercion\r\n and :pep:`540`, forced UTF-8 runtime mode)\r\n* The insertion-order preservation nature of ``dict`` objects is now an official part of the Python language spec.\r\n* Notable performance improvements in many areas.\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* **UPDATED 2019-01-09**: An issue was discovered in the embeddable packages for Windows and updated download files have been provided for the ``Windows x86-64 embeddable zip file`` and the ``Windows x86 embeddable zip file`` and their GPG signatures. No other download was affected. See https://bugs.python.org/issue35596 for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* For Python 3.7 releases, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the newer 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.7.2, a bugfix release for the legacy 3.7 series which is now in the security fix phase of its life cycle. See the downloads page for currently supported versions of Python and for the most recent source-only security fix release for 3.7. The final bugfix release with binary installers for 3.7 was 3.7.9.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 539, new C API for thread-local storage
    • \n
    • PEP 545, Python documentation translations
    • \n
    • New documentation translations: Japanese,\nFrench, and\nKorean.
    • \n
    • PEP 552, Deterministic pyc files
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Customization of access to module attributes
    • \n
    • PEP 563, Postponed evaluation of annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Improved DeprecationWarning handling
    • \n
    • PEP 567, Context Variables
    • \n
    • Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion\nand PEP 540, forced UTF-8 runtime mode)
    • \n
    • The insertion-order preservation nature of dict objects is now an official part of the Python language spec.
    • \n
    • Notable performance improvements in many areas.
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • UPDATED 2019-01-09: An issue was discovered in the embeddable packages for Windows and updated download files have been provided for the Windows x86-64 embeddable zip file and the Windows x86 embeddable zip file and their GPG signatures. No other download was affected. See https://bugs.python.org/issue35596 for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • For Python 3.7 releases, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the newer 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.
    • \n
    • Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 288, + "fields": { + "created": "2019-01-30T19:31:40.799Z", + "updated": "2020-02-26T14:40:26.304Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.0a1", + "slug": "python-380a1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-02-03T19:24:41Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-alpha-1", + "content": "**This is an early developer preview of Python 3.8**\r\n\r\n\r\n# Major new features of the 3.8 series, compared to 3.7\r\n\r\nPython 3.8 is still in development. This releasee, 3.8.0a1 is the first of four planned alpha releases.\r\nAlpha releases are intended to make it easier to\r\ntest the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of\r\nthe beta phase (2019-05-26) and, if necessary, may be modified or deleted up until the release\r\ncandidate (2019-09-29) . Please keep in mind that this is a preview release\r\nand its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.8 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [BPO 35766](https://bugs.python.org/issue35766), typed_ast is merged back to CPython\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThe next pre-release of Python 3.8 will be 3.8.0a2, currently scheduled for\r\n2019-02-24.\r\n\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\n**Second Bruce:** G'day, Bruce!\r\n
    **First Bruce:** Oh, Hello Bruce!\r\n
    **Third Bruce:** How are you Bruce?\r\n
    **First Bruce:** A bit crook, Bruce.\r\n
    **Second Bruce:** Where's Bruce?\r\n
    **First Bruce:** He's not 'ere, Bruce.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.8

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n

    Python 3.8 is still in development. This releasee, 3.8.0a1 is the first of four planned alpha releases.\nAlpha releases are intended to make it easier to\ntest the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of\nthe beta phase (2019-05-26) and, if necessary, may be modified or deleted up until the release\ncandidate (2019-09-29) . Please keep in mind that this is a preview release\nand its use is not recommended for production environments.

    \n

    Many new features for Python 3.8 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • BPO 35766, typed_ast is merged back to CPython
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)
    • \n
    \n

    The next pre-release of Python 3.8 will be 3.8.0a2, currently scheduled for\n2019-02-24.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Second Bruce: G'day, Bruce!\n
    First Bruce: Oh, Hello Bruce!\n
    Third Bruce: How are you Bruce?\n
    First Bruce: A bit crook, Bruce.\n
    Second Bruce: Where's Bruce?\n
    First Bruce: He's not 'ere, Bruce.

    " + } +}, +{ + "model": "downloads.release", + "pk": 289, + "fields": { + "created": "2019-02-17T00:47:23.216Z", + "updated": "2019-02-17T01:02:11.056Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.16rc1", + "slug": "python-2716rc1", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2019-02-17T00:44:31Z", + "release_page": null, + "release_notes_url": "", + "content": "Python 2.7.16 release candidate 1 is a prelease for a bugfix release in the Python 2.7 series.\r\n\r\n.. note::\r\n\r\n Attention macOS users: As of 2.7.16, all current python.org macOS installers ship with builtin copies of OpenSSL and Tcl/Tk 8.6. See the installer README for more information.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.16 release candidate 1 is a prelease for a bugfix release in the Python 2.7 series.

    \n
    \n

    Note

    \n

    Attention macOS users: As of 2.7.16, all current python.org macOS installers ship with builtin copies of OpenSSL and Tcl/Tk 8.6. See the installer README for more information.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 290, + "fields": { + "created": "2019-02-25T13:03:46.825Z", + "updated": "2019-02-26T13:45:19.840Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.0a2", + "slug": "python-380a2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-02-25T12:52:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-alpha-2", + "content": "**This is an early developer preview of Python 3.8**\r\n\r\n# Major new features of the 3.8 series, compared to 3.7\r\n\r\nPython 3.8 is still in development. This release, 3.8.0a2 is the second of four planned alpha releases.\r\nAlpha releases are intended to make it easier to\r\ntest the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of\r\nthe beta phase (2019-05-26) and, if necessary, may be modified or deleted up until the release\r\ncandidate (2019-09-29) . Please keep in mind that this is a preview release\r\nand its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.8 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [BPO 35766](https://bugs.python.org/issue35766), typed_ast is merged back to CPython\r\n* [BPO 35813](https://bugs.python.org/issue35813), multiprocessing can now use shared memory segments to avoid pickling costs between processes\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThe next pre-release of Python 3.8 will be 3.8.0a3, currently scheduled for\r\n2019-03-25.\r\n\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\n*Cut to the BBC world symbol.*\r\n
    **Adrian \t(voice over):** We interrupt this programme to annoy you and make things generally irritating for you.\r\n\r\n*Cut back to Mr Orbiter-5.*\r\n
    **Mr Orbiter:** ... with a large piece of wet paper. Turn the paper over - turn the paper over keeping your eye on the camel, and paste down the edge of the sailor's uniform, until the word 'Maudling' is almost totally obscured. Well, that's one way of doing it.\r\n\r\n*Cut to the BBC world symbol again.*\r\n
    **Adrian \t(voice over):** Good evening, we interrupt this programme again, a) to irritate you and, b) to provide work for one of our announcers.\r\n
    **Jack \t(voice over):** Good evening, I'm the announcer who's just been given this job by the BBC and I'd just like to say how grateful I am to the BBC for providing me with work, particularly at this time of year, when things are a bit thin for us announcers...", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.8

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n

    Python 3.8 is still in development. This release, 3.8.0a2 is the second of four planned alpha releases.\nAlpha releases are intended to make it easier to\ntest the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of\nthe beta phase (2019-05-26) and, if necessary, may be modified or deleted up until the release\ncandidate (2019-09-29) . Please keep in mind that this is a preview release\nand its use is not recommended for production environments.

    \n

    Many new features for Python 3.8 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • BPO 35766, typed_ast is merged back to CPython
    • \n
    • BPO 35813, multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)
    • \n
    \n

    The next pre-release of Python 3.8 will be 3.8.0a3, currently scheduled for\n2019-03-25.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Cut to the BBC world symbol.\n
    Adrian (voice over): We interrupt this programme to annoy you and make things generally irritating for you.

    \n

    Cut back to Mr Orbiter-5.\n
    Mr Orbiter: ... with a large piece of wet paper. Turn the paper over - turn the paper over keeping your eye on the camel, and paste down the edge of the sailor's uniform, until the word 'Maudling' is almost totally obscured. Well, that's one way of doing it.

    \n

    Cut to the BBC world symbol again.\n
    Adrian (voice over): Good evening, we interrupt this programme again, a) to irritate you and, b) to provide work for one of our announcers.\n
    Jack (voice over): Good evening, I'm the announcer who's just been given this job by the BBC and I'd just like to say how grateful I am to the BBC for providing me with work, particularly at this time of year, when things are a bit thin for us announcers...

    " + } +}, +{ + "model": "downloads.release", + "pk": 291, + "fields": { + "created": "2019-03-04T03:16:31.788Z", + "updated": "2019-03-04T03:19:09.241Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.16", + "slug": "python-2716", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2019-03-04T03:14:07Z", + "release_page": null, + "release_notes_url": "https://raw.githubusercontent.com/python/cpython/v2.7.16/Misc/NEWS.d/2.7.16.rst", + "content": "Python 2.7.16 is a bugfix release in the Python 2.7 series.\r\n\r\n.. note::\r\n Attention macOS users: As of 2.7.16, all current python.org macOS installers ship with builtin copies of OpenSSL and Tcl/Tk 8.6. See the installer README for more information.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.16 is a bugfix release in the Python 2.7 series.

    \n
    \n

    Note

    \n

    Attention macOS users: As of 2.7.16, all current python.org macOS installers ship with builtin copies of OpenSSL and Tcl/Tk 8.6. See the installer README for more information.

    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 292, + "fields": { + "created": "2019-03-04T08:17:52.428Z", + "updated": "2019-05-08T15:58:56.189Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.10rc1", + "slug": "python-3410rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2019-03-04T08:09:14Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-10rc1", + "content": "Python 3.4.10rc1\r\n---------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available** `here. `_ \r\n\r\nPython 3.4.10rc1 was released on March 4th, 2019.\r\n\r\nPython 3.4 has now entered \"security fixes only\" mode, and as such the only changes since Python 3.4.7 are security fixes. Also, Python 3.4.10rc1 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.4 has reached end-of-life. Python 3.4.10, the final release of the 3.4 series, is available here.

    \n

    Python 3.4.10rc1 was released on March 4th, 2019.

    \n

    Python 3.4 has now entered "security fixes only" mode, and as such the only changes since Python 3.4.7 are security fixes. Also, Python 3.4.10rc1 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 293, + "fields": { + "created": "2019-03-04T08:17:58.855Z", + "updated": "2020-10-22T16:41:10.558Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.7rc1", + "slug": "python-357rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2019-03-04T08:09:13Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-7rc1", + "content": "Python 3.5.7rc1\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.7rc1 was released on March 4th, 2019.\r\n\r\nPython 3.5 has now entered \"security fixes only\" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.7rc1 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.7rc1

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.7rc1 was released on March 4th, 2019.

    \n

    Python 3.5 has now entered "security fixes only" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.7rc1 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 294, + "fields": { + "created": "2019-03-12T21:13:06.041Z", + "updated": "2019-03-12T23:22:14.594Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.3rc1", + "slug": "python-373rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-03-12T23:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-3-release-candidate-1", + "content": "Python 3.7.3rc1 is the release candidate preview of the third maintenance release of Python 3.7.\r\nThe Python 3.7 series is the newest major release of the Python language and contains many new features and optimizations.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`539`, new C API for thread-local storage\r\n* :pep:`545`, Python documentation translations\r\n* New documentation translations: `Japanese `_,\r\n `French `_, and\r\n `Korean `_.\r\n* :pep:`552`, Deterministic ``pyc`` files\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Customization of access to module attributes\r\n* :pep:`563`, Postponed evaluation of annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Improved ``DeprecationWarning`` handling\r\n* :pep:`567`, Context Variables\r\n* Avoiding the use of ASCII as a default text encoding (:pep:`538`, legacy C locale coercion\r\n and :pep:`540`, forced UTF-8 runtime mode)\r\n* The insertion-order preservation nature of ``dict`` objects is now an official part of the Python language spec.\r\n* Notable performance improvements in many areas.\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* For Python 3.7 releases, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the newer 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.7.3rc1 is the release candidate preview of the third maintenance release of Python 3.7.\nThe Python 3.7 series is the newest major release of the Python language and contains many new features and optimizations.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 539, new C API for thread-local storage
    • \n
    • PEP 545, Python documentation translations
    • \n
    • New documentation translations: Japanese,\nFrench, and\nKorean.
    • \n
    • PEP 552, Deterministic pyc files
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Customization of access to module attributes
    • \n
    • PEP 563, Postponed evaluation of annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Improved DeprecationWarning handling
    • \n
    • PEP 567, Context Variables
    • \n
    • Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion\nand PEP 540, forced UTF-8 runtime mode)
    • \n
    • The insertion-order preservation nature of dict objects is now an official part of the Python language spec.
    • \n
    • Notable performance improvements in many areas.
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • For Python 3.7 releases, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Both variants now come with batteries-included versions oF Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used. Consider using the newer 10.9 64-bit-only installer variant, unless you are building Python applications that also need to work on older macOS systems.
    • \n
    • Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 295, + "fields": { + "created": "2019-03-18T20:23:23.194Z", + "updated": "2020-10-22T16:35:05.332Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.7", + "slug": "python-357", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2019-03-18T20:16:34Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-7", + "content": "Python 3.5.7\r\n------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.7 was released on March 18th, 2019.\r\n\r\nPython 3.5 has now entered \"security fixes only\" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.7 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.7

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.7 was released on March 18th, 2019.

    \n

    Python 3.5 has now entered "security fixes only" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.7 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 296, + "fields": { + "created": "2019-03-18T20:23:27.331Z", + "updated": "2019-05-08T15:50:58.053Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.4.10", + "slug": "python-3410", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2019-03-18T20:16:38Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.4/whatsnew/changelog.html#python-3-4-10", + "content": "Python 3.4.10\r\n------------\r\n\r\n**Python 3.4 has reached end-of-life. Python 3.4.10 is the final release of 3.4.**\r\n\r\nPython 3.4.10 was released on March 18th, 2019.\r\n\r\nPython 3.4.10 is the final release in the Python 3.4 series. As of this\r\nrelease, the 3.4 branch has been retired, no further changes to 3.4 will be\r\naccepted, and no new releases will be made. This is standard Python policy;\r\nPython releases get five years of support and are then retired.\r\n\r\nIf you're still using Python 3.4, you should consider upgrading to the\r\n`current version. `_\r\nNewer versions of Python\r\nhave many new features, performance improvements, and bug fixes, which\r\nshould all serve to enhance your Python programming experience.\r\n\r\nWe in the Python core development community thank you for your interest\r\nin 3.4, and we wish you all the best!\r\n\r\nMajor new features of the 3.4 series, compared to 3.3\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nPython 3.4 includes a range of improvements of the 3.x series, including\r\nhundreds of small improvements and bug fixes. Among the new major new features\r\nand changes in the 3.4 release series are\r\n\r\n* :pep:`428`, a `\"pathlib\" `_ module providing object-oriented filesystem paths\r\n* :pep:`435`, a standardized `\"enum\" `_ module\r\n* :pep:`436`, a build enhancement that will help generate introspection information for builtins\r\n* :pep:`442`, improved semantics for object finalization\r\n* :pep:`443`, adding single-dispatch generic functions to the standard library\r\n* :pep:`445`, a new C API for implementing custom memory allocators\r\n* :pep:`446`, changing file descriptors to not be inherited by default in subprocesses\r\n* :pep:`450`, a new `\"statistics\" `_ module\r\n* :pep:`451`, standardizing module metadata for Python's module import system\r\n* :pep:`453`, a bundled installer for the *pip* package manager\r\n* :pep:`454`, a new `\"tracemalloc\" `_ module for tracing Python memory allocations\r\n* :pep:`456`, a new hash algorithm for Python strings and binary data\r\n* :pep:`3154`, a new and improved protocol for pickled objects\r\n* :pep:`3156`, a new `\"asyncio\" `_ module, a new framework for asynchronous I/O\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `What's new in 3.4? `_\r\n* `3.4 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.4 has reached end-of-life. Python 3.4.10 is the final release of 3.4.

    \n

    Python 3.4.10 was released on March 18th, 2019.

    \n

    Python 3.4.10 is the final release in the Python 3.4 series. As of this\nrelease, the 3.4 branch has been retired, no further changes to 3.4 will be\naccepted, and no new releases will be made. This is standard Python policy;\nPython releases get five years of support and are then retired.

    \n

    If you're still using Python 3.4, you should consider upgrading to the\ncurrent version.\nNewer versions of Python\nhave many new features, performance improvements, and bug fixes, which\nshould all serve to enhance your Python programming experience.

    \n

    We in the Python core development community thank you for your interest\nin 3.4, and we wish you all the best!

    \n
    \n

    Major new features of the 3.4 series, compared to 3.3

    \n

    Python 3.4 includes a range of improvements of the 3.x series, including\nhundreds of small improvements and bug fixes. Among the new major new features\nand changes in the 3.4 release series are

    \n
      \n
    • PEP 428, a "pathlib" module providing object-oriented filesystem paths
    • \n
    • PEP 435, a standardized "enum" module
    • \n
    • PEP 436, a build enhancement that will help generate introspection information for builtins
    • \n
    • PEP 442, improved semantics for object finalization
    • \n
    • PEP 443, adding single-dispatch generic functions to the standard library
    • \n
    • PEP 445, a new C API for implementing custom memory allocators
    • \n
    • PEP 446, changing file descriptors to not be inherited by default in subprocesses
    • \n
    • PEP 450, a new "statistics" module
    • \n
    • PEP 451, standardizing module metadata for Python's module import system
    • \n
    • PEP 453, a bundled installer for the pip package manager
    • \n
    • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
    • \n
    • PEP 456, a new hash algorithm for Python strings and binary data
    • \n
    • PEP 3154, a new and improved protocol for pickled objects
    • \n
    • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
    • \n
    \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 297, + "fields": { + "created": "2019-03-25T20:22:02.759Z", + "updated": "2019-03-26T08:58:01.612Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.0a3", + "slug": "python-380a3", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-03-25T20:04:09Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-alpha-3", + "content": "**This is an early developer preview of Python 3.8**\r\n\r\n# Major new features of the 3.8 series, compared to 3.7\r\n\r\nPython 3.8 is still in development. This release, 3.8.0a3 is the third of four planned alpha releases.\r\nAlpha releases are intended to make it easier to\r\ntest the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of\r\nthe beta phase (2019-05-26) and, if necessary, may be modified or deleted up until the release\r\ncandidate (2019-09-29) . Please keep in mind that this is a preview release\r\nand its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.8 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [BPO 35766](https://bugs.python.org/issue35766), typed_ast is merged back to CPython\r\n* [BPO 35813](https://bugs.python.org/issue35813), multiprocessing can now use shared memory segments to avoid pickling costs between processes\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThe next pre-release of Python 3.8 will be 3.8.0a4, currently scheduled for\r\n2019-04-29.\r\n\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\n**Fourth Hermit:** Morning Frank.
    **Second Hermit:** Morning Lionel.
    **First Hermit:** There's one thing about being a hermit, at least you meet people.
    **Second Hermit:** Oh yes, I wouldn't go back to public relations.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.8

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n

    Python 3.8 is still in development. This release, 3.8.0a3 is the third of four planned alpha releases.\nAlpha releases are intended to make it easier to\ntest the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of\nthe beta phase (2019-05-26) and, if necessary, may be modified or deleted up until the release\ncandidate (2019-09-29) . Please keep in mind that this is a preview release\nand its use is not recommended for production environments.

    \n

    Many new features for Python 3.8 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • BPO 35766, typed_ast is merged back to CPython
    • \n
    • BPO 35813, multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)
    • \n
    \n

    The next pre-release of Python 3.8 will be 3.8.0a4, currently scheduled for\n2019-04-29.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Fourth Hermit: Morning Frank.
    Second Hermit: Morning Lionel.
    First Hermit: There's one thing about being a hermit, at least you meet people.
    Second Hermit: Oh yes, I wouldn't go back to public relations.

    " + } +}, +{ + "model": "downloads.release", + "pk": 298, + "fields": { + "created": "2019-03-25T22:25:11.263Z", + "updated": "2022-01-07T22:39:39.941Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.3", + "slug": "python-373", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2019-03-25T19:30:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-3-final", + "content": "**Note:** The release you are looking at is **Python 3.7.3**, a **bugfix release** for the legacy **3.7** series which is now in the **security fix** phase of its life cycle. See the `downloads page `_ for currently supported versions of Python and for the most recent source-only **security fix** release for 3.7. The final **bugfix release** with binary installers for 3.7 was `3.7.9 `_.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`539`, new C API for thread-local storage\r\n* :pep:`545`, Python documentation translations\r\n* New documentation translations: `Japanese `_,\r\n `French `_, and\r\n `Korean `_.\r\n* :pep:`552`, Deterministic ``pyc`` files\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Customization of access to module attributes\r\n* :pep:`563`, Postponed evaluation of annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Improved ``DeprecationWarning`` handling\r\n* :pep:`567`, Context Variables\r\n* Avoiding the use of ASCII as a default text encoding (:pep:`538`, legacy C locale coercion\r\n and :pep:`540`, forced UTF-8 runtime mode)\r\n* The insertion-order preservation nature of ``dict`` objects is now an official part of the Python language spec.\r\n* Notable performance improvements in many areas.\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* For Python 3.7 releases, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Use the 10.9 64-bit-only installer variant unless you are building Python applications that also need to work on older macOS systems. Both variants come with batteries-included versions of Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.7.3, a bugfix release for the legacy 3.7 series which is now in the security fix phase of its life cycle. See the downloads page for currently supported versions of Python and for the most recent source-only security fix release for 3.7. The final bugfix release with binary installers for 3.7 was 3.7.9.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 539, new C API for thread-local storage
    • \n
    • PEP 545, Python documentation translations
    • \n
    • New documentation translations: Japanese,\nFrench, and\nKorean.
    • \n
    • PEP 552, Deterministic pyc files
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Customization of access to module attributes
    • \n
    • PEP 563, Postponed evaluation of annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Improved DeprecationWarning handling
    • \n
    • PEP 567, Context Variables
    • \n
    • Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion\nand PEP 540, forced UTF-8 runtime mode)
    • \n
    • The insertion-order preservation nature of dict objects is now an official part of the Python language spec.
    • \n
    • Notable performance improvements in many areas.
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • For Python 3.7 releases, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. We also continue to provide a 64-bit/32-bit variant that works on all versions of macOS from 10.6 (Snow Leopard) on. Use the 10.9 64-bit-only installer variant unless you are building Python applications that also need to work on older macOS systems. Both variants come with batteries-included versions of Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used.
    • \n
    • Both python.org installer variants include private copies of OpenSSL 1.1.0. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 299, + "fields": { + "created": "2019-05-06T19:56:28.397Z", + "updated": "2019-05-07T16:20:06.732Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.0a4", + "slug": "python-380a4", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-05-06T19:52:36Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-alpha-4", + "content": "**This is an early developer preview of Python 3.8**\r\n\r\n# Major new features of the 3.8 series, compared to 3.7\r\n\r\nPython 3.8 is still in development. This release, 3.8.0a4 is the last of four planned alpha releases.\r\nAlpha releases are intended to make it easier to\r\ntest the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of\r\nthe beta phase (2019-05-31) and, if necessary, may be modified or deleted up until the release\r\ncandidate (2019-09-29) . Please keep in mind that this is a preview release\r\nand its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.8 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [BPO 35766](https://bugs.python.org/issue35766), typed_ast is merged back to CPython\r\n* [BPO 35813](https://bugs.python.org/issue35813), multiprocessing can now use shared memory segments to avoid pickling costs between processes\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThe next pre-release of Python 3.8 will be 3.8.0b1, currently scheduled for\r\n2019-05-31.\r\n\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\nKilimanjaro is a pretty tricky climb you know, most of it's up until you reach the very very top, and then it tends to slope away rather sharply.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.8

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n

    Python 3.8 is still in development. This release, 3.8.0a4 is the last of four planned alpha releases.\nAlpha releases are intended to make it easier to\ntest the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of\nthe beta phase (2019-05-31) and, if necessary, may be modified or deleted up until the release\ncandidate (2019-09-29) . Please keep in mind that this is a preview release\nand its use is not recommended for production environments.

    \n

    Many new features for Python 3.8 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • BPO 35766, typed_ast is merged back to CPython
    • \n
    • BPO 35813, multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)
    • \n
    \n

    The next pre-release of Python 3.8 will be 3.8.0b1, currently scheduled for\n2019-05-31.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Kilimanjaro is a pretty tricky climb you know, most of it's up until you reach the very very top, and then it tends to slope away rather sharply.

    " + } +}, +{ + "model": "downloads.release", + "pk": 300, + "fields": { + "created": "2019-06-04T18:07:16.724Z", + "updated": "2019-08-07T14:56:08.942Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.0b1", + "slug": "python-380b1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-06-04T18:04:13Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-beta-1", + "content": "# This is a beta preview of Python 3.8\r\n\r\nPython 3.8 is still in development. This release, 3.8.0b1 is the first of four planned beta release previews.\r\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. \r\n\r\n# Call to action\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.8** during the beta phase and report issues found to [the Python bug tracker](https://bugs.python.org) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2019-09-30). Our goal is have no ABI changes after beta 3 and no code changes after 3.8.0rc1, the release candidate. To achieve that, it will be extremely important to get as much exposure for 3.8 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n# Major new features of the 3.8 series, compared to 3.7\r\n\r\nSome of the new major new features and changes in Python 3.8 are:\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\nThe next pre-release of Python 3.8 will be 3.8.0b2, currently scheduled for\r\n2019-07-01.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n**Eric:** Who'd a thought thirty years ago we'd all be sittin' here drinking Chateau de Chassilier wine?
    \r\n**Michael:** Aye. In them days, we'd a' been glad to have the price of a cup o' tea.
    \r\n**Graham:** A cup ' COLD tea.
    \r\n**Eric:** Without milk or sugar.
    \r\n**Terry:** OR tea!
    \r\n**Michael:** In a filthy, cracked cup.
    \r\n**Eric:** We never used to have a cup. We used to have to drink out of a rolled up newspaper.
    \r\n**Graham:** The best WE could manage was to suck on a piece of damp cloth.
    \r\n...
    \r\n**Michael:** But you try and tell the young people today that... and they won't believe ya'.
    \r\n**ALL:** Nope, nope...", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.8

    \n

    Python 3.8 is still in development. This release, 3.8.0b1 is the first of four planned beta release previews.\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    Call to action

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.8 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2019-09-30). Our goal is have no ABI changes after beta 3 and no code changes after 3.8.0rc1, the release candidate. To achieve that, it will be extremely important to get as much exposure for 3.8 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n

    Some of the new major new features and changes in Python 3.8 are:

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    The next pre-release of Python 3.8 will be 3.8.0b2, currently scheduled for\n2019-07-01.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Eric: Who'd a thought thirty years ago we'd all be sittin' here drinking Chateau de Chassilier wine?
    \nMichael: Aye. In them days, we'd a' been glad to have the price of a cup o' tea.
    \nGraham: A cup ' COLD tea.
    \nEric: Without milk or sugar.
    \nTerry: OR tea!
    \nMichael: In a filthy, cracked cup.
    \nEric: We never used to have a cup. We used to have to drink out of a rolled up newspaper.
    \nGraham: The best WE could manage was to suck on a piece of damp cloth.
    \n...
    \nMichael: But you try and tell the young people today that... and they won't believe ya'.
    \nALL: Nope, nope...

    " + } +}, +{ + "model": "downloads.release", + "pk": 301, + "fields": { + "created": "2019-06-19T02:06:01.189Z", + "updated": "2019-06-19T03:25:07.381Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.4rc1", + "slug": "python-374rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-06-18T23:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-4-release-candidate-1", + "content": "Python 3.7.4rc1 is the release candidate preview of the fourth maintenance release of Python 3.7.\r\nThe Python 3.7 series is the newest major release of the Python language and contains many new features and optimizations.\r\n\r\nNote that 3.7.4rc1 is a **release preview** and thus its use is not recommended for production environments.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`539`, new C API for thread-local storage\r\n* :pep:`545`, Python documentation translations\r\n* New documentation translations: `Japanese `_,\r\n `French `_, and\r\n `Korean `_.\r\n* :pep:`552`, Deterministic ``pyc`` files\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Customization of access to module attributes\r\n* :pep:`563`, Postponed evaluation of annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Improved ``DeprecationWarning`` handling\r\n* :pep:`567`, Context Variables\r\n* Avoiding the use of ASCII as a default text encoding (:pep:`538`, legacy C locale coercion\r\n and :pep:`540`, forced UTF-8 runtime mode)\r\n* The insertion-order preservation nature of ``dict`` objects is now an official part of the Python language spec.\r\n* Notable performance improvements in many areas.\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* For Python 3.7.4, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. **Changed in 3.7.4** The 64-bit/32-bit variant that also works on very old versions of macOS, from 10.6 (Snow Leopard) on, is now deprecated and will no longer be provided in future releases; see the macOS installer ``ReadMe`` file for more info. Both variants come with batteries-included versions of Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``. **Changed in 3.7.4** OpenSSL has been updated from 1.1.0 to 1.1.1.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.7.4rc1 is the release candidate preview of the fourth maintenance release of Python 3.7.\nThe Python 3.7 series is the newest major release of the Python language and contains many new features and optimizations.

    \n

    Note that 3.7.4rc1 is a release preview and thus its use is not recommended for production environments.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 539, new C API for thread-local storage
    • \n
    • PEP 545, Python documentation translations
    • \n
    • New documentation translations: Japanese,\nFrench, and\nKorean.
    • \n
    • PEP 552, Deterministic pyc files
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Customization of access to module attributes
    • \n
    • PEP 563, Postponed evaluation of annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Improved DeprecationWarning handling
    • \n
    • PEP 567, Context Variables
    • \n
    • Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion\nand PEP 540, forced UTF-8 runtime mode)
    • \n
    • The insertion-order preservation nature of dict objects is now an official part of the Python language spec.
    • \n
    • Notable performance improvements in many areas.
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • For Python 3.7.4, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. Changed in 3.7.4 The 64-bit/32-bit variant that also works on very old versions of macOS, from 10.6 (Snow Leopard) on, is now deprecated and will no longer be provided in future releases; see the macOS installer ReadMe file for more info. Both variants come with batteries-included versions of Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used.
    • \n
    • Both python.org installer variants include private copies of OpenSSL. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command. Changed in 3.7.4 OpenSSL has been updated from 1.1.0 to 1.1.1.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 302, + "fields": { + "created": "2019-06-19T02:59:21.271Z", + "updated": "2019-06-19T03:25:26.552Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.9rc1", + "slug": "python-369rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-06-18T23:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-9-release-candidate-1", + "content": "**Python 3.6.9rc1** is a release candidate preview of the latest **security fix** release of Python 3.6.\r\n\r\nNote\r\n----\r\n\r\n**Python 3.7** is now released and is the latest **feature release** of Python 3. `Get the latest release of 3.7.x here `_. **Python 3.6.8** was the final **bugfix release** for 3.6.\r\n\r\nPython 3.6 has now entered the **security fix** phase of its life cycle. Only security-related issues are accepted and addressed during this phase. We plan to provide security fixes for Python 3.6 as needed through 2021, five years following its initial release. Security fix releases are produced periodically as needed and only provided in source code form; binary installers are not provided.\r\n\r\nNote that 3.6.9rc1 is a **release preview** and thus its use is not recommended for production environments.\r\n\r\nAmong the new major new features in Python 3.6 were:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Python Development Cycle `_\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.6.9rc1 is a release candidate preview of the latest security fix release of Python 3.6.

    \n
    \n

    Note

    \n

    Python 3.7 is now released and is the latest feature release of Python 3. Get the latest release of 3.7.x here. Python 3.6.8 was the final bugfix release for 3.6.

    \n

    Python 3.6 has now entered the security fix phase of its life cycle. Only security-related issues are accepted and addressed during this phase. We plan to provide security fixes for Python 3.6 as needed through 2021, five years following its initial release. Security fix releases are produced periodically as needed and only provided in source code form; binary installers are not provided.

    \n

    Note that 3.6.9rc1 is a release preview and thus its use is not recommended for production environments.

    \n

    Among the new major new features in Python 3.6 were:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.

    \n\n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 303, + "fields": { + "created": "2019-07-02T07:33:33.117Z", + "updated": "2019-07-02T07:34:31.768Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.4rc2", + "slug": "python-374rc2", + "version": 3, + "is_latest": false, + "is_published": false, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-07-02T07:29:30Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-4-release-candidate-2", + "content": "Python 3.7.4rc2 is the second release candidate preview of the fourth maintenance release of Python 3.7.\r\nThe Python 3.7 series is the newest major release of the Python language and contains many new features and optimizations.\r\n\r\nNote that 3.7.4rc2 is a **release preview** and thus its use is not recommended for production environments.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`539`, new C API for thread-local storage\r\n* :pep:`545`, Python documentation translations\r\n* New documentation translations: `Japanese `_,\r\n `French `_, and\r\n `Korean `_.\r\n* :pep:`552`, Deterministic ``pyc`` files\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Customization of access to module attributes\r\n* :pep:`563`, Postponed evaluation of annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Improved ``DeprecationWarning`` handling\r\n* :pep:`567`, Context Variables\r\n* Avoiding the use of ASCII as a default text encoding (:pep:`538`, legacy C locale coercion\r\n and :pep:`540`, forced UTF-8 runtime mode)\r\n* The insertion-order preservation nature of ``dict`` objects is now an official part of the Python language spec.\r\n* Notable performance improvements in many areas.\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* **Changed in 3.7.4** OpenSSL has been updated from 1.1.0 to 1.1.1 and SQLite updated to 3.28.0.\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* **Changed in 3.7.4** OpenSSL has been updated from 1.1.0 to 1.1.1 and SQLite updated to 3.28.0.\r\n\r\n* For Python 3.7.4, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. **Changed in 3.7.4** The 64-bit/32-bit variant that also works on very old versions of macOS, from 10.6 (Snow Leopard) on, is now deprecated and will no longer be provided in future releases; see the macOS installer ``ReadMe`` file for more info. Both variants come with batteries-included versions of Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.7.4rc2 is the second release candidate preview of the fourth maintenance release of Python 3.7.\nThe Python 3.7 series is the newest major release of the Python language and contains many new features and optimizations.

    \n

    Note that 3.7.4rc2 is a release preview and thus its use is not recommended for production environments.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 539, new C API for thread-local storage
    • \n
    • PEP 545, Python documentation translations
    • \n
    • New documentation translations: Japanese,\nFrench, and\nKorean.
    • \n
    • PEP 552, Deterministic pyc files
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Customization of access to module attributes
    • \n
    • PEP 563, Postponed evaluation of annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Improved DeprecationWarning handling
    • \n
    • PEP 567, Context Variables
    • \n
    • Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion\nand PEP 540, forced UTF-8 runtime mode)
    • \n
    • The insertion-order preservation nature of dict objects is now an official part of the Python language spec.
    • \n
    • Notable performance improvements in many areas.
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • Changed in 3.7.4 OpenSSL has been updated from 1.1.0 to 1.1.1 and SQLite updated to 3.28.0.
    • \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • Changed in 3.7.4 OpenSSL has been updated from 1.1.0 to 1.1.1 and SQLite updated to 3.28.0.
    • \n
    • For Python 3.7.4, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. Changed in 3.7.4 The 64-bit/32-bit variant that also works on very old versions of macOS, from 10.6 (Snow Leopard) on, is now deprecated and will no longer be provided in future releases; see the macOS installer ReadMe file for more info. Both variants come with batteries-included versions of Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used.
    • \n
    • Both python.org installer variants include private copies of OpenSSL. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 304, + "fields": { + "created": "2019-07-02T20:36:54.353Z", + "updated": "2022-01-07T22:09:53.958Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.9", + "slug": "python-369", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2019-07-02T21:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-9-final", + "content": "**Note:** The release you are looking at is **Python 3.6.9**, a **security bugfix release** for the legacy **3.6** series which has now reached **end-of-life** and is no longer supported. See the `downloads page `_ for currently supported versions of Python. The final source-only **security fix** release for 3.6 was `3.6.15 `_ and the final **bugfix release** was `3.6.8 `_.\r\n\r\nAmong the new major new features in Python 3.6 were:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Python Development Cycle `_\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.6.9, a security bugfix release for the legacy 3.6 series which has now reached end-of-life and is no longer supported. See the downloads page for currently supported versions of Python. The final source-only security fix release for 3.6 was 3.6.15 and the final bugfix release was 3.6.8.

    \n

    Among the new major new features in Python 3.6 were:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.

    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 305, + "fields": { + "created": "2019-07-04T12:31:35.788Z", + "updated": "2019-08-07T14:56:15.755Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.0b2", + "slug": "python-380b2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-07-04T12:30:16Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-beta-2", + "content": "# This is a beta preview of Python 3.8\r\n\r\nPython 3.8 is still in development. This release, 3.8.0b2 is the second of four planned beta release previews.\r\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. \r\n\r\n# Call to action\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.8** during the beta phase and report issues found to [the Python bug tracker](https://bugs.python.org) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2019-09-30). Our goal is have no ABI changes after beta 3 and no code changes after 3.8.0rc1, the release candidate. To achieve that, it will be extremely important to get as much exposure for 3.8 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n# Major new features of the 3.8 series, compared to 3.7\r\n\r\nSome of the new major new features and changes in Python 3.8 are:\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\nThe next pre-release of Python 3.8 will be 3.8.0b3, currently scheduled for\r\n2019-07-29.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n**Jones:** Morning, Squadron Leader.
    \r\n**Idle:** What-ho, Squiffy.
    \r\n**Jones:** How was it?
    \r\n**Idle:** Top-hole. Bally Jerry, pranged his kite right in the how's-your-father; hairy blighter, dicky-birded, feathered back on his sammy, took a waspy, flipped over on his Betty Harpers and caught his can in the Bertie.
    \r\n**Jones:** Er, I'm afraid I don't quite follow you, Squadron Leader.
    \r\n**Idle:** It's perfectly ordinary banter, Squiffy. Bally Jerry, pranged his kite right in the how's-your-father; hairy blighter, dicky-birded, feathered back on his sammy, took a waspy, flipped over on his Betty Harpers and caught his can in the Bertie.
    \r\n**Jones:** No, I'm just not understanding banter at all well today. Give us it slower.
    \r\n**Idle:** Banter's not the same if you say it slower, Squiffy.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.8

    \n

    Python 3.8 is still in development. This release, 3.8.0b2 is the second of four planned beta release previews.\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    Call to action

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.8 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2019-09-30). Our goal is have no ABI changes after beta 3 and no code changes after 3.8.0rc1, the release candidate. To achieve that, it will be extremely important to get as much exposure for 3.8 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n

    Some of the new major new features and changes in Python 3.8 are:

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    The next pre-release of Python 3.8 will be 3.8.0b3, currently scheduled for\n2019-07-29.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Jones: Morning, Squadron Leader.
    \nIdle: What-ho, Squiffy.
    \nJones: How was it?
    \nIdle: Top-hole. Bally Jerry, pranged his kite right in the how's-your-father; hairy blighter, dicky-birded, feathered back on his sammy, took a waspy, flipped over on his Betty Harpers and caught his can in the Bertie.
    \nJones: Er, I'm afraid I don't quite follow you, Squadron Leader.
    \nIdle: It's perfectly ordinary banter, Squiffy. Bally Jerry, pranged his kite right in the how's-your-father; hairy blighter, dicky-birded, feathered back on his sammy, took a waspy, flipped over on his Betty Harpers and caught his can in the Bertie.
    \nJones: No, I'm just not understanding banter at all well today. Give us it slower.
    \nIdle: Banter's not the same if you say it slower, Squiffy.

    " + } +}, +{ + "model": "downloads.release", + "pk": 306, + "fields": { + "created": "2019-07-08T21:18:42.483Z", + "updated": "2022-01-07T22:40:52.988Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.4", + "slug": "python-374", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2019-07-08T22:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-4-final", + "content": "**Note:** The release you are looking at is **Python 3.7.4**, a **bugfix release** for the legacy **3.7** series which is now in the **security fix** phase of its life cycle. See the `downloads page `_ for currently supported versions of Python and for the most recent source-only **security fix** release for 3.7. The final **bugfix release** with binary installers for 3.7 was `3.7.9 `_.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`539`, new C API for thread-local storage\r\n* :pep:`545`, Python documentation translations\r\n* New documentation translations: `Japanese `_,\r\n `French `_, and\r\n `Korean `_.\r\n* :pep:`552`, Deterministic ``pyc`` files\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Customization of access to module attributes\r\n* :pep:`563`, Postponed evaluation of annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Improved ``DeprecationWarning`` handling\r\n* :pep:`567`, Context Variables\r\n* Avoiding the use of ASCII as a default text encoding (:pep:`538`, legacy C locale coercion\r\n and :pep:`540`, forced UTF-8 runtime mode)\r\n* The insertion-order preservation nature of ``dict`` objects is now an official part of the Python language spec.\r\n* Notable performance improvements in many areas.\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* **Changed in 3.7.4** OpenSSL has been updated from 1.1.0 to 1.1.1 and SQLite updated to 3.28.0.\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* **Changed in 3.7.4** OpenSSL has been updated from 1.1.0 to 1.1.1 and SQLite updated to 3.28.0.\r\n\r\n* For Python 3.7.4, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. **Changed in 3.7.4** The 64-bit/32-bit variant that also works on very old versions of macOS, from 10.6 (Snow Leopard) on, is now deprecated and will no longer be provided in future releases; see the macOS installer ``ReadMe`` file for more info. Both variants come with batteries-included versions of Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.7.4, a bugfix release for the legacy 3.7 series which is now in the security fix phase of its life cycle. See the downloads page for currently supported versions of Python and for the most recent source-only security fix release for 3.7. The final bugfix release with binary installers for 3.7 was 3.7.9.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 539, new C API for thread-local storage
    • \n
    • PEP 545, Python documentation translations
    • \n
    • New documentation translations: Japanese,\nFrench, and\nKorean.
    • \n
    • PEP 552, Deterministic pyc files
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Customization of access to module attributes
    • \n
    • PEP 563, Postponed evaluation of annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Improved DeprecationWarning handling
    • \n
    • PEP 567, Context Variables
    • \n
    • Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion\nand PEP 540, forced UTF-8 runtime mode)
    • \n
    • The insertion-order preservation nature of dict objects is now an official part of the Python language spec.
    • \n
    • Notable performance improvements in many areas.
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • Changed in 3.7.4 OpenSSL has been updated from 1.1.0 to 1.1.1 and SQLite updated to 3.28.0.
    • \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • Changed in 3.7.4 OpenSSL has been updated from 1.1.0 to 1.1.1 and SQLite updated to 3.28.0.
    • \n
    • For Python 3.7.4, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. Changed in 3.7.4 The 64-bit/32-bit variant that also works on very old versions of macOS, from 10.6 (Snow Leopard) on, is now deprecated and will no longer be provided in future releases; see the macOS installer ReadMe file for more info. Both variants come with batteries-included versions of Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used.
    • \n
    • Both python.org installer variants include private copies of OpenSSL. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 307, + "fields": { + "created": "2019-07-29T16:25:13.332Z", + "updated": "2019-08-07T14:56:23.899Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.0b3", + "slug": "python-380b3", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-07-29T16:23:42Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-beta-3", + "content": "# This is a beta preview of Python 3.8\r\n\r\nPython 3.8 is still in development. This release, 3.8.0b3 is the third of four planned beta release previews.\r\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. \r\n\r\n# Call to action\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.8** during the beta phase and report issues found to [the Python bug tracker](https://bugs.python.org) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2019-09-30). Our goal is have no ABI changes after beta 3 and no code changes after 3.8.0rc1, the release candidate. To achieve that, it will be extremely important to get as much exposure for 3.8 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n# Major new features of the 3.8 series, compared to 3.7\r\n\r\nSome of the new major new features and changes in Python 3.8 are:\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\nThe next pre-release of Python 3.8 and the last beta will be 3.8.0b4, currently scheduled for\r\n2019-08-26.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\nMINSTREL (singing): Brave Sir Robin ran away\r\n
    ROBIN: No!\r\n
    MINSTREL: Bravely ran away away\r\n
    ROBIN: I didn't!\r\n
    MINSTREL: When danger reared its ugly head\r\n
    MINSTREL: He bravely turned his tail and fled\r\n
    ROBIN: No!\r\n
    MINSTREL: Yes, Brave Sir Robin turned about\r\n
    ROBIN: I didn't!\r\n
    MINSTREL: And gallantly he chickened out\r\n
    MINSTREL: Bravely taking to his feet\r\n
    ROBIN: I never did!\r\n
    MINSTREL: He beat a very brave retreat\r\n
    ROBIN: Oh, lie!\r\n
    MINSTREL: Bravest of the brave\r\n
    MINSTREL: Sir Robin\r\n
    ROBIN: I never!", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.8

    \n

    Python 3.8 is still in development. This release, 3.8.0b3 is the third of four planned beta release previews.\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    Call to action

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.8 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2019-09-30). Our goal is have no ABI changes after beta 3 and no code changes after 3.8.0rc1, the release candidate. To achieve that, it will be extremely important to get as much exposure for 3.8 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n

    Some of the new major new features and changes in Python 3.8 are:

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    The next pre-release of Python 3.8 and the last beta will be 3.8.0b4, currently scheduled for\n2019-08-26.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    MINSTREL (singing): Brave Sir Robin ran away\n
    ROBIN: No!\n
    MINSTREL: Bravely ran away away\n
    ROBIN: I didn't!\n
    MINSTREL: When danger reared its ugly head\n
    MINSTREL: He bravely turned his tail and fled\n
    ROBIN: No!\n
    MINSTREL: Yes, Brave Sir Robin turned about\n
    ROBIN: I didn't!\n
    MINSTREL: And gallantly he chickened out\n
    MINSTREL: Bravely taking to his feet\n
    ROBIN: I never did!\n
    MINSTREL: He beat a very brave retreat\n
    ROBIN: Oh, lie!\n
    MINSTREL: Bravest of the brave\n
    MINSTREL: Sir Robin\n
    ROBIN: I never!

    " + } +}, +{ + "model": "downloads.release", + "pk": 308, + "fields": { + "created": "2019-08-29T17:57:45.924Z", + "updated": "2019-09-12T11:37:08.474Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.0b4", + "slug": "python-380b4", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-08-29T17:49:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-beta-4", + "content": "# This is a beta preview of Python 3.8\r\n\r\nPython 3.8 is still in development. This release, 3.8.0b4 is the last of four planned beta release previews.\r\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. \r\n\r\n# Call to action\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.8** during the beta phase and report issues found to [the Python bug tracker](https://bugs.python.org) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2019-09-30). Our goal is have no ABI changes after beta 3 and no code changes after 3.8.0rc1, the release candidate. To achieve that, it will be extremely important to get as much exposure for 3.8 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n# Major new features of the 3.8 series, compared to 3.7\r\n\r\nSome of the new major new features and changes in Python 3.8 are:\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\nThe next pre-release of Python 3.8 and the first release candidate will be 3.8.0rc1, currently scheduled for\r\n2019-09-30.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n

    Mr Neutron! The most dangerous and terrifying man in the world! The man with the strength of an army! The wisdom of all the scholars in history! The man who had the power to destroy the world. \r\n

    \u2728 \ud83c\udf0d \ud83c\udf0e \ud83c\udf0f \ud83c\udf0d \ud83c\udf0e \ud83c\udf0f \u2728\r\n

    Mr Neutron. No one knows what strange and distant planet he came from, or where he was going to!... Wherever he went, terror and destruction were sure to follow.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.8

    \n

    Python 3.8 is still in development. This release, 3.8.0b4 is the last of four planned beta release previews.\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    Call to action

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.8 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2019-09-30). Our goal is have no ABI changes after beta 3 and no code changes after 3.8.0rc1, the release candidate. To achieve that, it will be extremely important to get as much exposure for 3.8 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n

    Some of the new major new features and changes in Python 3.8 are:

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    The next pre-release of Python 3.8 and the first release candidate will be 3.8.0rc1, currently scheduled for\n2019-09-30.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Mr Neutron! The most dangerous and terrifying man in the world! The man with the strength of an army! The wisdom of all the scholars in history! The man who had the power to destroy the world. \n

    \u2728 \ud83c\udf0d \ud83c\udf0e \ud83c\udf0f \ud83c\udf0d \ud83c\udf0e \ud83c\udf0f \u2728\n

    Mr Neutron. No one knows what strange and distant planet he came from, or where he was going to!... Wherever he went, terror and destruction were sure to follow.

    " + } +}, +{ + "model": "downloads.release", + "pk": 309, + "fields": { + "created": "2019-09-09T14:32:07.542Z", + "updated": "2020-10-22T16:34:46.320Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.8rc1", + "slug": "python-358rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2019-09-09T14:21:24Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-8rc1", + "content": "Python 3.5.8rc1\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.8rc1 was released on September 9th, 2019.\r\n\r\nPython 3.5 has now entered \"security fixes only\" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.8rc1 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.8rc1

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.8rc1 was released on September 9th, 2019.

    \n

    Python 3.5 has now entered "security fixes only" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.8rc1 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 310, + "fields": { + "created": "2019-10-01T18:13:09.025Z", + "updated": "2020-12-21T18:45:33.538Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.0rc1", + "slug": "python-380rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-10-01T18:03:12Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-release-candidate-1", + "content": "# This is the release candidate of Python 3.8.0\r\n\r\n**Note:** The release you're looking at is Python 3.8.0rc1, an outdated release. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n# Major new features of the 3.8 series, compared to 3.7\r\n\r\nSome of the new major new features and changes in Python 3.8 are:\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\nWISE MAN #1: We are three wise men.\r\n
    MANDY: Well, what are you doing creeping around a cow shed at two o'clock in the morning? That doesn't sound very wise to me.\r\n
    WISE MAN #3: We are astrologers.\r\n
    WISE MAN #1: We have come from the East.\r\n
    MANDY: Is this some kind of joke?\r\n
    WISE MAN #2: We wish to praise the infant.\r\n
    WISE MAN #1: We must pay homage to him.\r\n
    MANDY: Homage? You're all drunk. It's disgusting. Out! The lot, out!", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the release candidate of Python 3.8.0

    \n

    Note: The release you're looking at is Python 3.8.0rc1, an outdated release. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n

    Some of the new major new features and changes in Python 3.8 are:

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    WISE MAN #1: We are three wise men.\n
    MANDY: Well, what are you doing creeping around a cow shed at two o'clock in the morning? That doesn't sound very wise to me.\n
    WISE MAN #3: We are astrologers.\n
    WISE MAN #1: We have come from the East.\n
    MANDY: Is this some kind of joke?\n
    WISE MAN #2: We wish to praise the infant.\n
    WISE MAN #1: We must pay homage to him.\n
    MANDY: Homage? You're all drunk. It's disgusting. Out! The lot, out!

    " + } +}, +{ + "model": "downloads.release", + "pk": 311, + "fields": { + "created": "2019-10-02T04:08:46.627Z", + "updated": "2019-10-02T04:23:39.692Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.5rc1", + "slug": "python-375rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-10-02T05:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-5-release-candidate-1", + "content": "Python 3.7.5rc1 is the release candidate preview of the fifth maintenance release of Python 3.7.\r\nThe Python 3.7 series is the latest major release of the Python language and contains many new features and optimizations.\r\n\r\nNote that 3.7.5rc1 is a **release preview** and thus its use is not recommended for production environments.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`539`, new C API for thread-local storage\r\n* :pep:`545`, Python documentation translations\r\n* New documentation translations: `Japanese `_,\r\n `French `_, and\r\n `Korean `_.\r\n* :pep:`552`, Deterministic ``pyc`` files\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Customization of access to module attributes\r\n* :pep:`563`, Postponed evaluation of annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Improved ``DeprecationWarning`` handling\r\n* :pep:`567`, Context Variables\r\n* Avoiding the use of ASCII as a default text encoding (:pep:`538`, legacy C locale coercion\r\n and :pep:`540`, forced UTF-8 runtime mode)\r\n* The insertion-order preservation nature of ``dict`` objects is now an official part of the Python language spec.\r\n* Notable performance improvements in many areas.\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* For Python 3.7.4, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. **Changed in 3.7.4** The 64-bit/32-bit variant that also works on very old versions of macOS, from 10.6 (Snow Leopard) on, is now deprecated and will no longer be provided in future releases; see the macOS installer ``ReadMe`` file for more info. Both variants come with batteries-included versions of Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``. **Changed in 3.7.4** OpenSSL has been updated from 1.1.0 to 1.1.1.\r\n\r\n* At the time of the release of this release candidate, the next release of macOS, 10.15 Catalina, was still in public beta. Any updates needed to support 10.15 will be provided after it releases.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 3.7.5rc1 is the release candidate preview of the fifth maintenance release of Python 3.7.\nThe Python 3.7 series is the latest major release of the Python language and contains many new features and optimizations.

    \n

    Note that 3.7.5rc1 is a release preview and thus its use is not recommended for production environments.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 539, new C API for thread-local storage
    • \n
    • PEP 545, Python documentation translations
    • \n
    • New documentation translations: Japanese,\nFrench, and\nKorean.
    • \n
    • PEP 552, Deterministic pyc files
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Customization of access to module attributes
    • \n
    • PEP 563, Postponed evaluation of annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Improved DeprecationWarning handling
    • \n
    • PEP 567, Context Variables
    • \n
    • Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion\nand PEP 540, forced UTF-8 runtime mode)
    • \n
    • The insertion-order preservation nature of dict objects is now an official part of the Python language spec.
    • \n
    • Notable performance improvements in many areas.
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • For Python 3.7.4, we provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. Changed in 3.7.4 The 64-bit/32-bit variant that also works on very old versions of macOS, from 10.6 (Snow Leopard) on, is now deprecated and will no longer be provided in future releases; see the macOS installer ReadMe file for more info. Both variants come with batteries-included versions of Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used.
    • \n
    • Both python.org installer variants include private copies of OpenSSL. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command. Changed in 3.7.4 OpenSSL has been updated from 1.1.0 to 1.1.1.
    • \n
    • At the time of the release of this release candidate, the next release of macOS, 10.15 Catalina, was still in public beta. Any updates needed to support 10.15 will be provided after it releases.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 344, + "fields": { + "created": "2019-10-09T01:17:15.617Z", + "updated": "2019-10-10T14:12:01.822Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.17rc1", + "slug": "python-2717rc1", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2019-10-09T01:14:15Z", + "release_page": null, + "release_notes_url": "https://raw.githubusercontent.com/python/cpython/1c7b14197b10924e2efc1e6c99c720958be1f681/Misc/NEWS.d/2.7.17rc1.rst", + "content": "Python 2.7.17 release candidate 1 is a prerelease for a bugfix release in the Python 2.7 series.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.17 release candidate 1 is a prerelease for a bugfix release in the Python 2.7 series.

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 345, + "fields": { + "created": "2019-10-12T11:56:33.924Z", + "updated": "2020-10-22T16:34:32.740Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.8rc2", + "slug": "python-358rc2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2019-10-12T11:53:07Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-8rc2", + "content": "Python 3.5.8rc2\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.8rc2 was released on October 12th, 2019.\r\n\r\nPython 3.5 has now entered \"security fixes only\" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.8rc2 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.8rc2

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.8rc2 was released on October 12th, 2019.

    \n

    Python 3.5 has now entered "security fixes only" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.8rc2 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 346, + "fields": { + "created": "2019-10-14T12:42:20.282Z", + "updated": "2020-12-21T18:44:54.077Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.0", + "slug": "python-380", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2019-10-14T12:33:40Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-final", + "content": "# This is the stable release of Python 3.8.0\r\n\r\n**Note:** The release you're looking at is Python 3.8.0, an outdated release. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n# Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n# macOS users\r\n\r\n* For Python 3.8.0, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n# And now for something completely different\r\nInterviewer: And how long have you been here?\r\n
    Camel spotter: Three years.\r\n
    Interviewer: So, in, er, three years you've spotted no camels?\r\n
    Camel spotter: Yes in only three years. Er, I tell a lie, four, be fair, five. I've been camel spotting for just the seven years. Before that of course I was a Yeti Spotter.\r\n
    Interviewer: A Yeti Spotter, that must have been extremely interesting.\r\n
    Camel spotter: Oh, it was extremely interesting, very, very - quite... it was dull; dull, dull, dull, oh God it was dull. Sitting in the Waterloo waiting room. Of course once you've seen one Yeti you've seen them all.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the stable release of Python 3.8.0

    \n

    Note: The release you're looking at is Python 3.8.0, an outdated release. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8.0, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n

    Interviewer: And how long have you been here?\n
    Camel spotter: Three years.\n
    Interviewer: So, in, er, three years you've spotted no camels?\n
    Camel spotter: Yes in only three years. Er, I tell a lie, four, be fair, five. I've been camel spotting for just the seven years. Before that of course I was a Yeti Spotter.\n
    Interviewer: A Yeti Spotter, that must have been extremely interesting.\n
    Camel spotter: Oh, it was extremely interesting, very, very - quite... it was dull; dull, dull, dull, oh God it was dull. Sitting in the Waterloo waiting room. Of course once you've seen one Yeti you've seen them all.

    " + } +}, +{ + "model": "downloads.release", + "pk": 347, + "fields": { + "created": "2019-10-15T08:23:38.241Z", + "updated": "2022-01-07T22:42:13.908Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.5", + "slug": "python-375", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2019-10-15T18:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-5-final", + "content": "**Note:** The release you are looking at is **Python 3.7.5**, a **bugfix release** for the legacy **3.7** series which is now in the **security fix** phase of its life cycle. See the `downloads page `_ for currently supported versions of Python and for the most recent source-only **security fix** release for 3.7. The final **bugfix release** with binary installers for 3.7 was `3.7.9 `_.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`539`, new C API for thread-local storage\r\n* :pep:`545`, Python documentation translations\r\n* New documentation translations: `Japanese `_,\r\n `French `_, and\r\n `Korean `_.\r\n* :pep:`552`, Deterministic ``pyc`` files\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Customization of access to module attributes\r\n* :pep:`563`, Postponed evaluation of annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Improved ``DeprecationWarning`` handling\r\n* :pep:`567`, Context Variables\r\n* Avoiding the use of ASCII as a default text encoding (:pep:`538`, legacy C locale coercion\r\n and :pep:`540`, forced UTF-8 runtime mode)\r\n* The insertion-order preservation nature of ``dict`` objects is now an official part of the Python language spec.\r\n* Notable performance improvements in many areas.\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* **New in 3.7.5** The 3.7.5 10.9+ installer package is now compatible with the Gatekeeper notarization requirements of *macOS 10.15 Catalina*.\r\n\r\n* We provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. **Changed in 3.7.4** The 64-bit/32-bit variant that also works on very old versions of macOS, from 10.6 (Snow Leopard) on, is now deprecated and will no longer be provided in future releases; see the macOS installer ``ReadMe`` file for more info. Both variants come with batteries-included versions of Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``. **Changed in 3.7.4** OpenSSL has been updated from 1.1.0 to 1.1.1.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.7.5, a bugfix release for the legacy 3.7 series which is now in the security fix phase of its life cycle. See the downloads page for currently supported versions of Python and for the most recent source-only security fix release for 3.7. The final bugfix release with binary installers for 3.7 was 3.7.9.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 539, new C API for thread-local storage
    • \n
    • PEP 545, Python documentation translations
    • \n
    • New documentation translations: Japanese,\nFrench, and\nKorean.
    • \n
    • PEP 552, Deterministic pyc files
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Customization of access to module attributes
    • \n
    • PEP 563, Postponed evaluation of annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Improved DeprecationWarning handling
    • \n
    • PEP 567, Context Variables
    • \n
    • Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion\nand PEP 540, forced UTF-8 runtime mode)
    • \n
    • The insertion-order preservation nature of dict objects is now an official part of the Python language spec.
    • \n
    • Notable performance improvements in many areas.
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • New in 3.7.5 The 3.7.5 10.9+ installer package is now compatible with the Gatekeeper notarization requirements of macOS 10.15 Catalina.
    • \n
    • We provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. Changed in 3.7.4 The 64-bit/32-bit variant that also works on very old versions of macOS, from 10.6 (Snow Leopard) on, is now deprecated and will no longer be provided in future releases; see the macOS installer ReadMe file for more info. Both variants come with batteries-included versions of Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used.
    • \n
    • Both python.org installer variants include private copies of OpenSSL. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command. Changed in 3.7.4 OpenSSL has been updated from 1.1.0 to 1.1.1.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 348, + "fields": { + "created": "2019-10-19T22:33:05.497Z", + "updated": "2019-10-19T22:33:30.384Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.17", + "slug": "python-2717", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2019-10-19T22:31:35Z", + "release_page": null, + "release_notes_url": "https://raw.githubusercontent.com/python/cpython/c2f86d86e6c8f5fd1ef602128b537a48f3f5c063/Misc/NEWS.d/2.7.17rc1.rst", + "content": "Python 2.7.17 is a bug fix release in the Python 2.7.x series. It is expected to be the penultimate release for Python 2.7.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.17 is a bug fix release in the Python 2.7.x series. It is expected to be the penultimate release for Python 2.7.

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 349, + "fields": { + "created": "2019-10-29T06:47:21.675Z", + "updated": "2020-10-22T16:34:23.218Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.8", + "slug": "python-358", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2019-10-29T05:15:13Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-8", + "content": "Python 3.5.8\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.8 was released on October 29th, 2019.\r\n\r\nPython 3.5 has now entered \"security fixes only\" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.8 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.8

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.8 was released on October 29th, 2019.

    \n

    Python 3.5 has now entered "security fixes only" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.8 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 350, + "fields": { + "created": "2019-11-02T00:51:15.519Z", + "updated": "2020-10-22T16:34:08.059Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.9", + "slug": "python-359", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2019-11-02T00:30:51Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-9", + "content": "Python 3.5.9\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.9 was released on November 1st, 2019.\r\n\r\nThere were no new changes in version 3.5.9; 3.5.9 was released only because of a CDN caching problem, which resulted in some users downloading a prerelease version of the 3.5.8 .xz source tarball. Apart from the version number, 3.5.9 is identical to the proper 3.5.8 release.\r\n\r\nPython 3.5 has now entered \"security fixes only\" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.9 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.9

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.9 was released on November 1st, 2019.

    \n

    There were no new changes in version 3.5.9; 3.5.9 was released only because of a CDN caching problem, which resulted in some users downloading a prerelease version of the 3.5.8 .xz source tarball. Apart from the version number, 3.5.9 is identical to the proper 3.5.8 release.

    \n

    Python 3.5 has now entered "security fixes only" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.9 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 383, + "fields": { + "created": "2019-11-19T14:02:13.471Z", + "updated": "2019-11-20T00:48:43.343Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.0a1", + "slug": "python-390a1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-11-19T13:29:27Z", + "release_page": null, + "release_notes_url": "", + "content": "**This is an early developer preview of Python 3.9**\r\n\r\n# Major new features of the 3.9 series, compared to 3.8\r\n\r\nPython 3.9 is still in development. This releasee, 3.9.0a1 is the first of six planned alpha releases.\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2020-05-18) and, if necessary, may be modified or deleted up until the release candidate phase (2020-08-10). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.9 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThe next pre-release of Python 3.9 will be 3.9.0a2, currently scheduled for 2019-12-16.\r\n\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\n**Eric:** Ladies and gentlemen, seldom can it have been a greater pleasure and privilege than it is for me now to announce that the next award gave me the great pleasure and privilege of asking a man without whose ceaseless energy and tireless skill the British Film Industry would be today. I refer of course to my friend and colleague, Mr David Niven.\r\n
    **Eric:** Sadly, David Niven cannot be with us tonight, but he has sent his fridge.\r\n
    (the fridge with a black tie on is pushed down by the men in brown coats, and a microphone is positioned in front of it)\r\n
    **Eric:** This is the fridge in which David keeps most of his milk, butter and eggs. What a typically selfless gesture, that he should send this fridge, of all of his fridges, to be with us tonight.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.9

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Python 3.9 is still in development. This releasee, 3.9.0a1 is the first of six planned alpha releases.\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of the beta phase (2020-05-18) and, if necessary, may be modified or deleted up until the release candidate phase (2020-08-10). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Many new features for Python 3.9 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)
    • \n
    \n

    The next pre-release of Python 3.9 will be 3.9.0a2, currently scheduled for 2019-12-16.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Eric: Ladies and gentlemen, seldom can it have been a greater pleasure and privilege than it is for me now to announce that the next award gave me the great pleasure and privilege of asking a man without whose ceaseless energy and tireless skill the British Film Industry would be today. I refer of course to my friend and colleague, Mr David Niven.\n
    Eric: Sadly, David Niven cannot be with us tonight, but he has sent his fridge.\n
    (the fridge with a black tie on is pushed down by the men in brown coats, and a microphone is positioned in front of it)\n
    Eric: This is the fridge in which David keeps most of his milk, butter and eggs. What a typically selfless gesture, that he should send this fridge, of all of his fridges, to be with us tonight.

    " + } +}, +{ + "model": "downloads.release", + "pk": 384, + "fields": { + "created": "2019-12-10T09:13:03.966Z", + "updated": "2020-12-21T18:44:11.926Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.1rc1", + "slug": "python-381rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-12-10T08:58:06Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-1-release-candidate-1", + "content": "# This is the release candidate of Python 3.8.1, the first maintenance release of Python 3.8\r\n\r\n\r\n**Note:** The release you're looking at is Python 3.8.1rc1, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n# Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n# macOS users\r\n\r\n* For Python 3.8.0, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n# And now for something completely different\r\n
    First Pilot: This is Captain MacPherson welcoming you aboard East Scottish Airways. You'll have had your tea. Our destination is Glasgow. There is no need to panic.\r\n
    (The door of the cockpit opens and Mr Badger comes in.)\r\n
    Badger: There's a bomb on board this plane, and I'll tell you where it is for a thousand pounds.\r\n
    Second Pilot: I don't believe you.\r\n
    Badger: If you don't tell me where the bomb is... if I don't give you the money... Unless you give me the bomb...\r\n
    Stewardess: The money.\r\n
    Badger: The money, thank you, pretty lady... the bomb will explode killing everybody.\r\n
    Second Pilot: Including you.\r\n
    Badger: ...\r\n
    Badger: I'll tell you where it is for a pound.\r\n
    Second Pilot: Here's a pound.\r\n
    Badger: I don't want Scottish money. They've got the numbers. It can be traced.\r\n
    Second Pilot: One English pound. Now where's the bomb?\r\n
    Badger: I can't remember.\r\n
    Second Pilot: You've forgotten?\r\n
    Badger: Aye, you'd better have your pound back.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the release candidate of Python 3.8.1, the first maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.1rc1, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8.0, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n


    First Pilot: This is Captain MacPherson welcoming you aboard East Scottish Airways. You'll have had your tea. Our destination is Glasgow. There is no need to panic.\n
    (The door of the cockpit opens and Mr Badger comes in.)\n
    Badger: There's a bomb on board this plane, and I'll tell you where it is for a thousand pounds.\n
    Second Pilot: I don't believe you.\n
    Badger: If you don't tell me where the bomb is... if I don't give you the money... Unless you give me the bomb...\n
    Stewardess: The money.\n
    Badger: The money, thank you, pretty lady... the bomb will explode killing everybody.\n
    Second Pilot: Including you.\n
    Badger: ...\n
    Badger: I'll tell you where it is for a pound.\n
    Second Pilot: Here's a pound.\n
    Badger: I don't want Scottish money. They've got the numbers. It can be traced.\n
    Second Pilot: One English pound. Now where's the bomb?\n
    Badger: I can't remember.\n
    Second Pilot: You've forgotten?\n
    Badger: Aye, you'd better have your pound back.

    " + } +}, +{ + "model": "downloads.release", + "pk": 385, + "fields": { + "created": "2019-12-11T22:24:27.993Z", + "updated": "2019-12-11T23:27:58.056Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.6rc1", + "slug": "python-376rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-12-11T23:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-6-release-candidate-1", + "content": "Note\r\n^^^^\r\n\r\n**Python 3.8** is now the latest feature release series of Python 3. `Get the latest release of 3.8.x here `_. We plan to continue to provide *bugfix releases*\r\nfor 3.7.x until mid 2020 and *security fixes* until mid 2023. \r\n\r\n**Python 3.7.6rc1** is the release candidate preview of the sixth and most recent maintenance release of Python 3.7.\r\nThe Python 3.7 series contains many new features and optimizations.\r\n\r\nNote that 3.7.6rc1 is a **release preview** and thus its use is not recommended for production environments.\r\n\r\nAmong the major new features in Python 3.7 are:\r\n\r\n* :pep:`539`, new C API for thread-local storage\r\n* :pep:`545`, Python documentation translations\r\n* New documentation translations: `Japanese `_,\r\n `French `_, and\r\n `Korean `_.\r\n* :pep:`552`, Deterministic ``pyc`` files\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Customization of access to module attributes\r\n* :pep:`563`, Postponed evaluation of annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Improved ``DeprecationWarning`` handling\r\n* :pep:`567`, Context Variables\r\n* Avoiding the use of ASCII as a default text encoding (:pep:`538`, legacy C locale coercion\r\n and :pep:`540`, forced UTF-8 runtime mode)\r\n* The insertion-order preservation nature of ``dict`` objects is now an official part of the Python language spec.\r\n* Notable performance improvements in many areas.\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* **Changed in 3.7.5** 3.7.x 10.9+ installer packages are now compatible with the Gatekeeper notarization requirements of *macOS 10.15 Catalina*.\r\n\r\n* We provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. **Changed in 3.7.4** The 64-bit/32-bit variant that also works on very old versions of macOS, from 10.6 (Snow Leopard) on, is now deprecated and will no longer be provided in future releases; see the macOS installer ``ReadMe`` file for more info. Both variants come with batteries-included versions of Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``. **Changed in 3.7.4** OpenSSL has been updated from 1.1.0 to 1.1.1.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Note

    \n

    Python 3.8 is now the latest feature release series of Python 3. Get the latest release of 3.8.x here. We plan to continue to provide bugfix releases\nfor 3.7.x until mid 2020 and security fixes until mid 2023.

    \n

    Python 3.7.6rc1 is the release candidate preview of the sixth and most recent maintenance release of Python 3.7.\nThe Python 3.7 series contains many new features and optimizations.

    \n

    Note that 3.7.6rc1 is a release preview and thus its use is not recommended for production environments.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 539, new C API for thread-local storage
    • \n
    • PEP 545, Python documentation translations
    • \n
    • New documentation translations: Japanese,\nFrench, and\nKorean.
    • \n
    • PEP 552, Deterministic pyc files
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Customization of access to module attributes
    • \n
    • PEP 563, Postponed evaluation of annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Improved DeprecationWarning handling
    • \n
    • PEP 567, Context Variables
    • \n
    • Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion\nand PEP 540, forced UTF-8 runtime mode)
    • \n
    • The insertion-order preservation nature of dict objects is now an official part of the Python language spec.
    • \n
    • Notable performance improvements in many areas.
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.

    \n
    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • Changed in 3.7.5 3.7.x 10.9+ installer packages are now compatible with the Gatekeeper notarization requirements of macOS 10.15 Catalina.
    • \n
    • We provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. Changed in 3.7.4 The 64-bit/32-bit variant that also works on very old versions of macOS, from 10.6 (Snow Leopard) on, is now deprecated and will no longer be provided in future releases; see the macOS installer ReadMe file for more info. Both variants come with batteries-included versions of Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used.
    • \n
    • Both python.org installer variants include private copies of OpenSSL. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command. Changed in 3.7.4 OpenSSL has been updated from 1.1.0 to 1.1.1.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 386, + "fields": { + "created": "2019-12-11T22:38:48.653Z", + "updated": "2019-12-11T23:27:42.815Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.10rc1", + "slug": "python-3610rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-12-11T22:55:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-10-release-candidate-1", + "content": "Note\r\n^^^^\r\n\r\n**Python 3.8** is now released and is the latest **feature release** of Python 3. `Get the latest release of 3.8.x here `_. \r\n\r\n**Python 3.6.10rc1** is the release candidate preview of the next **security fix** release of Python 3.6.\r\n**Python 3.6.8** was the final **bugfix release** for 3.6. Python 3.6 has now entered the **security fix** phase of its life cycle. Only security-related issues are accepted and addressed during this phase. We plan to provide security fixes for Python 3.6 as needed through 2021, five years following its initial release. Security fix releases are produced periodically as needed and only provided in source code form; binary installers are not provided.\r\n\r\nAmong the new major new features in Python 3.6 were:\r\n\r\n* :pep:`468`, Preserving Keyword Argument Order\r\n* :pep:`487`, Simpler customization of class creation\r\n* :pep:`495`, Local Time Disambiguation\r\n* :pep:`498`, Literal String Formatting\r\n* :pep:`506`, Adding A Secrets Module To The Standard Library\r\n* :pep:`509`, Add a private version to dict\r\n* :pep:`515`, Underscores in Numeric Literals\r\n* :pep:`519`, Adding a file system path protocol\r\n* :pep:`520`, Preserving Class Attribute Definition Order\r\n* :pep:`523`, Adding a frame evaluation API to CPython\r\n* :pep:`524`, Make os.urandom() blocking on Linux (during system startup)\r\n* :pep:`525`, Asynchronous Generators (provisional)\r\n* :pep:`526`, Syntax for Variable Annotations (provisional)\r\n* :pep:`528`, Change Windows console encoding to UTF-8\r\n* :pep:`529`, Change Windows filesystem encoding to UTF-8\r\n* :pep:`530`, Asynchronous Comprehensions\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Python Development Cycle `_\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Note

    \n

    Python 3.8 is now released and is the latest feature release of Python 3. Get the latest release of 3.8.x here.

    \n

    Python 3.6.10rc1 is the release candidate preview of the next security fix release of Python 3.6.\nPython 3.6.8 was the final bugfix release for 3.6. Python 3.6 has now entered the security fix phase of its life cycle. Only security-related issues are accepted and addressed during this phase. We plan to provide security fixes for Python 3.6 as needed through 2021, five years following its initial release. Security fix releases are produced periodically as needed and only provided in source code form; binary installers are not provided.

    \n

    Among the new major new features in Python 3.6 were:

    \n
      \n
    • PEP 468, Preserving Keyword Argument Order
    • \n
    • PEP 487, Simpler customization of class creation
    • \n
    • PEP 495, Local Time Disambiguation
    • \n
    • PEP 498, Literal String Formatting
    • \n
    • PEP 506, Adding A Secrets Module To The Standard Library
    • \n
    • PEP 509, Add a private version to dict
    • \n
    • PEP 515, Underscores in Numeric Literals
    • \n
    • PEP 519, Adding a file system path protocol
    • \n
    • PEP 520, Preserving Class Attribute Definition Order
    • \n
    • PEP 523, Adding a frame evaluation API to CPython
    • \n
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • \n
    • PEP 525, Asynchronous Generators (provisional)
    • \n
    • PEP 526, Syntax for Variable Annotations (provisional)
    • \n
    • PEP 528, Change Windows console encoding to UTF-8
    • \n
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • \n
    • PEP 530, Asynchronous Comprehensions
    • \n
    \n

    Please see What\u2019s New In Python 3.6 for more information.

    \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 387, + "fields": { + "created": "2019-12-18T22:39:55.498Z", + "updated": "2019-12-19T08:18:29.593Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.0a2", + "slug": "python-390a2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2019-12-18T22:36:05Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.9/whatsnew/changelog.html#python-3-9-0-alpha-2", + "content": "**This is an early developer preview of Python 3.9**\r\n\r\n# Major new features of the 3.9 series, compared to 3.8\r\n\r\nPython 3.9 is still in development. This releasee, 3.9.0a2 is the second of six planned alpha releases.\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2020-05-18) and, if necessary, may be modified or deleted up until the release candidate phase (2020-08-10). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.9 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThe next pre-release of Python 3.9 will be 3.9.0a3, currently scheduled for 2020-01-13.\r\n\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\n*At the Registry Office. Marriages division.*\r\n\r\n**Man**: Er, excuse me, I want to get married. \r\n
    **Registrar**: I'm afraid I'm already married, sir. \r\n
    **Man**: Er, no, no. I just want to get married. \r\n
    **Registrar**: I could get a divorce, I suppose, but it'll be a bit of a wrench. \r\n
    **Man**: Er, no, no. That wouldn't be necessary because... \r\n
    **Registrar**: You see, would you come to my place or should I have to come to yours, because I've just got a big mortgage. \r\n
    **Man**: No, no, I want to get married here. \r\n
    **Registrar**: Oh dear. I had my heart set on a church wedding. \r\n
    **Man**: Look, I just want you to marry me... to... \r\n
    **Registrar**: I want to marry you too sir, but it's not as simple as that. You sure you want to get married? \r\n
    **Man**: Yes. I want to get married very quickly. \r\n
    **Registrar**: Suits me, sir. Suits me. \r\n
    **Man**: I don't want to marry you! \r\n
    **Registrar**: There is such a thing as breach of promise, sir. \r\n
    **Man**: Look, I just want you to act as registrar and marry me. \r\n
    **Registrar**: I will marry you sir, but please make up your mind. Please don't trifle with my affections.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.9

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Python 3.9 is still in development. This releasee, 3.9.0a2 is the second of six planned alpha releases.\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of the beta phase (2020-05-18) and, if necessary, may be modified or deleted up until the release candidate phase (2020-08-10). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Many new features for Python 3.9 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)
    • \n
    \n

    The next pre-release of Python 3.9 will be 3.9.0a3, currently scheduled for 2020-01-13.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    At the Registry Office. Marriages division.

    \n

    Man: Er, excuse me, I want to get married. \n
    Registrar: I'm afraid I'm already married, sir. \n
    Man: Er, no, no. I just want to get married. \n
    Registrar: I could get a divorce, I suppose, but it'll be a bit of a wrench. \n
    Man: Er, no, no. That wouldn't be necessary because... \n
    Registrar: You see, would you come to my place or should I have to come to yours, because I've just got a big mortgage. \n
    Man: No, no, I want to get married here. \n
    Registrar: Oh dear. I had my heart set on a church wedding. \n
    Man: Look, I just want you to marry me... to... \n
    Registrar: I want to marry you too sir, but it's not as simple as that. You sure you want to get married? \n
    Man: Yes. I want to get married very quickly. \n
    Registrar: Suits me, sir. Suits me. \n
    Man: I don't want to marry you! \n
    Registrar: There is such a thing as breach of promise, sir. \n
    Man: Look, I just want you to act as registrar and marry me. \n
    Registrar: I will marry you sir, but please make up your mind. Please don't trifle with my affections.

    " + } +}, +{ + "model": "downloads.release", + "pk": 388, + "fields": { + "created": "2019-12-18T22:44:39.565Z", + "updated": "2020-12-21T18:43:58.635Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.1", + "slug": "python-381", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2019-12-18T22:42:04Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-1", + "content": "# This is Python 3.8.1, the first maintenance release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.1, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n# Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n# macOS users\r\n\r\n* For Python 3.8.0, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n# And now for something completely different\r\nHello, good evening, and welcome to **'It's A Living'**. The rules are very simple: each week we get *a large fee*; at the end of that week we get *another large fee*; if there's been no interruption at the end of the year we get *a repeat fee* which can be added on for tax purposes to the previous year or the following year if there's no new series.\r\n\r\nEvery contestant, in addition to getting a large fee is entitled to *three drinks* at the BBC or if the show is over, *seven drinks* - unless he is an MP, in which case he can have *seven drinks before the show*, or a bishop *only three drinks* in toto. The winners will receive *an additional fee*, a prize which they can flog back and *a special fee* for a guest appearance on **'Late Night Line Up'**. Well, those are the rules, that's the game, we'll be back again same time next week. Till then. Bye-bye.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is Python 3.8.1, the first maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.1, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8.0, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n

    Hello, good evening, and welcome to 'It's A Living'. The rules are very simple: each week we get a large fee; at the end of that week we get another large fee; if there's been no interruption at the end of the year we get a repeat fee which can be added on for tax purposes to the previous year or the following year if there's no new series.

    \n

    Every contestant, in addition to getting a large fee is entitled to three drinks at the BBC or if the show is over, seven drinks - unless he is an MP, in which case he can have seven drinks before the show, or a bishop only three drinks in toto. The winners will receive an additional fee, a prize which they can flog back and a special fee for a guest appearance on 'Late Night Line Up'. Well, those are the rules, that's the game, we'll be back again same time next week. Till then. Bye-bye.

    " + } +}, +{ + "model": "downloads.release", + "pk": 389, + "fields": { + "created": "2019-12-18T23:50:54.727Z", + "updated": "2022-01-07T22:06:48.831Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.10", + "slug": "python-3610", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2019-12-18T20:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.6/whatsnew/changelog.html#python-3-6-10-final", + "content": "**Note:** The release you are looking at is **Python 3.6.10**, a **security bugfix release** for the legacy **3.6** series which has now reached **end-of-life** and is no longer supported. See the `downloads page `_ for currently supported versions of Python. The final source-only **security fix** release for 3.6 was `3.6.15 `_ and the final **bugfix release** was `3.6.8 `_.\r\n\r\nPlease see `What\u2019s New In Python 3.6 `_ for more information.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Python Development Cycle `_\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.6.10, a security bugfix release for the legacy 3.6 series which has now reached end-of-life and is no longer supported. See the downloads page for currently supported versions of Python. The final source-only security fix release for 3.6 was 3.6.15 and the final bugfix release was 3.6.8.

    \n

    Please see What\u2019s New In Python 3.6 for more information.

    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 390, + "fields": { + "created": "2019-12-19T01:17:38.432Z", + "updated": "2022-01-07T22:43:11.816Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.6", + "slug": "python-376", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2019-12-18T22:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-6-final", + "content": "**Note:** The release you are looking at is **Python 3.7.6**, a **bugfix release** for the legacy **3.7** series which is now in the **security fix** phase of its life cycle. See the `downloads page `_ for currently supported versions of Python and for the most recent source-only **security fix** release for 3.7. The final **bugfix release** with binary installers for 3.7 was `3.7.9 `_.\r\n\r\nAmong the major *new features* in Python 3.7 are:\r\n\r\n* :pep:`539`, new C API for thread-local storage\r\n* :pep:`545`, Python documentation translations\r\n* New documentation translations: `Japanese `_,\r\n `French `_, and\r\n `Korean `_.\r\n* :pep:`552`, Deterministic ``pyc`` files\r\n* :pep:`553`, Built-in breakpoint()\r\n* :pep:`557`, Data Classes\r\n* :pep:`560`, Core support for typing module and generic types\r\n* :pep:`562`, Customization of access to module attributes\r\n* :pep:`563`, Postponed evaluation of annotations\r\n* :pep:`564`, Time functions with nanosecond resolution\r\n* :pep:`565`, Improved ``DeprecationWarning`` handling\r\n* :pep:`567`, Context Variables\r\n* Avoiding the use of ASCII as a default text encoding (:pep:`538`, legacy C locale coercion\r\n and :pep:`540`, forced UTF-8 runtime mode)\r\n* The insertion-order preservation nature of ``dict`` objects is now an official part of the Python language spec.\r\n* Notable performance improvements in many areas.\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n\r\n* We provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. **Changed in 3.7.4** The 64-bit/32-bit variant that also works on very old versions of macOS, from 10.6 (Snow Leopard) on, is now deprecated and will no longer be provided in future releases; see the macOS installer ``ReadMe`` file for more info. Both variants come with batteries-included versions of Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used.\r\n \r\n* Both python.org installer variants include private copies of OpenSSL. Please carefully read the ``Important Information`` displayed during installation for information about SSL/TLS certificate validation and the ``Install Certificates.command``. **Changed in 3.7.4** OpenSSL has been updated from 1.1.0 to 1.1.1.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.7.6, a bugfix release for the legacy 3.7 series which is now in the security fix phase of its life cycle. See the downloads page for currently supported versions of Python and for the most recent source-only security fix release for 3.7. The final bugfix release with binary installers for 3.7 was 3.7.9.

    \n

    Among the major new features in Python 3.7 are:

    \n
      \n
    • PEP 539, new C API for thread-local storage
    • \n
    • PEP 545, Python documentation translations
    • \n
    • New documentation translations: Japanese,\nFrench, and\nKorean.
    • \n
    • PEP 552, Deterministic pyc files
    • \n
    • PEP 553, Built-in breakpoint()
    • \n
    • PEP 557, Data Classes
    • \n
    • PEP 560, Core support for typing module and generic types
    • \n
    • PEP 562, Customization of access to module attributes
    • \n
    • PEP 563, Postponed evaluation of annotations
    • \n
    • PEP 564, Time functions with nanosecond resolution
    • \n
    • PEP 565, Improved DeprecationWarning handling
    • \n
    • PEP 567, Context Variables
    • \n
    • Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion\nand PEP 540, forced UTF-8 runtime mode)
    • \n
    • The insertion-order preservation nature of dict objects is now an official part of the Python language spec.
    • \n
    • Notable performance improvements in many areas.
    • \n
    \n

    Please see What\u2019s New In Python 3.7 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • We provide two binary installer options for download. The default variant is 64-bit-only and works on macOS 10.9 (Mavericks) and later systems. Changed in 3.7.4 The 64-bit/32-bit variant that also works on very old versions of macOS, from 10.6 (Snow Leopard) on, is now deprecated and will no longer be provided in future releases; see the macOS installer ReadMe file for more info. Both variants come with batteries-included versions of Tcl/Tk 8.6 for users of IDLE and other tkinter-based GUI applications; third-party and system versions of Tcl/Tk are no longer used.
    • \n
    • Both python.org installer variants include private copies of OpenSSL. Please carefully read the Important Information displayed during installation for information about SSL/TLS certificate validation and the Install Certificates.command. Changed in 3.7.4 OpenSSL has been updated from 1.1.0 to 1.1.1.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 391, + "fields": { + "created": "2020-01-24T21:38:49.231Z", + "updated": "2020-01-25T15:33:21.432Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.0a3", + "slug": "python-390a3", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2020-01-24T21:27:36Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.9/whatsnew/changelog.html#python-3-9-0-alpha-3", + "content": "## This is an early developer preview of Python 3.9\r\n\r\nPython 3.9 is still in development. This release, 3.9.0a3 is the third of six planned alpha releases.\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2020-05-18) and, if necessary, may be modified or deleted up until the release candidate phase (2020-08-10). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nMany new features for Python 3.9 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThe next pre-release of Python 3.9 will be 3.9.0a4, currently scheduled for 2020-02-17.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n## And now for something completely different\r\n\r\n[Second Undertaker](https://en.wikipedia.org/wiki/Terry_Jones): Are you nervy, *irritable*, depressed, **tired of life**?\r\n
    Second Undertaker: ... (winks)\r\n
    Second Undertaker: Keep it up!", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.9

    \n

    Python 3.9 is still in development. This release, 3.9.0a3 is the third of six planned alpha releases.\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of the beta phase (2020-05-18) and, if necessary, may be modified or deleted up until the release candidate phase (2020-08-10). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Many new features for Python 3.9 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • \n

      A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)

      \n
    • \n
    \n

    The next pre-release of Python 3.9 will be 3.9.0a4, currently scheduled for 2020-02-17.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Second Undertaker: Are you nervy, irritable, depressed, tired of life?\n
    Second Undertaker: ... (winks)\n
    Second Undertaker: Keep it up!

    " + } +}, +{ + "model": "downloads.release", + "pk": 424, + "fields": { + "created": "2020-02-10T22:06:48.641Z", + "updated": "2020-12-21T18:43:38.560Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.2rc1", + "slug": "python-382rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2020-02-10T22:00:11Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-2-release-candidate-1", + "content": "# This is the release candidate of Python 3.8.2, the second maintenance release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.2rc1, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n# Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n# macOS users\r\n\r\n* For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* **ATTENTION macOS 10.15 Catalina users!** Apple has recently changed how third-party installer packages, like those provided by python.org, are notarized for verification by Gatekeeper. For the 3.8.2rc1 release preview, the python.org installer pkg does not yet meet the new requirements for notarization and so may be blocked by macOS when you try to install it. You can work around this issue by either using the *System Preferences > Security & Privacy* window's *General* tab or by control-click opening the installer package in the Finder. See [How to open an app that hasn\u2019t been notarized or is from an unidentified developer](https://support.apple.com/en-gb/HT202491) for more information. This issue will be resolved in the 3.8.2 final release.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n# And now for something completely different\r\nDoctor: Well, do take a seat. What seems to be the trouble?\r\n
    [Williams](https://en.wikipedia.org/wiki/Terry_Jones): I've... I've just been stabbed by your nurse.\r\n
    Doctor: Oh dear, yes, well I'd probably better have a look at you then. Could you fill in this form first? *(he hands him a form)*\r\n
    Williams: She just stabbed me.\r\n
    Doctor: Yes. She's an unpredictable sort. Look, you seem to be bleeding rather badly. I think you'd better hurry up and fill in that form.\r\n
    Williams: Couldn't I fill it in later doctor?\r\n
    Doctor: No, no. You'd have bled to death by then. Can you hold a pen?\r\n
    Williams: I'll try...", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the release candidate of Python 3.8.2, the second maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.2rc1, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • ATTENTION macOS 10.15 Catalina users! Apple has recently changed how third-party installer packages, like those provided by python.org, are notarized for verification by Gatekeeper. For the 3.8.2rc1 release preview, the python.org installer pkg does not yet meet the new requirements for notarization and so may be blocked by macOS when you try to install it. You can work around this issue by either using the System Preferences > Security & Privacy window's General tab or by control-click opening the installer package in the Finder. See How to open an app that hasn\u2019t been notarized or is from an unidentified developer for more information. This issue will be resolved in the 3.8.2 final release.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n

    Doctor: Well, do take a seat. What seems to be the trouble?\n
    Williams: I've... I've just been stabbed by your nurse.\n
    Doctor: Oh dear, yes, well I'd probably better have a look at you then. Could you fill in this form first? (he hands him a form)\n
    Williams: She just stabbed me.\n
    Doctor: Yes. She's an unpredictable sort. Look, you seem to be bleeding rather badly. I think you'd better hurry up and fill in that form.\n
    Williams: Couldn't I fill it in later doctor?\n
    Doctor: No, no. You'd have bled to death by then. Can you hold a pen?\n
    Williams: I'll try...

    " + } +}, +{ + "model": "downloads.release", + "pk": 425, + "fields": { + "created": "2020-02-17T23:46:14.301Z", + "updated": "2020-12-21T18:43:16.969Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.2rc2", + "slug": "python-382rc2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2020-02-17T23:44:38Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-2-release-candidate-2", + "content": "## This is the second release candidate of Python 3.8.2, the second maintenance release of Python 3.8\r\n\r\n\r\n**Note:** The release you're looking at is Python 3.8.2rc2, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n## Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n## macOS users\r\n\r\n* For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* **ATTENTION macOS 10.15 Catalina users!** Apple has recently changed how third-party installer packages, like those provided by python.org, are notarized for verification by Gatekeeper. For the 3.8.2rc1 and 3.8.2rc2 release previews, the python.org installer pkg does not yet meet the new requirements for notarization and so may be blocked by macOS when you try to install it. You can work around this issue by either using the *System Preferences > Security & Privacy* window's *General* tab or by control-click opening the installer package in the Finder. See [How to open an app that hasn\u2019t been notarized or is from an unidentified developer](https://support.apple.com/en-gb/HT202491) for more information. This issue will be resolved in the 3.8.2 final release.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n## And now for something completely different\r\n### THE GREAT DEBATE NUMBER 31: TV4 OR NOT TV4?\r\n*(stern music playing)*\r\n\r\nKennedy: Hello. Should there be another television channel, or should there not? On tonight's programme the Minister for Broadcasting, The Right Honourable Mr Ian Throat MP.\r\n
    Throat: Good evening.\r\n
    Kennedy: The Chairman of the Amalgamated Money 'IV, Sir Abe Sappenheim.\r\n
    Sappenheim: Good evening.\r\n
    Kennedy: The Shadow Spokesman for Television, Lord Kinwoodie.\r\n
    Kinwoodie: Hello.\r\n
    Kennedy: And a television critic, Mr Patrick Loone.\r\n
    Loone: Hello.\r\n
    Kennedy: Gentlemen - should there be a fourth television channel or not? Ian?\r\n
    Throat: Yes.\r\n
    Kennedy: Francis.\r\n
    Kinwoodie: No.\r\n
    Kennedy: Sir Abe?\r\n
    Sappenheim: Yes.\r\n
    Kennedy: Patrick.\r\n
    Loone: No.\r\n
    Kennedy: *Well there you have it.* Two say will, two say won't. We'll be back again next week, and next week's 'Great Debate' will be about Government Interference in Broadcasting and will be cancelled mysteriously.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the second release candidate of Python 3.8.2, the second maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.2rc2, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • ATTENTION macOS 10.15 Catalina users! Apple has recently changed how third-party installer packages, like those provided by python.org, are notarized for verification by Gatekeeper. For the 3.8.2rc1 and 3.8.2rc2 release previews, the python.org installer pkg does not yet meet the new requirements for notarization and so may be blocked by macOS when you try to install it. You can work around this issue by either using the System Preferences > Security & Privacy window's General tab or by control-click opening the installer package in the Finder. See How to open an app that hasn\u2019t been notarized or is from an unidentified developer for more information. This issue will be resolved in the 3.8.2 final release.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n

    THE GREAT DEBATE NUMBER 31: TV4 OR NOT TV4?

    \n

    (stern music playing)

    \n

    Kennedy: Hello. Should there be another television channel, or should there not? On tonight's programme the Minister for Broadcasting, The Right Honourable Mr Ian Throat MP.\n
    Throat: Good evening.\n
    Kennedy: The Chairman of the Amalgamated Money 'IV, Sir Abe Sappenheim.\n
    Sappenheim: Good evening.\n
    Kennedy: The Shadow Spokesman for Television, Lord Kinwoodie.\n
    Kinwoodie: Hello.\n
    Kennedy: And a television critic, Mr Patrick Loone.\n
    Loone: Hello.\n
    Kennedy: Gentlemen - should there be a fourth television channel or not? Ian?\n
    Throat: Yes.\n
    Kennedy: Francis.\n
    Kinwoodie: No.\n
    Kennedy: Sir Abe?\n
    Sappenheim: Yes.\n
    Kennedy: Patrick.\n
    Loone: No.\n
    Kennedy: Well there you have it. Two say will, two say won't. We'll be back again next week, and next week's 'Great Debate' will be about Government Interference in Broadcasting and will be cancelled mysteriously.

    " + } +}, +{ + "model": "downloads.release", + "pk": 426, + "fields": { + "created": "2020-02-25T20:52:30.301Z", + "updated": "2020-12-21T18:42:56.219Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.2", + "slug": "python-382", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2020-02-24T20:23:59Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.2/whatsnew/changelog.html#python-3-8-2-final", + "content": "## This is the second maintenance release of Python 3.8\r\n\r\n\r\n**Note:** The release you're looking at is Python 3.8.2, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n## Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n## macOS users\r\n\r\n* For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n## [And now for something completely different](https://en.wikipedia.org/wiki/Monty_Python_Live_at_the_Hollywood_Bowl)\r\nMichelangelo: Good evening, your Holiness.\r\n
    Pope: Evening, Michelangelo. I want to have a word with you about this painting of yours, \"The Last Supper.\"\r\n
    Michelangelo: Oh, yeah?\r\n
    Pope: I'm not happy about it.\r\n
    Michelangelo: Oh, dear. It took me hours.\r\n
    Pope: Not happy at all.\r\n
    Michelangelo: Is it the jellies you don't like?\r\n
    Pope: No.\r\n
    Michelangelo: Of course not, they add a bit of color, don't they? Oh, I know, you don't like the kangaroo?\r\n
    Pope: What kangaroo?\r\n
    Michelangelo: No problem, I'll paint him out.\r\n
    Pope: I never saw a kangaroo!\r\n
    Michelangelo: Uuh... he's right in the back. I'll paint him out! No sweat, I'll make him into a disciple.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the second maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.2, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n

    Michelangelo: Good evening, your Holiness.\n
    Pope: Evening, Michelangelo. I want to have a word with you about this painting of yours, \"The Last Supper.\"\n
    Michelangelo: Oh, yeah?\n
    Pope: I'm not happy about it.\n
    Michelangelo: Oh, dear. It took me hours.\n
    Pope: Not happy at all.\n
    Michelangelo: Is it the jellies you don't like?\n
    Pope: No.\n
    Michelangelo: Of course not, they add a bit of color, don't they? Oh, I know, you don't like the kangaroo?\n
    Pope: What kangaroo?\n
    Michelangelo: No problem, I'll paint him out.\n
    Pope: I never saw a kangaroo!\n
    Michelangelo: Uuh... he's right in the back. I'll paint him out! No sweat, I'll make him into a disciple.

    " + } +}, +{ + "model": "downloads.release", + "pk": 427, + "fields": { + "created": "2020-02-26T00:27:34.116Z", + "updated": "2020-02-26T01:18:27.876Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.0a4", + "slug": "python-390a4", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2020-02-26T00:22:37Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.9/whatsnew/changelog.html#python-3-9-0-alpha-4", + "content": "## This is an early developer preview of Python 3.9\r\n\r\nPython 3.9 is still in development. This release, 3.9.0a4 is the fourth of six planned alpha releases.\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2020-05-18) and, if necessary, may be modified or deleted up until the release candidate phase (2020-08-10). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nMany new features for Python 3.9 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThe next pre-release of Python 3.9 will be 3.9.0a5, currently scheduled for 2020-03-16.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n## And now for something completely different\r\nWoman: What do you want?\r\n
    Burglar: I want to come in and steal a few things, madam.\r\n
    Woman: Are you an encydopaedia salesman?\r\n
    Burglar: No madam, I'm a burglar, I burgle people.\r\n
    Woman: I think you're an encyclopaedia salesman.\r\n
    Burglar: Oh I'm not, open the door, let me in please.\r\n
    Woman: If I let you in you'll sell me encyclopaedias.\r\n
    Burglar: I won't, madam. I just want to come in and ransack the flat. Honestly.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.9

    \n

    Python 3.9 is still in development. This release, 3.9.0a4 is the fourth of six planned alpha releases.\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of the beta phase (2020-05-18) and, if necessary, may be modified or deleted up until the release candidate phase (2020-08-10). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Many new features for Python 3.9 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • \n

      A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)

      \n
    • \n
    \n

    The next pre-release of Python 3.9 will be 3.9.0a5, currently scheduled for 2020-03-16.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Woman: What do you want?\n
    Burglar: I want to come in and steal a few things, madam.\n
    Woman: Are you an encydopaedia salesman?\n
    Burglar: No madam, I'm a burglar, I burgle people.\n
    Woman: I think you're an encyclopaedia salesman.\n
    Burglar: Oh I'm not, open the door, let me in please.\n
    Woman: If I let you in you'll sell me encyclopaedias.\n
    Burglar: I won't, madam. I just want to come in and ransack the flat. Honestly.

    " + } +}, +{ + "model": "downloads.release", + "pk": 428, + "fields": { + "created": "2020-03-04T10:57:39.479Z", + "updated": "2020-03-04T17:36:05.169Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.7rc1", + "slug": "python-377rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2020-03-04T12:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-7-release-candidate-1", + "content": "Note\r\n^^^^\r\n\r\n**Python 3.8** is now the latest feature release series of Python 3. `Get the latest release of 3.8.x here `_. We plan to continue to provide *bugfix releases*\r\nfor 3.7.x until mid 2020 and *security fixes* until mid 2023. \r\n\r\n**Python 3.7.7rc1** is the release candidate preview of the seventh and most recent maintenance release of Python 3.7.\r\nThe Python 3.7 series contains many new features and optimizations.\r\n\r\nNote that 3.7.7rc1 is a **release preview** and thus its use is not recommended for production environments.\r\n\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n \r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n* As of 3.7.7, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems. The deprecated 64-bit/32-bit installer variant for macOS 10.6 (Snow Leopard) is no longer provided.\r\n\r\n* As of 3.7.7, macOS installer packages are now compatible with the full Gatekeeper notarization requirements of *macOS 10.15 Catalina* including code signing.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Note

    \n

    Python 3.8 is now the latest feature release series of Python 3. Get the latest release of 3.8.x here. We plan to continue to provide bugfix releases\nfor 3.7.x until mid 2020 and security fixes until mid 2023.

    \n

    Python 3.7.7rc1 is the release candidate preview of the seventh and most recent maintenance release of Python 3.7.\nThe Python 3.7 series contains many new features and optimizations.

    \n

    Note that 3.7.7rc1 is a release preview and thus its use is not recommended for production environments.

    \n

    Please see What\u2019s New In Python 3.7 for more information.

    \n
    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • Please read the "Important Information" displayed during installation for information about SSL/TLS certificate validation and the running the "Install Certificates.command".
    • \n
    • As of 3.7.7, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems. The deprecated 64-bit/32-bit installer variant for macOS 10.6 (Snow Leopard) is no longer provided.
    • \n
    • As of 3.7.7, macOS installer packages are now compatible with the full Gatekeeper notarization requirements of macOS 10.15 Catalina including code signing.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 429, + "fields": { + "created": "2020-03-10T06:32:00.804Z", + "updated": "2022-01-07T22:44:08.775Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.7", + "slug": "python-377", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2020-03-10T12:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-7-final", + "content": "**Note:** The release you are looking at is **Python 3.7.7**, a **bugfix release** for the legacy **3.7** series which is now in the **security fix** phase of its life cycle. See the `downloads page `_ for currently supported versions of Python and for the most recent source-only **security fix** release for 3.7. The final **bugfix release** with binary installers for 3.7 was `3.7.9 `_.\r\n\r\nThe Python 3.7 series contains many new features and optimizations.\r\nPlease see `What\u2019s New In Python 3.7 `_ for more information. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n \r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n* As of 3.7.7, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems. The deprecated 64-bit/32-bit installer variant for macOS 10.6 (Snow Leopard) is no longer provided.\r\n\r\n* As of 3.7.7, macOS installer packages are now compatible with the full Gatekeeper notarization requirements of *macOS 10.15 Catalina* including code signing.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.7.7, a bugfix release for the legacy 3.7 series which is now in the security fix phase of its life cycle. See the downloads page for currently supported versions of Python and for the most recent source-only security fix release for 3.7. The final bugfix release with binary installers for 3.7 was 3.7.9.

    \n

    The Python 3.7 series contains many new features and optimizations.\nPlease see What\u2019s New In Python 3.7 for more information.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • Please read the "Important Information" displayed during installation for information about SSL/TLS certificate validation and the running the "Install Certificates.command".
    • \n
    • As of 3.7.7, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems. The deprecated 64-bit/32-bit installer variant for macOS 10.6 (Snow Leopard) is no longer provided.
    • \n
    • As of 3.7.7, macOS installer packages are now compatible with the full Gatekeeper notarization requirements of macOS 10.15 Catalina including code signing.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 430, + "fields": { + "created": "2020-03-23T22:34:01.754Z", + "updated": "2020-03-24T09:39:37.605Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.0a5", + "slug": "python-390a5", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2020-03-23T22:04:05Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.9/whatsnew/changelog.html#python-3-9-0-alpha-5", + "content": "## This is an early developer preview of Python 3.9\r\n\r\nPython 3.9 is still in development. This release, 3.9.0a5 is the fifth of six planned alpha releases.\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2020-05-18) and, if necessary, may be modified or deleted up until the release candidate phase (2020-08-10). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nMany new features for Python 3.9 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore \r\n* A number of Python builtins (range, tuple, set, frozenset, list) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThe next pre-release, the last alpha release of Python 3.9, will be 3.9.0a6. It is currently scheduled for 2020-04-22.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n## And now for something completely different\r\n**Basil Fawlty**: *(to a nurse)* Don't touch me! I don't know where you've been!", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.9

    \n

    Python 3.9 is still in development. This release, 3.9.0a5 is the fifth of six planned alpha releases.\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of the beta phase (2020-05-18) and, if necessary, may be modified or deleted up until the release candidate phase (2020-08-10). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Many new features for Python 3.9 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list) are now sped up using PEP 590 vectorcall
    • \n
    • \n

      A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)

      \n
    • \n
    \n

    The next pre-release, the last alpha release of Python 3.9, will be 3.9.0a6. It is currently scheduled for 2020-04-22.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Basil Fawlty: (to a nurse) Don't touch me! I don't know where you've been!

    " + } +}, +{ + "model": "downloads.release", + "pk": 431, + "fields": { + "created": "2020-04-04T17:30:11.633Z", + "updated": "2020-04-06T14:36:40.865Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.18rc1", + "slug": "python-2718rc1", + "version": 2, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2020-04-04T17:29:24Z", + "release_page": null, + "release_notes_url": "", + "content": "Python 2.7.18 release candidate 1 is a testing release for Python 2.7.18, the last release of Python 2.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.18 release candidate 1 is a testing release for Python 2.7.18, the last release of Python 2.

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 432, + "fields": { + "created": "2020-04-20T14:19:43.041Z", + "updated": "2020-04-20T14:19:43.061Z", + "creator": null, + "last_modified_by": null, + "name": "Python 2.7.18", + "slug": "python-2718", + "version": 2, + "is_latest": true, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2020-04-20T14:18:29Z", + "release_page": null, + "release_notes_url": "", + "content": "Python 2.7.18 is the last release of Python 2.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Python 2.7.18 is the last release of Python 2.

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 433, + "fields": { + "created": "2020-04-28T14:45:44.776Z", + "updated": "2020-04-29T16:00:14.452Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.0a6", + "slug": "python-390a6", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2020-04-28T14:34:47Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.9/whatsnew/changelog.html#python-3-9-0-alpha-6", + "content": "## This is an early developer preview of Python 3.9\r\n\r\nPython 3.9 is still in development. This release, 3.9.0a6 is the last out of six planned alpha releases.\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2020-05-18) and, if necessary, may be modified or deleted up until the release candidate phase (2020-08-10). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nMany new features for Python 3.9 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThe next pre-release, the first beta release of Python 3.9, will be 3.9.0b1. It is currently scheduled for 2020-05-18.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n## And now for something completely different\r\n**Scientist ([Graham Chapman](http://www.montypython.net/scripts/penguins.php))**: Standard IQ tests gave the following results. The penguins scored badly when compared with primitive human sub-groups like the bushmen of the Kalahari but better than BBC program planners.\r\n
    **Scientist**: These IQ tests were thought to contain an unfair cultural bias against the penguin. For example, it didn't take into account the penguins extremely poor educational system. To devise a fairer system of test, a team of our researchers spent eighteen months in Antarctica living like penguins, and subsequently dying like penguins - only quicker - proving that the penguin is a clever little sod in his own environment.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.9

    \n

    Python 3.9 is still in development. This release, 3.9.0a6 is the last out of six planned alpha releases.\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of the beta phase (2020-05-18) and, if necessary, may be modified or deleted up until the release candidate phase (2020-08-10). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Many new features for Python 3.9 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • \n

      A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)

      \n
    • \n
    \n

    The next pre-release, the first beta release of Python 3.9, will be 3.9.0b1. It is currently scheduled for 2020-05-18.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Scientist (Graham Chapman): Standard IQ tests gave the following results. The penguins scored badly when compared with primitive human sub-groups like the bushmen of the Kalahari but better than BBC program planners.\n
    Scientist: These IQ tests were thought to contain an unfair cultural bias against the penguin. For example, it didn't take into account the penguins extremely poor educational system. To devise a fairer system of test, a team of our researchers spent eighteen months in Antarctica living like penguins, and subsequently dying like penguins - only quicker - proving that the penguin is a clever little sod in his own environment.

    " + } +}, +{ + "model": "downloads.release", + "pk": 434, + "fields": { + "created": "2020-04-29T22:40:18.786Z", + "updated": "2020-12-21T18:42:40.348Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.3rc1", + "slug": "python-383rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": false, + "release_date": "2020-04-29T22:35:25Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.3rc1/whatsnew/changelog.html#changelog", + "content": "## This is the release candidate of the third maintenance release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.3rc1, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n## Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n## macOS users\r\n\r\n* For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n## And now for something completely different\r\n[Graham Chapman](http://www.montypython.net/scripts/right-think.php): I think all rightthinking people in this country are sick and tired of being told that ordinary, decent people are fed up in this country with being sick and tired.\r\n
    All: Yes, yes...\r\n
    Graham Chapman: I'm certainly not! And I'm sick and tired of being told that I am.\r\n
    Mrs. Havoc-Jones: Well, I meet a lot of people and I'm convinced that the vast majority of wrongthinking people are right.\r\n
    Eric Idle: That seems like a consensus there.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the release candidate of the third maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.3rc1, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n

    Graham Chapman: I think all rightthinking people in this country are sick and tired of being told that ordinary, decent people are fed up in this country with being sick and tired.\n
    All: Yes, yes...\n
    Graham Chapman: I'm certainly not! And I'm sick and tired of being told that I am.\n
    Mrs. Havoc-Jones: Well, I meet a lot of people and I'm convinced that the vast majority of wrongthinking people are right.\n
    Eric Idle: That seems like a consensus there.

    " + } +}, +{ + "model": "downloads.release", + "pk": 435, + "fields": { + "created": "2020-05-13T22:00:48.466Z", + "updated": "2020-12-21T18:42:16.842Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.3", + "slug": "python-383", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2020-05-13T21:47:47Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.3/whatsnew/changelog.html#changelog", + "content": "## This is the third maintenance release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.3, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n## Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n## macOS users\r\n\r\n* For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n## And now for something completely different\r\n**[Mr Anemone (Graham Chapman)](http://www.montypython.net/scripts/flylesson.php):** Mr Chigger. So, you want to learn to fly? \r\n
    **Mr Chigger (Terry Jones):** Yes. \r\n
    **Mr Anemone:** Right, well, up on the table, arms out, fingers together, knees bent...\r\n
    **Mr Chigger:** No, no, no. \r\n
    **Mr Anemone:** *(very loudly)* UP ON THE TABLE! *(Mr Chigger gets on the table)* Arms out, fingers together, knees bent, now, head well forward. Now, flap your arms. Go on, flap, faster... faster... faster... faster, faster, faster, faster - now JUMP! *(Mr Chigger jumps and lands on the floor)* Rotten. You're no bloody use *at all*. You're an utter bloody *wash-out*. You make me sick, you *weed*!\r\n
    **Mr Chigger:** Now look here... \r\n
    **Mr Anemone:** All right, all right. I'll give you one more chance, get on the table... \r\n
    **Mr Chigger:** Look, I came here to learn how to fly *an aeroplane*.\r\n
    **Mr Anemone:** A what? \r\n
    **Mr Chigger:** I came here to learn how to fly an aeroplane. \r\n
    **Mr Anemone:** *(sarcastically)* Oh, 'an aeroplane'. Oh, I say, we are grand, aren't we? *(imitation posh accent)* 'Oh, oh, no more buttered scones for me, mater. I'm off to play the grand piano'. 'Pardon me while I fly my aeroplane.' **NOW GET ON THE TABLE!**", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the third maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.3, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n

    Mr Anemone (Graham Chapman): Mr Chigger. So, you want to learn to fly? \n
    Mr Chigger (Terry Jones): Yes. \n
    Mr Anemone: Right, well, up on the table, arms out, fingers together, knees bent...\n
    Mr Chigger: No, no, no. \n
    Mr Anemone: (very loudly) UP ON THE TABLE! (Mr Chigger gets on the table) Arms out, fingers together, knees bent, now, head well forward. Now, flap your arms. Go on, flap, faster... faster... faster... faster, faster, faster, faster - now JUMP! (Mr Chigger jumps and lands on the floor) Rotten. You're no bloody use at all. You're an utter bloody wash-out. You make me sick, you weed!\n
    Mr Chigger: Now look here... \n
    Mr Anemone: All right, all right. I'll give you one more chance, get on the table... \n
    Mr Chigger: Look, I came here to learn how to fly an aeroplane.\n
    Mr Anemone: A what? \n
    Mr Chigger: I came here to learn how to fly an aeroplane. \n
    Mr Anemone: (sarcastically) Oh, 'an aeroplane'. Oh, I say, we are grand, aren't we? (imitation posh accent) 'Oh, oh, no more buttered scones for me, mater. I'm off to play the grand piano'. 'Pardon me while I fly my aeroplane.' NOW GET ON THE TABLE!

    " + } +}, +{ + "model": "downloads.release", + "pk": 436, + "fields": { + "created": "2020-05-19T02:43:49.808Z", + "updated": "2020-05-19T09:38:00.326Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.0b1", + "slug": "python-390b1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2020-05-19T01:32:55Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.9/whatsnew/changelog.html#python-3-9-0-beta-1", + "content": "## This is a beta preview of Python 3.9\r\n\r\nPython 3.9 is still in development. This release, 3.9.0b1, is the first of four planned beta release previews.\r\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. \r\n\r\n## Call to action\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.9** during the beta phase and report issues found to [the Python bug tracker](https://bugs.python.org) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2020-08-10). Our goal is have no ABI changes after beta 4 and as few code changes as possible after 3.9.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.9 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThe next pre-release, the second beta release of Python 3.9, will be 3.9.0b2. It is currently scheduled for 2020-06-08.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n## And now for something completely different\r\n**[Mr Vernon (Eric Idle)](http://www.montypython.net/scripts/finisent.php):** Hello, madam. *(comes in)* \r\n
    **Mrs Long Name (Terry Jones):** Ah hello... you must have come about... \r\n
    **Mr Vernon:** Finishing the sentences, yes. \r\n
    **Mrs Long Name:** Oh... well... perhaps you'd like to... \r\n
    **Mr Vernon:** Come through this way, certainly. *(they go through into the sitting room)* Oh, nice place you've got here. \r\n
    **Mrs Long Name:** Yes ... well ... er... we... \r\n
    **Mr Vernon:** Like it? \r\n
    **Mrs Long Name:** Yes ... yes we certainly... \r\n
    **Mr Vernon:** Do... Good! Now then, when did you first start... \r\n
    **Mrs Long Name:** ...finding it difficult to... \r\n
    **Mr Vernon:** Finish sentences, yes. \r\n
    **Mrs Long Name:** Well it's not me, it's my... \r\n
    **Mr Vernon:** Husband? \r\n
    **Mrs Long Name:** Yes. He... \r\n
    **Mr Vernon:** Never lets you finish what you've started. \r\n
    **Mrs Long Name:** Quite. I'm beginning to feel... \r\n
    **Mr Vernon:** That you'll never finish a sentence again as long as you live. \r\n
    **Mrs Long Name:** Exact... \r\n
    **Mr Vernon:** ly. It must be awful.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.9

    \n

    Python 3.9 is still in development. This release, 3.9.0b1, is the first of four planned beta release previews.\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    Call to action

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.9 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2020-08-10). Our goal is have no ABI changes after beta 4 and as few code changes as possible after 3.9.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.9 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • \n

      A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)

      \n
    • \n
    \n

    The next pre-release, the second beta release of Python 3.9, will be 3.9.0b2. It is currently scheduled for 2020-06-08.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Mr Vernon (Eric Idle): Hello, madam. (comes in) \n
    Mrs Long Name (Terry Jones): Ah hello... you must have come about... \n
    Mr Vernon: Finishing the sentences, yes. \n
    Mrs Long Name: Oh... well... perhaps you'd like to... \n
    Mr Vernon: Come through this way, certainly. (they go through into the sitting room) Oh, nice place you've got here. \n
    Mrs Long Name: Yes ... well ... er... we... \n
    Mr Vernon: Like it? \n
    Mrs Long Name: Yes ... yes we certainly... \n
    Mr Vernon: Do... Good! Now then, when did you first start... \n
    Mrs Long Name: ...finding it difficult to... \n
    Mr Vernon: Finish sentences, yes. \n
    Mrs Long Name: Well it's not me, it's my... \n
    Mr Vernon: Husband? \n
    Mrs Long Name: Yes. He... \n
    Mr Vernon: Never lets you finish what you've started. \n
    Mrs Long Name: Quite. I'm beginning to feel... \n
    Mr Vernon: That you'll never finish a sentence again as long as you live. \n
    Mrs Long Name: Exact... \n
    Mr Vernon: ly. It must be awful.

    " + } +}, +{ + "model": "downloads.release", + "pk": 437, + "fields": { + "created": "2020-06-09T00:34:11.307Z", + "updated": "2020-06-09T21:32:17.064Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.0b2", + "slug": "python-390b2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2020-06-09T00:25:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.9/whatsnew/changelog.html#python-3-9-0-beta-2", + "content": "## WARNING: this release has a known regression\r\n\r\nSee [BPO-40924](https://bugs.python.org/issue40924) for details. Use [Python 3.9.0b3](https://www.python.org/downloads/release/python-390b3/) or newer instead, please.\r\n\r\n## This is a beta preview of Python 3.9\r\n\r\nPython 3.9 is still in development. This release, 3.9.0b2, is the second of four planned beta release previews.\r\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. \r\n\r\n## Call to action\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.9** during the beta phase and report issues found to [the Python bug tracker](https://bugs.python.org) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2020-08-10). Our goal is have no ABI changes after beta 4 and as few code changes as possible after 3.9.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.9 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThe next pre-release, the second beta release of Python 3.9, will be 3.9.0b3. It is currently scheduled for 2020-06-29.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n## And now for something completely different\r\n[Mrs Concrete (Terry Jones)](http://www.montypython.net/scripts/ratcatch.php): Oh yes, we've been expecting you. \r\n
    **Ratcatcher (Graham Chapman)**: I gather you've got a little rodental problem. \r\n
    **Mrs Concrete**: Oh, blimey. You'd think he was awake all the night, scrabbling down by the wainscotting. \r\n
    **Ratcatcher**: Um, that's an interesting word, isn't it? \r\n
    **Mrs Concrete**: What? \r\n
    **Ratcatcher**: Wainscotting ... Wainscotting ... Wainscotting ... sounds like a little Dorset village, doesn't it? *Wainscotting.*\r\n
    **Ratcatcher**: Now, where is it worst? \r\n
    **Mrs Concrete**: Well, down here. You can usually hear them. \r\n
    *(Indicates base of wall, which has a label on it saying 'Wainscotting'.)* \r\n
    **Ratcatcher**: Sssssh \r\n
    **Voice Over**: Baa ... baa ... baa ... baa ... baa ... baa... \r\n
    **Ratcatcher**: No, that's sheep you've got there. \r\n
    **Voice Ove**r: Baa ... baa. \r\n
    **Ratcatcher**: No, that's definitely sheep. A bit of a puzzle, really. \r\n
    **Mrs Concrete**: Is it? \r\n
    **Ratcatcher**: Yeah, well, I mean it's **a)** not going to respond to a nice piece of cheese and **b)** it isn't going to fit into a trap.", + "content_markup_type": "markdown", + "_content_rendered": "

    WARNING: this release has a known regression

    \n

    See BPO-40924 for details. Use Python 3.9.0b3 or newer instead, please.

    \n

    This is a beta preview of Python 3.9

    \n

    Python 3.9 is still in development. This release, 3.9.0b2, is the second of four planned beta release previews.\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    Call to action

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.9 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2020-08-10). Our goal is have no ABI changes after beta 4 and as few code changes as possible after 3.9.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.9 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • \n

      A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)

      \n
    • \n
    \n

    The next pre-release, the second beta release of Python 3.9, will be 3.9.0b3. It is currently scheduled for 2020-06-29.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Mrs Concrete (Terry Jones): Oh yes, we've been expecting you. \n
    Ratcatcher (Graham Chapman): I gather you've got a little rodental problem. \n
    Mrs Concrete: Oh, blimey. You'd think he was awake all the night, scrabbling down by the wainscotting. \n
    Ratcatcher: Um, that's an interesting word, isn't it? \n
    Mrs Concrete: What? \n
    Ratcatcher: Wainscotting ... Wainscotting ... Wainscotting ... sounds like a little Dorset village, doesn't it? Wainscotting.\n
    Ratcatcher: Now, where is it worst? \n
    Mrs Concrete: Well, down here. You can usually hear them. \n
    (Indicates base of wall, which has a label on it saying 'Wainscotting'.) \n
    Ratcatcher: Sssssh \n
    Voice Over: Baa ... baa ... baa ... baa ... baa ... baa... \n
    Ratcatcher: No, that's sheep you've got there. \n
    Voice Over: Baa ... baa. \n
    Ratcatcher: No, that's definitely sheep. A bit of a puzzle, really. \n
    Mrs Concrete: Is it? \n
    Ratcatcher: Yeah, well, I mean it's a) not going to respond to a nice piece of cheese and b) it isn't going to fit into a trap.

    " + } +}, +{ + "model": "downloads.release", + "pk": 438, + "fields": { + "created": "2020-06-09T21:27:08.528Z", + "updated": "2020-06-09T21:54:48.224Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.0b3", + "slug": "python-390b3", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2020-06-09T21:25:20Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.9/whatsnew/changelog.html#python-3-9-0-beta-3", + "content": "## This is a beta preview of Python 3.9\r\n\r\nPython 3.9 is still in development. This release, 3.9.0b3, is the third of five planned beta release previews.\r\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.\r\n\r\n## Call to action\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.9** during the beta phase and report issues found to [the Python bug tracker](https://bugs.python.org) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2020-08-10). Our goal is have no ABI changes after beta 5 and as few code changes as possible after 3.9.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.9 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThe next pre-release, the fourth beta release of Python 3.9, will be 3.9.0b4. It is currently scheduled for 2020-06-29.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n## And now for something completely different\r\n[Mrs Concrete (Terry Jones)](http://www.montypython.net/scripts/ratcatch.php): Oh yes, we've been expecting you. \r\n
    **Ratcatcher (Graham Chapman)**: I gather you've got a little rodental problem. \r\n
    **Mrs Concrete**: Oh, blimey. You'd think he was awake all the night, scrabbling down by the wainscotting. \r\n
    **Ratcatcher**: Um, that's an interesting word, isn't it? \r\n
    **Mrs Concrete**: What? \r\n
    **Ratcatcher**: Wainscotting ... Wainscotting ... Wainscotting ... sounds like a little Dorset village, doesn't it? *Wainscotting.*\r\n
    **Ratcatcher**: Now, where is it worst? \r\n
    **Mrs Concrete**: Well, down here. You can usually hear them. \r\n
    *(Indicates base of wall, which has a label on it saying 'Wainscotting'.)* \r\n
    **Ratcatcher**: Sssssh \r\n
    **Voice Over**: Baa ... baa ... baa ... baa ... baa ... baa... \r\n
    **Ratcatcher**: No, that's sheep you've got there. \r\n
    **Voice Ove**r: Baa ... baa. \r\n
    **Ratcatcher**: No, that's definitely sheep. A bit of a puzzle, really. \r\n
    **Mrs Concrete**: Is it? \r\n
    **Ratcatcher**: Yeah, well, I mean it's **a)** not going to respond to a nice piece of cheese and **b)** it isn't going to fit into a trap.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.9

    \n

    Python 3.9 is still in development. This release, 3.9.0b3, is the third of five planned beta release previews.\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    Call to action

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.9 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2020-08-10). Our goal is have no ABI changes after beta 5 and as few code changes as possible after 3.9.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.9 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • \n

      A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)

      \n
    • \n
    \n

    The next pre-release, the fourth beta release of Python 3.9, will be 3.9.0b4. It is currently scheduled for 2020-06-29.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Mrs Concrete (Terry Jones): Oh yes, we've been expecting you. \n
    Ratcatcher (Graham Chapman): I gather you've got a little rodental problem. \n
    Mrs Concrete: Oh, blimey. You'd think he was awake all the night, scrabbling down by the wainscotting. \n
    Ratcatcher: Um, that's an interesting word, isn't it? \n
    Mrs Concrete: What? \n
    Ratcatcher: Wainscotting ... Wainscotting ... Wainscotting ... sounds like a little Dorset village, doesn't it? Wainscotting.\n
    Ratcatcher: Now, where is it worst? \n
    Mrs Concrete: Well, down here. You can usually hear them. \n
    (Indicates base of wall, which has a label on it saying 'Wainscotting'.) \n
    Ratcatcher: Sssssh \n
    Voice Over: Baa ... baa ... baa ... baa ... baa ... baa... \n
    Ratcatcher: No, that's sheep you've got there. \n
    Voice Over: Baa ... baa. \n
    Ratcatcher: No, that's definitely sheep. A bit of a puzzle, really. \n
    Mrs Concrete: Is it? \n
    Ratcatcher: Yeah, well, I mean it's a) not going to respond to a nice piece of cheese and b) it isn't going to fit into a trap.

    " + } +}, +{ + "model": "downloads.release", + "pk": 439, + "fields": { + "created": "2020-06-17T23:02:36.797Z", + "updated": "2020-06-18T03:23:47.338Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.11rc1", + "slug": "python-3611rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2020-06-17T22:58:03Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.6.11rc1/whatsnew/changelog.html#changelog", + "content": "Note\r\n^^^^\r\n\r\n**Python 3.8** is now released and is the latest **feature release** of Python 3. `Get the latest release of 3.8.x here `_. \r\n\r\n**Python 3.6.11rc1** is the release candidate preview of the next **security fix** release of Python 3.6.\r\n**Python 3.6.8** was the final **bugfix release** for 3.6. Python 3.6 is now in the **security fix** phase of its life cycle. Only security-related issues are accepted and addressed during this phase. We plan to provide security fixes for Python 3.6 as needed through 2021, five years following its initial release. Security fix releases are produced periodically as needed and only provided in source code form; binary installers are not provided.\r\n\r\nPlease see the `Full Changelog `_ link for more information about the contents of this release and `What\u2019s New In Python 3.6 `_ for more information about Python 3.6 features.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Python Development Cycle `_\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Note

    \n

    Python 3.8 is now released and is the latest feature release of Python 3. Get the latest release of 3.8.x here.

    \n

    Python 3.6.11rc1 is the release candidate preview of the next security fix release of Python 3.6.\nPython 3.6.8 was the final bugfix release for 3.6. Python 3.6 is now in the security fix phase of its life cycle. Only security-related issues are accepted and addressed during this phase. We plan to provide security fixes for Python 3.6 as needed through 2021, five years following its initial release. Security fix releases are produced periodically as needed and only provided in source code form; binary installers are not provided.

    \n

    Please see the Full Changelog link for more information about the contents of this release and What\u2019s New In Python 3.6 for more information about Python 3.6 features.

    \n
    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 440, + "fields": { + "created": "2020-06-17T23:14:05.049Z", + "updated": "2020-06-18T03:22:02.900Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.8rc1", + "slug": "python-378rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2020-06-17T23:08:25Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.7.8rc1/whatsnew/changelog.html#changelog", + "content": "Note\r\n^^^^\r\n\r\n**Python 3.8** is now the latest feature release series of Python 3. `Get the latest release of 3.8.x here `_. We plan to continue to provide *bugfix releases*\r\nfor 3.7.x until mid 2020 and *security fixes* until mid 2023. \r\n\r\n**Python 3.7.8rc1** is the release candidate preview of the eighth and most recent maintenance release of Python 3.7. 3.7.8 is expected to be the last bugfix release before 3.7 enters the *security-fix* phase of its life cycle.\r\n\r\nNote that 3.7.8rc1 is a **release preview** and thus its use is not recommended for production environments.\r\n\r\nPlease see the `Full Changelog `_ link for more information about the contents of this release and see `What\u2019s New In Python 3.7 `_ for more information about 3.7 features. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n \r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n* As of 3.7.7, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems. The deprecated 64-bit/32-bit installer variant for macOS 10.6 (Snow Leopard) is no longer provided.\r\n\r\n* As of 3.7.7, macOS installer packages are now compatible with the full Gatekeeper notarization requirements of *macOS 10.15 Catalina* including code signing.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Note

    \n

    Python 3.8 is now the latest feature release series of Python 3. Get the latest release of 3.8.x here. We plan to continue to provide bugfix releases\nfor 3.7.x until mid 2020 and security fixes until mid 2023.

    \n

    Python 3.7.8rc1 is the release candidate preview of the eighth and most recent maintenance release of Python 3.7. 3.7.8 is expected to be the last bugfix release before 3.7 enters the security-fix phase of its life cycle.

    \n

    Note that 3.7.8rc1 is a release preview and thus its use is not recommended for production environments.

    \n

    Please see the Full Changelog link for more information about the contents of this release and see What\u2019s New In Python 3.7 for more information about 3.7 features.

    \n
    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • Please read the "Important Information" displayed during installation for information about SSL/TLS certificate validation and the running the "Install Certificates.command".
    • \n
    • As of 3.7.7, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems. The deprecated 64-bit/32-bit installer variant for macOS 10.6 (Snow Leopard) is no longer provided.
    • \n
    • As of 3.7.7, macOS installer packages are now compatible with the full Gatekeeper notarization requirements of macOS 10.15 Catalina including code signing.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 441, + "fields": { + "created": "2020-06-27T12:05:10.608Z", + "updated": "2022-01-07T22:04:56.204Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.11", + "slug": "python-3611", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2020-06-27T12:45:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.6.11/whatsnew/changelog.html#changelog", + "content": "**Note:** The release you are looking at is **Python 3.6.11**, a **security bugfix release** for the legacy **3.6** series which has now reached **end-of-life** and is no longer supported. See the `downloads page `_ for currently supported versions of Python. The final source-only **security fix** release for 3.6 was `3.6.15 `_ and the final **bugfix release** was `3.6.8 `_.\r\n\r\nPlease see the `Full Changelog `_ link for more information about the contents of this release and `What\u2019s New In Python 3.6 `_ for more information about Python 3.6 features.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Python Development Cycle `_\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.6.11, a security bugfix release for the legacy 3.6 series which has now reached end-of-life and is no longer supported. See the downloads page for currently supported versions of Python. The final source-only security fix release for 3.6 was 3.6.15 and the final bugfix release was 3.6.8.

    \n

    Please see the Full Changelog link for more information about the contents of this release and What\u2019s New In Python 3.6 for more information about Python 3.6 features.

    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 442, + "fields": { + "created": "2020-06-27T13:05:33.576Z", + "updated": "2022-01-07T22:45:19.955Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.8", + "slug": "python-378", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2020-06-27T12:55:01Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.7.8/whatsnew/changelog.html#changelog", + "content": "**Note:** The release you are looking at is **Python 3.7.8**, a **bugfix release** for the legacy **3.7** series which is now in the **security fix** phase of its life cycle. See the `downloads page `_ for currently supported versions of Python and for the most recent source-only **security fix** release for 3.7. The final **bugfix release** with binary installers for 3.7 was `3.7.9 `_.\r\n\r\nPlease see the `Full Changelog `_ link for more information about the contents of this release and see `What\u2019s New In Python 3.7 `_ for more information about 3.7 features. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n \r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n* As of 3.7.7, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems. The deprecated 64-bit/32-bit installer variant for macOS 10.6 (Snow Leopard) is no longer provided.\r\n\r\n* As of 3.7.7, macOS installer packages are now compatible with the full Gatekeeper notarization requirements of *macOS 10.15 Catalina* including code signing.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.7.8, a bugfix release for the legacy 3.7 series which is now in the security fix phase of its life cycle. See the downloads page for currently supported versions of Python and for the most recent source-only security fix release for 3.7. The final bugfix release with binary installers for 3.7 was 3.7.9.

    \n

    Please see the Full Changelog link for more information about the contents of this release and see What\u2019s New In Python 3.7 for more information about 3.7 features.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • Please read the "Important Information" displayed during installation for information about SSL/TLS certificate validation and the running the "Install Certificates.command".
    • \n
    • As of 3.7.7, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems. The deprecated 64-bit/32-bit installer variant for macOS 10.6 (Snow Leopard) is no longer provided.
    • \n
    • As of 3.7.7, macOS installer packages are now compatible with the full Gatekeeper notarization requirements of macOS 10.15 Catalina including code signing.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 443, + "fields": { + "created": "2020-06-30T13:47:16.297Z", + "updated": "2020-12-21T18:41:34.641Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.4rc1", + "slug": "python-384rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": false, + "release_date": "2020-06-30T13:36:05Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.4rc1/whatsnew/changelog.html#changelog", + "content": "## This is the release candidate of the fourth maintenance release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.4rc1, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n## Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n## macOS users\r\n\r\n* For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n## And now for something completely different\r\n**[ARTHUR (Graham Chapman)](http://www.montypython.net/scripts/HG-peascene.php)**: Please, good people. I am in haste. Who lives in that castle?\r\n
    **WOMAN**: No one lives there.\r\n
    **ARTHUR**: Then who is your lord?\r\n
    **WOMAN**: We don't have a lord.\r\n
    **ARTHUR**: What?\r\n
    **DENNIS**: I told you. We're an anarcho-syndicalist commune. We take it in turns to act as a sort of executive officer for the week.\r\n
    **ARTHUR**: Yes.\r\n
    **DENNIS**: But all the decisions of that officer have to be ratified at a special biweekly meeting.\r\n
    **ARTHUR**: Yes, I see.\r\n
    **DENNIS**: By a simple majority in the case of purely internal affairs,--\r\n
    **ARTHUR**: Be quiet!\r\n
    **DENNIS**: --but by a two-thirds majority in the case of more--\r\n
    **ARTHUR**: Be quiet! I order you to be quiet!\r\n
    **WOMAN**: Order, eh -- who does he think he is?\r\n
    **ARTHUR**: *I am your king!*\r\n
    **WOMAN**: Well, I didn't vote for you.\r\n
    **ARTHUR**: You don't vote for kings.\r\n
    **WOMAN**: Well, 'ow did you become king then?\r\n
    **ARTHUR**: The Lady of the Lake, her arm clad in the purest shimmering samite, held aloft Excalibur from the bosom of the water signifying by Divine Providence that I, Arthur, was to carry Excalibur. **That is why I am your king!**\r\n
    **DENNIS**: Listen -- *strange women lying in ponds distributing swords* is no basis for a system of government. Supreme executive power derives from a mandate from the masses, not from some farcical *aquatic ceremony*.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the release candidate of the fourth maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.4rc1, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n

    ARTHUR (Graham Chapman): Please, good people. I am in haste. Who lives in that castle?\n
    WOMAN: No one lives there.\n
    ARTHUR: Then who is your lord?\n
    WOMAN: We don't have a lord.\n
    ARTHUR: What?\n
    DENNIS: I told you. We're an anarcho-syndicalist commune. We take it in turns to act as a sort of executive officer for the week.\n
    ARTHUR: Yes.\n
    DENNIS: But all the decisions of that officer have to be ratified at a special biweekly meeting.\n
    ARTHUR: Yes, I see.\n
    DENNIS: By a simple majority in the case of purely internal affairs,--\n
    ARTHUR: Be quiet!\n
    DENNIS: --but by a two-thirds majority in the case of more--\n
    ARTHUR: Be quiet! I order you to be quiet!\n
    WOMAN: Order, eh -- who does he think he is?\n
    ARTHUR: I am your king!\n
    WOMAN: Well, I didn't vote for you.\n
    ARTHUR: You don't vote for kings.\n
    WOMAN: Well, 'ow did you become king then?\n
    ARTHUR: The Lady of the Lake, her arm clad in the purest shimmering samite, held aloft Excalibur from the bosom of the water signifying by Divine Providence that I, Arthur, was to carry Excalibur. That is why I am your king!\n
    DENNIS: Listen -- strange women lying in ponds distributing swords is no basis for a system of government. Supreme executive power derives from a mandate from the masses, not from some farcical aquatic ceremony.

    " + } +}, +{ + "model": "downloads.release", + "pk": 444, + "fields": { + "created": "2020-07-03T17:13:51.155Z", + "updated": "2020-07-03T17:55:12.069Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.0b4", + "slug": "python-390b4", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2020-07-03T16:46:25Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.9/whatsnew/changelog.html#python-3-9-0-beta-4", + "content": "## This is a beta preview of Python 3.9\r\n\r\nPython 3.9 is still in development. This release, 3.9.0b4, is the fourth of five planned beta release previews.\r\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.\r\n\r\n## Call to action\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.9** during the beta phase and report issues found to [the Python bug tracker](https://bugs.python.org) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2020-08-10). Our goal is have no ABI changes after beta 5 and as few code changes as possible after 3.9.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.9 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThe next pre-release, the fifth beta release of Python 3.9, will be 3.9.0b5. It is currently scheduled for 2020-07-20.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n## And now for something completely different\r\n*(Cut to a newsreader in a 'News at Nine' set with a bare lightbulb hanging in shot. He wears only an old blanket around his shoulders. He is shivering.)*\r\n\r\n**Newsreader ([Eric Idle](http://www.montypython.net/scripts/BBCshort.php))**: The BBC wishes to deny rumours that it is going into liquidation. Mrs Kelly, who owns the flat where they live, has said that they can stay on till the end of the month...\r\n
    *(he is handed a piece of paper)*\r\n
    **Newsreader**: ...and we've just heard that Hugh Weldon's watch has been accepted by the London Electricity Board and transmissions for this evening can be continued as planned.\r\n
    *(he coughs and pulls the blanket tighter round his shoulders)*\r\n
    **Newsreader**: That's all from me so... goodnight.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.9

    \n

    Python 3.9 is still in development. This release, 3.9.0b4, is the fourth of five planned beta release previews.\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    Call to action

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.9 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2020-08-10). Our goal is have no ABI changes after beta 5 and as few code changes as possible after 3.9.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.9 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • \n

      A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)

      \n
    • \n
    \n

    The next pre-release, the fifth beta release of Python 3.9, will be 3.9.0b5. It is currently scheduled for 2020-07-20.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    (Cut to a newsreader in a 'News at Nine' set with a bare lightbulb hanging in shot. He wears only an old blanket around his shoulders. He is shivering.)

    \n

    Newsreader (Eric Idle): The BBC wishes to deny rumours that it is going into liquidation. Mrs Kelly, who owns the flat where they live, has said that they can stay on till the end of the month...\n
    (he is handed a piece of paper)\n
    Newsreader: ...and we've just heard that Hugh Weldon's watch has been accepted by the London Electricity Board and transmissions for this evening can be continued as planned.\n
    (he coughs and pulls the blanket tighter round his shoulders)\n
    Newsreader: That's all from me so... goodnight.

    " + } +}, +{ + "model": "downloads.release", + "pk": 445, + "fields": { + "created": "2020-07-13T13:34:20.635Z", + "updated": "2020-12-21T18:41:07.056Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.4", + "slug": "python-384", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2020-07-13T13:32:31Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.4/whatsnew/changelog.html#changelog", + "content": "## This is the fourth maintenance release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.4, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n## Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n## macOS users\r\n\r\n* For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n## And now for something completely different\r\n**[Michael Palin](http://www.montypython.net/scripts/anagrams.php)**: Hello, good evening and welcome to another edition of Blood, Devastation, Death War and Horror, and later on we'll be meeting a man who *does gardening*. But first on the show we've got a man who speaks entirely in anagrams. \r\n
    **Palin**: I believe you're working on an anagram version of Shakespeare? \r\n
    **Eric Idle**: Sey, sey - taht si crreoct, er - ta the mnemot I'm wroking on 'The Mating of the Wersh'. \r\n
    **Palin**: Have you done 'Hamlet'? \r\n
    **Idle**: 'Thamle'. 'Be ot or bot ne ot, tath is the nestquoi.' \r\n
    **Palin**: And what is your next project? \r\n
    **Idle**: 'Ring Kichard the Thrid'. \r\n
    **Palin**: I'm sorry? \r\n
    **Idle**: 'A shroe! A shroe! My dingkom for a shroe!' \r\n
    **Palin**: Ah, Ring Kichard, yes... but surely that's not an anagram, that's a spoonerism. \r\n
    **Idle**: (offended) *If you're going to split hairs, I'm going to piss off.*", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the fourth maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.4, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n

    Michael Palin: Hello, good evening and welcome to another edition of Blood, Devastation, Death War and Horror, and later on we'll be meeting a man who does gardening. But first on the show we've got a man who speaks entirely in anagrams. \n
    Palin: I believe you're working on an anagram version of Shakespeare? \n
    Eric Idle: Sey, sey - taht si crreoct, er - ta the mnemot I'm wroking on 'The Mating of the Wersh'. \n
    Palin: Have you done 'Hamlet'? \n
    Idle: 'Thamle'. 'Be ot or bot ne ot, tath is the nestquoi.' \n
    Palin: And what is your next project? \n
    Idle: 'Ring Kichard the Thrid'. \n
    Palin: I'm sorry? \n
    Idle: 'A shroe! A shroe! My dingkom for a shroe!' \n
    Palin: Ah, Ring Kichard, yes... but surely that's not an anagram, that's a spoonerism. \n
    Idle: (offended) If you're going to split hairs, I'm going to piss off.

    " + } +}, +{ + "model": "downloads.release", + "pk": 478, + "fields": { + "created": "2020-07-20T17:14:46.349Z", + "updated": "2020-12-21T18:40:02.059Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.5", + "slug": "python-385", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2020-07-20T16:57:40Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.5/whatsnew/changelog.html#changelog", + "content": "## This is the fifth maintenance release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.5, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n3.8.5 has been released out of schedule due to important security content. For details please consult [the change log](https://docs.python.org/release/3.8.5/whatsnew/changelog.html#changelog). Please upgrade at your earliest convenience.\r\n\r\n## Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n## macOS users\r\n\r\n* For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n## And now for something completely different\r\n[Our universe](http://www.montypython.net/scripts/galaxy.php) itself keeps on expanding and expanding, \r\n
    In all of the directions it can whiz; \r\n
    As fast as it can go, at the speed of light, you know, \r\n
    Twelve million miles a minute and that's the fastest speed there is. \r\n
    So remember, when you're feeling very small and insecure, \r\n
    How amazingly unlikely is your birth; \r\n
    And pray that there's intelligent life somewhere out in space, \r\n
    'Cause there's bugger all down here on Earth!", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the fifth maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.5, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    3.8.5 has been released out of schedule due to important security content. For details please consult the change log. Please upgrade at your earliest convenience.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n

    Our universe itself keeps on expanding and expanding, \n
    In all of the directions it can whiz; \n
    As fast as it can go, at the speed of light, you know, \n
    Twelve million miles a minute and that's the fastest speed there is. \n
    So remember, when you're feeling very small and insecure, \n
    How amazingly unlikely is your birth; \n
    And pray that there's intelligent life somewhere out in space, \n
    'Cause there's bugger all down here on Earth!

    " + } +}, +{ + "model": "downloads.release", + "pk": 479, + "fields": { + "created": "2020-07-20T19:02:12.264Z", + "updated": "2020-07-20T19:05:16.473Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.0b5", + "slug": "python-390b5", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2020-07-20T18:58:24Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.9/whatsnew/changelog.html#python-3-9-0-beta-5", + "content": "## This is a beta preview of Python 3.9\r\n\r\nPython 3.9 is still in development. This release, 3.9.0b5, is the last of five planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.\r\n\r\n## Call to action\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.9** during the beta phase and report issues found to [the Python bug tracker](https://bugs.python.org) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2020-08-10). Our goal is have no ABI changes after beta 5 and as few code changes as possible after 3.9.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.9 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\nThe next pre-release, the first release candidate of Python 3.9.0, will be 3.9.0rc1. It is currently scheduled for 2020-08-10.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n## And now for something completely different\r\n[Whenever life gets you down](http://www.montypython.net/scripts/galaxy.php), Mrs. Brown, \r\n
    And things seem hard or tough, \r\n
    And people are stupid, obnoxious or daft, \r\n
    And you feel that you've had quite *eno-o-o-o-o-ough*,\r\n \r\nJust remember that you're standing on a planet that's evolving \r\n
    And revolving at 900 miles an hour. \r\n
    It's orbiting at 19 miles a second, so it's reckoned, \r\n
    The sun that is the source of all our power. \r\n
    Now the sun, and you and me, and all the stars that we can see, \r\n
    Are moving at a million miles a day, \r\n
    In the outer spiral arm, at 40,000 miles an hour, \r\n
    Of a galaxy we call the Milky Way.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.9

    \n

    Python 3.9 is still in development. This release, 3.9.0b5, is the last of five planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    Call to action

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.9 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (2020-08-10). Our goal is have no ABI changes after beta 5 and as few code changes as possible after 3.9.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.9 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • \n

      A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)

      \n
    • \n
    \n

    The next pre-release, the first release candidate of Python 3.9.0, will be 3.9.0rc1. It is currently scheduled for 2020-08-10.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Whenever life gets you down, Mrs. Brown, \n
    And things seem hard or tough, \n
    And people are stupid, obnoxious or daft, \n
    And you feel that you've had quite eno-o-o-o-o-ough,

    \n

    Just remember that you're standing on a planet that's evolving \n
    And revolving at 900 miles an hour. \n
    It's orbiting at 19 miles a second, so it's reckoned, \n
    The sun that is the source of all our power. \n
    Now the sun, and you and me, and all the stars that we can see, \n
    Are moving at a million miles a day, \n
    In the outer spiral arm, at 40,000 miles an hour, \n
    Of a galaxy we call the Milky Way.

    " + } +}, +{ + "model": "downloads.release", + "pk": 480, + "fields": { + "created": "2020-08-11T20:20:25.962Z", + "updated": "2020-08-11T21:25:52.193Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.0rc1", + "slug": "python-390rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2020-08-11T19:59:15Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.0rc1/whatsnew/changelog.html#python-3-9-0-release-candidate-1", + "content": "## This is the first release candidate of Python 3.9\r\n\r\nThis release, **3.9.0rc1**, is the penultimate release preview. Entering the release candidate phase, only reviewed code changes which are clear bug fixes are allowed between this release candidate and the final release. The second candidate and the last planned release preview is currently planned for 2020-09-14.\r\n\r\n## Call to action\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to prepare their projects for 3.9 compatibility during this phase. As always, report any issues to [the Python bug tracker](https://bugs.python.org).\r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n## Installer news\r\n\r\nThis is the first version of Python to default to the 64-bit installer on Windows. The installer now also actively disallows installation on Windows 7. Python 3.9 is incompatible with this unsupported version of Windows.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let \u0141ukasz know](mailto:lukasz@python.org).)\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## And now for something completely different\r\n**Announcer: ([Eric Idle](http://www.montypython.net/scripts/phonein.php))** Welcome to the 'Phone-In'. Today we have on our panel our resident Psychiatrist, a Psychiatrist who isn't resident but is staying with the other one because he can't bear to go home and a Psychiatrist who has lived with the first one but who when the second one arrived felt alienated and since has undergone a total personality change. Our subject tonight is Farming and our first caller is from Redding. (phone rings)\r\n
    **Woman: (Carol Cleveland)** Hello.\r\n
    **Announcer:** Hello. Welcome to 'Phone-In' what is your question to the panel?\r\n
    **Woman:** Is Vic there?\r\n
    **Announcer:** Is Vic there? *Is Vic there*, Doctor Rogers?\r\n
    **Rogers: (Graham Chapman)** Well the problem here is a simple one. The caller wants to know if Vic is there... and in this case Vic, as far as I can tell...\r\n
    **Dibbs: (John Cleese)** Can I interrupt, Alan?\r\n
    **Announcer:** Yes, of course.\r\n
    **Dibbs:** I agree with what Rogers was going to say. As far as we can tell, Vic isn't here. The only thing she can do is to keep calling and if Vic comes in we'll let her know.\r\n
    **Announcer**: Does that answer your question?\r\n
    **Norman: (Michael Palin)** Hello.\r\n
    **Announcer:** Hello.\r\n
    **Woman:** Vic?", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the first release candidate of Python 3.9

    \n

    This release, 3.9.0rc1, is the penultimate release preview. Entering the release candidate phase, only reviewed code changes which are clear bug fixes are allowed between this release candidate and the final release. The second candidate and the last planned release preview is currently planned for 2020-09-14.

    \n

    Call to action

    \n

    We strongly encourage maintainers of third-party Python projects to prepare their projects for 3.9 compatibility during this phase. As always, report any issues to the Python bug tracker.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Installer news

    \n

    This is the first version of Python to default to the 64-bit installer on Windows. The installer now also actively disallows installation on Windows 7. Python 3.9 is incompatible with this unsupported version of Windows.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • \n

      A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let \u0141ukasz know.)

      \n
    • \n
    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Announcer: (Eric Idle) Welcome to the 'Phone-In'. Today we have on our panel our resident Psychiatrist, a Psychiatrist who isn't resident but is staying with the other one because he can't bear to go home and a Psychiatrist who has lived with the first one but who when the second one arrived felt alienated and since has undergone a total personality change. Our subject tonight is Farming and our first caller is from Redding. (phone rings)\n
    Woman: (Carol Cleveland) Hello.\n
    Announcer: Hello. Welcome to 'Phone-In' what is your question to the panel?\n
    Woman: Is Vic there?\n
    Announcer: Is Vic there? Is Vic there, Doctor Rogers?\n
    Rogers: (Graham Chapman) Well the problem here is a simple one. The caller wants to know if Vic is there... and in this case Vic, as far as I can tell...\n
    Dibbs: (John Cleese) Can I interrupt, Alan?\n
    Announcer: Yes, of course.\n
    Dibbs: I agree with what Rogers was going to say. As far as we can tell, Vic isn't here. The only thing she can do is to keep calling and if Vic comes in we'll let her know.\n
    Announcer: Does that answer your question?\n
    Norman: (Michael Palin) Hello.\n
    Announcer: Hello.\n
    Woman: Vic?

    " + } +}, +{ + "model": "downloads.release", + "pk": 481, + "fields": { + "created": "2020-08-17T21:07:13.638Z", + "updated": "2022-01-07T22:03:58.770Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.12", + "slug": "python-3612", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2020-08-17T21:30:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.6.12/whatsnew/changelog.html#changelog", + "content": "**Note:** The release you are looking at is **Python 3.6.12**, a **security bugfix release** for the legacy **3.6** series which has now reached **end-of-life** and is no longer supported. See the `downloads page `_ for currently supported versions of Python. The final source-only **security fix** release for 3.6 was `3.6.15 `_ and the final **bugfix release** was `3.6.8 `_.\r\n\r\nPlease see the `Full Changelog `_ link for more information about the contents of this release and `What\u2019s New In Python 3.6 `_ for more information about Python 3.6 features.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Python Development Cycle `_\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.6.12, a security bugfix release for the legacy 3.6 series which has now reached end-of-life and is no longer supported. See the downloads page for currently supported versions of Python. The final source-only security fix release for 3.6 was 3.6.15 and the final bugfix release was 3.6.8.

    \n

    Please see the Full Changelog link for more information about the contents of this release and What\u2019s New In Python 3.6 for more information about Python 3.6 features.

    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 482, + "fields": { + "created": "2020-08-17T21:59:15.656Z", + "updated": "2022-01-07T22:48:42.642Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.9", + "slug": "python-379", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2020-08-17T22:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.7.9/whatsnew/changelog.html#changelog", + "content": "**Note:** The release you are looking at is **Python 3.7.9**, the final **bugfix/security release** with binary installers for the legacy **3.7** series which is now in the **security fix** phase of its life cycle. See the `downloads page `_ for currently supported versions of Python and for the most recent source-only **security fix** release for 3.7.\r\n\r\nBinary installers are normally not provided for **security fix** releases. However, since 3.7.8 was the last 3.7.x **bugfix** release and there are security fixes published in 3.7.9 that apply to users of some of the binary installers provided with 3.7.8, we have made an exception for 3.7.9 and are also updating the Windows and macOS binary installers. We do not plan to provide further binary updates for future 3.7.x security releases.\r\n\r\nPlease see the `Full Changelog `_ link for more information about the contents of this release and see `What\u2019s New In Python 3.7 `_ for more information about 3.7 features. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\nWindows users\r\n^^^^^^^^^^^^^\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\nmacOS users\r\n^^^^^^^^^^^\r\n \r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n* As of 3.7.7, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems. The deprecated 64-bit/32-bit installer variant for macOS 10.6 (Snow Leopard) is no longer provided.\r\n\r\n* As of 3.7.7, macOS installer packages are now compatible with the full Gatekeeper notarization requirements of *macOS 10.15 Catalina* including code signing.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.7.9, the final bugfix/security release with binary installers for the legacy 3.7 series which is now in the security fix phase of its life cycle. See the downloads page for currently supported versions of Python and for the most recent source-only security fix release for 3.7.

    \n

    Binary installers are normally not provided for security fix releases. However, since 3.7.8 was the last 3.7.x bugfix release and there are security fixes published in 3.7.9 that apply to users of some of the binary installers provided with 3.7.8, we have made an exception for 3.7.9 and are also updating the Windows and macOS binary installers. We do not plan to provide further binary updates for future 3.7.x security releases.

    \n

    Please see the Full Changelog link for more information about the contents of this release and see What\u2019s New In Python 3.7 for more information about 3.7 features.

    \n
    \n

    More resources

    \n\n
    \n
    \n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".)
    • \n
    • There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n
    \n
    \n

    macOS users

    \n
      \n
    • Please read the "Important Information" displayed during installation for information about SSL/TLS certificate validation and the running the "Install Certificates.command".
    • \n
    • As of 3.7.7, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems. The deprecated 64-bit/32-bit installer variant for macOS 10.6 (Snow Leopard) is no longer provided.
    • \n
    • As of 3.7.7, macOS installer packages are now compatible with the full Gatekeeper notarization requirements of macOS 10.15 Catalina including code signing.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 483, + "fields": { + "created": "2020-08-22T03:22:26.572Z", + "updated": "2020-10-22T16:33:46.131Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.10rc1", + "slug": "python-3510rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2020-08-22T02:57:25Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-10rc1", + "content": "Python 3.5.10rc1\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available** `here. `_ \r\n\r\nPython 3.5.10rc1 was released on August 21st, 2020.\r\n\r\nPython 3.5 has now entered \"security fixes only\" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.10rc1 has only been released in source code form; no more official binary installers will be produced.\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The latest releases of Linux (Ubuntu 20.04, Fedora 32) ship with a new version of OpenSSL. New versions of OpenSSL often include upgraded configuration requirements to maintain network security; this new version no longer finds Python 3.5's OpenSSL configuration acceptable. As a result, most or all secure-transport networking libraries are broken in this release on systems where this new version of OpenSSL is deployed. This means, for example, that seven (7) of the regression tests in the test suite now regularly fail. Older versions of Linux, with older versions of OpenSSL installed, are unaffected. We're aware of the problem. Unfortunately, as 3.5 is nearly completely out of support, it has become very low priority, and we've been unable to find the resources to get the problem fixed. It's possible that these problems simply won't be fixed in 3.5 before it reaches its end-of-life. As always we recommend upgrading to the latest Python release wherever possible.\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.10rc1

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10, the final release of the 3.5 series, is available here.

    \n

    Python 3.5.10rc1 was released on August 21st, 2020.

    \n

    Python 3.5 has now entered "security fixes only" mode, and as such the only changes since Python 3.5.4 are security fixes. Also, Python 3.5.10rc1 has only been released in source code form; no more official binary installers will be produced.

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The latest releases of Linux (Ubuntu 20.04, Fedora 32) ship with a new version of OpenSSL. New versions of OpenSSL often include upgraded configuration requirements to maintain network security; this new version no longer finds Python 3.5's OpenSSL configuration acceptable. As a result, most or all secure-transport networking libraries are broken in this release on systems where this new version of OpenSSL is deployed. This means, for example, that seven (7) of the regression tests in the test suite now regularly fail. Older versions of Linux, with older versions of OpenSSL installed, are unaffected. We're aware of the problem. Unfortunately, as 3.5 is nearly completely out of support, it has become very low priority, and we've been unable to find the resources to get the problem fixed. It's possible that these problems simply won't be fixed in 3.5 before it reaches its end-of-life. As always we recommend upgrading to the latest Python release wherever possible.
    • \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 484, + "fields": { + "created": "2020-09-05T08:52:08.928Z", + "updated": "2020-10-22T16:30:18.804Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.5.10", + "slug": "python-3510", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2020-09-05T08:43:10Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.5/whatsnew/changelog.html#python-3-5-10", + "content": "Python 3.5.10\r\n---------------\r\n\r\n**Python 3.5 has reached end-of-life. Python 3.5.10 is the final release of 3.5.**\r\n\r\nPython 3.5.10 was released on September 5th, 2020.\r\n\r\nPython 3.5.10 is the final release in the Python 3.5 series. As of this\r\nrelease, the 3.5 branch has been retired, no further changes to 3.5 will be\r\naccepted, and no new releases will be made. This is standard Python policy;\r\nPython releases get five years of support and are then retired.\r\n\r\nIf you're still using Python 3.5, you should consider upgrading to the\r\n`current version. `_\r\nNewer versions of Python\r\nhave many new features, performance improvements, and bug fixes, which\r\nshould all serve to enhance your Python programming experience.\r\n\r\nWe in the Python core development community thank you for your interest\r\nin 3.5, and we wish you all the best!\r\n\r\n\r\nMajor new features of the 3.5 series, compared to 3.4\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nAmong the new major new features and changes in the 3.5 release series are\r\n\r\n* :pep:`441`, improved Python zip application support\r\n* :pep:`448`, additional unpacking generalizations\r\n* :pep:`461`, \"`%`-formatting\" for bytes and bytearray objects\r\n* :pep:`465`, a new operator (`@`) for matrix multiplication\r\n* :pep:`471`, os.scandir(), a fast new directory traversal function\r\n* :pep:`475`, adding support for automatic retries of interrupted system calls\r\n* :pep:`479`, change StopIteration handling inside generators\r\n* :pep:`484`, the typing module, a new standard for type annotations\r\n* :pep:`485`, math.isclose(), a function for testing approximate equality\r\n* :pep:`486`, making the Windows Python launcher aware of virtual environments\r\n* :pep:`488`, eliminating .pyo files\r\n* :pep:`489`, a new and improved mechanism for loading extension modules\r\n* :pep:`492`, coroutines with async and await syntax\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Change log for this release\r\n `_.\r\n* `Online Documentation `_\r\n* `3.5 Release Schedule `_\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.\r\n\r\n\r\nNotes on this release\r\n---------------------\r\n\r\n* The latest releases of Linux (Ubuntu 20.04, Fedora 32) ship with a new version of OpenSSL. New versions of OpenSSL often include upgraded configuration requirements to maintain network security; this new version no longer finds Python 3.5's OpenSSL configuration acceptable. As a result, most or all secure-transport networking libraries are broken in this release on systems where this new version of OpenSSL is deployed. This means, for example, that seven (7) of the regression tests in the test suite now regularly fail. Older versions of Linux, with older versions of OpenSSL installed, are unaffected. We're aware of the problem. Unfortunately, as 3.5 is nearly completely out of support, it has become very low priority, and we've been unable to find the resources to get the problem fixed. It's possible that these problems simply won't be fixed in 3.5 before it reaches its end-of-life. As always we recommend upgrading to the latest Python release wherever possible.\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".) They will not work on Intel Itanium Processors (formerly \"IA-64\").\r\n\r\n* Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries. \r\n\r\n* Windows users: There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n\r\n* Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding `Embedded Distribution `_ for more information.\r\n\r\n* Windows users: Some virus scanners (most notably \"Microsoft Security Essentials\") are flagging \"Lib/distutils/command/wininst-14.0.exe\" as malware. This is a \"false positive\": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.\r\n\r\n* OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.\r\n\r\n* OS X users: There is `important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "
    \n

    Python 3.5.10

    \n

    Python 3.5 has reached end-of-life. Python 3.5.10 is the final release of 3.5.

    \n

    Python 3.5.10 was released on September 5th, 2020.

    \n

    Python 3.5.10 is the final release in the Python 3.5 series. As of this\nrelease, the 3.5 branch has been retired, no further changes to 3.5 will be\naccepted, and no new releases will be made. This is standard Python policy;\nPython releases get five years of support and are then retired.

    \n

    If you're still using Python 3.5, you should consider upgrading to the\ncurrent version.\nNewer versions of Python\nhave many new features, performance improvements, and bug fixes, which\nshould all serve to enhance your Python programming experience.

    \n

    We in the Python core development community thank you for your interest\nin 3.5, and we wish you all the best!

    \n
    \n

    Major new features of the 3.5 series, compared to 3.4

    \n

    Among the new major new features and changes in the 3.5 release series are

    \n
      \n
    • PEP 441, improved Python zip application support
    • \n
    • PEP 448, additional unpacking generalizations
    • \n
    • PEP 461, "%-formatting" for bytes and bytearray objects
    • \n
    • PEP 465, a new operator (@) for matrix multiplication
    • \n
    • PEP 471, os.scandir(), a fast new directory traversal function
    • \n
    • PEP 475, adding support for automatic retries of interrupted system calls
    • \n
    • PEP 479, change StopIteration handling inside generators
    • \n
    • PEP 484, the typing module, a new standard for type annotations
    • \n
    • PEP 485, math.isclose(), a function for testing approximate equality
    • \n
    • PEP 486, making the Windows Python launcher aware of virtual environments
    • \n
    • PEP 488, eliminating .pyo files
    • \n
    • PEP 489, a new and improved mechanism for loading extension modules
    • \n
    • PEP 492, coroutines with async and await syntax
    • \n
    \n
    \n\n
    \n
    \n

    Notes on this release

    \n
      \n
    • The latest releases of Linux (Ubuntu 20.04, Fedora 32) ship with a new version of OpenSSL. New versions of OpenSSL often include upgraded configuration requirements to maintain network security; this new version no longer finds Python 3.5's OpenSSL configuration acceptable. As a result, most or all secure-transport networking libraries are broken in this release on systems where this new version of OpenSSL is deployed. This means, for example, that seven (7) of the regression tests in the test suite now regularly fail. Older versions of Linux, with older versions of OpenSSL installed, are unaffected. We're aware of the problem. Unfortunately, as 3.5 is nearly completely out of support, it has become very low priority, and we've been unable to find the resources to get the problem fixed. It's possible that these problems simply won't be fixed in 3.5 before it reaches its end-of-life. As always we recommend upgrading to the latest Python release wherever possible.
    • \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the "x64" architecture, and formerly known as both "EM64T" and "x86-64".) They will not work on Intel Itanium Processors (formerly "IA-64").
    • \n
    • Windows users: If installing Python 3.5.1 as a non-privileged user, you may need to escalate to administrator privileges to install an update to your C runtime libraries.
    • \n
    • Windows users: There are now "web-based" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • Windows users: There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    • Windows users: Some virus scanners (most notably "Microsoft Security Essentials") are flagging "Lib/distutils/command/wininst-14.0.exe" as malware. This is a "false positive": the file does not contain any malware. We build it ourselves, from source, on a known-clean system. We've asked that this false positive report be removed, and expect action soon. In the meantime, please don't be alarmed to see this warning when installing Python 3.5.2, or when scanning any earlier version of 3.5.
    • \n
    • OS X users: The OS X installers are now distributed as signed installer package files compatible with the OS X Gatekeeper security feature.
    • \n
    • OS X users: There is important information about IDLE, Tkinter, and Tcl/Tk on Mac OS X here.
    • \n
    \n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 485, + "fields": { + "created": "2020-09-08T21:26:30.068Z", + "updated": "2020-12-21T18:39:08.760Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.6rc1", + "slug": "python-386rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": false, + "release_date": "2020-09-08T21:18:37Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.6rc1/whatsnew/changelog.html#changelog", + "content": "## This is the release candidate of the sixth maintenance release of Python 3.8\r\n\r\n\r\n**Note:** The release you're looking at is Python 3.8.6rc1, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n## Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n## macOS users\r\n\r\n* For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n## And now for something completely different\r\n**Toastmaster (Eric Idle):** Gentlemen, pray silence for the President of the Royal Society for Putting Things on Top of Other Things.\r\n
    **Sir William:** I thank you, gentlemen. The year has been a good one for the Society.\r\n
    **Crowd:** Hear! Hear!\r\n
    **Sir William:** This year our members have put more things on top of other things than ever before. But, I should warn you, this is no time for complacency. No, there are still many things, and I cannot emphasize this too strongly, not on top of other things. I myself, on my way here this evening, saw a thing that was not on top of another thing in any way.\r\n
    **Crowd:** Shame! Shame!\r\n
    **Sir William:** Therefore I call upon our Staffordshire delegate to explain this weird behaviour.\r\n
    (As Sir William sits a meek man met at one of the side tables.)\r\n
    **Mr Cutler (John Cleese):** Er, Cutler, Staffordshire. Um... well, Mr Chairman, it's just that most of the members in Staffordshire feel... the whole thing's a bit silly.\r\n
    (Cries of outrage. Chairman leaps to feet.)\r\n
    **Sir William:** Silly? SILLY?! (he pauses and thinks) Silly! I suppose it is, a bit. What have we been doing wasting our lives with all this nonsense? Right, okay, meeting adjourned forever.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the release candidate of the sixth maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.6rc1, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n

    Toastmaster (Eric Idle): Gentlemen, pray silence for the President of the Royal Society for Putting Things on Top of Other Things.\n
    Sir William: I thank you, gentlemen. The year has been a good one for the Society.\n
    Crowd: Hear! Hear!\n
    Sir William: This year our members have put more things on top of other things than ever before. But, I should warn you, this is no time for complacency. No, there are still many things, and I cannot emphasize this too strongly, not on top of other things. I myself, on my way here this evening, saw a thing that was not on top of another thing in any way.\n
    Crowd: Shame! Shame!\n
    Sir William: Therefore I call upon our Staffordshire delegate to explain this weird behaviour.\n
    (As Sir William sits a meek man met at one of the side tables.)\n
    Mr Cutler (John Cleese): Er, Cutler, Staffordshire. Um... well, Mr Chairman, it's just that most of the members in Staffordshire feel... the whole thing's a bit silly.\n
    (Cries of outrage. Chairman leaps to feet.)\n
    Sir William: Silly? SILLY?! (he pauses and thinks) Silly! I suppose it is, a bit. What have we been doing wasting our lives with all this nonsense? Right, okay, meeting adjourned forever.

    " + } +}, +{ + "model": "downloads.release", + "pk": 486, + "fields": { + "created": "2020-09-17T09:28:14.573Z", + "updated": "2020-09-17T09:42:47.339Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.0rc2", + "slug": "python-390rc2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2020-09-17T08:58:25Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.0rc2/whatsnew/changelog.html#python-3-9-0-release-candidate-2", + "content": "## This is the second release candidate of Python 3.9\r\n\r\nThis release, **3.9.0rc2**, is the last preview before the final release of Python 3.9.0 on 2020-10-05. In the mean time, we **strongly encourage** maintainers of third-party Python projects to prepare their projects for 3.9 compatibility during this phase. As always, report any issues to [the Python bug tracker](https://bugs.python.org).\r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n## Information for core developers\r\n\r\nThe 3.9 branch is now accepting changes for 3.9.1. To maximize stability, the final release will be cut from the v3.9.0rc2 tag. If you need the release manager to cherry-pick any critical fixes, mark issues as release blockers and/or add him as a reviewer on a critical backport PR on GitHub.\r\n\r\nTo see which changes are currently cherry-picked for inclusion in 3.9.0, look at the short-lived [branch-v3.9.0](https://github.com/python/cpython/tree/branch-v3.9.0) on GitHub.\r\n\r\n## Installer news\r\n\r\nThis is the first version of Python to default to the 64-bit installer on Windows. The installer now also actively disallows installation on Windows 7. Python 3.9 is incompatible with this unsupported version of Windows.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## And now for something completely different\r\n*[IT'S THE MIND](http://www.montypython.net/scripts/deja-vu.php) -- A WEEKLY MAGAZINE OF THINGS PSYCHIATRIC*\r\n\r\n(Cut to montage of photographs with captions and music.)\r\n
    (Cut to a man sitting at usual desk.)\r\n\r\n**Boniface (Michael Palin):** Good evening. Tonight on 'It's the Mind', we examine the phenomenon of d\u00e9j\u00e0 vu. That strange feeling we sometimes get that we've lived through something before, that what is happening now has already happened tonight.\r\n
    **Boniface:** On 'It's the Mind', we examine the phenomenon of d\u00e9j\u00e0 vu, that strange feeling we sometimes get that we've ... *(looks puzzled for a moment)* Anyway, tonight on 'It's the Mind' we examine the phenomenon of d\u00e9j\u00e0 vu, that strange... \r\n\r\n(Cut to opening title sequence with montage of psychiatric photos and music.)\r\n
    (Cut back to Mr Boniface at desk, shaken.)\r\n\r\n*IT'S THE MIND*\r\n\r\n**Boniface:** Good evening. Tonight on 'It's the Mind' we examine the phenomenon of d\u00e9j\u00e0 vu, that strange feeling we someti... *(looks around)* ...mes get... *(looks increasingly worried)* that... we've lived through something...", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the second release candidate of Python 3.9

    \n

    This release, 3.9.0rc2, is the last preview before the final release of Python 3.9.0 on 2020-10-05. In the mean time, we strongly encourage maintainers of third-party Python projects to prepare their projects for 3.9 compatibility during this phase. As always, report any issues to the Python bug tracker.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Information for core developers

    \n

    The 3.9 branch is now accepting changes for 3.9.1. To maximize stability, the final release will be cut from the v3.9.0rc2 tag. If you need the release manager to cherry-pick any critical fixes, mark issues as release blockers and/or add him as a reviewer on a critical backport PR on GitHub.

    \n

    To see which changes are currently cherry-picked for inclusion in 3.9.0, look at the short-lived branch-v3.9.0 on GitHub.

    \n

    Installer news

    \n

    This is the first version of Python to default to the 64-bit installer on Windows. The installer now also actively disallows installation on Windows 7. Python 3.9 is incompatible with this unsupported version of Windows.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    More resources

    \n\n

    And now for something completely different

    \n

    IT'S THE MIND -- A WEEKLY MAGAZINE OF THINGS PSYCHIATRIC

    \n

    (Cut to montage of photographs with captions and music.)\n
    (Cut to a man sitting at usual desk.)

    \n

    Boniface (Michael Palin): Good evening. Tonight on 'It's the Mind', we examine the phenomenon of d\u00e9j\u00e0 vu. That strange feeling we sometimes get that we've lived through something before, that what is happening now has already happened tonight.\n
    Boniface: On 'It's the Mind', we examine the phenomenon of d\u00e9j\u00e0 vu, that strange feeling we sometimes get that we've ... (looks puzzled for a moment) Anyway, tonight on 'It's the Mind' we examine the phenomenon of d\u00e9j\u00e0 vu, that strange...

    \n

    (Cut to opening title sequence with montage of psychiatric photos and music.)\n
    (Cut back to Mr Boniface at desk, shaken.)

    \n

    IT'S THE MIND

    \n

    Boniface: Good evening. Tonight on 'It's the Mind' we examine the phenomenon of d\u00e9j\u00e0 vu, that strange feeling we someti... (looks around) ...mes get... (looks increasingly worried) that... we've lived through something...

    " + } +}, +{ + "model": "downloads.release", + "pk": 487, + "fields": { + "created": "2020-09-24T10:46:03.185Z", + "updated": "2020-12-21T18:38:46.120Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.6", + "slug": "python-386", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2020-09-24T10:33:34Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.6/whatsnew/changelog.html#changelog", + "content": "## This is the sixth maintenance release of Python 3.8\r\n\r\n\r\n**Note:** The release you're looking at is Python 3.8.6, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n## Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n## macOS users\r\n\r\n* For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n## And now for something completely different\r\n*Cut to film of the lost world. Tropical South American vegetation. Our four explorers from Jungle Restaurant and Ken Russell's Gardening Club sketches limp along exhaustedly.*\r\n\r\n**[Second Explorer](http://www.montypython.net/scripts/lostworld.php):** My God, Betty, we're done for... \r\n
    **Third Explorer:** We'll never get out of here... we're completely lost, lost. Even the natives have gone. \r\n
    **First Explorer:** Goodbye Betty, Goodbye Farquarson. Goodbye Brian. It's been a great expedition... \r\n
    **Third Explorer:** All that'll be left of us will be a map, a compass and a few feet of film, recording our last moments... \r\n
    **First Explorer:** Wait a moment! \r\n
    **Fourth Explorer:** What is it? \r\n
    **First Explorer:** If we're on film, there must be someone filming us. \r\n
    **Second Explorer:** My God, Betty, you're right!\r\n\r\n*They all look around, then gradually all notice the camera. They break out in smiles of relief, come towards the camera and greet the camera crew.*\r\n \r\n**Third Explorer:** Look! Great to see you! \r\n
    **First Explorer:** What a stroke of luck! \r\n
    **Camera Crew:** Hello! ... \r\n
    **First Explorer:** Wait a minute! \r\n
    **Fourth Explorer:** What is it again? \r\n
    **First Explorer:** If this is the crew who were filming us . .. who's filming us now? Look! \r\n\r\n*Cut to another shot which indudes the first camera flew and yet another camera crew with all their equipment.*", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the sixth maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.6, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n

    Cut to film of the lost world. Tropical South American vegetation. Our four explorers from Jungle Restaurant and Ken Russell's Gardening Club sketches limp along exhaustedly.

    \n

    Second Explorer: My God, Betty, we're done for... \n
    Third Explorer: We'll never get out of here... we're completely lost, lost. Even the natives have gone. \n
    First Explorer: Goodbye Betty, Goodbye Farquarson. Goodbye Brian. It's been a great expedition... \n
    Third Explorer: All that'll be left of us will be a map, a compass and a few feet of film, recording our last moments... \n
    First Explorer: Wait a moment! \n
    Fourth Explorer: What is it? \n
    First Explorer: If we're on film, there must be someone filming us. \n
    Second Explorer: My God, Betty, you're right!

    \n

    They all look around, then gradually all notice the camera. They break out in smiles of relief, come towards the camera and greet the camera crew.

    \n

    Third Explorer: Look! Great to see you! \n
    First Explorer: What a stroke of luck! \n
    Camera Crew: Hello! ... \n
    First Explorer: Wait a minute! \n
    Fourth Explorer: What is it again? \n
    First Explorer: If this is the crew who were filming us . .. who's filming us now? Look!

    \n

    Cut to another shot which indudes the first camera flew and yet another camera crew with all their equipment.

    " + } +}, +{ + "model": "downloads.release", + "pk": 520, + "fields": { + "created": "2020-10-04T17:56:26.824Z", + "updated": "2021-11-05T21:39:55.256Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.0", + "slug": "python-390", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2020-10-05T17:56:01Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.0/whatsnew/changelog.html#changelog", + "content": "## This is the stable release of Python 3.9.0\r\n\r\n**Note:** The release you're looking at is Python 3.9.0, a legacy release. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/). \r\n\r\n## Installer news\r\n\r\nThis is the first version of Python to default to the 64-bit installer on Windows. The installer now also actively disallows installation on Windows 7. Python 3.9 is incompatible with this unsupported version of Windows.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 573](https://www.python.org/dev/peps/pep-0573/), Module State Access from C Extension Methods\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 614](https://www.python.org/dev/peps/pep-0614/), Relaxing Grammar Restrictions On Decorators\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\nYou can find a more comprehensive list in this release's \"[What's New](https://docs.python.org/release/3.9.0/whatsnew/3.9.html)\" document.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## And now for something completely different\r\n**Wapcaplet: ([John Cleese](http://www.montypython.net/scripts/string.php))** Welcome! Do sit down. My name's Wapcaplet, Adrian Wapcaplet.\r\n
    **Mr. Simpson:** how'd'y'do.\r\n
    **Wapcaplet:** Now, Mr. Simpson... Now, I understand you want us to advertise your washing powder.\r\n
    **S:** String.\r\n
    **W:** String, washing powder, what's the difference. We can sell *anything*.\r\n
    **S:** Good. Well I have this large quantity of string, a hundred and twenty-two thousand *miles* of it to be exact, which I inherited, and I thought if I advertised it...\r\n
    **W:** Of course! A national campaign. Useful stuff, string, no trouble there.\r\n
    **S:** Ah, but there's a snag, you see. Due to bad planning, the hundred and twenty-two thousand miles is in three inch lengths. So it's not very useful.\r\n
    **W:** Well, that's our selling point! *'SIMPSON'S INDIVIDUAL STRINGETTES!'*\r\n
    **S:** What?\r\n
    **W:** *'THE NOW STRING! READY CUT, EASY TO HANDLE, SIMPSON'S INDIVIDUAL EMPEROR STRINGETTES - JUST THE RIGHT LENGTH!'*\r\n
    **S:** For what?\r\n
    **W:** *'A MILLION HOUSEHOLD USES!'*\r\n
    **S:** Such as?\r\n
    **W:** Uhmm...Tying up very small parcels, attatching notes to pigeons' legs, uh, destroying household pests...\r\n
    **S:** Destroying household pests?! How?\r\n
    **W:** Well, if they're bigger than a mouse, you can strangle them with it, and if they're smaller than, you flog them to death with it!\r\n
    **S:** Well *surely*!....\r\n
    **W:** *'DESTROY NINETY-NINE PERCENT OF KNOWN HOUSEHOLD PESTS WITH PRE-SLICED, RUSTPROOF, EASY-TO-HANDLE, LOW CALORIE SIMPSON'S INDIVIDUAL EMPEROR STRINGETTES, FREE FROM ARTIFICIAL COLORING, AS USED IN HOSPITALS!'*", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the stable release of Python 3.9.0

    \n

    Note: The release you're looking at is Python 3.9.0, a legacy release. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    Installer news

    \n

    This is the first version of Python to default to the 64-bit installer on Windows. The installer now also actively disallows installation on Windows 7. Python 3.9 is incompatible with this unsupported version of Windows.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 573, Module State Access from C Extension Methods
    • \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 614, Relaxing Grammar Restrictions On Decorators
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    You can find a more comprehensive list in this release's \"What's New\" document.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Wapcaplet: (John Cleese) Welcome! Do sit down. My name's Wapcaplet, Adrian Wapcaplet.\n
    Mr. Simpson: how'd'y'do.\n
    Wapcaplet: Now, Mr. Simpson... Now, I understand you want us to advertise your washing powder.\n
    S: String.\n
    W: String, washing powder, what's the difference. We can sell anything.\n
    S: Good. Well I have this large quantity of string, a hundred and twenty-two thousand miles of it to be exact, which I inherited, and I thought if I advertised it...\n
    W: Of course! A national campaign. Useful stuff, string, no trouble there.\n
    S: Ah, but there's a snag, you see. Due to bad planning, the hundred and twenty-two thousand miles is in three inch lengths. So it's not very useful.\n
    W: Well, that's our selling point! 'SIMPSON'S INDIVIDUAL STRINGETTES!'\n
    S: What?\n
    W: 'THE NOW STRING! READY CUT, EASY TO HANDLE, SIMPSON'S INDIVIDUAL EMPEROR STRINGETTES - JUST THE RIGHT LENGTH!'\n
    S: For what?\n
    W: 'A MILLION HOUSEHOLD USES!'\n
    S: Such as?\n
    W: Uhmm...Tying up very small parcels, attatching notes to pigeons' legs, uh, destroying household pests...\n
    S: Destroying household pests?! How?\n
    W: Well, if they're bigger than a mouse, you can strangle them with it, and if they're smaller than, you flog them to death with it!\n
    S: Well surely!....\n
    W: 'DESTROY NINETY-NINE PERCENT OF KNOWN HOUSEHOLD PESTS WITH PRE-SLICED, RUSTPROOF, EASY-TO-HANDLE, LOW CALORIE SIMPSON'S INDIVIDUAL EMPEROR STRINGETTES, FREE FROM ARTIFICIAL COLORING, AS USED IN HOSPITALS!'

    " + } +}, +{ + "model": "downloads.release", + "pk": 521, + "fields": { + "created": "2020-10-05T18:32:06.133Z", + "updated": "2020-10-05T19:38:19.875Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.0a1", + "slug": "python-3100a1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2020-10-05T18:16:13Z", + "release_page": null, + "release_notes_url": "", + "content": "**This is an early developer preview of Python 3.10**\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nPython 3.10 is still in development. This releasee, 3.10.0a1 is the first of six planned alpha releases.\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2021-05-03) and, if necessary, may be modified or deleted up until the release candidate phase (2021-10-04). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.10 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Remove wstr from Unicode\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.10 will be 3.10.0a2, currently scheduled for 2020-11-02.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\nThe effective potential of a particle orbiting a Reissner\u2013Nordstr\u00f6m black hole has a repulsive term proportional to the total electromagnetic charge of the black hole that is only relevant when the particle is very close to the singularity. This shows that a particle falling into the black hole will never be able to reach the singularity because the force of gravity will start to push it away. This is due to the fact that the energy due to the electromagnetic charge in the Reissner\u2013Nordstr\u00f6m black hole produces repulsive gravity, which is allowed by the theory of general relativity. Black holes are strange beasts indeed.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.10

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Python 3.10 is still in development. This releasee, 3.10.0a1 is the first of six planned alpha releases.\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of the beta phase (2021-05-03) and, if necessary, may be modified or deleted up until the release candidate phase (2021-10-04). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Many new features for Python 3.10 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 623 -- Remove wstr from Unicode
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)
    • \n
    \n

    The next pre-release of Python 3.10 will be 3.10.0a2, currently scheduled for 2020-11-02.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    The effective potential of a particle orbiting a Reissner\u2013Nordstr\u00f6m black hole has a repulsive term proportional to the total electromagnetic charge of the black hole that is only relevant when the particle is very close to the singularity. This shows that a particle falling into the black hole will never be able to reach the singularity because the force of gravity will start to push it away. This is due to the fact that the energy due to the electromagnetic charge in the Reissner\u2013Nordstr\u00f6m black hole produces repulsive gravity, which is allowed by the theory of general relativity. Black holes are strange beasts indeed.

    " + } +}, +{ + "model": "downloads.release", + "pk": 522, + "fields": { + "created": "2020-11-03T00:28:47.641Z", + "updated": "2020-11-07T00:33:24.972Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.0a2", + "slug": "python-3100a2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2020-11-03T00:17:35Z", + "release_page": null, + "release_notes_url": "", + "content": "**This is an early developer preview of Python 3.10**\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nPython 3.10 is still in development. This releasee, 3.10.0a2 is the second of six planned alpha releases.\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2021-05-03) and, if necessary, may be modified or deleted up until the release candidate phase (2021-10-04). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.10 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Remove wstr from Unicode\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) is now the default.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.10 will be 3.10.0a3, currently scheduled for 2020-12-07.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\nThe cardinality (the number of elements) of infinite sets can be one of the most surprising results of set theory. For example, there are the same amount of even natural numbers than natural numbers (which can be even or odd). There is also the same amount of rational numbers than natural numbers. But on the other hand, there are more real numbers between 0 and 1 than natural numbers! All these sets have infinite cardinality but turn out that some of these infinities are bigger than others. These infinite cardinalities normally are represented using [aleph numbers](https://en.wikipedia.org/wiki/Aleph_number). Infinite sets are strange beasts indeed.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.10

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Python 3.10 is still in development. This releasee, 3.10.0a2 is the second of six planned alpha releases.\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of the beta phase (2021-05-03) and, if necessary, may be modified or deleted up until the release candidate phase (2021-10-04). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Many new features for Python 3.10 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 623 -- Remove wstr from Unicode
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • bpo-38605: from __future__ import annotations (PEP 563) is now the default.
    • \n
    • \n

      PEP 618 -- Add Optional Length-Checking To zip.

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

      \n
    • \n
    \n

    The next pre-release of Python 3.10 will be 3.10.0a3, currently scheduled for 2020-12-07.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    The cardinality (the number of elements) of infinite sets can be one of the most surprising results of set theory. For example, there are the same amount of even natural numbers than natural numbers (which can be even or odd). There is also the same amount of rational numbers than natural numbers. But on the other hand, there are more real numbers between 0 and 1 than natural numbers! All these sets have infinite cardinality but turn out that some of these infinities are bigger than others. These infinite cardinalities normally are represented using aleph numbers. Infinite sets are strange beasts indeed.

    " + } +}, +{ + "model": "downloads.release", + "pk": 523, + "fields": { + "created": "2020-11-26T18:10:39.487Z", + "updated": "2021-11-05T21:39:29.724Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.1rc1", + "slug": "python-391rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2020-11-26T17:54:19Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.1rc1/whatsnew/changelog.html#python-3-9-1-release-candidate-1", + "content": "## This is the release candidate of the first maintenance release of Python 3.9\r\n\r\n**Note:** The release you're looking at is Python 3.9.1rc1, the release candidate of a **bugfix release** for the legacy 3.9 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/). \r\n\r\nWe've made 240 changes since 3.9.0 which is a significant amount. To compare, 3.8.1rc1 only saw 168 commits since 3.8.0.\r\n\r\n## Installer news\r\n\r\n3.9.1rc1 is the first version of Python to support macOS 11 Big Sur. With Xcode 11 and later it is now possible to build \u201cUniversal 2\u201d binaries which work on Apple Silicon. We are providing such an installer as the `macosx11.0` variant. This installer can be deployed back to older versions, tested down to OS X 10.9. As we are waiting for an updated version of `pip`, please consider the `macosx11.0` installer experimental.\r\n\r\nThis work would not have been possible without the effort of Ronald Oussoren, Ned Deily, and Lawrence D\u2019Anna from Apple. Thank you!\r\n\r\nThis is the first version of Python to default to the 64-bit installer on Windows. The installer now also actively disallows installation on Windows 7. Python 3.9 is incompatible with this unsupported version of Windows.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 573](https://www.python.org/dev/peps/pep-0573/), Module State Access from C Extension Methods\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 614](https://www.python.org/dev/peps/pep-0614/), Relaxing Grammar Restrictions On Decorators\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\nYou can find a more comprehensive list in this release's \"[What's New](https://docs.python.org/release/3.9.0/whatsnew/3.9.html)\" document.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## And now for something completely different\r\n\r\n**Loothesom: ([Eric Idle](http://www.montypython.net/scripts/croc.php))** Here at Lughtborrow are the five young men chosen last week to be eaten by a crocodile for Britain this summer. Obviously, the most important part of the event is the opening 60 yard sprint towards the crocs. And twenty-two year old Nottingham schoolteacher Gavin Watterlow is rated by some pundits not only the fastest but also the tastiest British morsel since Barry Gordon got a bronze at Helsinki. In charge of the team is Sergeant Major Harold Duke. \r\n
    **Duke: (Terry Jones)** Aww, well, you not only got to get in that pit first, you gotta get EATEN first. When you land in front of your croc, and 'e opens his mouth, I wanna see you right in there. Rub your 'ead up against 'is taste buds. And when those teeth bite into your flesh, use the purchase to thrust yourself DOWN his throat...\r\n
    **Loothesom:** Duke's trained every British team since 1928, and it's his blend of gymnastic knowhow, reptilian expertise and culinary skill that's turned many an un-appetizing novice into a *crocodilic banquet*.\r\n
    **Duke:** Well, our chefs have been experimenting for many years to find a sauce most likely to tempt the crocodile. In the past, we've concentrated on a fish based sauce, but this year, we are reverting to a simple bernaise.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the release candidate of the first maintenance release of Python 3.9

    \n

    Note: The release you're looking at is Python 3.9.1rc1, the release candidate of a bugfix release for the legacy 3.9 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    We've made 240 changes since 3.9.0 which is a significant amount. To compare, 3.8.1rc1 only saw 168 commits since 3.8.0.

    \n

    Installer news

    \n

    3.9.1rc1 is the first version of Python to support macOS 11 Big Sur. With Xcode 11 and later it is now possible to build \u201cUniversal 2\u201d binaries which work on Apple Silicon. We are providing such an installer as the macosx11.0 variant. This installer can be deployed back to older versions, tested down to OS X 10.9. As we are waiting for an updated version of pip, please consider the macosx11.0 installer experimental.

    \n

    This work would not have been possible without the effort of Ronald Oussoren, Ned Deily, and Lawrence D\u2019Anna from Apple. Thank you!

    \n

    This is the first version of Python to default to the 64-bit installer on Windows. The installer now also actively disallows installation on Windows 7. Python 3.9 is incompatible with this unsupported version of Windows.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 573, Module State Access from C Extension Methods
    • \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 614, Relaxing Grammar Restrictions On Decorators
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    You can find a more comprehensive list in this release's \"What's New\" document.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Loothesom: (Eric Idle) Here at Lughtborrow are the five young men chosen last week to be eaten by a crocodile for Britain this summer. Obviously, the most important part of the event is the opening 60 yard sprint towards the crocs. And twenty-two year old Nottingham schoolteacher Gavin Watterlow is rated by some pundits not only the fastest but also the tastiest British morsel since Barry Gordon got a bronze at Helsinki. In charge of the team is Sergeant Major Harold Duke. \n
    Duke: (Terry Jones) Aww, well, you not only got to get in that pit first, you gotta get EATEN first. When you land in front of your croc, and 'e opens his mouth, I wanna see you right in there. Rub your 'ead up against 'is taste buds. And when those teeth bite into your flesh, use the purchase to thrust yourself DOWN his throat...\n
    Loothesom: Duke's trained every British team since 1928, and it's his blend of gymnastic knowhow, reptilian expertise and culinary skill that's turned many an un-appetizing novice into a crocodilic banquet.\n
    Duke: Well, our chefs have been experimenting for many years to find a sauce most likely to tempt the crocodile. In the past, we've concentrated on a fish based sauce, but this year, we are reverting to a simple bernaise.

    " + } +}, +{ + "model": "downloads.release", + "pk": 532, + "fields": { + "created": "2020-12-07T23:18:38.222Z", + "updated": "2020-12-07T23:57:13.930Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.0a3", + "slug": "python-3100a3", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2020-12-07T23:14:51Z", + "release_page": null, + "release_notes_url": "", + "content": "**This is an early developer preview of Python 3.10**\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nPython 3.10 is still in development. This releasee, 3.10.0a3 is the second of six planned alpha releases.\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2021-05-03) and, if necessary, may be modified or deleted up until the release candidate phase (2021-10-04). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.10 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Remove wstr from Unicode\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) is now the default.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.10 will be 3.10.0a4, currently scheduled for 2021-01-04.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nIn mathematics, a [Borwein integral](https://en.wikipedia.org/wiki/Borwein_integral) is an integral whose unusual properties were first presented by mathematicians David Borwein and Jonathan Borwein in 2001. These integrals are remarkable for exhibiting apparent patterns that eventually break down. The following is an example:\r\n\r\n![](https://wikimedia.org/api/rest_v1/media/math/render/svg/e9670ee100344ef5d0de572a51754e9a34b5aa47)\r\n\r\nThis pattern continues up to\r\n\r\n![](https://wikimedia.org/api/rest_v1/media/math/render/svg/4192a48666c10102b52e928e2edbd6f718a976c2)\r\n\r\nAt the next step the obvious pattern fails,\r\n\r\n![](https://wikimedia.org/api/rest_v1/media/math/render/svg/8981fcdbb14e620e8bc862e1411c088ae5450fa7)", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.10

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Python 3.10 is still in development. This releasee, 3.10.0a3 is the second of six planned alpha releases.\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of the beta phase (2021-05-03) and, if necessary, may be modified or deleted up until the release candidate phase (2021-10-04). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Many new features for Python 3.10 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 623 -- Remove wstr from Unicode
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • bpo-38605: from __future__ import annotations (PEP 563) is now the default.
    • \n
    • \n

      PEP 618 -- Add Optional Length-Checking To zip.

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

      \n
    • \n
    \n

    The next pre-release of Python 3.10 will be 3.10.0a4, currently scheduled for 2021-01-04.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    In mathematics, a Borwein integral is an integral whose unusual properties were first presented by mathematicians David Borwein and Jonathan Borwein in 2001. These integrals are remarkable for exhibiting apparent patterns that eventually break down. The following is an example:

    \n

    \"\"

    \n

    This pattern continues up to

    \n

    \"\"

    \n

    At the next step the obvious pattern fails,

    \n

    \"\"

    " + } +}, +{ + "model": "downloads.release", + "pk": 536, + "fields": { + "created": "2020-12-07T23:52:59.696Z", + "updated": "2020-12-21T18:35:47.640Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.7rc1", + "slug": "python-387rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2020-12-07T23:52:03Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.7rc1/whatsnew/changelog.html#changelog", + "content": "## This is the release candidate of the seventh maintenance release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.7rc1, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n## Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n## macOS users\r\n\r\n* For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n## And now for something completely different\r\n**Mr Verity ([Eric Idle](http://www.montypython.net/scripts/buybed.php)):** Can I help you, sir? \r\n
    **Husband:** Yes, we'd like a bed, a double bed, and I wondered if you'd got one for about fifty pounds. \r\n
    **Verity:** Oh no, I'm afraid not, sir. Our cheapest bed is eight hundred pounds, sir. \r\n
    **Husband and Wife:** Eight hundred pounds? \r\n
    **Lambert:** Excuse me, sir, but before I go, I ought to have told you that Mr Verity does tend to exaggerate. Every figure he gives you will be ten times too high. \r\n
    **Husband:** I see. \r\n
    **Lambert:** Otherwise he's perfectly all right. \r\n
    **Husband:** I see. Er... your cheapest double bed then is eighty pounds? \r\n
    **Verity:** Eight hundred pounds, yes, sir. \r\n
    **Husband:** I see. And how wide is it? \r\n
    **Verity:** It's sixty feet wide.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the release candidate of the seventh maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.7rc1, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n

    Mr Verity (Eric Idle): Can I help you, sir? \n
    Husband: Yes, we'd like a bed, a double bed, and I wondered if you'd got one for about fifty pounds. \n
    Verity: Oh no, I'm afraid not, sir. Our cheapest bed is eight hundred pounds, sir. \n
    Husband and Wife: Eight hundred pounds? \n
    Lambert: Excuse me, sir, but before I go, I ought to have told you that Mr Verity does tend to exaggerate. Every figure he gives you will be ten times too high. \n
    Husband: I see. \n
    Lambert: Otherwise he's perfectly all right. \n
    Husband: I see. Er... your cheapest double bed then is eighty pounds? \n
    Verity: Eight hundred pounds, yes, sir. \n
    Husband: I see. And how wide is it? \n
    Verity: It's sixty feet wide.

    " + } +}, +{ + "model": "downloads.release", + "pk": 537, + "fields": { + "created": "2020-12-07T23:57:59.733Z", + "updated": "2021-11-05T21:39:05.988Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.1", + "slug": "python-391", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2020-12-07T23:57:18Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.1/whatsnew/changelog.html#changelog", + "content": "## This is the first maintenance release of Python 3.9\r\n\r\n**Note:** The release you're looking at is Python 3.9.1, a **bugfix release** for the legacy 3.9 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/). \r\n\r\nWe've made 282 changes since 3.9.0 which is a significant amount. To compare, 3.8.1 only saw 192 commits since 3.8.0.\r\n\r\n## Installer news\r\n\r\n3.9.1 is the first version of Python to support macOS 11 Big Sur. With Xcode 11 and later it is now possible to build \u201cUniversal 2\u201d binaries which work on Apple Silicon. We are providing such an installer as the `macos11.0` variant. This installer can be deployed back to older versions, tested down to OS X 10.9. As we are waiting for an updated version of `pip`, please consider the `macos11.0` installer experimental.\r\n\r\nThis work would not have been possible without the effort of Ronald Oussoren, Ned Deily, and Lawrence D\u2019Anna from Apple. Thank you!\r\n\r\nThis is the first version of Python to default to the 64-bit installer on Windows. The installer now also actively disallows installation on Windows 7. Python 3.9 is incompatible with this unsupported version of Windows.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 573](https://www.python.org/dev/peps/pep-0573/), Module State Access from C Extension Methods\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 614](https://www.python.org/dev/peps/pep-0614/), Relaxing Grammar Restrictions On Decorators\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\nYou can find a more comprehensive list in this release's \"[What's New](https://docs.python.org/release/3.9.0/whatsnew/3.9.html)\" document.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## And now for something completely different\r\n\r\n**Arthur ([Eric Idle](http://www.montypython.net/scripts/dentist.php)):** Good morning, I'd like to buy a book please. \r\n
    **Bookseller (John Cleese):** Oh, well I'm afraid we don't have any. *(trying to hide them)* \r\n
    **Arthur:** I'm sorry? \r\n
    **Bookseller:** We don't have any books. We're fresh out of them. Good morning. \r\n
    **Arthur:** What are all these? \r\n
    **Bookseller:** All what? Oh! All these, ah ah ha ha. You're referring to these... books. \r\n
    **Arthur:** Yes. \r\n
    **Bookseller:** They're um... they're all sold. Good morning. \r\n
    **Arthur:** What all of them? \r\n
    **Bookseller:** Every single man-Jack of them. Not a single one of them in an unsold state. Good morning. \r\n
    **Arthur:** Wait a minute, *there's something going on here*. \r\n
    **Bookseller:** What, where? You didn't *see* anything did you? \r\n
    **Arthur:** No, but I think there's something going on here. \r\n
    **Bookseller:** No no, well there's nothing going on here at all *(shouts off)* and he didn't see anything. Good morning. \r\n
    **Arthur:** Oh, well, I'd like to buy a copy of an 'Illustrated History of False Teeth'. \r\n
    **Bookseller:** My God you've got guts. \r\n
    **Arthur:** What? \r\n
    **Bookseller:** *(pulling gun)* Just how much do you know? \r\n
    **Arthur:** What about? \r\n
    **Bookseller:** Are you from the British Dental Association? \r\n
    **Arthur:** No I'm a tobacconist. \r\n
    **Bookseller:** Stay where you are. You'll never leave this bookshop alive. \r\n
    **Arthur:** Why not? \r\n
    **Bookseller:** You know too much, my dental friend. \r\n
    **Arthur:** I don't know *anything*. \r\n
    **Bookseller:** Come clean. You're a dentist aren't you. \r\n
    **Arthur:** No, I'm a tobacconist. \r\n
    **Bookseller:** A tobacconist who just happens to be buying a book on *teeth*?", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the first maintenance release of Python 3.9

    \n

    Note: The release you're looking at is Python 3.9.1, a bugfix release for the legacy 3.9 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    We've made 282 changes since 3.9.0 which is a significant amount. To compare, 3.8.1 only saw 192 commits since 3.8.0.

    \n

    Installer news

    \n

    3.9.1 is the first version of Python to support macOS 11 Big Sur. With Xcode 11 and later it is now possible to build \u201cUniversal 2\u201d binaries which work on Apple Silicon. We are providing such an installer as the macos11.0 variant. This installer can be deployed back to older versions, tested down to OS X 10.9. As we are waiting for an updated version of pip, please consider the macos11.0 installer experimental.

    \n

    This work would not have been possible without the effort of Ronald Oussoren, Ned Deily, and Lawrence D\u2019Anna from Apple. Thank you!

    \n

    This is the first version of Python to default to the 64-bit installer on Windows. The installer now also actively disallows installation on Windows 7. Python 3.9 is incompatible with this unsupported version of Windows.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 573, Module State Access from C Extension Methods
    • \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 614, Relaxing Grammar Restrictions On Decorators
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    You can find a more comprehensive list in this release's \"What's New\" document.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Arthur (Eric Idle): Good morning, I'd like to buy a book please. \n
    Bookseller (John Cleese): Oh, well I'm afraid we don't have any. (trying to hide them) \n
    Arthur: I'm sorry? \n
    Bookseller: We don't have any books. We're fresh out of them. Good morning. \n
    Arthur: What are all these? \n
    Bookseller: All what? Oh! All these, ah ah ha ha. You're referring to these... books. \n
    Arthur: Yes. \n
    Bookseller: They're um... they're all sold. Good morning. \n
    Arthur: What all of them? \n
    Bookseller: Every single man-Jack of them. Not a single one of them in an unsold state. Good morning. \n
    Arthur: Wait a minute, there's something going on here. \n
    Bookseller: What, where? You didn't see anything did you? \n
    Arthur: No, but I think there's something going on here. \n
    Bookseller: No no, well there's nothing going on here at all (shouts off) and he didn't see anything. Good morning. \n
    Arthur: Oh, well, I'd like to buy a copy of an 'Illustrated History of False Teeth'. \n
    Bookseller: My God you've got guts. \n
    Arthur: What? \n
    Bookseller: (pulling gun) Just how much do you know? \n
    Arthur: What about? \n
    Bookseller: Are you from the British Dental Association? \n
    Arthur: No I'm a tobacconist. \n
    Bookseller: Stay where you are. You'll never leave this bookshop alive. \n
    Arthur: Why not? \n
    Bookseller: You know too much, my dental friend. \n
    Arthur: I don't know anything. \n
    Bookseller: Come clean. You're a dentist aren't you. \n
    Arthur: No, I'm a tobacconist. \n
    Bookseller: A tobacconist who just happens to be buying a book on teeth?

    " + } +}, +{ + "model": "downloads.release", + "pk": 571, + "fields": { + "created": "2020-12-21T18:36:29.817Z", + "updated": "2020-12-21T19:44:14.022Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.7", + "slug": "python-387", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2020-12-21T18:20:49Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.7/whatsnew/changelog.html", + "content": "## This is the seventh maintenance release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.7, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n## macOS 11 Big Sur not fully supported\r\n\r\nPython 3.8.7 is not yet fully supported on macOS 11 Big Sur. It will install on macOS 11 Big Sur and will run on Apple Silicon Macs using Rosetta 2 translation. However, a few features do not work correctly, most noticeably those involving searching for system libraries (vs user libraries) such as `ctypes.util.find_library()` and in Distutils. This limitation affects both Apple Silicon and Intel processors. We are looking into improving the situation for Python 3.8.8.\r\n\r\n## Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n## macOS users\r\n\r\n* For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n## And now for something completely different\r\n*(Cut to BBC world symbol.)*\r\n
    **Continuity Voice: ([Eric Idle](http://www.ulrikchristensen.dk/scripts/montypython/choice-of.html))** Now on BBC television a choice of viewing. On BBC 2 - a discussion on censorship between Derek Hart, The Bishop of Woolwich, and a nude man. And on BBC 1 - me telling you this. And now...\r\n
    *(Sound of TV set bring switched off. The picture reduces to a spot and we see it was actually on a TV set which has just been switched off by the housewife. The inspector holds a cup with a cherry on a stick in it.)*\r\n
    **She: (Terry Jones)** We don't want that, do we. Do you really want that cherry in your tea? Do you like doing this job?\r\n
    **Inspector: (Michael Palin)** Well, it's a living, isn't it?", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the seventh maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.7, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    macOS 11 Big Sur not fully supported

    \n

    Python 3.8.7 is not yet fully supported on macOS 11 Big Sur. It will install on macOS 11 Big Sur and will run on Apple Silicon Macs using Rosetta 2 translation. However, a few features do not work correctly, most noticeably those involving searching for system libraries (vs user libraries) such as ctypes.util.find_library() and in Distutils. This limitation affects both Apple Silicon and Intel processors. We are looking into improving the situation for Python 3.8.8.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n

    (Cut to BBC world symbol.)\n
    Continuity Voice: (Eric Idle) Now on BBC television a choice of viewing. On BBC 2 - a discussion on censorship between Derek Hart, The Bishop of Woolwich, and a nude man. And on BBC 1 - me telling you this. And now...\n
    (Sound of TV set bring switched off. The picture reduces to a spot and we see it was actually on a TV set which has just been switched off by the housewife. The inspector holds a cup with a cherry on a stick in it.)\n
    She: (Terry Jones) We don't want that, do we. Do you really want that cherry in your tea? Do you like doing this job?\n
    Inspector: (Michael Palin) Well, it's a living, isn't it?

    " + } +}, +{ + "model": "downloads.release", + "pk": 572, + "fields": { + "created": "2021-01-04T17:54:09.569Z", + "updated": "2021-01-04T22:05:42.684Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.0a4", + "slug": "python-3100a4", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2021-01-04T17:45:31Z", + "release_page": null, + "release_notes_url": "", + "content": "**This is an early developer preview of Python 3.10**\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nPython 3.10 is still in development. This release, 3.10.0a4 is the fourth of six planned alpha releases.\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2021-05-03) and, if necessary, may be modified or deleted up until the release candidate phase (2021-10-04). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.10 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Remove wstr from Unicode\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) is now the default.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.10 will be 3.10.0a5, currently scheduled for 2021-02-01.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nThe [Majumdar\u2013Papapetrou spacetime](https://en.wikipedia.org/wiki/Sudhansu_Datta_Majumdar#Majumdar%E2%80%93Papapetrou_solution) is one surprising solution of the coupled Einstein-Maxwell equations that describe a cluster of static charged black holes with the gravitational and the electrostatic forces cancelling each other out. Each one of these many black holes of the multi-black holes system has a spherical topology and follows the [Reissner\u2013Nordstr\u00f6m metric](https://en.wikipedia.org/wiki/Reissner%E2%80%93Nordstr%C3%B6m_metric). Unsurprisingly, the movement of a test particle in such spacetime is not only a very chaotic system but also has some [fractals](https://arxiv.org/abs/gr-qc/9502014) hiding the complexity of its movement.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.10

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Python 3.10 is still in development. This release, 3.10.0a4 is the fourth of six planned alpha releases.\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of the beta phase (2021-05-03) and, if necessary, may be modified or deleted up until the release candidate phase (2021-10-04). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Many new features for Python 3.10 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 623 -- Remove wstr from Unicode
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • bpo-38605: from __future__ import annotations (PEP 563) is now the default.
    • \n
    • \n

      PEP 618 -- Add Optional Length-Checking To zip.

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

      \n
    • \n
    \n

    The next pre-release of Python 3.10 will be 3.10.0a5, currently scheduled for 2021-02-01.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    The Majumdar\u2013Papapetrou spacetime is one surprising solution of the coupled Einstein-Maxwell equations that describe a cluster of static charged black holes with the gravitational and the electrostatic forces cancelling each other out. Each one of these many black holes of the multi-black holes system has a spherical topology and follows the Reissner\u2013Nordstr\u00f6m metric. Unsurprisingly, the movement of a test particle in such spacetime is not only a very chaotic system but also has some fractals hiding the complexity of its movement.

    " + } +}, +{ + "model": "downloads.release", + "pk": 573, + "fields": { + "created": "2021-02-02T20:56:48.947Z", + "updated": "2021-02-03T22:53:33.421Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.0a5", + "slug": "python-3100a5", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2021-02-02T20:54:50Z", + "release_page": null, + "release_notes_url": "", + "content": "**This is an early developer preview of Python 3.10**\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nPython 3.10 is still in development. This release, 3.10.0a5 is the fifth of seven planned alpha releases.\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2021-05-03) and, if necessary, may be modified or deleted up until the release candidate phase (2021-10-04). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.10 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Remove wstr from Unicode\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) is now the default.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.10 will be 3.10.0a6, currently scheduled for 2021-03-01.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\n[The Chandrasekhar limit](https://en.wikipedia.org/wiki/Chandrasekhar_limit) is the maximum mass of a stable white dwarf star. White dwarfs resist gravitational collapse primarily through electron degeneracy pressure, compared to main sequence stars, which resist collapse through thermal pressure. The Chandrasekhar limit is the mass above which electron degeneracy pressure in the star's core is insufficient to balance the star's own gravitational self-attraction. Consequently, a white dwarf with a mass greater than the limit is subject to further gravitational collapse, evolving into a different type of stellar remnant, such as a neutron star or black hole. Those with masses up to the limit remain stable as white dwarfs. The currently accepted value of the Chandrasekhar limit is about 1.4 M\u2609 (2.765\u00d71030 kg). So we can be safe knowing that our sun is not going to become a black hole!", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.10

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Python 3.10 is still in development. This release, 3.10.0a5 is the fifth of seven planned alpha releases.\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of the beta phase (2021-05-03) and, if necessary, may be modified or deleted up until the release candidate phase (2021-10-04). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Many new features for Python 3.10 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 623 -- Remove wstr from Unicode
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • bpo-38605: from __future__ import annotations (PEP 563) is now the default.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • \n

      PEP 613 -- Explicit Type Aliases

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

      \n
    • \n
    \n

    The next pre-release of Python 3.10 will be 3.10.0a6, currently scheduled for 2021-03-01.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    The Chandrasekhar limit is the maximum mass of a stable white dwarf star. White dwarfs resist gravitational collapse primarily through electron degeneracy pressure, compared to main sequence stars, which resist collapse through thermal pressure. The Chandrasekhar limit is the mass above which electron degeneracy pressure in the star's core is insufficient to balance the star's own gravitational self-attraction. Consequently, a white dwarf with a mass greater than the limit is subject to further gravitational collapse, evolving into a different type of stellar remnant, such as a neutron star or black hole. Those with masses up to the limit remain stable as white dwarfs. The currently accepted value of the Chandrasekhar limit is about 1.4 M\u2609 (2.765\u00d71030 kg). So we can be safe knowing that our sun is not going to become a black hole!

    " + } +}, +{ + "model": "downloads.release", + "pk": 574, + "fields": { + "created": "2021-02-16T04:33:33.186Z", + "updated": "2022-01-07T22:54:59.482Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.10", + "slug": "python-3710", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-02-15T23:45:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.7.10/whatsnew/changelog.html#changelog", + "content": "**Note:** The release you are looking at is **Python 3.7.10**, a **security bugfix release** for the legacy **3.7** series which is now in the **security fix** phase of its life cycle. See the `downloads page `_ for currently supported versions of Python and for the most recent source-only **security fix** release for 3.7. The final **bugfix release** with binary installers for 3.7 was `3.7.9 `_.\r\n\r\nPlease see the `Full Changelog `_ link for more information about the contents of this release and see `What\u2019s New In Python 3.7 `_ for more information about 3.7 features. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.7.10, a security bugfix release for the legacy 3.7 series which is now in the security fix phase of its life cycle. See the downloads page for currently supported versions of Python and for the most recent source-only security fix release for 3.7. The final bugfix release with binary installers for 3.7 was 3.7.9.

    \n

    Please see the Full Changelog link for more information about the contents of this release and see What\u2019s New In Python 3.7 for more information about 3.7 features.

    \n
    \n

    More resources

    \n\n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 575, + "fields": { + "created": "2021-02-16T04:51:52.791Z", + "updated": "2022-01-07T22:02:39.125Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.13", + "slug": "python-3613", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-02-15T23:55:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.6.13/whatsnew/changelog.html#changelog", + "content": "**Note:** The release you are looking at is **Python 3.6.13**, a **security bugfix release** for the legacy **3.6** series which has now reached **end-of-life** and is no longer supported. See the `downloads page `_ for currently supported versions of Python. The final source-only **security fix** release for 3.6 was `3.6.15 `_ and the final **bugfix release** was `3.6.8 `_.\r\n\r\nPlease see the `Full Changelog `_ link for more information about the contents of this release and `What\u2019s New In Python 3.6 `_ for more information about Python 3.6 features.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Python Development Cycle `_\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.6.13, a security bugfix release for the legacy 3.6 series which has now reached end-of-life and is no longer supported. See the downloads page for currently supported versions of Python. The final source-only security fix release for 3.6 was 3.6.15 and the final bugfix release was 3.6.8.

    \n

    Please see the Full Changelog link for more information about the contents of this release and What\u2019s New In Python 3.6 for more information about Python 3.6 features.

    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 576, + "fields": { + "created": "2021-02-16T19:37:26.784Z", + "updated": "2021-02-17T12:20:56.644Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.8rc1", + "slug": "python-388rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2021-02-16T19:27:39Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.8rc1/whatsnew/changelog.html#changelog", + "content": "## This is the release candidate of the eight maintenance release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.8rc1, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n3.8.8rc1 introduces two security fixes:\r\n\r\n- [bpo-42967](https://bugs.python.org/issue42967): Fix web cache poisoning vulnerability by defaulting the query args separator to `&`, and allowing the user to choose a custom separator.\r\n\r\n- [bpo-42938](https://bugs.python.org/issue42938): Avoid static buffers when computing the repr of `ctypes.c_double` and `ctypes.c_longdouble` values.\r\n\r\n## Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n## macOS users\r\n\r\n* For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n## And now for something completely different\r\n**Voice Over ([Michael Palin](https://montypython.net/scripts/boxer.php))**: This is Ken Clean-Air Systems, the great white hope of the British boxing world. After three fights - and only two convictions - his manager believes that Ken is now ready to face the giant American, Satellite Five.\r\n
    **Manager (Graham Chapman)**: The great thing about Ken is that he's almost totally stupid.\r\n
    *(Cut back to Ken jogging, the early morning sun filtering through the trees.)*\r\n
    **Voice Over**: Every morning, he jogs the forty-seven miles from his two-bedroomed, eight-bathroom, six-up-two-down, three-to-go-house in Reigate, to the Government's Pesticide Research Centre at Shoreham. Nobody knows why.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the release candidate of the eight maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.8rc1, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    3.8.8rc1 introduces two security fixes:

    \n
      \n
    • \n

      bpo-42967: Fix web cache poisoning vulnerability by defaulting the query args separator to &, and allowing the user to choose a custom separator.

      \n
    • \n
    • \n

      bpo-42938: Avoid static buffers when computing the repr of ctypes.c_double and ctypes.c_longdouble values.

      \n
    • \n
    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n

    Voice Over (Michael Palin): This is Ken Clean-Air Systems, the great white hope of the British boxing world. After three fights - and only two convictions - his manager believes that Ken is now ready to face the giant American, Satellite Five.\n
    Manager (Graham Chapman): The great thing about Ken is that he's almost totally stupid.\n
    (Cut back to Ken jogging, the early morning sun filtering through the trees.)\n
    Voice Over: Every morning, he jogs the forty-seven miles from his two-bedroomed, eight-bathroom, six-up-two-down, three-to-go-house in Reigate, to the Government's Pesticide Research Centre at Shoreham. Nobody knows why.

    " + } +}, +{ + "model": "downloads.release", + "pk": 577, + "fields": { + "created": "2021-02-16T21:25:09.692Z", + "updated": "2021-11-05T21:38:53.586Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.2rc1", + "slug": "python-392rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2021-02-16T21:22:36Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.2rc1/whatsnew/changelog.html#changelog", + "content": "## This is the release candidate of the second maintenance release of Python 3.9\r\n\r\n**Note:** The release you're looking at is Python 3.9.2rc1, a release candidate of a **bugfix release** for the legacy 3.9 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/). \r\n\r\nWe've made 161 commits since 3.9.1, among which you can find two security fixes:\r\n\r\n- [bpo-42967](https://bugs.python.org/issue42967): Fix web cache poisoning vulnerability by defaulting the query args separator to `&`, and allowing the user to choose a custom separator.\r\n\r\n- [bpo-42938](https://bugs.python.org/issue42938): Avoid static buffers when computing the repr of `ctypes.c_double` and `ctypes.c_longdouble` values.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 573](https://www.python.org/dev/peps/pep-0573/), Module State Access from C Extension Methods\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 614](https://www.python.org/dev/peps/pep-0614/), Relaxing Grammar Restrictions On Decorators\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\nYou can find a more comprehensive list in this release's \"[What's New](https://docs.python.org/release/3.9.0/whatsnew/3.9.html)\" document.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## And now for something completely different\r\n\r\n**Professor ([Eric Idle](http://www.montypython.50webs.com/scripts/Series_2/50.htm))**: It's an entirely new strain of sheep, a killer sheep that can not only hold a rifle but is also a first-class shot. \r\n
    **Assistant (Carol Cleveland)**: But where are they coming from, professor? \r\n
    **Professor**: That I don't know. I just don't know. I really just don't know. I'm afraid *even I* really just don't know. I have to tell you I'm *afraid* even I really just don't know. I'm afraid I have to tell you...\r\n
    *(she hands him a glass of water which she had been busy getting as soon as he started into this speech)* ... thank you ... *(resuming normal breezy voice)*\r\n
    **Professor**: ... I don't know. Our only clue is this portion of wolf's clothing which the killer sheep... \r\n
    **Viking (Terry Gilliam)**: ... was wearing... \r\n
    **Professor**: ... in yesterday's raid on Selfridges.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the release candidate of the second maintenance release of Python 3.9

    \n

    Note: The release you're looking at is Python 3.9.2rc1, a release candidate of a bugfix release for the legacy 3.9 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    We've made 161 commits since 3.9.1, among which you can find two security fixes:

    \n
      \n
    • \n

      bpo-42967: Fix web cache poisoning vulnerability by defaulting the query args separator to &, and allowing the user to choose a custom separator.

      \n
    • \n
    • \n

      bpo-42938: Avoid static buffers when computing the repr of ctypes.c_double and ctypes.c_longdouble values.

      \n
    • \n
    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 573, Module State Access from C Extension Methods
    • \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 614, Relaxing Grammar Restrictions On Decorators
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    You can find a more comprehensive list in this release's \"What's New\" document.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Professor (Eric Idle): It's an entirely new strain of sheep, a killer sheep that can not only hold a rifle but is also a first-class shot. \n
    Assistant (Carol Cleveland): But where are they coming from, professor? \n
    Professor: That I don't know. I just don't know. I really just don't know. I'm afraid even I really just don't know. I have to tell you I'm afraid even I really just don't know. I'm afraid I have to tell you...\n
    (she hands him a glass of water which she had been busy getting as soon as he started into this speech) ... thank you ... (resuming normal breezy voice)\n
    Professor: ... I don't know. Our only clue is this portion of wolf's clothing which the killer sheep... \n
    Viking (Terry Gilliam): ... was wearing... \n
    Professor: ... in yesterday's raid on Selfridges.

    " + } +}, +{ + "model": "downloads.release", + "pk": 578, + "fields": { + "created": "2021-02-19T12:50:34.374Z", + "updated": "2021-02-19T16:16:09.556Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.8", + "slug": "python-388", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-02-19T12:47:16Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.8/whatsnew/changelog.html#changelog", + "content": "## This is the eight maintenance release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.8, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n3.8.8 introduces two security fixes (also present in 3.8.8 RC1) and is recommended to all users:\r\n\r\n- [bpo-42938](https://bugs.python.org/issue42938): Avoid static buffers when computing the repr of `ctypes.c_double` and `ctypes.c_longdouble` values. This issue was assigned [CVE-2021-3177](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3177).\r\n\r\n- [bpo-42967](https://bugs.python.org/issue42967): Fix web cache poisoning vulnerability by defaulting the query args separator to `&`, and allowing the user to choose a custom separator. This issue was assigned [CVE-2021-23336](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-23336).\r\n\r\n\r\n## Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n## macOS users\r\n\r\n* For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n## And now for something completely different\r\n**Voice Over ([Michael Palin](https://montypython.net/scripts/boxer.php))**: This is Ken Clean-Air Systems, the great white hope of the British boxing world. After three fights - and only two convictions - his manager believes that Ken is now ready to face the giant American, Satellite Five.\r\n
    **Manager (Graham Chapman)**: The great thing about Ken is that he's almost totally stupid.\r\n
    *(Cut back to Ken jogging, the early morning sun filtering through the trees.)*\r\n
    **Voice Over**: Every morning, he jogs the forty-seven miles from his two-bedroomed, eight-bathroom, six-up-two-down, three-to-go-house in Reigate, to the Government's Pesticide Research Centre at Shoreham. Nobody knows why.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the eight maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.8, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    3.8.8 introduces two security fixes (also present in 3.8.8 RC1) and is recommended to all users:

    \n
      \n
    • \n

      bpo-42938: Avoid static buffers when computing the repr of ctypes.c_double and ctypes.c_longdouble values. This issue was assigned CVE-2021-3177.

      \n
    • \n
    • \n

      bpo-42967: Fix web cache poisoning vulnerability by defaulting the query args separator to &, and allowing the user to choose a custom separator. This issue was assigned CVE-2021-23336.

      \n
    • \n
    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And now for something completely different

    \n

    Voice Over (Michael Palin): This is Ken Clean-Air Systems, the great white hope of the British boxing world. After three fights - and only two convictions - his manager believes that Ken is now ready to face the giant American, Satellite Five.\n
    Manager (Graham Chapman): The great thing about Ken is that he's almost totally stupid.\n
    (Cut back to Ken jogging, the early morning sun filtering through the trees.)\n
    Voice Over: Every morning, he jogs the forty-seven miles from his two-bedroomed, eight-bathroom, six-up-two-down, three-to-go-house in Reigate, to the Government's Pesticide Research Centre at Shoreham. Nobody knows why.

    " + } +}, +{ + "model": "downloads.release", + "pk": 579, + "fields": { + "created": "2021-02-19T12:51:57.865Z", + "updated": "2021-11-05T21:38:29.651Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.2", + "slug": "python-392", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-02-19T12:50:40Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.2/whatsnew/changelog.html#changelog", + "content": "## This is the second maintenance release of Python 3.9\r\n\r\n**Note:** The release you're looking at is Python 3.9.2, a **bugfix release** for the legacy 3.9 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/). \r\n\r\nWe've made 166 commits since 3.9.1, among which you can find two security fixes:\r\n\r\n- [bpo-42938](https://bugs.python.org/issue42938): Avoid static buffers when computing the repr of `ctypes.c_double` and `ctypes.c_longdouble` values. This issue was assigned [CVE-2021-3177](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3177).\r\n\r\n- [bpo-42967](https://bugs.python.org/issue42967): Fix web cache poisoning vulnerability by defaulting the query args separator to `&`, and allowing the user to choose a custom separator. This issue was assigned [CVE-2021-23336](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-23336).\r\n\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 573](https://www.python.org/dev/peps/pep-0573/), Module State Access from C Extension Methods\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 614](https://www.python.org/dev/peps/pep-0614/), Relaxing Grammar Restrictions On Decorators\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\nYou can find a more comprehensive list in this release's \"[What's New](https://docs.python.org/release/3.9.0/whatsnew/3.9.html)\" document.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## And now for something completely different\r\n\r\n**Professor ([Eric Idle](http://www.montypython.50webs.com/scripts/Series_2/50.htm))**: It's an entirely new strain of sheep, a killer sheep that can not only hold a rifle but is also a first-class shot. \r\n
    **Assistant (Carol Cleveland)**: But where are they coming from, professor? \r\n
    **Professor**: That I don't know. I just don't know. I really just don't know. I'm afraid *even I* really just don't know. I have to tell you I'm *afraid* even I really just don't know. I'm afraid I have to tell you...\r\n
    *(she hands him a glass of water which she had been busy getting as soon as he started into this speech)* ... thank you ... *(resuming normal breezy voice)*\r\n
    **Professor**: ... I don't know. Our only clue is this portion of wolf's clothing which the killer sheep... \r\n
    **Viking (Terry Gilliam)**: ... was wearing... \r\n
    **Professor**: ... in yesterday's raid on Selfridges.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the second maintenance release of Python 3.9

    \n

    Note: The release you're looking at is Python 3.9.2, a bugfix release for the legacy 3.9 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    We've made 166 commits since 3.9.1, among which you can find two security fixes:

    \n
      \n
    • \n

      bpo-42938: Avoid static buffers when computing the repr of ctypes.c_double and ctypes.c_longdouble values. This issue was assigned CVE-2021-3177.

      \n
    • \n
    • \n

      bpo-42967: Fix web cache poisoning vulnerability by defaulting the query args separator to &, and allowing the user to choose a custom separator. This issue was assigned CVE-2021-23336.

      \n
    • \n
    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 573, Module State Access from C Extension Methods
    • \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 614, Relaxing Grammar Restrictions On Decorators
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    You can find a more comprehensive list in this release's \"What's New\" document.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Professor (Eric Idle): It's an entirely new strain of sheep, a killer sheep that can not only hold a rifle but is also a first-class shot. \n
    Assistant (Carol Cleveland): But where are they coming from, professor? \n
    Professor: That I don't know. I just don't know. I really just don't know. I'm afraid even I really just don't know. I have to tell you I'm afraid even I really just don't know. I'm afraid I have to tell you...\n
    (she hands him a glass of water which she had been busy getting as soon as he started into this speech) ... thank you ... (resuming normal breezy voice)\n
    Professor: ... I don't know. Our only clue is this portion of wolf's clothing which the killer sheep... \n
    Viking (Terry Gilliam): ... was wearing... \n
    Professor: ... in yesterday's raid on Selfridges.

    " + } +}, +{ + "model": "downloads.release", + "pk": 580, + "fields": { + "created": "2021-03-01T16:56:29.473Z", + "updated": "2021-03-01T19:59:35.951Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.0a6", + "slug": "python-3100a6", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2021-03-01T16:54:09Z", + "release_page": null, + "release_notes_url": "", + "content": "**This is an early developer preview of Python 3.10**\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nPython 3.10 is still in development. This release, 3.10.0a6 is the sixth of seven planned alpha releases.\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2021-05-03) and, if necessary, may be modified or deleted up until the release candidate phase (2021-10-04). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.10 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Remove wstr from Unicode\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) is now the default.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n* [PEP 634 ](https://www.python.org/dev/peps/pep-0634/) -- Structural Pattern Matching: Specification\r\n* [PEP 635 ](https://www.python.org/dev/peps/pep-0635/) -- Structural Pattern Matching: Motivation and Rationale\r\n* [PEP 636 ](https://www.python.org/dev/peps/pep-0636/) -- Structural Pattern Matching: Tutorial\r\n\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.10 will be 3.10.0a7 ( last alpha release), currently scheduled for Monday, 2021-04-05.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nSchwarzschild wormholes, also known as Einstein\u2013Rosen bridges (named after Albert Einstein and Nathan Rosen), are connections between areas of space that can be modelled as vacuum solutions to the Einstein field equations, and that are now understood to be intrinsic parts of the maximally extended version of the Schwarzschild metric describing an eternal black hole with no charge and no rotation. Here, \"maximally extended\" refers to the idea that the spacetime should not have any \"edges\": it should be possible to continue this path arbitrarily far into the particle's future or past for any possible trajectory of a free-falling particle (following a geodesic in the spacetime).\r\n\r\nAlthough Schwarzschild wormholes are not traversable in both directions, their existence inspired Kip Thorne to imagine traversable wormholes created by holding the \"throat\" of a Schwarzschild wormhole open with exotic matter (material that has negative mass/energy).", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.10

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Python 3.10 is still in development. This release, 3.10.0a6 is the sixth of seven planned alpha releases.\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of the beta phase (2021-05-03) and, if necessary, may be modified or deleted up until the release candidate phase (2021-10-04). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Many new features for Python 3.10 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 623 -- Remove wstr from Unicode
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • bpo-38605: from __future__ import annotations (PEP 563) is now the default.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • PEP 613 -- Explicit Type Aliases
    • \n
    • PEP 634 -- Structural Pattern Matching: Specification
    • \n
    • PEP 635 -- Structural Pattern Matching: Motivation and Rationale
    • \n
    • \n

      PEP 636 -- Structural Pattern Matching: Tutorial

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

      \n
    • \n
    \n

    The next pre-release of Python 3.10 will be 3.10.0a7 ( last alpha release), currently scheduled for Monday, 2021-04-05.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Schwarzschild wormholes, also known as Einstein\u2013Rosen bridges (named after Albert Einstein and Nathan Rosen), are connections between areas of space that can be modelled as vacuum solutions to the Einstein field equations, and that are now understood to be intrinsic parts of the maximally extended version of the Schwarzschild metric describing an eternal black hole with no charge and no rotation. Here, \"maximally extended\" refers to the idea that the spacetime should not have any \"edges\": it should be possible to continue this path arbitrarily far into the particle's future or past for any possible trajectory of a free-falling particle (following a geodesic in the spacetime).

    \n

    Although Schwarzschild wormholes are not traversable in both directions, their existence inspired Kip Thorne to imagine traversable wormholes created by holding the \"throat\" of a Schwarzschild wormhole open with exotic matter (material that has negative mass/energy).

    " + } +}, +{ + "model": "downloads.release", + "pk": 613, + "fields": { + "created": "2021-04-02T17:31:30.744Z", + "updated": "2021-04-02T17:32:03.516Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.9", + "slug": "python-389", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-04-02T17:25:41Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.9/whatsnew/changelog.html#python-3-8-9", + "content": "## This is the ninth maintenance release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.9, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\n3.8.9 is an expedited release which includes a number of security fixes and is recommended to all users:\r\n\r\n- [bpo-43631](https://bugs.python.org/issue43631): high-severity CVE-2021-3449 and CVE-2021-3450 were published for OpenSSL, it's been upgraded to 1.1.1k in CI, and macOS and Windows installers.\r\n- [bpo-42988](https://bugs.python.org/issue42988): CVE-2021-3426: Remove the getfile feature of the pydoc module which could be abused to read arbitrary files on the disk (directory traversal vulnerability). Moreover, even source code of Python modules can contain sensitive data like passwords. Vulnerability reported by David Schw\u00f6rer.\r\n- [bpo-43285](https://bugs.python.org/issue43285): ftplib no longer trusts the IP address value returned from the server in response to the PASV command by default. This prevents a malicious FTP server from using the response to probe IPv4 address and port combinations on the client network. Code that requires the former vulnerable behavior may set a trust_server_pasv_ipv4_address attribute on their ftplib.FTP instances to True to re-enable it.\r\n- [bpo-43439](https://bugs.python.org/issue43439): Add audit hooks for gc.get_objects(), gc.get_referrers() and gc.get_referents(). Patch by Pablo Galindo.\r\n\r\n## Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n## macOS users\r\n\r\n* For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the ninth maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.9, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    3.8.9 is an expedited release which includes a number of security fixes and is recommended to all users:

    \n
      \n
    • bpo-43631: high-severity CVE-2021-3449 and CVE-2021-3450 were published for OpenSSL, it's been upgraded to 1.1.1k in CI, and macOS and Windows installers.
    • \n
    • bpo-42988: CVE-2021-3426: Remove the getfile feature of the pydoc module which could be abused to read arbitrary files on the disk (directory traversal vulnerability). Moreover, even source code of Python modules can contain sensitive data like passwords. Vulnerability reported by David Schw\u00f6rer.
    • \n
    • bpo-43285: ftplib no longer trusts the IP address value returned from the server in response to the PASV command by default. This prevents a malicious FTP server from using the response to probe IPv4 address and port combinations on the client network. Code that requires the former vulnerable behavior may set a trust_server_pasv_ipv4_address attribute on their ftplib.FTP instances to True to re-enable it.
    • \n
    • bpo-43439: Add audit hooks for gc.get_objects(), gc.get_referrers() and gc.get_referents(). Patch by Pablo Galindo.
    • \n
    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • For Python 3.8, we provide one installer: 64-bit-only that works on macOS 10.9 (Mavericks) and later systems.
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    " + } +}, +{ + "model": "downloads.release", + "pk": 614, + "fields": { + "created": "2021-04-02T17:44:27.296Z", + "updated": "2021-04-04T18:37:38.040Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.3", + "slug": "python-393", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": false, + "release_date": "2021-04-02T17:32:13Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.3/whatsnew/changelog.html#changelog", + "content": "## This is the third maintenance release of Python 3.9\r\n\r\n**NOTE:** **The release you're looking at has been recalled due to unintentional breakage of ABI compatibility with C extensions built in Python 3.9.0 - 3.9.2.** Details in [bpo-43710](https://bugs.python.org/issue43710). [Please use Python 3.9.4 or newer instead](/downloads/).\r\n\r\nPython 3.9.3 is an expedited release which includes a number of security fixes and is recommended to all users:\r\n\r\n- [bpo-43631](https://bugs.python.org/issue43631): high-severity CVE-2021-3449 and CVE-2021-3450 were published for OpenSSL, it's been upgraded to 1.1.1k in CI, and macOS and Windows installers.\r\n- [bpo-42988](https://bugs.python.org/issue42988): CVE-2021-3426: Remove the getfile feature of the pydoc module which could be abused to read arbitrary files on the disk (directory traversal vulnerability). Moreover, even source code of Python modules can contain sensitive data like passwords. Vulnerability reported by David Schw\u00f6rer.\r\n- [bpo-43285](https://bugs.python.org/issue43285): ftplib no longer trusts the IP address value returned from the server in response to the PASV command by default. This prevents a malicious FTP server from using the response to probe IPv4 address and port combinations on the client network. Code that requires the former vulnerable behavior may set a trust_server_pasv_ipv4_address attribute on their ftplib.FTP instances to True to re-enable it.\r\n- [bpo-43439](https://bugs.python.org/issue43439): Add audit hooks for gc.get_objects(), gc.get_referrers() and gc.get_referents(). Patch by Pablo Galindo.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 573](https://www.python.org/dev/peps/pep-0573/), Module State Access from C Extension Methods\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 614](https://www.python.org/dev/peps/pep-0614/), Relaxing Grammar Restrictions On Decorators\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\nYou can find a more comprehensive list in this release's \"[What's New](https://docs.python.org/release/3.9.0/whatsnew/3.9.html)\" document.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## Where are the files?\r\nThe release you're looking at has been recalled due to unintentional breakage of ABI compatibility with C extensions built in Python 3.9.0 - 3.9.2. Details in [bpo-43710](https://bugs.python.org/issue43710). [Please use Python 3.9.4 or newer instead](/downloads/).\r\n\r\nIf you really need the files from this release for some particular purpose, you can download them from [/ftp/python/](https://www.python.org/ftp/python/).", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the third maintenance release of Python 3.9

    \n

    NOTE: The release you're looking at has been recalled due to unintentional breakage of ABI compatibility with C extensions built in Python 3.9.0 - 3.9.2. Details in bpo-43710. Please use Python 3.9.4 or newer instead.

    \n

    Python 3.9.3 is an expedited release which includes a number of security fixes and is recommended to all users:

    \n
      \n
    • bpo-43631: high-severity CVE-2021-3449 and CVE-2021-3450 were published for OpenSSL, it's been upgraded to 1.1.1k in CI, and macOS and Windows installers.
    • \n
    • bpo-42988: CVE-2021-3426: Remove the getfile feature of the pydoc module which could be abused to read arbitrary files on the disk (directory traversal vulnerability). Moreover, even source code of Python modules can contain sensitive data like passwords. Vulnerability reported by David Schw\u00f6rer.
    • \n
    • bpo-43285: ftplib no longer trusts the IP address value returned from the server in response to the PASV command by default. This prevents a malicious FTP server from using the response to probe IPv4 address and port combinations on the client network. Code that requires the former vulnerable behavior may set a trust_server_pasv_ipv4_address attribute on their ftplib.FTP instances to True to re-enable it.
    • \n
    • bpo-43439: Add audit hooks for gc.get_objects(), gc.get_referrers() and gc.get_referents(). Patch by Pablo Galindo.
    • \n
    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 573, Module State Access from C Extension Methods
    • \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 614, Relaxing Grammar Restrictions On Decorators
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    You can find a more comprehensive list in this release's \"What's New\" document.

    \n

    More resources

    \n\n

    Where are the files?

    \n

    The release you're looking at has been recalled due to unintentional breakage of ABI compatibility with C extensions built in Python 3.9.0 - 3.9.2. Details in bpo-43710. Please use Python 3.9.4 or newer instead.

    \n

    If you really need the files from this release for some particular purpose, you can download them from /ftp/python/.

    " + } +}, +{ + "model": "downloads.release", + "pk": 615, + "fields": { + "created": "2021-04-04T14:35:33.030Z", + "updated": "2021-11-05T21:37:57.796Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.4", + "slug": "python-394", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-04-04T13:22:44Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.4/whatsnew/changelog.html#changelog", + "content": "## This is the fourth maintenance release of Python 3.9\r\n\r\n**Note:** The release you're looking at is Python 3.9.4, a **bugfix release** for the legacy 3.9 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/). \r\n\r\nPython 3.9.4 is a hotfix release addressing an unintentional ABI incompatibility introduced in Python 3.9.3. **Upgrading is highly recommended to all users.** Details in [bpo-43710](https://bugs.python.org/issue43710). \r\n\r\nTo reiterate, Python 3.9.3 was itself an expedited release due to its security content:\r\n\r\n- [bpo-43631](https://bugs.python.org/issue43631): high-severity CVE-2021-3449 and CVE-2021-3450 were published for OpenSSL, it's been upgraded to 1.1.1k in CI, and macOS and Windows installers.\r\n- [bpo-42988](https://bugs.python.org/issue42988): CVE-2021-3426: Remove the getfile feature of the pydoc module which could be abused to read arbitrary files on the disk (directory traversal vulnerability). Moreover, even source code of Python modules can contain sensitive data like passwords. Vulnerability reported by David Schw\u00f6rer.\r\n- [bpo-43285](https://bugs.python.org/issue43285): ftplib no longer trusts the IP address value returned from the server in response to the PASV command by default. This prevents a malicious FTP server from using the response to probe IPv4 address and port combinations on the client network. Code that requires the former vulnerable behavior may set a trust_server_pasv_ipv4_address attribute on their ftplib.FTP instances to True to re-enable it.\r\n- [bpo-43439](https://bugs.python.org/issue43439): Add audit hooks for gc.get_objects(), gc.get_referrers() and gc.get_referents(). Patch by Pablo Galindo.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 573](https://www.python.org/dev/peps/pep-0573/), Module State Access from C Extension Methods\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 614](https://www.python.org/dev/peps/pep-0614/), Relaxing Grammar Restrictions On Decorators\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\nYou can find a more comprehensive list in this release's \"[What's New](https://docs.python.org/release/3.9.0/whatsnew/3.9.html)\" document.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the fourth maintenance release of Python 3.9

    \n

    Note: The release you're looking at is Python 3.9.4, a bugfix release for the legacy 3.9 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    Python 3.9.4 is a hotfix release addressing an unintentional ABI incompatibility introduced in Python 3.9.3. Upgrading is highly recommended to all users. Details in bpo-43710.

    \n

    To reiterate, Python 3.9.3 was itself an expedited release due to its security content:

    \n
      \n
    • bpo-43631: high-severity CVE-2021-3449 and CVE-2021-3450 were published for OpenSSL, it's been upgraded to 1.1.1k in CI, and macOS and Windows installers.
    • \n
    • bpo-42988: CVE-2021-3426: Remove the getfile feature of the pydoc module which could be abused to read arbitrary files on the disk (directory traversal vulnerability). Moreover, even source code of Python modules can contain sensitive data like passwords. Vulnerability reported by David Schw\u00f6rer.
    • \n
    • bpo-43285: ftplib no longer trusts the IP address value returned from the server in response to the PASV command by default. This prevents a malicious FTP server from using the response to probe IPv4 address and port combinations on the client network. Code that requires the former vulnerable behavior may set a trust_server_pasv_ipv4_address attribute on their ftplib.FTP instances to True to re-enable it.
    • \n
    • bpo-43439: Add audit hooks for gc.get_objects(), gc.get_referrers() and gc.get_referents(). Patch by Pablo Galindo.
    • \n
    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 573, Module State Access from C Extension Methods
    • \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 614, Relaxing Grammar Restrictions On Decorators
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    You can find a more comprehensive list in this release's \"What's New\" document.

    \n

    More resources

    \n" + } +}, +{ + "model": "downloads.release", + "pk": 616, + "fields": { + "created": "2021-04-05T16:56:49.378Z", + "updated": "2021-04-06T22:12:43.620Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.0a7", + "slug": "python-3100a7", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2021-04-05T16:50:03Z", + "release_page": null, + "release_notes_url": "", + "content": "**This is an early developer preview of Python 3.10**\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nPython 3.10 is still in development. This release, 3.10.0a7 is the **last** of seven planned alpha releases.\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2021-05-03) and, if necessary, may be modified or deleted up until the release candidate phase (2021-10-04). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.10 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) is now the default.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n* [PEP 634 ](https://www.python.org/dev/peps/pep-0634/) -- Structural Pattern Matching: Specification\r\n* [PEP 635 ](https://www.python.org/dev/peps/pep-0635/) -- Structural Pattern Matching: Motivation and Rationale\r\n* [PEP 636 ](https://www.python.org/dev/peps/pep-0636/) -- Structural Pattern Matching: Tutorial\r\n* [PEP 644 ](https://www.python.org/dev/peps/pep-0644/) -- Require OpenSSL 1.1.1 or newer\r\n* [PEP 624 ](https://www.python.org/dev/peps/pep-0624/) -- Remove Py_UNICODE encoder APIs\r\n* [PEP 597 ](https://www.python.org/dev/peps/pep-0597/) -- Add optional EncodingWarning\r\n\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.10 will be 3.10.0b1 ( the first beta release and **feature freeze**), currently scheduled for Monday, 2021-05-03.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nIn physics, the [twin paradox](https://en.wikipedia.org/wiki/Twin_paradox) is a thought experiment in special relativity involving identical twins, one of whom makes a journey into space in a high-speed rocket and returns home to find that the twin who remained on Earth has aged more. This result appears puzzling because each twin sees the other twin as moving, and so, as a consequence of an incorrect and naive application of time dilation and the principle of relativity, each should paradoxically find the other to have aged less. However, this scenario can be resolved by realising that the travelling twin is undergoing acceleration, which makes him a non-inertial observer. In both views, there is no symmetry between the spacetime paths of the twins. Therefore, the twin paradox is not a paradox in the sense of a logical contradiction.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.10

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Python 3.10 is still in development. This release, 3.10.0a7 is the last of seven planned alpha releases.\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\nDuring the alpha phase, features may be added up until the start of the beta phase (2021-05-03) and, if necessary, may be modified or deleted up until the release candidate phase (2021-10-04). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Many new features for Python 3.10 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • bpo-38605: from __future__ import annotations (PEP 563) is now the default.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • PEP 613 -- Explicit Type Aliases
    • \n
    • PEP 634 -- Structural Pattern Matching: Specification
    • \n
    • PEP 635 -- Structural Pattern Matching: Motivation and Rationale
    • \n
    • PEP 636 -- Structural Pattern Matching: Tutorial
    • \n
    • PEP 644 -- Require OpenSSL 1.1.1 or newer
    • \n
    • PEP 624 -- Remove Py_UNICODE encoder APIs
    • \n
    • \n

      PEP 597 -- Add optional EncodingWarning

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

      \n
    • \n
    \n

    The next pre-release of Python 3.10 will be 3.10.0b1 ( the first beta release and feature freeze), currently scheduled for Monday, 2021-05-03.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    In physics, the twin paradox is a thought experiment in special relativity involving identical twins, one of whom makes a journey into space in a high-speed rocket and returns home to find that the twin who remained on Earth has aged more. This result appears puzzling because each twin sees the other twin as moving, and so, as a consequence of an incorrect and naive application of time dilation and the principle of relativity, each should paradoxically find the other to have aged less. However, this scenario can be resolved by realising that the travelling twin is undergoing acceleration, which makes him a non-inertial observer. In both views, there is no symmetry between the spacetime paths of the twins. Therefore, the twin paradox is not a paradox in the sense of a logical contradiction.

    " + } +}, +{ + "model": "downloads.release", + "pk": 617, + "fields": { + "created": "2021-05-03T13:17:13.020Z", + "updated": "2021-05-03T14:13:03.938Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.10", + "slug": "python-3810", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-05-03T12:53:48Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.10/whatsnew/changelog.html", + "content": "## This is the tenth and final regular maintenance release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.10, a **bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/). \r\n\r\nAccording to the release calendar specified in [PEP 569](https://www.python.org/dev/peps/pep-0569/), Python 3.8.10 is the final regular maintenance release. Starting now, the 3.8 branch will only accept security fixes and releases of those will be made in source-only form until October 2024.\r\n\r\nCompared to the 3.7 series, this last regular bugfix release is relatively dormant at 92 commits since 3.8.9. Version 3.7.8, the final regular bugfix release of Python 3.7, included 187 commits. But there's a bunch of important updates here regardless, the biggest being Big Sur and Apple Silicon build support. This work would not have been possible without the effort of Ronald Oussoren, Ned Deily, Maxime B\u00e9langer, and Lawrence D\u2019Anna from Apple. Thank you!\r\n\r\nTake a look at the [change log](https://docs.python.org/release/3.8.10/whatsnew/changelog.html) for details.\r\n\r\n## Major new features of the 3.8 series, compared to 3.7\r\n\r\n* [PEP 572](https://www.python.org/dev/peps/pep-0572/), Assignment expressions\r\n* [PEP 570](https://www.python.org/dev/peps/pep-0570/), Positional-only arguments\r\n* [PEP 587](https://www.python.org/dev/peps/pep-0587/), Python Initialization Configuration (improved embedding)\r\n* [PEP 590](https://www.python.org/dev/peps/pep-0590/), Vectorcall: a fast calling protocol for CPython\r\n* [PEP 578](https://www.python.org/dev/peps/pep-0578), Runtime audit hooks\r\n* [PEP 574](https://www.python.org/dev/peps/pep-0574), Pickle protocol 5 with out-of-band data\r\n* Typing-related: [PEP 591](https://www.python.org/dev/peps/pep-0591) (Final qualifier), [PEP 586](https://www.python.org/dev/peps/pep-0586) (Literal types), and [PEP 589](https://www.python.org/dev/peps/pep-0589) (TypedDict)\r\n* Parallel filesystem cache for compiled bytecode\r\n* Debug builds share ABI as release builds\r\n* f-strings support a handy `=` specifier for debugging\r\n* `continue` is now legal in `finally:` blocks\r\n* on Windows, the default `asyncio` event loop is now `ProactorEventLoop`\r\n* on macOS, the *spawn* start method is now used by default in `multiprocessing`\r\n* `multiprocessing` can now use shared memory segments to avoid pickling costs between processes\r\n* `typed_ast` is merged back to CPython\r\n* `LOAD_GLOBAL` is now 40% faster\r\n* `pickle` now uses Protocol 4 by default, improving performance\r\n\r\nThere are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.8/)\r\n* [PEP 569](https://www.python.org/dev/peps/pep-0569/), 3.8 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## Windows users\r\n\r\n* The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)\r\n* There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.\r\n* There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding [Embedded Distribution](https://docs.python.org/3.8/using/windows.html#embedded-distribution) for more information.\r\n\r\n## macOS users\r\n* Python 3.8.10 ships two installers: the default 64-bit-only that works on macOS 10.9 (Mavericks) and later systems, and an experimental \"universal2\" installer for macOS 11 (Big Sur) and later\r\n* Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".\r\n\r\n## And Now For Something Completely Different\r\n**Mr. Praline ([John Cleese](https://montypython.fandom.com/wiki/Dead_Parrot)):** 'ELLO POLLY!!! Testing! Testing! This is your nine o'clock alarm call!\r\n
    *(Takes parrot out of the cage , throws it up in the air and watches it plummet to the floor.)*\r\n
    **Mr. Praline:** Now that's what I call a dead parrot.\r\n
    **Owner (Michael Palin):** No, no... No, he's *stunned*!\r\n
    **Mr. Praline:** STUNNED?!\r\n
    **Owner:** Yeah! You stunned him, just as he was wakin' up! Norwegian Blues stun easily, major.\r\n
    **Mr. Praline:** Um... now look, mate. I've definitely 'ad enough of this. That parrot is definitely deceased, and when I purchased it not 'alf an hour ago, you assured me that its total lack of movement was due to it bein' tired and shagged out following a prolonged squawk.\r\n
    **Owner:** Well, he's... he's, ah... probably pining for the fjords.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the tenth and final regular maintenance release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.10, a bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    According to the release calendar specified in PEP 569, Python 3.8.10 is the final regular maintenance release. Starting now, the 3.8 branch will only accept security fixes and releases of those will be made in source-only form until October 2024.

    \n

    Compared to the 3.7 series, this last regular bugfix release is relatively dormant at 92 commits since 3.8.9. Version 3.7.8, the final regular bugfix release of Python 3.7, included 187 commits. But there's a bunch of important updates here regardless, the biggest being Big Sur and Apple Silicon build support. This work would not have been possible without the effort of Ronald Oussoren, Ned Deily, Maxime B\u00e9langer, and Lawrence D\u2019Anna from Apple. Thank you!

    \n

    Take a look at the change log for details.

    \n

    Major new features of the 3.8 series, compared to 3.7

    \n
      \n
    • PEP 572, Assignment expressions
    • \n
    • PEP 570, Positional-only arguments
    • \n
    • PEP 587, Python Initialization Configuration (improved embedding)
    • \n
    • PEP 590, Vectorcall: a fast calling protocol for CPython
    • \n
    • PEP 578, Runtime audit hooks
    • \n
    • PEP 574, Pickle protocol 5 with out-of-band data
    • \n
    • Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
    • \n
    • Parallel filesystem cache for compiled bytecode
    • \n
    • Debug builds share ABI as release builds
    • \n
    • f-strings support a handy = specifier for debugging
    • \n
    • continue is now legal in finally: blocks
    • \n
    • on Windows, the default asyncio event loop is now ProactorEventLoop
    • \n
    • on macOS, the spawn start method is now used by default in multiprocessing
    • \n
    • multiprocessing can now use shared memory segments to avoid pickling costs between processes
    • \n
    • typed_ast is merged back to CPython
    • \n
    • LOAD_GLOBAL is now 40% faster
    • \n
    • pickle now uses Protocol 4 by default, improving performance
    • \n
    \n

    There are many other interesting changes, please consult the \"What's New\" page in the documentation for a full list.

    \n

    More resources

    \n\n

    Windows users

    \n
      \n
    • The binaries for AMD64 will also work on processors that implement the Intel 64 architecture. (Also known as the \"x64\" architecture, and formerly known as both \"EM64T\" and \"x86-64\".)
    • \n
    • There are now \"web-based\" installers for Windows platforms; the installer will download the needed software components at installation time.
    • \n
    • There are redistributable zip files containing the Windows builds, making it easy to redistribute Python as part of another software package. Please see the documentation regarding Embedded Distribution for more information.
    • \n
    \n

    macOS users

    \n
      \n
    • Python 3.8.10 ships two installers: the default 64-bit-only that works on macOS 10.9 (Mavericks) and later systems, and an experimental \"universal2\" installer for macOS 11 (Big Sur) and later
    • \n
    • Please read the \"Important Information\" displayed during installation for information about SSL/TLS certificate validation and the running the \"Install Certificates.command\".
    • \n
    \n

    And Now For Something Completely Different

    \n

    Mr. Praline (John Cleese): 'ELLO POLLY!!! Testing! Testing! This is your nine o'clock alarm call!\n
    (Takes parrot out of the cage , throws it up in the air and watches it plummet to the floor.)\n
    Mr. Praline: Now that's what I call a dead parrot.\n
    Owner (Michael Palin): No, no... No, he's stunned!\n
    Mr. Praline: STUNNED?!\n
    Owner: Yeah! You stunned him, just as he was wakin' up! Norwegian Blues stun easily, major.\n
    Mr. Praline: Um... now look, mate. I've definitely 'ad enough of this. That parrot is definitely deceased, and when I purchased it not 'alf an hour ago, you assured me that its total lack of movement was due to it bein' tired and shagged out following a prolonged squawk.\n
    Owner: Well, he's... he's, ah... probably pining for the fjords.

    " + } +}, +{ + "model": "downloads.release", + "pk": 618, + "fields": { + "created": "2021-05-03T14:09:34.843Z", + "updated": "2021-11-05T21:37:38.134Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.5", + "slug": "python-395", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-05-03T13:39:48Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.5/whatsnew/changelog.html", + "content": "## This is the fifth maintenance release of Python 3.9\r\n\r\n**Note:** The release you're looking at is Python 3.9.5, a **bugfix release** for the legacy 3.9 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/). \r\n\r\nThere's been 111 commits since 3.9.4 which is a similar amount compared to 3.8 at the same stage of the release cycle. See the [changelog](https://docs.python.org/release/3.9.5/whatsnew/changelog.html) for details.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 573](https://www.python.org/dev/peps/pep-0573/), Module State Access from C Extension Methods\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 614](https://www.python.org/dev/peps/pep-0614/), Relaxing Grammar Restrictions On Decorators\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\nYou can find a more comprehensive list in this release's \"[What's New](https://docs.python.org/release/3.9.0/whatsnew/3.9.html)\" document.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## And Now for Something Completely Different\r\n**Mr. Praline ([John Cleese](https://montypython.fandom.com/wiki/Dead_Parrot)):** I wish to complain, British-Railways Person.\r\n
    **Attendant (Terry Jones):** I DON'T HAVE TO DO THIS JOB, YOU KNOW!!!\r\n
    **Mr. Praline:** I beg your pardon...?\r\n
    **Attendant:** I'm a qualified brain surgeon! I only do this job because I like being my own boss!\r\n
    **Mr. Praline:** Excuse me, this is irrelevant, isn't it?\r\n
    **Attendant:** Yeah, well it's not easy to pad these python files out to 150 lines, you know.\r\n
    **Mr. Praline:** Well, I wish to complain. I got on the Bolton train and found myself deposited here in Ipswitch.\r\n
    **Attendant:** No, this is Bolton.\r\n
    **Mr. Praline:** *(to the camera)* The pet shop man's brother was LYING!\r\n
    **Attendant:** Can't blame British Rail for *that*.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the fifth maintenance release of Python 3.9

    \n

    Note: The release you're looking at is Python 3.9.5, a bugfix release for the legacy 3.9 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    There's been 111 commits since 3.9.4 which is a similar amount compared to 3.8 at the same stage of the release cycle. See the changelog for details.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 573, Module State Access from C Extension Methods
    • \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 614, Relaxing Grammar Restrictions On Decorators
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    You can find a more comprehensive list in this release's \"What's New\" document.

    \n

    More resources

    \n\n

    And Now for Something Completely Different

    \n

    Mr. Praline (John Cleese): I wish to complain, British-Railways Person.\n
    Attendant (Terry Jones): I DON'T HAVE TO DO THIS JOB, YOU KNOW!!!\n
    Mr. Praline: I beg your pardon...?\n
    Attendant: I'm a qualified brain surgeon! I only do this job because I like being my own boss!\n
    Mr. Praline: Excuse me, this is irrelevant, isn't it?\n
    Attendant: Yeah, well it's not easy to pad these python files out to 150 lines, you know.\n
    Mr. Praline: Well, I wish to complain. I got on the Bolton train and found myself deposited here in Ipswitch.\n
    Attendant: No, this is Bolton.\n
    Mr. Praline: (to the camera) The pet shop man's brother was LYING!\n
    Attendant: Can't blame British Rail for that.

    " + } +}, +{ + "model": "downloads.release", + "pk": 619, + "fields": { + "created": "2021-05-03T20:11:35.561Z", + "updated": "2021-05-03T23:21:55.277Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.0b1", + "slug": "python-3100b1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2021-05-03T20:04:49Z", + "release_page": null, + "release_notes_url": "", + "content": "## This is a beta preview of Python 3.10\r\n\r\nPython 3.10 is still in development. 3.10.0b1 is the first of four planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.10** during the beta phase and report issues found to [the Python bug tracker](https://bugs.python.org) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is have no ABI changes after beta 4 and as few code changes as possible after 3.10.0rc1, the first release candidate. To achieve that, it will be **extremely important** to get as much exposure for 3.10 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nPython 3.10 is still in development. This release, 3.10.0b1 is the **first** of four beta releases.\r\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release. \r\n\r\nMany new features for Python 3.10 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n* [PEP 634 ](https://www.python.org/dev/peps/pep-0634/) -- Structural Pattern Matching: Specification\r\n* [PEP 635 ](https://www.python.org/dev/peps/pep-0635/) -- Structural Pattern Matching: Motivation and Rationale\r\n* [PEP 636 ](https://www.python.org/dev/peps/pep-0636/) -- Structural Pattern Matching: Tutorial\r\n* [PEP 644 ](https://www.python.org/dev/peps/pep-0644/) -- Require OpenSSL 1.1.1 or newer\r\n* [PEP 624 ](https://www.python.org/dev/peps/pep-0624/) -- Remove Py_UNICODE encoder APIs\r\n* [PEP 597 ](https://www.python.org/dev/peps/pep-0597/) -- Add optional EncodingWarning\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.10 will be 3.10.0b2, currently scheduled for Tuesday, 2021-05-25.\r\n\r\n[bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) used to be on this list\r\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it [here](https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/) to learn more.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nWhen a spherical non-rotating body of a critical radius collapses under its own gravitation under general relativity, theory suggests it will collapse to a single point. This is not the case with a rotating black hole (a Kerr black hole). With a fluid rotating body, its distribution of mass is not spherical (it shows an equatorial bulge), and it has angular momentum. Since a point cannot support rotation or angular momentum in classical physics (general relativity being a classical theory), the minimal shape of the singularity that can support these properties is instead a ring with zero thickness but non-zero radius, and this is referred to as a ringularity or Kerr singularity.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.10

    \n

    Python 3.10 is still in development. 3.10.0b1 is the first of four planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.10 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is have no ABI changes after beta 4 and as few code changes as possible after 3.10.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.10 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Python 3.10 is still in development. This release, 3.10.0b1 is the first of four beta releases.\nBeta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    Many new features for Python 3.10 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • PEP 613 -- Explicit Type Aliases
    • \n
    • PEP 634 -- Structural Pattern Matching: Specification
    • \n
    • PEP 635 -- Structural Pattern Matching: Motivation and Rationale
    • \n
    • PEP 636 -- Structural Pattern Matching: Tutorial
    • \n
    • PEP 644 -- Require OpenSSL 1.1.1 or newer
    • \n
    • PEP 624 -- Remove Py_UNICODE encoder APIs
    • \n
    • \n

      PEP 597 -- Add optional EncodingWarning

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

      \n
    • \n
    \n

    The next pre-release of Python 3.10 will be 3.10.0b2, currently scheduled for Tuesday, 2021-05-25.

    \n

    bpo-38605: from __future__ import annotations (PEP 563) used to be on this list\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it here to learn more.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    When a spherical non-rotating body of a critical radius collapses under its own gravitation under general relativity, theory suggests it will collapse to a single point. This is not the case with a rotating black hole (a Kerr black hole). With a fluid rotating body, its distribution of mass is not spherical (it shows an equatorial bulge), and it has angular momentum. Since a point cannot support rotation or angular momentum in classical physics (general relativity being a classical theory), the minimal shape of the singularity that can support these properties is instead a ring with zero thickness but non-zero radius, and this is referred to as a ringularity or Kerr singularity.

    " + } +}, +{ + "model": "downloads.release", + "pk": 620, + "fields": { + "created": "2021-05-31T11:58:22.344Z", + "updated": "2021-06-01T18:55:38.458Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.0b2", + "slug": "python-3100b2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2021-05-31T11:47:37Z", + "release_page": null, + "release_notes_url": "", + "content": "## This is a beta preview of Python 3.10\r\n\r\nPython 3.10 is still in development. 3.10.0b2 is the second of four planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.10** during the beta phase and report issues found to [the Python bug tracker](https://bugs.python.org) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is to have no ABI changes after beta 4 and as few code changes as possible after 3.10.0rc1, the first release candidate. To achieve that, it will be **extremely important** to get as much exposure for 3.10 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nMany new features for Python 3.10 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n* [PEP 634 ](https://www.python.org/dev/peps/pep-0634/) -- Structural Pattern Matching: Specification\r\n* [PEP 635 ](https://www.python.org/dev/peps/pep-0635/) -- Structural Pattern Matching: Motivation and Rationale\r\n* [PEP 636 ](https://www.python.org/dev/peps/pep-0636/) -- Structural Pattern Matching: Tutorial\r\n* [PEP 644 ](https://www.python.org/dev/peps/pep-0644/) -- Require OpenSSL 1.1.1 or newer\r\n* [PEP 624 ](https://www.python.org/dev/peps/pep-0624/) -- Remove Py_UNICODE encoder APIs\r\n* [PEP 597 ](https://www.python.org/dev/peps/pep-0597/) -- Add optional EncodingWarning\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.10 will be 3.10.0b3, currently scheduled for Thursday, 2021-06-17.\r\n\r\n[bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) used to be on this list\r\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it [here](https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/) to learn more.\r\n\r\n# More resources\r\n\r\n* [Changelog](https://docs.python.org/3.10/whatsnew/changelog.html#changelog)\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nThe Ehrenfest paradox concerns the rotation of a \"rigid\" disc in the theory of relativity. In its original 1909 formulation as presented by Paul Ehrenfest in relation to the concept of Born rigidity within special relativity, it discusses an ideally rigid cylinder that is made to rotate about its axis of symmetry. The radius R as seen in the laboratory frame is always perpendicular to its motion and should therefore be equal to its value R0 when stationary. However, the circumference (2\u03c0R) should appear Lorentz-contracted to a smaller value than at rest. This leads to the apparent contradiction that R = R0 and R < R0.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.10

    \n

    Python 3.10 is still in development. 3.10.0b2 is the second of four planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.10 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is to have no ABI changes after beta 4 and as few code changes as possible after 3.10.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.10 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Many new features for Python 3.10 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • PEP 613 -- Explicit Type Aliases
    • \n
    • PEP 634 -- Structural Pattern Matching: Specification
    • \n
    • PEP 635 -- Structural Pattern Matching: Motivation and Rationale
    • \n
    • PEP 636 -- Structural Pattern Matching: Tutorial
    • \n
    • PEP 644 -- Require OpenSSL 1.1.1 or newer
    • \n
    • PEP 624 -- Remove Py_UNICODE encoder APIs
    • \n
    • \n

      PEP 597 -- Add optional EncodingWarning

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

      \n
    • \n
    \n

    The next pre-release of Python 3.10 will be 3.10.0b3, currently scheduled for Thursday, 2021-06-17.

    \n

    bpo-38605: from __future__ import annotations (PEP 563) used to be on this list\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it here to learn more.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    The Ehrenfest paradox concerns the rotation of a \"rigid\" disc in the theory of relativity. In its original 1909 formulation as presented by Paul Ehrenfest in relation to the concept of Born rigidity within special relativity, it discusses an ideally rigid cylinder that is made to rotate about its axis of symmetry. The radius R as seen in the laboratory frame is always perpendicular to its motion and should therefore be equal to its value R0 when stationary. However, the circumference (2\u03c0R) should appear Lorentz-contracted to a smaller value than at rest. This leads to the apparent contradiction that R = R0 and R < R0.

    " + } +}, +{ + "model": "downloads.release", + "pk": 621, + "fields": { + "created": "2021-06-17T12:20:30.148Z", + "updated": "2021-06-17T21:23:08.321Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.0b3", + "slug": "python-3100b3", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2021-06-17T12:14:53Z", + "release_page": null, + "release_notes_url": "", + "content": "## This is a beta preview of Python 3.10\r\n\r\nPython 3.10 is still in development. 3.10.0b3 is the third of four planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.10** during the beta phase and report issues found to [the Python bug tracker](https://bugs.python.org) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is to have no ABI changes after beta 4 and as few code changes as possible after 3.10.0rc1, the first release candidate. To achieve that, it will be **extremely important** to get as much exposure for 3.10 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nMany new features for Python 3.10 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n* [PEP 634 ](https://www.python.org/dev/peps/pep-0634/) -- Structural Pattern Matching: Specification\r\n* [PEP 635 ](https://www.python.org/dev/peps/pep-0635/) -- Structural Pattern Matching: Motivation and Rationale\r\n* [PEP 636 ](https://www.python.org/dev/peps/pep-0636/) -- Structural Pattern Matching: Tutorial\r\n* [PEP 644 ](https://www.python.org/dev/peps/pep-0644/) -- Require OpenSSL 1.1.1 or newer\r\n* [PEP 624 ](https://www.python.org/dev/peps/pep-0624/) -- Remove Py_UNICODE encoder APIs\r\n* [PEP 597 ](https://www.python.org/dev/peps/pep-0597/) -- Add optional EncodingWarning\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.10 will be 3.10.0b4, currently scheduled for Saturday, 2021-07-10.\r\n\r\n[bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) used to be on this list\r\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it [here](https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/) to learn more.\r\n\r\n# More resources\r\n\r\n* [Changelog](https://docs.python.org/3.10/whatsnew/changelog.html#changelog)\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nThere are no green stars. Why? In general, objects don't emit a single wavelength of light when they shine. Instead, they emit photons in a range of wavelengths. If you were to use some sort of detector that is sensitive to the wavelengths of light emitted by an object, and then plotted the number of them versus wavelength, you get a lopsided plot called a [blackbody](https://en.wikipedia.org/wiki/Black-body_radiation) curve. For an object as hot as the Sun, that curve peaks at blue-green, so it emits most of its photons there. But it still emits some that are bluer, and some that are redder. When we look at the Sun, we see all these colors blended together. Our eyes mix them up to produce one color: white. A warmer star will put out more blue, and a cooler one redder, but no matter what, our eyes just won't see that as green. Due to how we perceive color, the only way to see a star as being green is for it to be only emitting green light. But as starts always emit radiation following the blackbody curve, that's pretty much impossible.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.10

    \n

    Python 3.10 is still in development. 3.10.0b3 is the third of four planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.10 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is to have no ABI changes after beta 4 and as few code changes as possible after 3.10.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.10 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Many new features for Python 3.10 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • PEP 613 -- Explicit Type Aliases
    • \n
    • PEP 634 -- Structural Pattern Matching: Specification
    • \n
    • PEP 635 -- Structural Pattern Matching: Motivation and Rationale
    • \n
    • PEP 636 -- Structural Pattern Matching: Tutorial
    • \n
    • PEP 644 -- Require OpenSSL 1.1.1 or newer
    • \n
    • PEP 624 -- Remove Py_UNICODE encoder APIs
    • \n
    • \n

      PEP 597 -- Add optional EncodingWarning

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

      \n
    • \n
    \n

    The next pre-release of Python 3.10 will be 3.10.0b4, currently scheduled for Saturday, 2021-07-10.

    \n

    bpo-38605: from __future__ import annotations (PEP 563) used to be on this list\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it here to learn more.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    There are no green stars. Why? In general, objects don't emit a single wavelength of light when they shine. Instead, they emit photons in a range of wavelengths. If you were to use some sort of detector that is sensitive to the wavelengths of light emitted by an object, and then plotted the number of them versus wavelength, you get a lopsided plot called a blackbody curve. For an object as hot as the Sun, that curve peaks at blue-green, so it emits most of its photons there. But it still emits some that are bluer, and some that are redder. When we look at the Sun, we see all these colors blended together. Our eyes mix them up to produce one color: white. A warmer star will put out more blue, and a cooler one redder, but no matter what, our eyes just won't see that as green. Due to how we perceive color, the only way to see a star as being green is for it to be only emitting green light. But as starts always emit radiation following the blackbody curve, that's pretty much impossible.

    " + } +}, +{ + "model": "downloads.release", + "pk": 622, + "fields": { + "created": "2021-06-28T10:42:25.794Z", + "updated": "2021-11-05T21:37:25.129Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.6", + "slug": "python-396", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-06-28T19:14:11Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.6/whatsnew/changelog.html#changelog", + "content": "## This is the sixth maintenance release of Python 3.9\r\n\r\n**Note:** The release you're looking at is Python 3.9.6, a **bugfix release** for the legacy 3.9 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/). \r\n\r\nThere's been 146 commits since 3.9.5 which is a similar amount compared to 3.8 at the same stage of the release cycle. See the [changelog](https://docs.python.org/release/3.9.6/whatsnew/changelog.html) for details.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 573](https://www.python.org/dev/peps/pep-0573/), Module State Access from C Extension Methods\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 614](https://www.python.org/dev/peps/pep-0614/), Relaxing Grammar Restrictions On Decorators\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\nYou can find a more comprehensive list in this release's \"[What's New](https://docs.python.org/release/3.9.0/whatsnew/3.9.html)\" document.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## And Now for Something Completely Different\r\n**Interviewer ([John Cleese](http://www.montypython.50webs.com/scripts/Series_1/35.htm))**: You know I really enjoy interviewing applicants for this management training course. _(knock at door)_ Come in. _(Stig enters)_ Ah. Come and sit down.\r\n
    **Stig (Graham Chapman)**: Thank you. _(he sits)_\r\n
    **Interviewer**: _(stares at him and starts writing)_ Would you mind just standing up again for one moment. _(Stig stands up)_ Take a seat.\r\n
    **Stig**: I'm sorry?\r\n
    **Interviewer**: Take a seat. _(Stig does so)_ Ah! _(writes again)_ Good morning.\r\n
    **Stig**: Good morning.\r\n
    **Interviewer**: _(writes)_ Tell me why did you say 'good morning' when you know perfectly well that it's afternoon?\r\n
    **Stig**: Well, well, you said 'good morning'. Ha, ha.\r\n
    **Interviewer**: _(shakes head)_ Good afternoon.\r\n
    **Stig**: Ah, good afternoon.\r\n
    **Interviewer**: Oh dear. _(writes again)_ Good evening.\r\n
    **Stig**: ...Goodbye?\r\n
    **Interviewer**: Ha, ha. No. _(rings small hand-bell)_ ... Aren't you going to ask me why I rang the bell? _(rings bell again)_\r\n
    **Stig**: Er why did you ring the bell?\r\n
    **Interviewer**: Why do **you** think I rang the bell? _(shouts)_ Five, four, three, **two**, **one**, **ZERO**!\r\n
    **Stig**: Well, I, I...\r\n
    **Interviewer**: Too late! _(singing)_ Goodniiight, ding-ding-ding-ding-ding.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the sixth maintenance release of Python 3.9

    \n

    Note: The release you're looking at is Python 3.9.6, a bugfix release for the legacy 3.9 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    There's been 146 commits since 3.9.5 which is a similar amount compared to 3.8 at the same stage of the release cycle. See the changelog for details.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 573, Module State Access from C Extension Methods
    • \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 614, Relaxing Grammar Restrictions On Decorators
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    You can find a more comprehensive list in this release's \"What's New\" document.

    \n

    More resources

    \n\n

    And Now for Something Completely Different

    \n

    Interviewer (John Cleese): You know I really enjoy interviewing applicants for this management training course. (knock at door) Come in. (Stig enters) Ah. Come and sit down.\n
    Stig (Graham Chapman): Thank you. (he sits)\n
    Interviewer: (stares at him and starts writing) Would you mind just standing up again for one moment. (Stig stands up) Take a seat.\n
    Stig: I'm sorry?\n
    Interviewer: Take a seat. (Stig does so) Ah! (writes again) Good morning.\n
    Stig: Good morning.\n
    Interviewer: (writes) Tell me why did you say 'good morning' when you know perfectly well that it's afternoon?\n
    Stig: Well, well, you said 'good morning'. Ha, ha.\n
    Interviewer: (shakes head) Good afternoon.\n
    Stig: Ah, good afternoon.\n
    Interviewer: Oh dear. (writes again) Good evening.\n
    Stig: ...Goodbye?\n
    Interviewer: Ha, ha. No. (rings small hand-bell) ... Aren't you going to ask me why I rang the bell? (rings bell again)\n
    Stig: Er why did you ring the bell?\n
    Interviewer: Why do you think I rang the bell? (shouts) Five, four, three, two, one, ZERO!\n
    Stig: Well, I, I...\n
    Interviewer: Too late! (singing) Goodniiight, ding-ding-ding-ding-ding.

    " + } +}, +{ + "model": "downloads.release", + "pk": 623, + "fields": { + "created": "2021-06-28T10:58:06.866Z", + "updated": "2021-06-28T19:14:58.130Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.11", + "slug": "python-3811", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-06-28T19:04:53Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.11/whatsnew/changelog.html#changelog", + "content": "## This is a security release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.11, a **security bugfix release** for the legacy 3.8 series. *Python 3.9* is now the latest feature release series of Python 3. [Get the latest release of 3.9.x here](/downloads/).\r\n\r\nSecurity content in this release contains three fixes. There's also two fixes for 3.8.10 regressions. Take a look at the [change log](https://docs.python.org/release/3.8.11/whatsnew/changelog.html) for details.\r\n\r\nAccording to the release calendar specified in [PEP 569](https://www.python.org/dev/peps/pep-0569/), Python 3.8 is now in security fixes only stage of its life cycle: 3.8 branch only accepts security fixes and releases of those are made irregularly in source-only form until October 2024. Python 3.8 isn't receiving regular bugfixes anymore, and binary installers are no longer provided for it. **Python 3.8.10** was the last full *bugfix release* of Python 3.8 with binary installers.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a security release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.11, a security bugfix release for the legacy 3.8 series. Python 3.9 is now the latest feature release series of Python 3. Get the latest release of 3.9.x here.

    \n

    Security content in this release contains three fixes. There's also two fixes for 3.8.10 regressions. Take a look at the change log for details.

    \n

    According to the release calendar specified in PEP 569, Python 3.8 is now in security fixes only stage of its life cycle: 3.8 branch only accepts security fixes and releases of those are made irregularly in source-only form until October 2024. Python 3.8 isn't receiving regular bugfixes anymore, and binary installers are no longer provided for it. Python 3.8.10 was the last full bugfix release of Python 3.8 with binary installers.

    " + } +}, +{ + "model": "downloads.release", + "pk": 624, + "fields": { + "created": "2021-06-28T18:59:29.271Z", + "updated": "2022-01-07T22:00:45.453Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.14", + "slug": "python-3614", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-06-28T18:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.6.14/whatsnew/changelog.html#changelog", + "content": "**Note:** The release you are looking at is **Python 3.6.14**, a **security bugfix release** for the legacy **3.6** series which has now reached **end-of-life** and is no longer supported. See the `downloads page `_ for currently supported versions of Python. The final source-only **security fix** release for 3.6 was `3.6.15 `_ and the final **bugfix release** was `3.6.8 `_.\r\n\r\nPlease see the `Full Changelog `_ link for more information about the contents of this release and `What\u2019s New In Python 3.6 `_ for more information about Python 3.6 features.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Python Development Cycle `_\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.6.14, a security bugfix release for the legacy 3.6 series which has now reached end-of-life and is no longer supported. See the downloads page for currently supported versions of Python. The final source-only security fix release for 3.6 was 3.6.15 and the final bugfix release was 3.6.8.

    \n

    Please see the Full Changelog link for more information about the contents of this release and What\u2019s New In Python 3.6 for more information about Python 3.6 features.

    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 625, + "fields": { + "created": "2021-06-28T19:00:52.767Z", + "updated": "2022-01-07T22:57:14.218Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.11", + "slug": "python-3711", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-06-28T18:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.7.11/whatsnew/changelog.html#changelog", + "content": "**Note:** The release you are looking at is **Python 3.7.11**, a **security bugfix release** for the legacy **3.7** series which is now in the **security fix** phase of its life cycle. See the `downloads page `_ for currently supported versions of Python and for the most recent source-only **security fix** release for 3.7. The final **bugfix release** with binary installers for 3.7 was `3.7.9 `_.\r\n\r\nPlease see the `Full Changelog `_ link for more information about the contents of this release and see `What\u2019s New In Python 3.7 `_ for more information about 3.7 features. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.7.11, a security bugfix release for the legacy 3.7 series which is now in the security fix phase of its life cycle. See the downloads page for currently supported versions of Python and for the most recent source-only security fix release for 3.7. The final bugfix release with binary installers for 3.7 was 3.7.9.

    \n

    Please see the Full Changelog link for more information about the contents of this release and see What\u2019s New In Python 3.7 for more information about 3.7 features.

    \n
    \n

    More resources

    \n\n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 626, + "fields": { + "created": "2021-07-10T01:26:57.655Z", + "updated": "2021-07-11T01:38:09.190Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.0b4", + "slug": "python-3100b4", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2021-07-10T01:15:37Z", + "release_page": null, + "release_notes_url": "", + "content": "## This is a beta preview of Python 3.10\r\n\r\nPython 3.10 is still in development. 3.10.0b4 is the fourth and last of the beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.10** during the beta phase and report issues found to [the Python bug tracker](https://bugs.python.org) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is to have no ABI changes after beta 4 and as few code changes as possible after 3.10.0rc1, the first release candidate. To achieve that, it will be **extremely important** to get as much exposure for 3.10 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nMany new features for Python 3.10 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n* [PEP 634 ](https://www.python.org/dev/peps/pep-0634/) -- Structural Pattern Matching: Specification\r\n* [PEP 635 ](https://www.python.org/dev/peps/pep-0635/) -- Structural Pattern Matching: Motivation and Rationale\r\n* [PEP 636 ](https://www.python.org/dev/peps/pep-0636/) -- Structural Pattern Matching: Tutorial\r\n* [PEP 644 ](https://www.python.org/dev/peps/pep-0644/) -- Require OpenSSL 1.1.1 or newer\r\n* [PEP 624 ](https://www.python.org/dev/peps/pep-0624/) -- Remove Py_UNICODE encoder APIs\r\n* [PEP 597 ](https://www.python.org/dev/peps/pep-0597/) -- Add optional EncodingWarning\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release, the first release candidate of Python 3.10.0, will be 3.10.0rc1. It is currently scheduled for Monday, 2021-08-02.\r\n\r\n[bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) used to be on this list\r\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it [here](https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/) to learn more.\r\n\r\n# More resources\r\n\r\n* [Changelog](https://docs.python.org/3.10/whatsnew/changelog.html#changelog)\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nIn quantum physics, the spin is an intrinsic form of angular momentum carried by elementary particles, composite particles, and atomic nuclei. The spin is one of two types of angular momentum in quantum mechanics, the other being orbital angular momentum. The orbital angular momentum operator is the quantum-mechanical counterpart to the classical angular momentum of orbital revolution and appears when there is periodic structure to its wavefunction as the angle varies. For photons, spin is the quantum-mechanical counterpart of the polarization of light; for electrons, the spin has no classical counterpart.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.10

    \n

    Python 3.10 is still in development. 3.10.0b4 is the fourth and last of the beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.10 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is to have no ABI changes after beta 4 and as few code changes as possible after 3.10.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.10 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Many new features for Python 3.10 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • PEP 613 -- Explicit Type Aliases
    • \n
    • PEP 634 -- Structural Pattern Matching: Specification
    • \n
    • PEP 635 -- Structural Pattern Matching: Motivation and Rationale
    • \n
    • PEP 636 -- Structural Pattern Matching: Tutorial
    • \n
    • PEP 644 -- Require OpenSSL 1.1.1 or newer
    • \n
    • PEP 624 -- Remove Py_UNICODE encoder APIs
    • \n
    • \n

      PEP 597 -- Add optional EncodingWarning

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

      \n
    • \n
    \n

    The next pre-release, the first release candidate of Python 3.10.0, will be 3.10.0rc1. It is currently scheduled for Monday, 2021-08-02.

    \n

    bpo-38605: from __future__ import annotations (PEP 563) used to be on this list\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it here to learn more.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    In quantum physics, the spin is an intrinsic form of angular momentum carried by elementary particles, composite particles, and atomic nuclei. The spin is one of two types of angular momentum in quantum mechanics, the other being orbital angular momentum. The orbital angular momentum operator is the quantum-mechanical counterpart to the classical angular momentum of orbital revolution and appears when there is periodic structure to its wavefunction as the angle varies. For photons, spin is the quantum-mechanical counterpart of the polarization of light; for electrons, the spin has no classical counterpart.

    " + } +}, +{ + "model": "downloads.release", + "pk": 627, + "fields": { + "created": "2021-08-02T21:36:34.264Z", + "updated": "2021-08-03T16:30:58.032Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.0rc1", + "slug": "python-3100rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2021-08-02T21:27:06Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.10.0rc1/whatsnew/changelog.html#python-3-10-0-release-candidate-1", + "content": "## This is the first release candidate of Python 3.10\r\n\r\nThis release, **3.10.0rc1**, is the penultimate release preview. Entering the release candidate phase, only reviewed code changes which are clear bug fixes are allowed between this release candidate and the final release. The second candidate and the last planned release preview is currently planned for 2021-09-06 while the official release is planned for 2021-10-04.\r\n\r\nThere will be no ABI changes from this point forward in the 3.10 series and the goal is that there will be as few code changes as possible.\r\n\r\n## Call to action\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to prepare their projects for 3.10 compatibility during this phase. As always, report any issues to [the Python bug tracker](https://bugs.python.org). \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nMany new features for Python 3.10 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n* [PEP 634 ](https://www.python.org/dev/peps/pep-0634/) -- Structural Pattern Matching: Specification\r\n* [PEP 635 ](https://www.python.org/dev/peps/pep-0635/) -- Structural Pattern Matching: Motivation and Rationale\r\n* [PEP 636 ](https://www.python.org/dev/peps/pep-0636/) -- Structural Pattern Matching: Tutorial\r\n* [PEP 644 ](https://www.python.org/dev/peps/pep-0644/) -- Require OpenSSL 1.1.1 or newer\r\n* [PEP 624 ](https://www.python.org/dev/peps/pep-0624/) -- Remove Py_UNICODE encoder APIs\r\n* [PEP 597 ](https://www.python.org/dev/peps/pep-0597/) -- Add optional EncodingWarning\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release, the second release candidate, will only be released if needed (scheduled for Monday, 2021-09-06). Otherwise, the next release will directly be the final release of Python 3.10.0, which is currently scheduled for Monday, 2021-10-04.\r\n\r\n[bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) used to be on this list\r\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it [here](https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/) to learn more.\r\n\r\n# More resources\r\n\r\n* [Changelog](https://docs.python.org/3.10/whatsnew/changelog.html#changelog)\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nIn theoretical physics, quantum chromodynamics (QCD) is the theory of the strong interaction between quarks and gluons, the fundamental particles that make up composite hadrons such as the proton, neutron, and pion. The QCD analog of electric charge is a property called color. Gluons are the force carrier of the theory, just as photons are for the electromagnetic force in quantum electrodynamics. There are three kinds of charge in QCD (as opposed to one in quantum electrodynamics or QED) are usually referred to as \"color charge\" by loose analogy to the three kinds of color (red, green and blue) perceived by humans. Other than this nomenclature, the quantum parameter \"color\" is completely unrelated to the everyday, familiar phenomenon of color.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the first release candidate of Python 3.10

    \n

    This release, 3.10.0rc1, is the penultimate release preview. Entering the release candidate phase, only reviewed code changes which are clear bug fixes are allowed between this release candidate and the final release. The second candidate and the last planned release preview is currently planned for 2021-09-06 while the official release is planned for 2021-10-04.

    \n

    There will be no ABI changes from this point forward in the 3.10 series and the goal is that there will be as few code changes as possible.

    \n

    Call to action

    \n

    We strongly encourage maintainers of third-party Python projects to prepare their projects for 3.10 compatibility during this phase. As always, report any issues to the Python bug tracker.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Many new features for Python 3.10 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • PEP 613 -- Explicit Type Aliases
    • \n
    • PEP 634 -- Structural Pattern Matching: Specification
    • \n
    • PEP 635 -- Structural Pattern Matching: Motivation and Rationale
    • \n
    • PEP 636 -- Structural Pattern Matching: Tutorial
    • \n
    • PEP 644 -- Require OpenSSL 1.1.1 or newer
    • \n
    • PEP 624 -- Remove Py_UNICODE encoder APIs
    • \n
    • \n

      PEP 597 -- Add optional EncodingWarning

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

      \n
    • \n
    \n

    The next pre-release, the second release candidate, will only be released if needed (scheduled for Monday, 2021-09-06). Otherwise, the next release will directly be the final release of Python 3.10.0, which is currently scheduled for Monday, 2021-10-04.

    \n

    bpo-38605: from __future__ import annotations (PEP 563) used to be on this list\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it here to learn more.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    In theoretical physics, quantum chromodynamics (QCD) is the theory of the strong interaction between quarks and gluons, the fundamental particles that make up composite hadrons such as the proton, neutron, and pion. The QCD analog of electric charge is a property called color. Gluons are the force carrier of the theory, just as photons are for the electromagnetic force in quantum electrodynamics. There are three kinds of charge in QCD (as opposed to one in quantum electrodynamics or QED) are usually referred to as \"color charge\" by loose analogy to the three kinds of color (red, green and blue) perceived by humans. Other than this nomenclature, the quantum parameter \"color\" is completely unrelated to the everyday, familiar phenomenon of color.

    " + } +}, +{ + "model": "downloads.release", + "pk": 628, + "fields": { + "created": "2021-08-30T17:17:39.348Z", + "updated": "2021-10-04T20:15:11.670Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.12", + "slug": "python-3812", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-08-30T17:12:49Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.12/whatsnew/changelog.html#changelog", + "content": "## This is a security release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.12, a **security bugfix release** for the legacy 3.8 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/).\r\n\r\nSecurity content in this release contains four fixes. There are also four additional fixes for bugs that might have lead to denial-of-service attacks. Finally, while we're not providing binary installers anymore, for those users who produce installers, we upgraded the OpenSSL version used to 1.1.1l. Take a look at the [change log](https://docs.python.org/release/3.8.12/whatsnew/changelog.html) for details.\r\n\r\nAccording to the release calendar specified in [PEP 569](https://www.python.org/dev/peps/pep-0569/), Python 3.8 is now in the \"security fixes only\" stage of its life cycle: 3.8 branch only accepts security fixes and releases of those are made irregularly in source-only form until October 2024. Python 3.8 isn't receiving regular bug fixes anymore, and binary installers are no longer provided for it. **Python 3.8.10** was the last full *bugfix release* of Python 3.8 with binary installers.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a security release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.12, a security bugfix release for the legacy 3.8 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    Security content in this release contains four fixes. There are also four additional fixes for bugs that might have lead to denial-of-service attacks. Finally, while we're not providing binary installers anymore, for those users who produce installers, we upgraded the OpenSSL version used to 1.1.1l. Take a look at the change log for details.

    \n

    According to the release calendar specified in PEP 569, Python 3.8 is now in the \"security fixes only\" stage of its life cycle: 3.8 branch only accepts security fixes and releases of those are made irregularly in source-only form until October 2024. Python 3.8 isn't receiving regular bug fixes anymore, and binary installers are no longer provided for it. Python 3.8.10 was the last full bugfix release of Python 3.8 with binary installers.

    " + } +}, +{ + "model": "downloads.release", + "pk": 629, + "fields": { + "created": "2021-08-30T21:27:45.427Z", + "updated": "2022-03-15T22:01:42.034Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.7", + "slug": "python-397", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-08-30T21:12:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.7/whatsnew/changelog.html#changelog", + "content": "## This is the seventh maintenance release of Python 3.9\r\n\r\n**Note:** The release you're looking at is Python 3.9.7, a **bugfix release** for the legacy 3.9 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/). \r\n\r\nThere's been 187 commits since 3.9.6 which is a similar amount compared to 3.8 at the same stage of the release cycle. See the [changelog](https://docs.python.org/release/3.9.7/whatsnew/changelog.html) for details.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 573](https://www.python.org/dev/peps/pep-0573/), Module State Access from C Extension Methods\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 614](https://www.python.org/dev/peps/pep-0614/), Relaxing Grammar Restrictions On Decorators\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\nYou can find a more comprehensive list in this release's \"[What's New](https://docs.python.org/release/3.9.0/whatsnew/3.9.html)\" document.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## And Now for Something Completely Different\r\n(BBC Television News studio)\r\n
    **[Richard Baker](http://www.montypython.50webs.com/scripts/Series_3/65.htm)**: We've just heard that an explosion in the kitchens of the House of Lords has resulted in the breakage of seventeen storage jars. Police ruled out foul play.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the seventh maintenance release of Python 3.9

    \n

    Note: The release you're looking at is Python 3.9.7, a bugfix release for the legacy 3.9 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    There's been 187 commits since 3.9.6 which is a similar amount compared to 3.8 at the same stage of the release cycle. See the changelog for details.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 573, Module State Access from C Extension Methods
    • \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 614, Relaxing Grammar Restrictions On Decorators
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    You can find a more comprehensive list in this release's \"What's New\" document.

    \n

    More resources

    \n\n

    And Now for Something Completely Different

    \n

    (BBC Television News studio)\n
    Richard Baker: We've just heard that an explosion in the kitchens of the House of Lords has resulted in the breakage of seventeen storage jars. Police ruled out foul play.

    " + } +}, +{ + "model": "downloads.release", + "pk": 630, + "fields": { + "created": "2021-09-04T21:38:38.166Z", + "updated": "2022-01-07T21:57:06.995Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.6.15", + "slug": "python-3615", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-09-04T22:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.6.15/whatsnew/changelog.html#changelog", + "content": "**Note:** The release you are looking at is **Python 3.6.15**, the final **security bugfix release** for the legacy **3.6** series which has now reached **end-of-life** and is no longer supported. See the `downloads page `_ for currently supported versions of Python. The final **bugfix release** for 3.6 was `3.6.8 `_.\r\n\r\nPlease see the `Full Changelog `_ link for more information about the contents of this release and `What\u2019s New In Python 3.6 `_ for more information about Python 3.6 features.\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`494`, 3.6 Release Schedule\r\n* Report bugs at ``_.\r\n* `Python Development Cycle `_\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.6.15, the final security bugfix release for the legacy 3.6 series which has now reached end-of-life and is no longer supported. See the downloads page for currently supported versions of Python. The final bugfix release for 3.6 was 3.6.8.

    \n

    Please see the Full Changelog link for more information about the contents of this release and What\u2019s New In Python 3.6 for more information about Python 3.6 features.

    \n\n" + } +}, +{ + "model": "downloads.release", + "pk": 631, + "fields": { + "created": "2021-09-04T21:48:19.902Z", + "updated": "2022-01-07T22:58:42.807Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.12", + "slug": "python-3712", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-09-04T22:01:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.7.12/whatsnew/changelog.html#changelog", + "content": "**Note:** The release you are looking at is **Python 3.7.12**, a **security bugfix release** for the legacy **3.7** series which is now in the **security fix** phase of its life cycle. See the `downloads page `_ for currently supported versions of Python and for the most recent source-only **security fix** release for 3.7. The final **bugfix release** with binary installers for 3.7 was `3.7.9 `_.\r\n\r\nPlease see the `Full Changelog `_ link for more information about the contents of this release and see `What\u2019s New In Python 3.7 `_ for more information about 3.7 features. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.7.12, a security bugfix release for the legacy 3.7 series which is now in the security fix phase of its life cycle. See the downloads page for currently supported versions of Python and for the most recent source-only security fix release for 3.7. The final bugfix release with binary installers for 3.7 was 3.7.9.

    \n

    Please see the Full Changelog link for more information about the contents of this release and see What\u2019s New In Python 3.7 for more information about 3.7 features.

    \n
    \n

    More resources

    \n\n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 632, + "fields": { + "created": "2021-09-07T14:39:31.126Z", + "updated": "2021-09-07T22:11:43.724Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.0rc2", + "slug": "python-3100rc2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2021-09-07T14:31:27Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.10.0rc2/whatsnew/changelog.html#python-3-10-0-release-candidate-2", + "content": "## This is the first release candidate of Python 3.10\r\n\r\nThis release, **3.10.0rc2**, is the last preview before the final release of Python 3.10.0 on 2021-10-04. Entering the release candidate phase, only reviewed code changes which are clear bug fixes are allowed between release candidates and the final release. There will be no ABI changes from this point forward in the 3.10 series and the goal is that there will be as few code changes as possible.\r\n\r\n## Call to action\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to prepare their projects for 3.10 compatibility during this phase. As always, report any issues to [the Python bug tracker](https://bugs.python.org). \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nMany new features for Python 3.10 are still being planned and written. Among the new major\r\nnew features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n* [PEP 634 ](https://www.python.org/dev/peps/pep-0634/) -- Structural Pattern Matching: Specification\r\n* [PEP 635 ](https://www.python.org/dev/peps/pep-0635/) -- Structural Pattern Matching: Motivation and Rationale\r\n* [PEP 636 ](https://www.python.org/dev/peps/pep-0636/) -- Structural Pattern Matching: Tutorial\r\n* [PEP 644 ](https://www.python.org/dev/peps/pep-0644/) -- Require OpenSSL 1.1.1 or newer\r\n* [PEP 624 ](https://www.python.org/dev/peps/pep-0624/) -- Remove Py_UNICODE encoder APIs\r\n* [PEP 597 ](https://www.python.org/dev/peps/pep-0597/) -- Add optional EncodingWarning\r\n\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next release will be the final release of Python 3.10.0, which is currently scheduled for Monday, 2021-10-04.\r\n\r\n[bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) used to be on this list\r\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it [here](https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/) to learn more.\r\n\r\n# More resources\r\n\r\n* [Changelog](https://docs.python.org/3.10/whatsnew/changelog.html#changelog)\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nMaxwell's demon is a thought experiment that would hypothetically violate the second law of thermodynamics. It was proposed by the physicist James Clerk Maxwell in 1867. In the thought experiment, a demon controls a small massless door between two chambers of gas. As individual gas molecules (or atoms) approach the door, the demon quickly opens and closes the door to allow only fast-moving molecules to pass through in one direction, and only slow-moving molecules to pass through in the other. Because the kinetic temperature of a gas depends on the velocities of its constituent molecules, the demon's actions cause one chamber to warm up and the other to cool down. This would decrease the total entropy of the two gases, without applying any work, thereby violating the second law of thermodynamics.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the first release candidate of Python 3.10

    \n

    This release, 3.10.0rc2, is the last preview before the final release of Python 3.10.0 on 2021-10-04. Entering the release candidate phase, only reviewed code changes which are clear bug fixes are allowed between release candidates and the final release. There will be no ABI changes from this point forward in the 3.10 series and the goal is that there will be as few code changes as possible.

    \n

    Call to action

    \n

    We strongly encourage maintainers of third-party Python projects to prepare their projects for 3.10 compatibility during this phase. As always, report any issues to the Python bug tracker.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Many new features for Python 3.10 are still being planned and written. Among the new major\nnew features and changes so far:

    \n
      \n
    • PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • PEP 613 -- Explicit Type Aliases
    • \n
    • PEP 634 -- Structural Pattern Matching: Specification
    • \n
    • PEP 635 -- Structural Pattern Matching: Motivation and Rationale
    • \n
    • PEP 636 -- Structural Pattern Matching: Tutorial
    • \n
    • PEP 644 -- Require OpenSSL 1.1.1 or newer
    • \n
    • PEP 624 -- Remove Py_UNICODE encoder APIs
    • \n
    • \n

      PEP 597 -- Add optional EncodingWarning

      \n
    • \n
    • \n

      (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

      \n
    • \n
    \n

    The next release will be the final release of Python 3.10.0, which is currently scheduled for Monday, 2021-10-04.

    \n

    bpo-38605: from __future__ import annotations (PEP 563) used to be on this list\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it here to learn more.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Maxwell's demon is a thought experiment that would hypothetically violate the second law of thermodynamics. It was proposed by the physicist James Clerk Maxwell in 1867. In the thought experiment, a demon controls a small massless door between two chambers of gas. As individual gas molecules (or atoms) approach the door, the demon quickly opens and closes the door to allow only fast-moving molecules to pass through in one direction, and only slow-moving molecules to pass through in the other. Because the kinetic temperature of a gas depends on the velocities of its constituent molecules, the demon's actions cause one chamber to warm up and the other to cool down. This would decrease the total entropy of the two gases, without applying any work, thereby violating the second law of thermodynamics.

    " + } +}, +{ + "model": "downloads.release", + "pk": 633, + "fields": { + "created": "2021-10-04T18:41:27.030Z", + "updated": "2022-01-30T21:43:37.549Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.0", + "slug": "python-3100", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-10-04T18:36:01Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.10.0/whatsnew/changelog.html#python-3-10-0-final", + "content": "![Python 3.10 release logo](https://user-images.githubusercontent.com/11718525/135937807-fd3e0fd2-a31a-47a4-90c6-b0bb1d0704d4.png)\r\n\r\n## This is the stable release of Python 3.10.0\r\n\r\nPython 3.10.0 is the newest major release of the Python programming language, and it contains many new features and optimizations.\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nAmong the new major new features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n* [PEP 634 ](https://www.python.org/dev/peps/pep-0634/) -- Structural Pattern Matching: Specification\r\n* [PEP 635 ](https://www.python.org/dev/peps/pep-0635/) -- Structural Pattern Matching: Motivation and Rationale\r\n* [PEP 636 ](https://www.python.org/dev/peps/pep-0636/) -- Structural Pattern Matching: Tutorial\r\n* [PEP 644 ](https://www.python.org/dev/peps/pep-0644/) -- Require OpenSSL 1.1.1 or newer\r\n* [PEP 624 ](https://www.python.org/dev/peps/pep-0624/) -- Remove Py_UNICODE encoder APIs\r\n* [PEP 597 ](https://www.python.org/dev/peps/pep-0597/) -- Add optional EncodingWarning\r\n\r\n[bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) used to be on this list\r\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it [here](https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/) to learn more.\r\n\r\n[bpo-44828](https://bugs.python.org/issue44828): A change in the newly released macOS 12 Monterey caused file open and save windows in `IDLE` and other `tkinter` applications to be unusable. As of 2021-11-03, the macOS 64-bit universal2 installer file for this release was updated to include a fix in the third-party `Tk` library for this problem. All other files are unchanged from the original 3.10.0 installer. If you have already installed 3.10.0 from here and encounter this problem on macOS 12 Monterey, download and run the updated installer linked below. \r\n\r\n# More resources\r\n\r\n* [Changelog](https://docs.python.org/3.10/whatsnew/changelog.html#changelog)\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nFor a Schwarzschild black hole (a black hole with no rotation or electromagnetic charge), given a free fall particle starting at the event\r\nhorizon, the maximum proper time (which happens when it falls without angular velocity) it will experience to fall into the singularity\r\nis `\u03c0*M` (in [natural units](https://en.wikipedia.org/wiki/Natural_units)), where M is the mass of the black hole. For Sagittarius A* (the\r\nblack hole at the centre of the milky way) this time is approximately 1 minute.\r\n\r\nSchwarzschild black holes are also unique because they have a space-like singularity at their core, which means that the singularity doesn't happen at a specific point in *space* but happens at a specific point in *time* (the future). This means once you are inside the event horizon you cannot point with your finger towards the direction the singularity is located because the singularity happens in your future: no matter where you move, you will \"fall\" into it.", + "content_markup_type": "markdown", + "_content_rendered": "

    \"Python

    \n

    This is the stable release of Python 3.10.0

    \n

    Python 3.10.0 is the newest major release of the Python programming language, and it contains many new features and optimizations.

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Among the new major new features and changes so far:

    \n
      \n
    • PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • PEP 613 -- Explicit Type Aliases
    • \n
    • PEP 634 -- Structural Pattern Matching: Specification
    • \n
    • PEP 635 -- Structural Pattern Matching: Motivation and Rationale
    • \n
    • PEP 636 -- Structural Pattern Matching: Tutorial
    • \n
    • PEP 644 -- Require OpenSSL 1.1.1 or newer
    • \n
    • PEP 624 -- Remove Py_UNICODE encoder APIs
    • \n
    • PEP 597 -- Add optional EncodingWarning
    • \n
    \n

    bpo-38605: from __future__ import annotations (PEP 563) used to be on this list\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it here to learn more.

    \n

    bpo-44828: A change in the newly released macOS 12 Monterey caused file open and save windows in IDLE and other tkinter applications to be unusable. As of 2021-11-03, the macOS 64-bit universal2 installer file for this release was updated to include a fix in the third-party Tk library for this problem. All other files are unchanged from the original 3.10.0 installer. If you have already installed 3.10.0 from here and encounter this problem on macOS 12 Monterey, download and run the updated installer linked below.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    For a Schwarzschild black hole (a black hole with no rotation or electromagnetic charge), given a free fall particle starting at the event\nhorizon, the maximum proper time (which happens when it falls without angular velocity) it will experience to fall into the singularity\nis \u03c0*M (in natural units), where M is the mass of the black hole. For Sagittarius A* (the\nblack hole at the centre of the milky way) this time is approximately 1 minute.

    \n

    Schwarzschild black holes are also unique because they have a space-like singularity at their core, which means that the singularity doesn't happen at a specific point in space but happens at a specific point in time (the future). This means once you are inside the event horizon you cannot point with your finger towards the direction the singularity is located because the singularity happens in your future: no matter where you move, you will \"fall\" into it.

    " + } +}, +{ + "model": "downloads.release", + "pk": 634, + "fields": { + "created": "2021-10-05T17:04:29.415Z", + "updated": "2021-11-05T22:38:17.197Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.11.0a1", + "slug": "python-3110a1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2021-10-05T16:59:04Z", + "release_page": null, + "release_notes_url": "", + "content": "**This is an early developer preview of Python 3.11**\r\n\r\n# Major new features of the 3.11 series, compared to 3.10\r\n\r\nPython 3.11 is still in development. This release, 3.11.0a1 is the first of seven planned alpha releases.\r\n\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\n\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2022-05-06) and, if necessary, may be modified or deleted up until the release candidate phase (2022-08-01). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.11 are still being planned and written. Among the new major new features and changes so far:\r\n\r\n* [PEP 657](https://www.python.org/dev/peps/pep-0657/) -- Include Fine-Grained Error Locations in Tracebacks\r\n* The [Faster Cpython Project](https://github.com/faster-cpython) is already yielding some exciting results: this version of CPython 3.11 is ~12% faster on the geometric mean of the [PyPerformance benchmarks](speed.python.org), compared to 3.10.0.\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.11 will be 3.11.0a2, currently scheduled for 2021-11-02.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.11/)\r\n* [PEP 664](https://www.python.org/dev/peps/pep-0664/), 3.11 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\nZero-point energy is the lowest possible energy that a quantum mechanical system may have. Unlike in classical mechanics, quantum systems constantly fluctuate in their lowest energy state as described by the Heisenberg uncertainty principle. As well as atoms and molecules, the empty space of the vacuum has these properties. According to quantum field theory, the universe can be thought of not as isolated particles but as continuous fluctuating fields: matter fields, whose quanta are fermions (i.e., leptons and quarks), and force fields, whose quanta are bosons (e.g., photons and gluons). All these fields have a non zero amount of energy called zero-point energy. Physics currently lacks a full theoretical model for understanding zero-point energy; in particular, the discrepancy between theorized and observed vacuum energy is a source of major contention", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.11

    \n

    Major new features of the 3.11 series, compared to 3.10

    \n

    Python 3.11 is still in development. This release, 3.11.0a1 is the first of seven planned alpha releases.

    \n

    Alpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.

    \n

    During the alpha phase, features may be added up until the start of the beta phase (2022-05-06) and, if necessary, may be modified or deleted up until the release candidate phase (2022-08-01). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Many new features for Python 3.11 are still being planned and written. Among the new major new features and changes so far:

    \n
      \n
    • PEP 657 -- Include Fine-Grained Error Locations in Tracebacks
    • \n
    • The Faster Cpython Project is already yielding some exciting results: this version of CPython 3.11 is ~12% faster on the geometric mean of the PyPerformance benchmarks, compared to 3.10.0.
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)
    • \n
    \n

    The next pre-release of Python 3.11 will be 3.11.0a2, currently scheduled for 2021-11-02.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Zero-point energy is the lowest possible energy that a quantum mechanical system may have. Unlike in classical mechanics, quantum systems constantly fluctuate in their lowest energy state as described by the Heisenberg uncertainty principle. As well as atoms and molecules, the empty space of the vacuum has these properties. According to quantum field theory, the universe can be thought of not as isolated particles but as continuous fluctuating fields: matter fields, whose quanta are fermions (i.e., leptons and quarks), and force fields, whose quanta are bosons (e.g., photons and gluons). All these fields have a non zero amount of energy called zero-point energy. Physics currently lacks a full theoretical model for understanding zero-point energy; in particular, the discrepancy between theorized and observed vacuum energy is a source of major contention

    " + } +}, +{ + "model": "downloads.release", + "pk": 667, + "fields": { + "created": "2021-11-05T21:25:49.312Z", + "updated": "2021-11-05T22:37:52.186Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.11.0a2", + "slug": "python-3110a2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2021-11-05T21:24:50Z", + "release_page": null, + "release_notes_url": "", + "content": "**This is an early developer preview of Python 3.11**\r\n\r\n# Major new features of the 3.11 series, compared to 3.10\r\n\r\nPython 3.11 is still in development. This release, 3.11.0a2 is the second of seven planned alpha releases.\r\n\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\n\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2022-05-06) and, if necessary, may be modified or deleted up until the release candidate phase (2022-08-01). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.11 are still being planned and written. Among the new major new features and changes so far:\r\n\r\n* [PEP 657](https://www.python.org/dev/peps/pep-0657/) -- Include Fine-Grained Error Locations in Tracebacks\r\n* The [Faster Cpython Project](https://github.com/faster-cpython) is already yielding some exciting results: this version of CPython 3.11 is ~12% faster on the geometric mean of the [PyPerformance benchmarks](speed.python.org), compared to 3.10.0.\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.11 will be 3.11.0a3, currently scheduled for Monday, 2021-12-06\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.11/)\r\n* [PEP 664](https://www.python.org/dev/peps/pep-0664/), 3.11 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\nIn physical cosmology and astronomy, dark energy is an unknown form of energy that affects the universe on the largest scales. The first observational evidence for its existence came from measurements of supernovae, which showed that the universe does not expand at a constant rate; rather, the expansion of the universe is accelerating. Understanding the evolution of the universe requires knowledge of its starting conditions and its composition. Prior to these observations, it was thought that all forms of matter and energy in the universe would only cause the expansion to slow down over time.\r\n\r\nMeasurements of the cosmic microwave background suggest the universe began in a hot Big Bang, from which general relativity explains its evolution and the subsequent large-scale motion. Without introducing a new form of energy, there was no way to explain how an accelerating universe could be measured. Since the 1990s, dark energy has been the most accepted premise to account for the accelerated expansion.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.11

    \n

    Major new features of the 3.11 series, compared to 3.10

    \n

    Python 3.11 is still in development. This release, 3.11.0a2 is the second of seven planned alpha releases.

    \n

    Alpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.

    \n

    During the alpha phase, features may be added up until the start of the beta phase (2022-05-06) and, if necessary, may be modified or deleted up until the release candidate phase (2022-08-01). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Many new features for Python 3.11 are still being planned and written. Among the new major new features and changes so far:

    \n
      \n
    • PEP 657 -- Include Fine-Grained Error Locations in Tracebacks
    • \n
    • The Faster Cpython Project is already yielding some exciting results: this version of CPython 3.11 is ~12% faster on the geometric mean of the PyPerformance benchmarks, compared to 3.10.0.
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)
    • \n
    \n

    The next pre-release of Python 3.11 will be 3.11.0a3, currently scheduled for Monday, 2021-12-06

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    In physical cosmology and astronomy, dark energy is an unknown form of energy that affects the universe on the largest scales. The first observational evidence for its existence came from measurements of supernovae, which showed that the universe does not expand at a constant rate; rather, the expansion of the universe is accelerating. Understanding the evolution of the universe requires knowledge of its starting conditions and its composition. Prior to these observations, it was thought that all forms of matter and energy in the universe would only cause the expansion to slow down over time.

    \n

    Measurements of the cosmic microwave background suggest the universe began in a hot Big Bang, from which general relativity explains its evolution and the subsequent large-scale motion. Without introducing a new form of energy, there was no way to explain how an accelerating universe could be measured. Since the 1990s, dark energy has been the most accepted premise to account for the accelerated expansion.

    " + } +}, +{ + "model": "downloads.release", + "pk": 668, + "fields": { + "created": "2021-11-05T21:50:55.712Z", + "updated": "2022-03-15T22:01:59.258Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.8", + "slug": "python-398", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-11-05T21:22:58Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.8/whatsnew/changelog.html", + "content": "## This is the eighth maintenance release of Python 3.9\r\n\r\n**Note:** The release you're looking at is Python 3.9.8, a **bugfix release** for the legacy 3.9 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/). \r\n\r\nThere's been 202 commits since 3.9.7 which shows that there's still considerable interest in improving Python 3.9. To compare, at the same stage of the release cycle Python 3.8 received over 25% fewer commits. See the [changelog](https://docs.python.org/release/3.9.8/whatsnew/changelog.html) for details on what changed.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 573](https://www.python.org/dev/peps/pep-0573/), Module State Access from C Extension Methods\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 614](https://www.python.org/dev/peps/pep-0614/), Relaxing Grammar Restrictions On Decorators\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\nYou can find a more comprehensive list in this release's \"[What's New](https://docs.python.org/release/3.9.0/whatsnew/3.9.html)\" document.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## And Now for Something Completely Different\r\n**Geppo**: Well Reg, I think Pablo should be all right provided he doesn't attempt anything on the monumental scale of some of his earlier paintings, like Guernica or Mademoiselles d'Avignon or even his later War and Peace murals for the Temple of Peace chapel at Vallauris, because with this strong head wind I don't think even Doug Timpson of Manchester Harriers could paint anything on that kind of scale.\r\n
    **Reg Moss**: Well, thank you Ron. Well, there still seems to be no sign of Picasso, so I'll hand you back to the studio.\r\n
    **Linkman**: Well, we've just heard that Picasso is approaching the Tolworth roundabout on the A3 so come in Sam Trench at Tolworth.\r\n
    **Trench**: Well something certainly is happening here at Tolworth roundabout, David. I can now see Picasso, he's cycling down very hard towards the roundabout, he's about 75-50 yards away and I can now see his painting... it's an abstract... I can see some blue some purple and some little black oval shapes... I think I can see...\r\n
    A Pepperpot comes up and nudges him.\r\n
    **Pepperpot**: That's not Picasso - that's Kandinsky.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the eighth maintenance release of Python 3.9

    \n

    Note: The release you're looking at is Python 3.9.8, a bugfix release for the legacy 3.9 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    There's been 202 commits since 3.9.7 which shows that there's still considerable interest in improving Python 3.9. To compare, at the same stage of the release cycle Python 3.8 received over 25% fewer commits. See the changelog for details on what changed.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 573, Module State Access from C Extension Methods
    • \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 614, Relaxing Grammar Restrictions On Decorators
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    You can find a more comprehensive list in this release's \"What's New\" document.

    \n

    More resources

    \n\n

    And Now for Something Completely Different

    \n

    Geppo: Well Reg, I think Pablo should be all right provided he doesn't attempt anything on the monumental scale of some of his earlier paintings, like Guernica or Mademoiselles d'Avignon or even his later War and Peace murals for the Temple of Peace chapel at Vallauris, because with this strong head wind I don't think even Doug Timpson of Manchester Harriers could paint anything on that kind of scale.\n
    Reg Moss: Well, thank you Ron. Well, there still seems to be no sign of Picasso, so I'll hand you back to the studio.\n
    Linkman: Well, we've just heard that Picasso is approaching the Tolworth roundabout on the A3 so come in Sam Trench at Tolworth.\n
    Trench: Well something certainly is happening here at Tolworth roundabout, David. I can now see Picasso, he's cycling down very hard towards the roundabout, he's about 75-50 yards away and I can now see his painting... it's an abstract... I can see some blue some purple and some little black oval shapes... I think I can see...\n
    A Pepperpot comes up and nudges him.\n
    Pepperpot: That's not Picasso - that's Kandinsky.

    " + } +}, +{ + "model": "downloads.release", + "pk": 669, + "fields": { + "created": "2021-11-15T21:48:49.065Z", + "updated": "2022-03-15T22:02:08.760Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.9", + "slug": "python-399", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-11-15T21:41:58Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.9/whatsnew/changelog.html", + "content": "## This is the ninth maintenance release of Python 3.9\r\n\r\n**Note:** The release you're looking at is Python 3.9.9, an expedited **bugfix release** for the legacy 3.9 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/). \r\n\r\n3.9.9 was released out of schedule as a hotfix for an `argparse` regression in Python 3.9.8 which caused complex command-line tools to fail recognizing sub-commands properly. Details in [BPO-45235](https://bugs.python.org/issue45235). There are only three other bugfixes in this release compared to 3.9.8. See the [changelog](https://docs.python.org/release/3.9.9/whatsnew/changelog.html) for details on what changed.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 573](https://www.python.org/dev/peps/pep-0573/), Module State Access from C Extension Methods\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 614](https://www.python.org/dev/peps/pep-0614/), Relaxing Grammar Restrictions On Decorators\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\nYou can find a more comprehensive list in this release's \"[What's New](https://docs.python.org/release/3.9.0/whatsnew/3.9.html)\" document.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## And Now for Something Completely Different\r\n**Geppo**: Well Reg, I think Pablo should be all right provided he doesn't attempt anything on the monumental scale of some of his earlier paintings, like Guernica or Mademoiselles d'Avignon or even his later War and Peace murals for the Temple of Peace chapel at Vallauris, because with this strong head wind I don't think even Doug Timpson of Manchester Harriers could paint anything on that kind of scale.\r\n
    **Reg Moss**: Well, thank you Ron. Well, there still seems to be no sign of Picasso, so I'll hand you back to the studio.\r\n
    **Linkman**: Well, we've just heard that Picasso is approaching the Tolworth roundabout on the A3 so come in Sam Trench at Tolworth.\r\n
    **Trench**: Well something certainly is happening here at Tolworth roundabout, David. I can now see Picasso, he's cycling down very hard towards the roundabout, he's about 75-50 yards away and I can now see his painting... it's an abstract... I can see some blue some purple and some little black oval shapes... I think I can see...\r\n
    A Pepperpot comes up and nudges him.\r\n
    **Pepperpot**: That's not Picasso - that's Kandinsky.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the ninth maintenance release of Python 3.9

    \n

    Note: The release you're looking at is Python 3.9.9, an expedited bugfix release for the legacy 3.9 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    3.9.9 was released out of schedule as a hotfix for an argparse regression in Python 3.9.8 which caused complex command-line tools to fail recognizing sub-commands properly. Details in BPO-45235. There are only three other bugfixes in this release compared to 3.9.8. See the changelog for details on what changed.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 573, Module State Access from C Extension Methods
    • \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 614, Relaxing Grammar Restrictions On Decorators
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    You can find a more comprehensive list in this release's \"What's New\" document.

    \n

    More resources

    \n\n

    And Now for Something Completely Different

    \n

    Geppo: Well Reg, I think Pablo should be all right provided he doesn't attempt anything on the monumental scale of some of his earlier paintings, like Guernica or Mademoiselles d'Avignon or even his later War and Peace murals for the Temple of Peace chapel at Vallauris, because with this strong head wind I don't think even Doug Timpson of Manchester Harriers could paint anything on that kind of scale.\n
    Reg Moss: Well, thank you Ron. Well, there still seems to be no sign of Picasso, so I'll hand you back to the studio.\n
    Linkman: Well, we've just heard that Picasso is approaching the Tolworth roundabout on the A3 so come in Sam Trench at Tolworth.\n
    Trench: Well something certainly is happening here at Tolworth roundabout, David. I can now see Picasso, he's cycling down very hard towards the roundabout, he's about 75-50 yards away and I can now see his painting... it's an abstract... I can see some blue some purple and some little black oval shapes... I think I can see...\n
    A Pepperpot comes up and nudges him.\n
    Pepperpot: That's not Picasso - that's Kandinsky.

    " + } +}, +{ + "model": "downloads.release", + "pk": 670, + "fields": { + "created": "2021-12-06T18:52:06.667Z", + "updated": "2022-01-15T03:17:23.178Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.1", + "slug": "python-3101", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2021-12-06T18:47:27Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.10.1/whatsnew/changelog.html#python-3-10-1-final", + "content": "![Python 3.10 release logo](https://user-images.githubusercontent.com/11718525/135937807-fd3e0fd2-a31a-47a4-90c6-b0bb1d0704d4.png)\r\n\r\n## This is the first maintenance release of Python 3.10\r\n\r\nPython 3.10.1 is the newest major release of the Python programming language, and it contains many new features and optimizations.\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nAmong the new major new features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n* [PEP 634 ](https://www.python.org/dev/peps/pep-0634/) -- Structural Pattern Matching: Specification\r\n* [PEP 635 ](https://www.python.org/dev/peps/pep-0635/) -- Structural Pattern Matching: Motivation and Rationale\r\n* [PEP 636 ](https://www.python.org/dev/peps/pep-0636/) -- Structural Pattern Matching: Tutorial\r\n* [PEP 644 ](https://www.python.org/dev/peps/pep-0644/) -- Require OpenSSL 1.1.1 or newer\r\n* [PEP 624 ](https://www.python.org/dev/peps/pep-0624/) -- Remove Py_UNICODE encoder APIs\r\n* [PEP 597 ](https://www.python.org/dev/peps/pep-0597/) -- Add optional EncodingWarning\r\n\r\n[bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) used to be on this list\r\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it [here](https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/) to learn more.\r\n\r\n# More resources\r\n\r\n* [Changelog](https://docs.python.org/3.10/whatsnew/changelog.html#changelog)\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nThe Meissner effect (or Meissner\u2013Ochsenfeld effect) is the expulsion of a magnetic field from a superconductor during its transition to the superconducting state when it is cooled below the critical temperature. This expulsion will repel a nearby magnet. The German physicists Walther Meissner and Robert Ochsenfeld discovered this phenomenon in 1933 by measuring the magnetic field distribution outside superconducting tin and lead samples. The experiment demonstrated for the first time that superconductors were more than just perfect conductors and provided a uniquely defining property of the superconductor state. The ability for the expulsion effect is determined by the nature of equilibrium formed by the neutralization within the unit cell of a superconductor.\r\n\r\nYou can do [very cool things](https://www.youtube.com/watch?v=HRLvVkkq5GE) with it!", + "content_markup_type": "markdown", + "_content_rendered": "

    \"Python

    \n

    This is the first maintenance release of Python 3.10

    \n

    Python 3.10.1 is the newest major release of the Python programming language, and it contains many new features and optimizations.

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Among the new major new features and changes so far:

    \n
      \n
    • PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • PEP 613 -- Explicit Type Aliases
    • \n
    • PEP 634 -- Structural Pattern Matching: Specification
    • \n
    • PEP 635 -- Structural Pattern Matching: Motivation and Rationale
    • \n
    • PEP 636 -- Structural Pattern Matching: Tutorial
    • \n
    • PEP 644 -- Require OpenSSL 1.1.1 or newer
    • \n
    • PEP 624 -- Remove Py_UNICODE encoder APIs
    • \n
    • PEP 597 -- Add optional EncodingWarning
    • \n
    \n

    bpo-38605: from __future__ import annotations (PEP 563) used to be on this list\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it here to learn more.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    The Meissner effect (or Meissner\u2013Ochsenfeld effect) is the expulsion of a magnetic field from a superconductor during its transition to the superconducting state when it is cooled below the critical temperature. This expulsion will repel a nearby magnet. The German physicists Walther Meissner and Robert Ochsenfeld discovered this phenomenon in 1933 by measuring the magnetic field distribution outside superconducting tin and lead samples. The experiment demonstrated for the first time that superconductors were more than just perfect conductors and provided a uniquely defining property of the superconductor state. The ability for the expulsion effect is determined by the nature of equilibrium formed by the neutralization within the unit cell of a superconductor.

    \n

    You can do very cool things with it!

    " + } +}, +{ + "model": "downloads.release", + "pk": 671, + "fields": { + "created": "2021-12-08T23:40:41.356Z", + "updated": "2021-12-09T13:06:11.575Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.11.0a3", + "slug": "python-3110a3", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2021-12-08T23:36:26Z", + "release_page": null, + "release_notes_url": "", + "content": "**This is an early developer preview of Python 3.11**\r\n\r\n# Major new features of the 3.11 series, compared to 3.10\r\n\r\nPython 3.11 is still in development. This release, 3.11.0a3 is the third of seven planned alpha releases.\r\n\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\n\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2022-05-06) and, if necessary, may be modified or deleted up until the release candidate phase (2022-08-01). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.11 are still being planned and written. Among the new major new features and changes so far:\r\n\r\n* [PEP 657](https://www.python.org/dev/peps/pep-0657/) -- Include Fine-Grained Error Locations in Tracebacks\r\n* [PEP 654](https://www.python.org/dev/peps/pep-0654/) -- Exception Groups and except*\r\n* The [Faster Cpython Project](https://github.com/faster-cpython) is already yielding some exciting results: this version of CPython 3.11 is ~ 19% faster on the geometric mean of the [PyPerformance benchmarks](speed.python.org), compared to 3.10.0.\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.11 will be 3.11.0a4, currently scheduled for Monday, 2022-01-03.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.11/)\r\n* [PEP 664](https://www.python.org/dev/peps/pep-0664/), 3.11 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\nRayleigh scattering, named after the nineteenth-century British physicist Lord Rayleigh is the predominantly elastic scattering of light or other electromagnetic radiation by particles much smaller than the wavelength of the radiation. For light frequencies well below the resonance frequency of the scattering particle, the amount of scattering is inversely proportional to the fourth power of the wavelength. Rayleigh scattering results from the electric polarizability of the particles. The oscillating electric field of a light wave acts on the charges within a particle, causing them to move at the same frequency. The particle, therefore, becomes a small radiating dipole whose radiation we see as scattered light. The particles may be individual atoms or molecules; it can occur when light travels through transparent solids and liquids but is most prominently seen in gases.\r\n\r\nThe strong wavelength dependence of the scattering means that shorter (blue) wavelengths are scattered more strongly than longer (red) wavelengths. This results in the indirect blue light coming from all regions of the sky.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.11

    \n

    Major new features of the 3.11 series, compared to 3.10

    \n

    Python 3.11 is still in development. This release, 3.11.0a3 is the third of seven planned alpha releases.

    \n

    Alpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.

    \n

    During the alpha phase, features may be added up until the start of the beta phase (2022-05-06) and, if necessary, may be modified or deleted up until the release candidate phase (2022-08-01). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Many new features for Python 3.11 are still being planned and written. Among the new major new features and changes so far:

    \n
      \n
    • PEP 657 -- Include Fine-Grained Error Locations in Tracebacks
    • \n
    • PEP 654 -- Exception Groups and except*
    • \n
    • The Faster Cpython Project is already yielding some exciting results: this version of CPython 3.11 is ~ 19% faster on the geometric mean of the PyPerformance benchmarks, compared to 3.10.0.
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)
    • \n
    \n

    The next pre-release of Python 3.11 will be 3.11.0a4, currently scheduled for Monday, 2022-01-03.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Rayleigh scattering, named after the nineteenth-century British physicist Lord Rayleigh is the predominantly elastic scattering of light or other electromagnetic radiation by particles much smaller than the wavelength of the radiation. For light frequencies well below the resonance frequency of the scattering particle, the amount of scattering is inversely proportional to the fourth power of the wavelength. Rayleigh scattering results from the electric polarizability of the particles. The oscillating electric field of a light wave acts on the charges within a particle, causing them to move at the same frequency. The particle, therefore, becomes a small radiating dipole whose radiation we see as scattered light. The particles may be individual atoms or molecules; it can occur when light travels through transparent solids and liquids but is most prominently seen in gases.

    \n

    The strong wavelength dependence of the scattering means that shorter (blue) wavelengths are scattered more strongly than longer (red) wavelengths. This results in the indirect blue light coming from all regions of the sky.

    " + } +}, +{ + "model": "downloads.release", + "pk": 672, + "fields": { + "created": "2022-01-14T21:11:33.897Z", + "updated": "2022-01-17T15:04:31.044Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.2", + "slug": "python-3102", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2022-01-14T19:17:45Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.10.2/whatsnew/changelog.html#python-3-10-2-final", + "content": "![Python 3.10 release logo](https://user-images.githubusercontent.com/11718525/135937807-fd3e0fd2-a31a-47a4-90c6-b0bb1d0704d4.png)\r\n\r\n## This is the second maintenance release of Python 3.10\r\n\r\nPython 3.10.2 is the newest major release of the Python programming language, and it contains many new features and optimizations.\r\n\r\n**This is a special bugfix release ahead of schedule to address a memory leak that was happening on certain function calls when using [Cython](https://github.com/cython/cython)**. The memory leak consisted of a small constant amount of bytes in certain function calls from Cython code. Although in most cases this was not very noticeable, it was very impactful for long-running applications and certain usage patterns. Check [bpo-46347](https://bugs.python.org/issue46347) for more information.\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nAmong the new major new features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n* [PEP 634 ](https://www.python.org/dev/peps/pep-0634/) -- Structural Pattern Matching: Specification\r\n* [PEP 635 ](https://www.python.org/dev/peps/pep-0635/) -- Structural Pattern Matching: Motivation and Rationale\r\n* [PEP 636 ](https://www.python.org/dev/peps/pep-0636/) -- Structural Pattern Matching: Tutorial\r\n* [PEP 644 ](https://www.python.org/dev/peps/pep-0644/) -- Require OpenSSL 1.1.1 or newer\r\n* [PEP 624 ](https://www.python.org/dev/peps/pep-0624/) -- Remove Py_UNICODE encoder APIs\r\n* [PEP 597 ](https://www.python.org/dev/peps/pep-0597/) -- Add optional EncodingWarning\r\n\r\n[bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) used to be on this list\r\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it [here](https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/) to learn more.\r\n\r\n# More resources\r\n\r\n* [Changelog](https://docs.python.org/3.10/whatsnew/changelog.html#changelog)\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nThe Carnot cycle is a theoretical ideal thermodynamic cycle proposed by French physicist Sadi Carnot in 1824 and expanded upon by others in the 1830s and 1840s. It provides an upper limit on the efficiency that any classical thermodynamic engine can achieve during the conversion of heat into work, or conversely, the efficiency of a refrigeration system in creating a temperature difference by the application of work to the system. It is not an actual thermodynamic cycle but is a theoretical construct.", + "content_markup_type": "markdown", + "_content_rendered": "

    \"Python

    \n

    This is the second maintenance release of Python 3.10

    \n

    Python 3.10.2 is the newest major release of the Python programming language, and it contains many new features and optimizations.

    \n

    This is a special bugfix release ahead of schedule to address a memory leak that was happening on certain function calls when using Cython. The memory leak consisted of a small constant amount of bytes in certain function calls from Cython code. Although in most cases this was not very noticeable, it was very impactful for long-running applications and certain usage patterns. Check bpo-46347 for more information.

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Among the new major new features and changes so far:

    \n
      \n
    • PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • PEP 613 -- Explicit Type Aliases
    • \n
    • PEP 634 -- Structural Pattern Matching: Specification
    • \n
    • PEP 635 -- Structural Pattern Matching: Motivation and Rationale
    • \n
    • PEP 636 -- Structural Pattern Matching: Tutorial
    • \n
    • PEP 644 -- Require OpenSSL 1.1.1 or newer
    • \n
    • PEP 624 -- Remove Py_UNICODE encoder APIs
    • \n
    • PEP 597 -- Add optional EncodingWarning
    • \n
    \n

    bpo-38605: from __future__ import annotations (PEP 563) used to be on this list\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it here to learn more.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    The Carnot cycle is a theoretical ideal thermodynamic cycle proposed by French physicist Sadi Carnot in 1824 and expanded upon by others in the 1830s and 1840s. It provides an upper limit on the efficiency that any classical thermodynamic engine can achieve during the conversion of heat into work, or conversely, the efficiency of a refrigeration system in creating a temperature difference by the application of work to the system. It is not an actual thermodynamic cycle but is a theoretical construct.

    " + } +}, +{ + "model": "downloads.release", + "pk": 673, + "fields": { + "created": "2022-01-14T21:20:32.869Z", + "updated": "2022-01-14T21:22:20.753Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.11.0a4", + "slug": "python-3110a4", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2022-01-14T21:17:44Z", + "release_page": null, + "release_notes_url": "", + "content": "**This is an early developer preview of Python 3.11**\r\n\r\n# Major new features of the 3.11 series, compared to 3.10\r\n\r\nPython 3.11 is still in development. This release, 3.11.0a4 is the fourth of seven planned alpha releases.\r\n\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\n\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2022-05-06) and, if necessary, may be modified or deleted up until the release candidate phase (2022-08-01). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.11 are still being planned and written. Among the new major new features and changes so far:\r\n\r\n* [PEP 657](https://www.python.org/dev/peps/pep-0657/) -- Include Fine-Grained Error Locations in Tracebacks\r\n* [PEP 654](https://www.python.org/dev/peps/pep-0654/) -- Exception Groups and except*\r\n* The [Faster Cpython Project](https://github.com/faster-cpython) is already yielding some exciting results: this version of CPython 3.11 is ~ 19% faster on the geometric mean of the [PyPerformance benchmarks](speed.python.org), compared to 3.10.0.\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.11 will be 3.11.0a5, currently scheduled for Wednesday, 2022-02-02.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.11/)\r\n* [PEP 664](https://www.python.org/dev/peps/pep-0664/), 3.11 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\nThe Magnus effect is an observable phenomenon that is commonly associated with a spinning object moving through a fluid. The path of the spinning object is deflected in a manner that is not present when the object is not spinning. The deflection can be explained by the difference in pressure of the fluid on opposite sides of the spinning object and this effect is dependent on the speed of rotation. \r\n\r\nThe most readily observable case of the Magnus effect is when a spinning sphere (or cylinder) curves away from the arc it would follow if it were not spinning. It is often used by association football and volleyball players, baseball pitchers, and cricket bowlers.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.11

    \n

    Major new features of the 3.11 series, compared to 3.10

    \n

    Python 3.11 is still in development. This release, 3.11.0a4 is the fourth of seven planned alpha releases.

    \n

    Alpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.

    \n

    During the alpha phase, features may be added up until the start of the beta phase (2022-05-06) and, if necessary, may be modified or deleted up until the release candidate phase (2022-08-01). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Many new features for Python 3.11 are still being planned and written. Among the new major new features and changes so far:

    \n
      \n
    • PEP 657 -- Include Fine-Grained Error Locations in Tracebacks
    • \n
    • PEP 654 -- Exception Groups and except*
    • \n
    • The Faster Cpython Project is already yielding some exciting results: this version of CPython 3.11 is ~ 19% faster on the geometric mean of the PyPerformance benchmarks, compared to 3.10.0.
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)
    • \n
    \n

    The next pre-release of Python 3.11 will be 3.11.0a5, currently scheduled for Wednesday, 2022-02-02.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    The Magnus effect is an observable phenomenon that is commonly associated with a spinning object moving through a fluid. The path of the spinning object is deflected in a manner that is not present when the object is not spinning. The deflection can be explained by the difference in pressure of the fluid on opposite sides of the spinning object and this effect is dependent on the speed of rotation.

    \n

    The most readily observable case of the Magnus effect is when a spinning sphere (or cylinder) curves away from the arc it would follow if it were not spinning. It is often used by association football and volleyball players, baseball pitchers, and cricket bowlers.

    " + } +}, +{ + "model": "downloads.release", + "pk": 674, + "fields": { + "created": "2022-01-14T22:09:37.020Z", + "updated": "2022-01-14T22:10:50.844Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.10", + "slug": "python-3910", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2022-01-14T21:58:12Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.10/whatsnew/changelog.html", + "content": "## This is the ninth maintenance release of Python 3.9\r\n\r\n**Note:** The release you're looking at is Python 3.9.10, a **bugfix release** for the legacy 3.9 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/). \r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 573](https://www.python.org/dev/peps/pep-0573/), Module State Access from C Extension Methods\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 614](https://www.python.org/dev/peps/pep-0614/), Relaxing Grammar Restrictions On Decorators\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\nYou can find a more comprehensive list in this release's \"[What's New](https://docs.python.org/release/3.9.0/whatsnew/3.9.html)\" document.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## And Now for Something Completely Different\r\n(Old lady on the phone.)\r\n
    **Mrs. Little:** Hello, is that the fire brigade?\r\n
    (Cut to the fire station.)\r\n
    **First Fireman**: No, sorry, wrong number.\r\n
    (He puts the phone back. He's among four other firemen in full gear, surrounded by fire-fighting equipment and a gleaming fire engine. The firemen are engaged in a variety of homely pursuits: one is soldering a crystal set, another is cooking at a workbench, another is doing embroidery, another is at a sewing machine.)\r\n
    **Second Fireman**: That phone's not stopped ringing all day.\r\n
    **Third Fireman**: What happens when you've mixed the batter, do you dice the ham with the coriander?\r\n
    **First Fireman**: No, no, you put them in separately when the vine leaves are ready.\r\n
    (The phone rings.)\r\n
    **Second Fireman**: Oh, no, not again.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the ninth maintenance release of Python 3.9

    \n

    Note: The release you're looking at is Python 3.9.10, a bugfix release for the legacy 3.9 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 573, Module State Access from C Extension Methods
    • \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 614, Relaxing Grammar Restrictions On Decorators
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    You can find a more comprehensive list in this release's \"What's New\" document.

    \n

    More resources

    \n\n

    And Now for Something Completely Different

    \n

    (Old lady on the phone.)\n
    Mrs. Little: Hello, is that the fire brigade?\n
    (Cut to the fire station.)\n
    First Fireman: No, sorry, wrong number.\n
    (He puts the phone back. He's among four other firemen in full gear, surrounded by fire-fighting equipment and a gleaming fire engine. The firemen are engaged in a variety of homely pursuits: one is soldering a crystal set, another is cooking at a workbench, another is doing embroidery, another is at a sewing machine.)\n
    Second Fireman: That phone's not stopped ringing all day.\n
    Third Fireman: What happens when you've mixed the batter, do you dice the ham with the coriander?\n
    First Fireman: No, no, you put them in separately when the vine leaves are ready.\n
    (The phone rings.)\n
    Second Fireman: Oh, no, not again.

    " + } +}, +{ + "model": "downloads.release", + "pk": 675, + "fields": { + "created": "2022-02-03T22:55:59.759Z", + "updated": "2022-02-05T00:17:09.480Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.11.0a5", + "slug": "python-3110a5", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2022-02-03T22:54:59Z", + "release_page": null, + "release_notes_url": "", + "content": "**This is an early developer preview of Python 3.11**\r\n\r\n# Major new features of the 3.11 series, compared to 3.10\r\n\r\nPython 3.11 is still in development. This release, 3.11.0a5 is the fifth of seven planned alpha releases.\r\n\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\n\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2022-05-06) and, if necessary, may be modified or deleted up until the release candidate phase (2022-08-01). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.11 are still being planned and written. Among the new major new features and changes so far:\r\n\r\n* [PEP 657](https://www.python.org/dev/peps/pep-0657/) -- Include Fine-Grained Error Locations in Tracebacks\r\n* [PEP 654](https://www.python.org/dev/peps/pep-0654/) -- Exception Groups and except*\r\n* [PEP 673](https://www.python.org/dev/peps/pep-0673/) -- Self Type\r\n* [PEP 646](https://www.python.org/dev/peps/pep-0646/)-- Variadic Generics\r\n* The [Faster Cpython Project](https://github.com/faster-cpython) is already yielding some exciting results: this version of CPython 3.11 is ~ 19% faster on the geometric mean of the [PyPerformance benchmarks](speed.python.org), compared to 3.10.0.\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.11 will be 3.11.0a6, currently scheduled for Monday, 2022-02-28.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.11/)\r\n* [PEP 664](https://www.python.org/dev/peps/pep-0664/), 3.11 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\nIn physics, the Poynting vector (Umov-Poynting vector) represents the directional energy flux (the energy transfer per unit area per unit time) or power flow of an electromagnetic field. It is named after its discoverer John Henry Poynting who first derived it in 1884. Oliver Heaviside also discovered it independently in the more general form that recognises the freedom of adding the curl of an arbitrary vector field to the definition. The Poynting vector is used throughout electromagnetics in conjunction with Poynting's theorem, the continuity equation expressing conservation of electromagnetic energy, to calculate the power flow in electromagnetic fields.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.11

    \n

    Major new features of the 3.11 series, compared to 3.10

    \n

    Python 3.11 is still in development. This release, 3.11.0a5 is the fifth of seven planned alpha releases.

    \n

    Alpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.

    \n

    During the alpha phase, features may be added up until the start of the beta phase (2022-05-06) and, if necessary, may be modified or deleted up until the release candidate phase (2022-08-01). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Many new features for Python 3.11 are still being planned and written. Among the new major new features and changes so far:

    \n
      \n
    • PEP 657 -- Include Fine-Grained Error Locations in Tracebacks
    • \n
    • PEP 654 -- Exception Groups and except*
    • \n
    • PEP 673 -- Self Type
    • \n
    • PEP 646-- Variadic Generics
    • \n
    • The Faster Cpython Project is already yielding some exciting results: this version of CPython 3.11 is ~ 19% faster on the geometric mean of the PyPerformance benchmarks, compared to 3.10.0.
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)
    • \n
    \n

    The next pre-release of Python 3.11 will be 3.11.0a6, currently scheduled for Monday, 2022-02-28.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    In physics, the Poynting vector (Umov-Poynting vector) represents the directional energy flux (the energy transfer per unit area per unit time) or power flow of an electromagnetic field. It is named after its discoverer John Henry Poynting who first derived it in 1884. Oliver Heaviside also discovered it independently in the more general form that recognises the freedom of adding the curl of an arbitrary vector field to the definition. The Poynting vector is used throughout electromagnetics in conjunction with Poynting's theorem, the continuity equation expressing conservation of electromagnetic energy, to calculate the power flow in electromagnetic fields.

    " + } +}, +{ + "model": "downloads.release", + "pk": 676, + "fields": { + "created": "2022-03-07T18:17:53.037Z", + "updated": "2022-04-04T10:51:37.181Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.11.0a6", + "slug": "python-3110a6", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2022-03-07T18:16:03Z", + "release_page": null, + "release_notes_url": "", + "content": "**This is an early developer preview of Python 3.11**\r\n\r\n# Major new features of the 3.11 series, compared to 3.10\r\n\r\nPython 3.11 is still in development. This release, 3.11.0a6 is the sixth of seven planned alpha releases.\r\n\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\n\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2022-05-06) and, if necessary, may be modified or deleted up until the release candidate phase (2022-08-01). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.11 are still being planned and written. Among the new major new features and changes so far:\r\n\r\n* [PEP 657](https://www.python.org/dev/peps/pep-0657/) -- Include Fine-Grained Error Locations in Tracebacks\r\n* [PEP 654](https://www.python.org/dev/peps/pep-0654/) -- Exception Groups and except*\r\n* [PEP 673](https://www.python.org/dev/peps/pep-0673/) -- Self Type\r\n* [PEP 646](https://www.python.org/dev/peps/pep-0646/)-- Variadic Generics\r\n* [PEP 680](https://www.python.org/dev/peps/pep-0680/)-- tomllib: Support for Parsing TOML in the Standard Library\r\n* The [Faster Cpython Project](https://github.com/faster-cpython) is already yielding some exciting results: this version of CPython 3.11 is ~ 19% faster on the geometric mean of the [PyPerformance benchmarks](https://speed.python.org), compared to 3.10.0.\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.11 will be 3.11.0a7, currently scheduled for Tuesday, 2022-04-05.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.11/)\r\n* [PEP 664](https://www.python.org/dev/peps/pep-0664/), 3.11 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\nIn astrophysics and nuclear physics, nuclear pasta is a theoretical type of degenerate matter that is postulated to exist within the crusts of neutron stars. If it does in fact exist, nuclear pasta is the strongest material in the universe. Between the surface of a neutron star and the quark-gluon plasma at the core, at matter densities of 10^14 g/cm3, nuclear attraction and Coulomb repulsion forces are of similar magnitude. The competition between the forces leads to the formation of a variety of complex structures assembled from neutrons and protons. Astrophysicists call these types of structures nuclear pasta because the geometry of the structures resembles various types of pasta.\r\n\r\nThere are several phases of evolution (I swear these names are real), including the gnocchi phase, the spaghetti phase, the lasagna phase, the bucatini phase and the Swiss cheese phase.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.11

    \n

    Major new features of the 3.11 series, compared to 3.10

    \n

    Python 3.11 is still in development. This release, 3.11.0a6 is the sixth of seven planned alpha releases.

    \n

    Alpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.

    \n

    During the alpha phase, features may be added up until the start of the beta phase (2022-05-06) and, if necessary, may be modified or deleted up until the release candidate phase (2022-08-01). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Many new features for Python 3.11 are still being planned and written. Among the new major new features and changes so far:

    \n
      \n
    • PEP 657 -- Include Fine-Grained Error Locations in Tracebacks
    • \n
    • PEP 654 -- Exception Groups and except*
    • \n
    • PEP 673 -- Self Type
    • \n
    • PEP 646-- Variadic Generics
    • \n
    • PEP 680-- tomllib: Support for Parsing TOML in the Standard Library
    • \n
    • The Faster Cpython Project is already yielding some exciting results: this version of CPython 3.11 is ~ 19% faster on the geometric mean of the PyPerformance benchmarks, compared to 3.10.0.
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)
    • \n
    \n

    The next pre-release of Python 3.11 will be 3.11.0a7, currently scheduled for Tuesday, 2022-04-05.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    In astrophysics and nuclear physics, nuclear pasta is a theoretical type of degenerate matter that is postulated to exist within the crusts of neutron stars. If it does in fact exist, nuclear pasta is the strongest material in the universe. Between the surface of a neutron star and the quark-gluon plasma at the core, at matter densities of 10^14 g/cm3, nuclear attraction and Coulomb repulsion forces are of similar magnitude. The competition between the forces leads to the formation of a variety of complex structures assembled from neutrons and protons. Astrophysicists call these types of structures nuclear pasta because the geometry of the structures resembles various types of pasta.

    \n

    There are several phases of evolution (I swear these names are real), including the gnocchi phase, the spaghetti phase, the lasagna phase, the bucatini phase and the Swiss cheese phase.

    " + } +}, +{ + "model": "downloads.release", + "pk": 677, + "fields": { + "created": "2022-03-15T15:27:43.107Z", + "updated": "2022-03-16T15:33:39.591Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.13", + "slug": "python-3713", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2022-03-16T12:00:00Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.7.13/whatsnew/changelog.html#changelog", + "content": "**Note:** The release you are looking at is **Python 3.7.13**, a **security bugfix release** for the legacy **3.7** series which is now in the **security fix** phase of its life cycle. See the `downloads page `_ for currently supported versions of Python and for the most recent source-only **security fix** release for 3.7. The final **bugfix release** with binary installers for 3.7 was `3.7.9 `_.\r\n\r\nPlease see the `Full Changelog `_ link for more information about the contents of this release and see `What\u2019s New In Python 3.7 `_ for more information about 3.7 features. \r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.7.13, a security bugfix release for the legacy 3.7 series which is now in the security fix phase of its life cycle. See the downloads page for currently supported versions of Python and for the most recent source-only security fix release for 3.7. The final bugfix release with binary installers for 3.7 was 3.7.9.

    \n

    Please see the Full Changelog link for more information about the contents of this release and see What\u2019s New In Python 3.7 for more information about 3.7 features.

    \n
    \n

    More resources

    \n\n
    \n" + } +}, +{ + "model": "downloads.release", + "pk": 678, + "fields": { + "created": "2022-03-15T21:58:48.451Z", + "updated": "2022-03-16T15:04:47.891Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.13", + "slug": "python-3813", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2022-03-16T13:04:43Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.8.13/whatsnew/changelog.html", + "content": "## This is a security release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.13, a **security bugfix release** for the legacy 3.8 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/).\r\n\r\n## Security content in this release\r\n- 15 (sic!) CVEs: libexpat upgraded from 2.4.1 to 2.4.7 ([BPO-46794](https://bugs.python.org/issue46794), [BPO-46932](https://bugs.python.org/issue46932), [BPO-46811](https://bugs.python.org/issue46811), [BPO-46784](https://bugs.python.org/issue46784), [BPO-46400](https://bugs.python.org/issue46400))\r\n- CVE-2022-0778: OpenSSL upgraded from 1.1.1l to 1.1.1n in macOS and Windows installers ([BPO-47024](https://bugs.python.org/issue47024))\r\n- CVE-2016-3189, CVE-2019-12900: bzip2 upgraded from 1.0.6 to 1.0.8 in Windows installers ([BPO-44549](https://bugs.python.org/issue44549))\r\n- CVE-2022-26488: Windows installer now ensures the correct path is being repaired when \"Add to PATH\" is used ([BPO-46948](https://bugs.python.org/issue46948))\r\n- CVE-2021-28363: bundled pip upgraded from 21.2.4 to 22.0.4 ([BPO-46985](https://bugs.python.org/issue46985))\r\n- authorization bypass fixed in urllib.request ([BPO-46756](https://bugs.python.org/issue46756))\r\n- REDoS avoided in importlib.metadata ([BPO-46474](https://bugs.python.org/issue46474))\r\n- SQLite upgraded from 3.36.0 to 3.37.2 in macOS and Windows installers ([BPO-45925](https://bugs.python.org/issue45925))\r\n\r\n## No installers\r\nAccording to the release calendar specified in [PEP 569](https://www.python.org/dev/peps/pep-0569/), Python 3.8 is now in the \"security fixes only\" stage of its life cycle: 3.8 branch only accepts security fixes and releases of those are made irregularly in source-only form until October 2024. Python 3.8 isn't receiving regular bug fixes anymore, and binary installers are no longer provided for it. **Python 3.8.10** was the last full *bugfix release* of Python 3.8 with binary installers.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a security release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.13, a security bugfix release for the legacy 3.8 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    Security content in this release

    \n
      \n
    • 15 (sic!) CVEs: libexpat upgraded from 2.4.1 to 2.4.7 (BPO-46794, BPO-46932, BPO-46811, BPO-46784, BPO-46400)
    • \n
    • CVE-2022-0778: OpenSSL upgraded from 1.1.1l to 1.1.1n in macOS and Windows installers (BPO-47024)
    • \n
    • CVE-2016-3189, CVE-2019-12900: bzip2 upgraded from 1.0.6 to 1.0.8 in Windows installers (BPO-44549)
    • \n
    • CVE-2022-26488: Windows installer now ensures the correct path is being repaired when \"Add to PATH\" is used (BPO-46948)
    • \n
    • CVE-2021-28363: bundled pip upgraded from 21.2.4 to 22.0.4 (BPO-46985)
    • \n
    • authorization bypass fixed in urllib.request (BPO-46756)
    • \n
    • REDoS avoided in importlib.metadata (BPO-46474)
    • \n
    • SQLite upgraded from 3.36.0 to 3.37.2 in macOS and Windows installers (BPO-45925)
    • \n
    \n

    No installers

    \n

    According to the release calendar specified in PEP 569, Python 3.8 is now in the \"security fixes only\" stage of its life cycle: 3.8 branch only accepts security fixes and releases of those are made irregularly in source-only form until October 2024. Python 3.8 isn't receiving regular bug fixes anymore, and binary installers are no longer provided for it. Python 3.8.10 was the last full bugfix release of Python 3.8 with binary installers.

    " + } +}, +{ + "model": "downloads.release", + "pk": 679, + "fields": { + "created": "2022-03-15T22:37:26.435Z", + "updated": "2022-03-16T15:25:21.741Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.11", + "slug": "python-3911", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2022-03-16T14:04:11Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.11/whatsnew/changelog.html", + "content": "## This is the eleventh maintenance release of Python 3.9\r\n\r\n**Note:** The release you're looking at is Python 3.9.11, a **bugfix release** for the legacy 3.9 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/). \r\n\r\n## Security content in this release\r\n- 15 (sic!) CVEs: libexpat upgraded from 2.4.1 to 2.4.7 ([BPO-46794](https://bugs.python.org/issue46794), [BPO-46932](https://bugs.python.org/issue46932), [BPO-46811](https://bugs.python.org/issue46811), [BPO-46784](https://bugs.python.org/issue46784), [BPO-46400](https://bugs.python.org/issue46400))\r\n- CVE-2022-0778: OpenSSL upgraded from 1.1.1l to 1.1.1n in macOS and Windows installers ([BPO-47024](https://bugs.python.org/issue47024))\r\n- CVE-2016-3189, CVE-2019-12900: bzip2 upgraded from 1.0.6 to 1.0.8 in Windows installers ([BPO-44549](https://bugs.python.org/issue44549))\r\n- CVE-2022-26488: Windows installer now ensures the correct path is being repaired when \"Add to PATH\" is used ([BPO-46948](https://bugs.python.org/issue46948))\r\n- CVE-2021-28363: bundled pip upgraded from 21.2.4 to 22.0.4 ([BPO-46985](https://bugs.python.org/issue46985))\r\n- authorization bypass fixed in urllib.request ([BPO-46756](https://bugs.python.org/issue46756))\r\n- REDoS avoided in importlib.metadata ([BPO-46474](https://bugs.python.org/issue46474))\r\n- SQLite upgraded from 3.36.0 to 3.37.2 in macOS and Windows installers ([BPO-45925](https://bugs.python.org/issue45925))\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 573](https://www.python.org/dev/peps/pep-0573/), Module State Access from C Extension Methods\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 614](https://www.python.org/dev/peps/pep-0614/), Relaxing Grammar Restrictions On Decorators\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\nYou can find a more comprehensive list in this release's \"[What's New](https://docs.python.org/release/3.9.0/whatsnew/3.9.html)\" document.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## And Now for Something Completely Different\r\n\r\n**King Arthur:** I am your king.\r\n
    **Peasant Woman:** Well, I didn't vote for you.\r\n
    **King Arthur:** You don't vote for kings.\r\n
    **Peasant Woman:** Well, how'd you become king, then?\r\n
    (Angelic music plays...)\r\n
    **King Arthur:** The Lady of the Lake, her arm clad in the purest shimmering samite, held aloft Excalibur from the bosom of the water, signifying by divine providence that I, Arthur, was to carry Excalibur. That is why I am your king.\r\n
    **Dennis the Peasant:** Listen. Strange women lying in ponds distributing swords is no basis for a system of government. Supreme executive power derives from a mandate from the masses, not from some farcical aquatic ceremony.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the eleventh maintenance release of Python 3.9

    \n

    Note: The release you're looking at is Python 3.9.11, a bugfix release for the legacy 3.9 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    Security content in this release

    \n
      \n
    • 15 (sic!) CVEs: libexpat upgraded from 2.4.1 to 2.4.7 (BPO-46794, BPO-46932, BPO-46811, BPO-46784, BPO-46400)
    • \n
    • CVE-2022-0778: OpenSSL upgraded from 1.1.1l to 1.1.1n in macOS and Windows installers (BPO-47024)
    • \n
    • CVE-2016-3189, CVE-2019-12900: bzip2 upgraded from 1.0.6 to 1.0.8 in Windows installers (BPO-44549)
    • \n
    • CVE-2022-26488: Windows installer now ensures the correct path is being repaired when \"Add to PATH\" is used (BPO-46948)
    • \n
    • CVE-2021-28363: bundled pip upgraded from 21.2.4 to 22.0.4 (BPO-46985)
    • \n
    • authorization bypass fixed in urllib.request (BPO-46756)
    • \n
    • REDoS avoided in importlib.metadata (BPO-46474)
    • \n
    • SQLite upgraded from 3.36.0 to 3.37.2 in macOS and Windows installers (BPO-45925)
    • \n
    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 573, Module State Access from C Extension Methods
    • \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 614, Relaxing Grammar Restrictions On Decorators
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    You can find a more comprehensive list in this release's \"What's New\" document.

    \n

    More resources

    \n\n

    And Now for Something Completely Different

    \n

    King Arthur: I am your king.\n
    Peasant Woman: Well, I didn't vote for you.\n
    King Arthur: You don't vote for kings.\n
    Peasant Woman: Well, how'd you become king, then?\n
    (Angelic music plays...)\n
    King Arthur: The Lady of the Lake, her arm clad in the purest shimmering samite, held aloft Excalibur from the bosom of the water, signifying by divine providence that I, Arthur, was to carry Excalibur. That is why I am your king.\n
    Dennis the Peasant: Listen. Strange women lying in ponds distributing swords is no basis for a system of government. Supreme executive power derives from a mandate from the masses, not from some farcical aquatic ceremony.

    " + } +}, +{ + "model": "downloads.release", + "pk": 680, + "fields": { + "created": "2022-03-16T14:30:48.648Z", + "updated": "2022-03-24T12:04:24.738Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.3", + "slug": "python-3103", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2022-03-16T14:28:05Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.10.3/whatsnew/changelog.html#python-3-10-3-final", + "content": "![Python 3.10 release logo](https://user-images.githubusercontent.com/11718525/135937807-fd3e0fd2-a31a-47a4-90c6-b0bb1d0704d4.png)\r\n\r\n## This is the third maintenance release of Python 3.10\r\n\r\nPython 3.10.3 is the newest major release of the Python programming language, and it contains many new features and optimizations.\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nAmong the new major new features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n* [PEP 634 ](https://www.python.org/dev/peps/pep-0634/) -- Structural Pattern Matching: Specification\r\n* [PEP 635 ](https://www.python.org/dev/peps/pep-0635/) -- Structural Pattern Matching: Motivation and Rationale\r\n* [PEP 636 ](https://www.python.org/dev/peps/pep-0636/) -- Structural Pattern Matching: Tutorial\r\n* [PEP 644 ](https://www.python.org/dev/peps/pep-0644/) -- Require OpenSSL 1.1.1 or newer\r\n* [PEP 624 ](https://www.python.org/dev/peps/pep-0624/) -- Remove Py_UNICODE encoder APIs\r\n* [PEP 597 ](https://www.python.org/dev/peps/pep-0597/) -- Add optional EncodingWarning\r\n\r\n[bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) used to be on this list\r\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it [here](https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/) to learn more.\r\n\r\n# More resources\r\n\r\n* [Changelog](https://docs.python.org/3.10/whatsnew/changelog.html#changelog)\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nThe omega baryons are a family of subatomic hadron (a baryon) particles that are represented by the symbol \u03a9 and are either neutral or have a +2, +1 or \u22121 elementary charge. They are baryons containing no up or down quarks. Omega baryons containing top quarks are not expected to be observed. This is because the Standard Model predicts the mean lifetime of top quarks to be roughly 5*10^\u221225 seconds which is about a twentieth of the timescale for strong interactions, and therefore that they do not form hadrons.", + "content_markup_type": "markdown", + "_content_rendered": "

    \"Python

    \n

    This is the third maintenance release of Python 3.10

    \n

    Python 3.10.3 is the newest major release of the Python programming language, and it contains many new features and optimizations.

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Among the new major new features and changes so far:

    \n
      \n
    • PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • PEP 613 -- Explicit Type Aliases
    • \n
    • PEP 634 -- Structural Pattern Matching: Specification
    • \n
    • PEP 635 -- Structural Pattern Matching: Motivation and Rationale
    • \n
    • PEP 636 -- Structural Pattern Matching: Tutorial
    • \n
    • PEP 644 -- Require OpenSSL 1.1.1 or newer
    • \n
    • PEP 624 -- Remove Py_UNICODE encoder APIs
    • \n
    • PEP 597 -- Add optional EncodingWarning
    • \n
    \n

    bpo-38605: from __future__ import annotations (PEP 563) used to be on this list\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it here to learn more.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    The omega baryons are a family of subatomic hadron (a baryon) particles that are represented by the symbol \u03a9 and are either neutral or have a +2, +1 or \u22121 elementary charge. They are baryons containing no up or down quarks. Omega baryons containing top quarks are not expected to be observed. This is because the Standard Model predicts the mean lifetime of top quarks to be roughly 5*10^\u221225 seconds which is about a twentieth of the timescale for strong interactions, and therefore that they do not form hadrons.

    " + } +}, +{ + "model": "downloads.release", + "pk": 713, + "fields": { + "created": "2022-03-23T23:38:44.549Z", + "updated": "2022-03-24T12:06:11.403Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.12", + "slug": "python-3912", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2022-03-23T23:32:04Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.12/whatsnew/changelog.html", + "content": "## This is the twelfth maintenance release of Python 3.9\r\n\r\n**Note:** The release you're looking at is Python 3.9.12, a **bugfix release** for the legacy 3.9 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/). \r\n\r\n**This is a special release which fixes a regression introduced by [BPO 46968](https://bugs.python.org/issue46968) which caused Python to no longer build on Red Hat Enterprise Linux 6.** There are only 12 other bugfixes on top of 3.9.11 in this release.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 573](https://www.python.org/dev/peps/pep-0573/), Module State Access from C Extension Methods\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 614](https://www.python.org/dev/peps/pep-0614/), Relaxing Grammar Restrictions On Decorators\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\nYou can find a more comprehensive list in this release's \"[What's New](https://docs.python.org/release/3.9.0/whatsnew/3.9.html)\" document.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## And Now for Something Completely Different\r\n\r\nNumber 3... THE LARCH.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the twelfth maintenance release of Python 3.9

    \n

    Note: The release you're looking at is Python 3.9.12, a bugfix release for the legacy 3.9 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    This is a special release which fixes a regression introduced by BPO 46968 which caused Python to no longer build on Red Hat Enterprise Linux 6. There are only 12 other bugfixes on top of 3.9.11 in this release.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 573, Module State Access from C Extension Methods
    • \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 614, Relaxing Grammar Restrictions On Decorators
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    You can find a more comprehensive list in this release's \"What's New\" document.

    \n

    More resources

    \n\n

    And Now for Something Completely Different

    \n

    Number 3... THE LARCH.

    " + } +}, +{ + "model": "downloads.release", + "pk": 714, + "fields": { + "created": "2022-03-24T10:30:24.524Z", + "updated": "2022-03-24T12:08:45.638Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.4", + "slug": "python-3104", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2022-03-24T10:29:52Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.10.4/whatsnew/changelog.html#python-3-10-4-final", + "content": "![Python 3.10 release logo](https://user-images.githubusercontent.com/11718525/135937807-fd3e0fd2-a31a-47a4-90c6-b0bb1d0704d4.png)\r\n\r\n## This is the fourth maintenance release of Python 3.10\r\n\r\nPython 3.10.4 is the newest major release of the Python programming language, and it contains many new features and optimizations.\r\n\r\n**This is a special release that fixes a regression introduced by [BPO 46968](https://bugs.python.org/issue46968) which caused Python to no longer build on Red Hat Enterprise Linux 6.** There are only 10 other bugfixes on top of 3.10.3 in this release.\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nAmong the new major new features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n* [PEP 634 ](https://www.python.org/dev/peps/pep-0634/) -- Structural Pattern Matching: Specification\r\n* [PEP 635 ](https://www.python.org/dev/peps/pep-0635/) -- Structural Pattern Matching: Motivation and Rationale\r\n* [PEP 636 ](https://www.python.org/dev/peps/pep-0636/) -- Structural Pattern Matching: Tutorial\r\n* [PEP 644 ](https://www.python.org/dev/peps/pep-0644/) -- Require OpenSSL 1.1.1 or newer\r\n* [PEP 624 ](https://www.python.org/dev/peps/pep-0624/) -- Remove Py_UNICODE encoder APIs\r\n* [PEP 597 ](https://www.python.org/dev/peps/pep-0597/) -- Add optional EncodingWarning\r\n\r\n[bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) used to be on this list\r\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it [here](https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/) to learn more.\r\n\r\n# More resources\r\n\r\n* [Changelog](https://docs.python.org/3.10/whatsnew/changelog.html#changelog)\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nPositronium is a system consisting of an electron and its anti-particle, a positron, bound together into an exotic atom, specifically an onium. The system is unstable: the two particles annihilate each other to predominantly produce two or three gamma-rays, depending on the relative spin states. The energy levels of the two particles are similar to that of the hydrogen atom (which is a bound state of a proton and an electron). However, because of the reduced mass, the frequencies of the spectral lines are less than half of those for the corresponding hydrogen lines.", + "content_markup_type": "markdown", + "_content_rendered": "

    \"Python

    \n

    This is the fourth maintenance release of Python 3.10

    \n

    Python 3.10.4 is the newest major release of the Python programming language, and it contains many new features and optimizations.

    \n

    This is a special release that fixes a regression introduced by BPO 46968 which caused Python to no longer build on Red Hat Enterprise Linux 6. There are only 10 other bugfixes on top of 3.10.3 in this release.

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Among the new major new features and changes so far:

    \n
      \n
    • PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • PEP 613 -- Explicit Type Aliases
    • \n
    • PEP 634 -- Structural Pattern Matching: Specification
    • \n
    • PEP 635 -- Structural Pattern Matching: Motivation and Rationale
    • \n
    • PEP 636 -- Structural Pattern Matching: Tutorial
    • \n
    • PEP 644 -- Require OpenSSL 1.1.1 or newer
    • \n
    • PEP 624 -- Remove Py_UNICODE encoder APIs
    • \n
    • PEP 597 -- Add optional EncodingWarning
    • \n
    \n

    bpo-38605: from __future__ import annotations (PEP 563) used to be on this list\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it here to learn more.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Positronium is a system consisting of an electron and its anti-particle, a positron, bound together into an exotic atom, specifically an onium. The system is unstable: the two particles annihilate each other to predominantly produce two or three gamma-rays, depending on the relative spin states. The energy levels of the two particles are similar to that of the hydrogen atom (which is a bound state of a proton and an electron). However, because of the reduced mass, the frequencies of the spectral lines are less than half of those for the corresponding hydrogen lines.

    " + } +}, +{ + "model": "downloads.release", + "pk": 715, + "fields": { + "created": "2022-04-05T20:10:28.609Z", + "updated": "2022-04-06T10:32:34.436Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.11.0a7", + "slug": "python-3110a7", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2022-04-05T20:00:46Z", + "release_page": null, + "release_notes_url": "", + "content": "**This is an early developer preview of Python 3.11**\r\n\r\n# Major new features of the 3.11 series, compared to 3.10\r\n\r\nPython 3.11 is still in development. This release, 3.11.0a7 is the **last** of seven planned alpha releases.\r\n\r\nAlpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.\r\n\r\nDuring the alpha phase, features may be added up until the start of the beta phase (2022-05-06) and, if necessary, may be modified or deleted up until the release candidate phase (2022-08-01). Please keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\nMany new features for Python 3.11 are still being planned and written. Among the new major new features and changes so far:\r\n\r\n* [PEP 657](https://www.python.org/dev/peps/pep-0657/) -- Include Fine-Grained Error Locations in Tracebacks\r\n* [PEP 654](https://www.python.org/dev/peps/pep-0654/) -- Exception Groups and except*\r\n* [PEP 673](https://www.python.org/dev/peps/pep-0673/) -- Self Type\r\n* [PEP 646](https://www.python.org/dev/peps/pep-0646/)-- Variadic Generics\r\n* [PEP 680](https://www.python.org/dev/peps/pep-0680/)-- tomllib: Support for Parsing TOML in the Standard Library\r\n* [PEP 675](https://www.python.org/dev/peps/pep-0675/)-- Arbitrary Literal String Type\r\n* [PEP 655](https://www.python.org/dev/peps/pep-0655/)-- Marking individual TypedDict items as required or potentially-missing\r\n* [bpo-46752](https://bugs.python.org/issue46752)-- Introduce task groups to asyncio\r\n* The [Faster Cpython Project](https://github.com/faster-cpython) is already yielding some exciting results: this version of CPython 3.11 is ~ 19% faster on the geometric mean of the [PyPerformance benchmarks](https://speed.python.org), compared to 3.10.0.\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.11 will be 3.11.0b1, currently scheduled for Friday, 2022-05-06.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.11/)\r\n* [PEP 664](https://www.python.org/dev/peps/pep-0664/), 3.11 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\nIn mathematics, the Dirac delta distribution (\u03b4 distribution) is a generalized function or distribution over the real numbers, whose value is zero everywhere except at zero, and whose integral over the entire real line is equal to one. The current understanding of the impulse is as a linear functional that maps every continuous function to its value at zero. The delta function was introduced by physicist Paul Dirac as a tool for the normalization of state vectors. It also has uses in probability theory and signal processing. Its validity was disputed until Laurent Schwartz developed the theory of distributions where it is defined as a linear form acting on functions. Defining this distribution as a \"function\" as many physicist do is known to be one of the easier ways to annoy mathematicians :)", + "content_markup_type": "markdown", + "_content_rendered": "

    This is an early developer preview of Python 3.11

    \n

    Major new features of the 3.11 series, compared to 3.10

    \n

    Python 3.11 is still in development. This release, 3.11.0a7 is the last of seven planned alpha releases.

    \n

    Alpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.

    \n

    During the alpha phase, features may be added up until the start of the beta phase (2022-05-06) and, if necessary, may be modified or deleted up until the release candidate phase (2022-08-01). Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Many new features for Python 3.11 are still being planned and written. Among the new major new features and changes so far:

    \n
      \n
    • PEP 657 -- Include Fine-Grained Error Locations in Tracebacks
    • \n
    • PEP 654 -- Exception Groups and except*
    • \n
    • PEP 673 -- Self Type
    • \n
    • PEP 646-- Variadic Generics
    • \n
    • PEP 680-- tomllib: Support for Parsing TOML in the Standard Library
    • \n
    • PEP 675-- Arbitrary Literal String Type
    • \n
    • PEP 655-- Marking individual TypedDict items as required or potentially-missing
    • \n
    • bpo-46752-- Introduce task groups to asyncio
    • \n
    • The Faster Cpython Project is already yielding some exciting results: this version of CPython 3.11 is ~ 19% faster on the geometric mean of the PyPerformance benchmarks, compared to 3.10.0.
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)
    • \n
    \n

    The next pre-release of Python 3.11 will be 3.11.0b1, currently scheduled for Friday, 2022-05-06.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    In mathematics, the Dirac delta distribution (\u03b4 distribution) is a generalized function or distribution over the real numbers, whose value is zero everywhere except at zero, and whose integral over the entire real line is equal to one. The current understanding of the impulse is as a linear functional that maps every continuous function to its value at zero. The delta function was introduced by physicist Paul Dirac as a tool for the normalization of state vectors. It also has uses in probability theory and signal processing. Its validity was disputed until Laurent Schwartz developed the theory of distributions where it is defined as a linear form acting on functions. Defining this distribution as a \"function\" as many physicist do is known to be one of the easier ways to annoy mathematicians :)

    " + } +}, +{ + "model": "downloads.release", + "pk": 716, + "fields": { + "created": "2022-05-08T02:36:23.965Z", + "updated": "2022-05-08T18:14:06.061Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.11.0b1", + "slug": "python-3110b1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2022-05-08T02:31:16Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.11/whatsnew/changelog.html#changelog", + "content": "## This is a beta preview of Python 3.11\r\n\r\nPython 3.11 is still in development. 3.11.0b1 is the first of four planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.11** during the beta phase and report issues found to [the Python bug tracker](https://github.com/python/cpython/issues) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is have no ABI changes after beta 4 and as few code changes as possible after 3.11.0rc1, the first release candidate. To achieve that, it will be **extremely important** to get as much exposure for 3.11 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n# Major new features of the 3.11 series, compared to 3.10\r\n\r\nMany new features for Python 3.11 are still being planned and written. Among the new major new features and changes so far:\r\n\r\n* [PEP 657](https://www.python.org/dev/peps/pep-0657/) -- Include Fine-Grained Error Locations in Tracebacks\r\n* [PEP 654](https://www.python.org/dev/peps/pep-0654/) -- Exception Groups and except*\r\n* [PEP 673](https://www.python.org/dev/peps/pep-0673/) -- Self Type\r\n* [PEP 646](https://www.python.org/dev/peps/pep-0646/)-- Variadic Generics\r\n* [PEP 680](https://www.python.org/dev/peps/pep-0680/)-- tomllib: Support for Parsing TOML in the Standard Library\r\n* [PEP 675](https://www.python.org/dev/peps/pep-0675/)-- Arbitrary Literal String Type\r\n* [PEP 655](https://www.python.org/dev/peps/pep-0655/)-- Marking individual TypedDict items as required or potentially-missing\r\n* [bpo-46752](https://bugs.python.org/issue46752)-- Introduce task groups to asyncio\r\n* The [Faster Cpython Project](https://github.com/faster-cpython) is already yielding some exciting results. Python 3.11 is up to 10-60% faster than Python 3.10. On average, we measured a 1.22x speedup on the standard benchmark suite. See [Faster CPython](https://docs.python.org/3.11/whatsnew/3.11.html#faster-cpython) for details.\r\n* (Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.11 will be 3.11.0b2, currently scheduled for Monday, 2022-05-30.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.11/)\r\n* [PEP 664](https://www.python.org/dev/peps/pep-0664/), 3.11 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\nThe holographic principle is a tenet of string theories and a supposed property of quantum gravity that states that the description of a volume of space can be thought of as encoded on a lower-dimensional boundary to the region\u2014such as a light-like boundary like a gravitational horizon. First proposed by Gerard 't Hooft, it was given a precise string-theory interpretation by Leonard Susskind, who combined his ideas with previous ones of 't Hooft and Charles Thorn.[ Leonard Susskind said, \u201cThe three-dimensional world of ordinary experience\u2013\u2013the universe filled with galaxies, stars, planets, houses, boulders, and people\u2013\u2013is a hologram, an image of reality cited on a distant two-dimensional (2D) surface.\" As pointed out by Raphael Bousso, Thorn observed in 1978 that string theory admits a lower-dimensional description in which gravity emerges from it in what would now be called a holographic way. \r\n\r\nThe holographic principle was inspired by black hole thermodynamics, which conjectures that the maximal entropy in any region scales with the radius squared, and not cubed as might be expected. In the case of a black hole, the insight was that the informational content of all the objects that have fallen into the hole might be entirely contained in surface fluctuations of the event horizon. The holographic principle resolves the black hole information paradox within the framework of string theory. However, there exist classical solutions to the Einstein equations that allow values of the entropy larger than those allowed by an area law, hence in principle larger than those of a black hole. These are the so-called \"Wheeler's bags of gold\". The existence of such solutions conflicts with the holographic interpretation, and their effects in a quantum theory of gravity including the holographic principle are not fully understood yet.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.11

    \n

    Python 3.11 is still in development. 3.11.0b1 is the first of four planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.11 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is have no ABI changes after beta 4 and as few code changes as possible after 3.11.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.11 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.11 series, compared to 3.10

    \n

    Many new features for Python 3.11 are still being planned and written. Among the new major new features and changes so far:

    \n
      \n
    • PEP 657 -- Include Fine-Grained Error Locations in Tracebacks
    • \n
    • PEP 654 -- Exception Groups and except*
    • \n
    • PEP 673 -- Self Type
    • \n
    • PEP 646-- Variadic Generics
    • \n
    • PEP 680-- tomllib: Support for Parsing TOML in the Standard Library
    • \n
    • PEP 675-- Arbitrary Literal String Type
    • \n
    • PEP 655-- Marking individual TypedDict items as required or potentially-missing
    • \n
    • bpo-46752-- Introduce task groups to asyncio
    • \n
    • The Faster Cpython Project is already yielding some exciting results. Python 3.11 is up to 10-60% faster than Python 3.10. On average, we measured a 1.22x speedup on the standard benchmark suite. See Faster CPython for details.
    • \n
    • (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)
    • \n
    \n

    The next pre-release of Python 3.11 will be 3.11.0b2, currently scheduled for Monday, 2022-05-30.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    The holographic principle is a tenet of string theories and a supposed property of quantum gravity that states that the description of a volume of space can be thought of as encoded on a lower-dimensional boundary to the region\u2014such as a light-like boundary like a gravitational horizon. First proposed by Gerard 't Hooft, it was given a precise string-theory interpretation by Leonard Susskind, who combined his ideas with previous ones of 't Hooft and Charles Thorn.[ Leonard Susskind said, \u201cThe three-dimensional world of ordinary experience\u2013\u2013the universe filled with galaxies, stars, planets, houses, boulders, and people\u2013\u2013is a hologram, an image of reality cited on a distant two-dimensional (2D) surface.\" As pointed out by Raphael Bousso, Thorn observed in 1978 that string theory admits a lower-dimensional description in which gravity emerges from it in what would now be called a holographic way.

    \n

    The holographic principle was inspired by black hole thermodynamics, which conjectures that the maximal entropy in any region scales with the radius squared, and not cubed as might be expected. In the case of a black hole, the insight was that the informational content of all the objects that have fallen into the hole might be entirely contained in surface fluctuations of the event horizon. The holographic principle resolves the black hole information paradox within the framework of string theory. However, there exist classical solutions to the Einstein equations that allow values of the entropy larger than those allowed by an area law, hence in principle larger than those of a black hole. These are the so-called \"Wheeler's bags of gold\". The existence of such solutions conflicts with the holographic interpretation, and their effects in a quantum theory of gravity including the holographic principle are not fully understood yet.

    " + } +}, +{ + "model": "downloads.release", + "pk": 717, + "fields": { + "created": "2022-05-17T14:44:41.396Z", + "updated": "2022-05-17T17:23:59.726Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.13", + "slug": "python-3913", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2022-05-17T14:32:13Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.9.13/whatsnew/changelog.html", + "content": "## This is the thirteenth and final regular maintenance release of Python 3.9\r\n\r\n**Note:** The release you're looking at is Python 3.9.13, a **bugfix release** for the legacy 3.9 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/). \r\n\r\nAccording to the release calendar specified in [PEP 596](https://www.python.org/dev/peps/pep-0596/), Python 3.9.13 is the final regular maintenance release. Starting now, the 3.9 branch will only accept security fixes and releases of those will be made in source-only form until October 2025.\r\n\r\nCompared to the 3.8 series, this last regular bugfix release is still pretty active at 166 commits since 3.9.12. In comparison, version 3.8.10, the final regular bugfix release of Python 3.8, included only 92 commits. However, it's likely that it was 3.8 that was special here with the governance changes occupying core developers' minds. For reference, version 3.7.8, the final regular bugfix release of Python 3.7, included 187 commits.\r\n\r\nIn any case, 166 commits is quite a few changes, some of which being pretty important fixes. Take a look at the [change log](https://docs.python.org/release/3.9.13/whatsnew/changelog.html) for details.\r\n\r\n## Major new features of the 3.9 series, compared to 3.8\r\n\r\nSome of the new major new features and changes in Python 3.9 are:\r\n\r\n* [PEP 573](https://www.python.org/dev/peps/pep-0573/), Module State Access from C Extension Methods\r\n* [PEP 584](https://www.python.org/dev/peps/pep-0584/), Union Operators in `dict`\r\n* [PEP 585](https://www.python.org/dev/peps/pep-0585/), Type Hinting Generics In Standard Collections\r\n* [PEP 593](https://www.python.org/dev/peps/pep-0593/), Flexible function and variable annotations\r\n* [PEP 602](https://www.python.org/dev/peps/pep-0602/), Python adopts a stable annual release cadence\r\n* [PEP 614](https://www.python.org/dev/peps/pep-0614/), Relaxing Grammar Restrictions On Decorators\r\n* [PEP 615](https://www.python.org/dev/peps/pep-0615/), Support for the IANA Time Zone Database in the Standard Library\r\n* [PEP 616](https://www.python.org/dev/peps/pep-0616/), String methods to remove prefixes and suffixes\r\n* [PEP 617](https://www.python.org/dev/peps/pep-0617/), New PEG parser for CPython\r\n* [BPO 38379](https://bugs.python.org/issue38379), garbage collection does not block on resurrected objects;\r\n* [BPO 38692](https://bugs.python.org/issue38692), os.pidfd_open added that allows process management without races and signals;\r\n* [BPO 39926](https://bugs.python.org/issue39926), Unicode support updated to version 13.0.0;\r\n* [BPO 1635741](https://bugs.python.org/issue1635741), when Python is initialized multiple times in the same process, it does not leak memory anymore;\r\n* A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using [PEP 590](https://www.python.org/dev/peps/pep-0590) vectorcall;\r\n* A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by [PEP 489](https://www.python.org/dev/peps/pep-0489/);\r\n* A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by [PEP 384](https://www.python.org/dev/peps/pep-0384/).\r\n\r\nYou can find a more comprehensive list in this release's \"[What's New](https://docs.python.org/release/3.9.0/whatsnew/3.9.html)\" document.\r\n\r\n## More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.9/)\r\n* [PEP 596](https://www.python.org/dev/peps/pep-0596/), 3.9 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n## And Now for Something Completely Different\r\n\r\n
    **Mr. Praline ([John Cleese](https://montypython.fandom.com/wiki/Dead_Parrot)):** 'ELLO POLLY!!! Testing! Testing! This is your nine o'clock alarm call!\r\n*(Takes parrot out of the cage , throws it up in the air and watches it plummet to the floor.)*\r\n
    **Mr. Praline:** Now that's what I call a dead parrot.\r\n
    **Owner (Michael Palin):** No, no.....No, he's stunned!\r\n
    **Mr. Praline:** STUNNED?!\r\n
    **Owner:** Yeah! You stunned him, just as he was wakin' up! Norwegian Blues stun easily, major.\r\n
    **Mr. Praline:** Um... now look, mate. I've definitely 'ad enough of this. That parrot is definitely deceased, and when I purchased it not 'alf an hour ago, you assured me that its total lack of movement was due to it bein' tired and shagged out following a prolonged squawk.\r\n
    **Owner:** Well, he's... he's, ah... probably pining for the fjords.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the thirteenth and final regular maintenance release of Python 3.9

    \n

    Note: The release you're looking at is Python 3.9.13, a bugfix release for the legacy 3.9 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    According to the release calendar specified in PEP 596, Python 3.9.13 is the final regular maintenance release. Starting now, the 3.9 branch will only accept security fixes and releases of those will be made in source-only form until October 2025.

    \n

    Compared to the 3.8 series, this last regular bugfix release is still pretty active at 166 commits since 3.9.12. In comparison, version 3.8.10, the final regular bugfix release of Python 3.8, included only 92 commits. However, it's likely that it was 3.8 that was special here with the governance changes occupying core developers' minds. For reference, version 3.7.8, the final regular bugfix release of Python 3.7, included 187 commits.

    \n

    In any case, 166 commits is quite a few changes, some of which being pretty important fixes. Take a look at the change log for details.

    \n

    Major new features of the 3.9 series, compared to 3.8

    \n

    Some of the new major new features and changes in Python 3.9 are:

    \n
      \n
    • PEP 573, Module State Access from C Extension Methods
    • \n
    • PEP 584, Union Operators in dict
    • \n
    • PEP 585, Type Hinting Generics In Standard Collections
    • \n
    • PEP 593, Flexible function and variable annotations
    • \n
    • PEP 602, Python adopts a stable annual release cadence
    • \n
    • PEP 614, Relaxing Grammar Restrictions On Decorators
    • \n
    • PEP 615, Support for the IANA Time Zone Database in the Standard Library
    • \n
    • PEP 616, String methods to remove prefixes and suffixes
    • \n
    • PEP 617, New PEG parser for CPython
    • \n
    • BPO 38379, garbage collection does not block on resurrected objects;
    • \n
    • BPO 38692, os.pidfd_open added that allows process management without races and signals;
    • \n
    • BPO 39926, Unicode support updated to version 13.0.0;
    • \n
    • BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore;
    • \n
    • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
    • \n
    • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
    • \n
    • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
    • \n
    \n

    You can find a more comprehensive list in this release's \"What's New\" document.

    \n

    More resources

    \n\n

    And Now for Something Completely Different

    \n


    Mr. Praline (John Cleese): 'ELLO POLLY!!! Testing! Testing! This is your nine o'clock alarm call!\n(Takes parrot out of the cage , throws it up in the air and watches it plummet to the floor.)\n
    Mr. Praline: Now that's what I call a dead parrot.\n
    Owner (Michael Palin): No, no.....No, he's stunned!\n
    Mr. Praline: STUNNED?!\n
    Owner: Yeah! You stunned him, just as he was wakin' up! Norwegian Blues stun easily, major.\n
    Mr. Praline: Um... now look, mate. I've definitely 'ad enough of this. That parrot is definitely deceased, and when I purchased it not 'alf an hour ago, you assured me that its total lack of movement was due to it bein' tired and shagged out following a prolonged squawk.\n
    Owner: Well, he's... he's, ah... probably pining for the fjords.

    " + } +}, +{ + "model": "downloads.release", + "pk": 718, + "fields": { + "created": "2022-05-31T13:15:51.753Z", + "updated": "2022-05-31T23:20:44.761Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.11.0b2", + "slug": "python-3110b2", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2022-05-31T13:11:21Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.11/whatsnew/changelog.html#changelog", + "content": "## This is a beta preview of Python 3.11\r\n\r\nPython 3.11 is still in development. 3.11.0b2 is the second of four planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.11** during the beta phase and report issues found to [the Python bug tracker](https://github.com/python/cpython/issues) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is have no ABI changes after beta 4 and as few code changes as possible after 3.11.0rc1, the first release candidate. To achieve that, it will be **extremely important** to get as much exposure for 3.11 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n**Note: There is [a known issue](https://github.com/pytest-dev/pytest/issues/10008#issuecomment-1142722627) with pytest and this release. If you get failures running `pytest` you can work around temporarily the problem by adding `--assert=plain` to the pytest command line invocation**\r\n\r\n# Major new features of the 3.11 series, compared to 3.10\r\n\r\nSome of the new major new features and changes in Python 3.11 are:\r\n\r\n## General changes\r\n\r\n* [PEP 657](https://www.python.org/dev/peps/pep-0657/) -- Include Fine-Grained Error Locations in Tracebacks\r\n* [PEP 654](https://www.python.org/dev/peps/pep-0654/) -- Exception Groups and except*\r\n* [PEP 680](https://www.python.org/dev/peps/pep-0680/)-- tomllib: Support for Parsing TOML in the Standard Library\r\n* [PEP 681](https://www.python.org/dev/peps/pep-0681/)-- Data Class Transforms\r\n* [bpo-46752](https://bugs.python.org/issue46752)-- Introduce task groups to asyncio\r\n* [bpo-433030](https://github.com/python/cpython/issues/34627/) -- Atomic grouping ((?>...)) and possessive quantifiers (`*+, ++, ?+, {m,n}+`) are now supported in regular expressions. \r\n* The [Faster Cpython Project](https://github.com/faster-cpython/) is already yielding some exciting results. Python 3.11 is up to 10-60% faster than Python 3.10. On average, we measured a 1.22x speedup on the standard benchmark suite. See [Faster CPython](https://docs.python.org/3.11/whatsnew/3.11.html#faster-cpython) for details.\r\n\r\n## Typing and typing language changes\r\n\r\n* [PEP 673](https://www.python.org/dev/peps/pep-0673/) -- Self Type\r\n* [PEP 646](https://www.python.org/dev/peps/pep-0646/)-- Variadic Generics\r\n* [PEP 675](https://www.python.org/dev/peps/pep-0675/)-- Arbitrary Literal String Type\r\n* [PEP 655](https://www.python.org/dev/peps/pep-0655/)-- Marking individual TypedDict items as required or potentially-missing\r\n\r\n(Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.11 will be 3.11.0b3, currently scheduled for Thursday, 2022-06-16.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.11/)\r\n* [PEP 664](https://www.python.org/dev/peps/pep-0664/), 3.11 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\nThe Planck time is the time required for light to travel a distance of 1 Planck length in a vacuum, which is a time interval of approximately `5.39*10^(\u221244)` s. No current physical theory can describe timescales shorter than the Planck time, such as the earliest events after the Big Bang, and it is conjectured that the structure of time breaks down on intervals comparable to the Planck time. While there is currently no known way to measure time intervals on the scale of the Planck time, researchers in 2020 found that the accuracy of an atomic clock is constrained by quantum effects on the order of the Planck time, and for the most precise atomic clocks thus far they calculated that such effects have been ruled out to around `10^\u221233` s, or 10 orders of magnitude above the Planck scale.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.11

    \n

    Python 3.11 is still in development. 3.11.0b2 is the second of four planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.11 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is have no ABI changes after beta 4 and as few code changes as possible after 3.11.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.11 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Note: There is a known issue with pytest and this release. If you get failures running pytest you can work around temporarily the problem by adding --assert=plain to the pytest command line invocation

    \n

    Major new features of the 3.11 series, compared to 3.10

    \n

    Some of the new major new features and changes in Python 3.11 are:

    \n

    General changes

    \n
      \n
    • PEP 657 -- Include Fine-Grained Error Locations in Tracebacks
    • \n
    • PEP 654 -- Exception Groups and except*
    • \n
    • PEP 680-- tomllib: Support for Parsing TOML in the Standard Library
    • \n
    • PEP 681-- Data Class Transforms
    • \n
    • bpo-46752-- Introduce task groups to asyncio
    • \n
    • bpo-433030 -- Atomic grouping ((?>...)) and possessive quantifiers (*+, ++, ?+, {m,n}+) are now supported in regular expressions.
    • \n
    • The Faster Cpython Project is already yielding some exciting results. Python 3.11 is up to 10-60% faster than Python 3.10. On average, we measured a 1.22x speedup on the standard benchmark suite. See Faster CPython for details.
    • \n
    \n

    Typing and typing language changes

    \n
      \n
    • PEP 673 -- Self Type
    • \n
    • PEP 646-- Variadic Generics
    • \n
    • PEP 675-- Arbitrary Literal String Type
    • \n
    • PEP 655-- Marking individual TypedDict items as required or potentially-missing
    • \n
    \n

    (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

    \n

    The next pre-release of Python 3.11 will be 3.11.0b3, currently scheduled for Thursday, 2022-06-16.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    The Planck time is the time required for light to travel a distance of 1 Planck length in a vacuum, which is a time interval of approximately 5.39*10^(\u221244) s. No current physical theory can describe timescales shorter than the Planck time, such as the earliest events after the Big Bang, and it is conjectured that the structure of time breaks down on intervals comparable to the Planck time. While there is currently no known way to measure time intervals on the scale of the Planck time, researchers in 2020 found that the accuracy of an atomic clock is constrained by quantum effects on the order of the Planck time, and for the most precise atomic clocks thus far they calculated that such effects have been ruled out to around 10^\u221233 s, or 10 orders of magnitude above the Planck scale.

    " + } +}, +{ + "model": "downloads.release", + "pk": 719, + "fields": { + "created": "2022-06-01T15:28:04.191Z", + "updated": "2022-07-11T17:45:23.504Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.11.0b3", + "slug": "python-3110b3", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2022-06-01T15:26:56Z", + "release_page": null, + "release_notes_url": "", + "content": "## This is a beta preview of Python 3.11\r\n\r\nPython 3.11 is still in development. 3.11.0b3 is the third of five planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.11** during the beta phase and report issues found to [the Python bug tracker](https://github.com/python/cpython/issues) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is have no ABI changes after beta 4 and as few code changes as possible after 3.11.0rc1, the first release candidate. To achieve that, it will be **extremely important** to get as much exposure for 3.11 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n**Note: This release is made mainly to address [a known issue](https://github.com/pytest-dev/pytest/issues/10008#issuecomment-1142722627) with pytest and the previous beta release**\r\n\r\n# Major new features of the 3.11 series, compared to 3.10\r\n\r\nSome of the new major new features and changes in Python 3.11 are:\r\n\r\n## General changes\r\n\r\n* [PEP 657](https://www.python.org/dev/peps/pep-0657/) -- Include Fine-Grained Error Locations in Tracebacks\r\n* [PEP 654](https://www.python.org/dev/peps/pep-0654/) -- Exception Groups and except*\r\n* [PEP 680](https://www.python.org/dev/peps/pep-0680/)-- tomllib: Support for Parsing TOML in the Standard Library\r\n* [PEP 681](https://www.python.org/dev/peps/pep-0681/)-- Data Class Transforms\r\n* [bpo-46752](https://bugs.python.org/issue46752)-- Introduce task groups to asyncio\r\n* [bpo-433030](https://github.com/python/cpython/issues/34627/) -- Atomic grouping ((?>...)) and possessive quantifiers (`*+, ++, ?+, {m,n}+`) are now supported in regular expressions. \r\n* The [Faster Cpython Project](https://github.com/faster-cpython/) is already yielding some exciting results. Python 3.11 is up to 10-60% faster than Python 3.10. On average, we measured a 1.22x speedup on the standard benchmark suite. See [Faster CPython](https://docs.python.org/3.11/whatsnew/3.11.html#faster-cpython) for details.\r\n\r\n## Typing and typing language changes\r\n\r\n* [PEP 673](https://www.python.org/dev/peps/pep-0673/) -- Self Type\r\n* [PEP 646](https://www.python.org/dev/peps/pep-0646/)-- Variadic Generics\r\n* [PEP 675](https://www.python.org/dev/peps/pep-0675/)-- Arbitrary Literal String Type\r\n* [PEP 655](https://www.python.org/dev/peps/pep-0655/)-- Marking individual TypedDict items as required or potentially-missing\r\n\r\n(Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.11 will be 3.11.0b4, currently scheduled for Thursday, 2022-06-16.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.11/)\r\n* [PEP 664](https://www.python.org/dev/peps/pep-0664/), 3.11 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\nThe Planck time is the time required for light to travel a distance of 1 Planck length in a vacuum, which is a time interval of approximately `5.39*10^(\u221244)` s. No current physical theory can describe timescales shorter than the Planck time, such as the earliest events after the Big Bang, and it is conjectured that the structure of time breaks down on intervals comparable to the Planck time. While there is currently no known way to measure time intervals on the scale of the Planck time, researchers in 2020 found that the accuracy of an atomic clock is constrained by quantum effects on the order of the Planck time, and for the most precise atomic clocks thus far they calculated that such effects have been ruled out to around `10^\u221233` s, or 10 orders of magnitude above the Planck scale.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.11

    \n

    Python 3.11 is still in development. 3.11.0b3 is the third of five planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.11 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is have no ABI changes after beta 4 and as few code changes as possible after 3.11.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.11 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Note: This release is made mainly to address a known issue with pytest and the previous beta release

    \n

    Major new features of the 3.11 series, compared to 3.10

    \n

    Some of the new major new features and changes in Python 3.11 are:

    \n

    General changes

    \n
      \n
    • PEP 657 -- Include Fine-Grained Error Locations in Tracebacks
    • \n
    • PEP 654 -- Exception Groups and except*
    • \n
    • PEP 680-- tomllib: Support for Parsing TOML in the Standard Library
    • \n
    • PEP 681-- Data Class Transforms
    • \n
    • bpo-46752-- Introduce task groups to asyncio
    • \n
    • bpo-433030 -- Atomic grouping ((?>...)) and possessive quantifiers (*+, ++, ?+, {m,n}+) are now supported in regular expressions.
    • \n
    • The Faster Cpython Project is already yielding some exciting results. Python 3.11 is up to 10-60% faster than Python 3.10. On average, we measured a 1.22x speedup on the standard benchmark suite. See Faster CPython for details.
    • \n
    \n

    Typing and typing language changes

    \n
      \n
    • PEP 673 -- Self Type
    • \n
    • PEP 646-- Variadic Generics
    • \n
    • PEP 675-- Arbitrary Literal String Type
    • \n
    • PEP 655-- Marking individual TypedDict items as required or potentially-missing
    • \n
    \n

    (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

    \n

    The next pre-release of Python 3.11 will be 3.11.0b4, currently scheduled for Thursday, 2022-06-16.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    The Planck time is the time required for light to travel a distance of 1 Planck length in a vacuum, which is a time interval of approximately 5.39*10^(\u221244) s. No current physical theory can describe timescales shorter than the Planck time, such as the earliest events after the Big Bang, and it is conjectured that the structure of time breaks down on intervals comparable to the Planck time. While there is currently no known way to measure time intervals on the scale of the Planck time, researchers in 2020 found that the accuracy of an atomic clock is constrained by quantum effects on the order of the Planck time, and for the most precise atomic clocks thus far they calculated that such effects have been ruled out to around 10^\u221233 s, or 10 orders of magnitude above the Planck scale.

    " + } +}, +{ + "model": "downloads.release", + "pk": 720, + "fields": { + "created": "2022-06-06T17:13:25.666Z", + "updated": "2022-08-02T10:02:44.250Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.5", + "slug": "python-3105", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2022-06-06T17:12:22Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.10.5/whatsnew/changelog.html#python-3-10-5-final", + "content": "![Python 3.10 release logo](https://user-images.githubusercontent.com/11718525/135937807-fd3e0fd2-a31a-47a4-90c6-b0bb1d0704d4.png)\r\n\r\n## This is the fifth maintenance release of Python 3.10\r\n\r\nPython 3.10.5 is the newest major release of the Python programming language, and it contains many new features and optimizations.\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nAmong the new major new features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n* [PEP 634 ](https://www.python.org/dev/peps/pep-0634/) -- Structural Pattern Matching: Specification\r\n* [PEP 635 ](https://www.python.org/dev/peps/pep-0635/) -- Structural Pattern Matching: Motivation and Rationale\r\n* [PEP 636 ](https://www.python.org/dev/peps/pep-0636/) -- Structural Pattern Matching: Tutorial\r\n* [PEP 644 ](https://www.python.org/dev/peps/pep-0644/) -- Require OpenSSL 1.1.1 or newer\r\n* [PEP 624 ](https://www.python.org/dev/peps/pep-0624/) -- Remove Py_UNICODE encoder APIs\r\n* [PEP 597 ](https://www.python.org/dev/peps/pep-0597/) -- Add optional EncodingWarning\r\n\r\n[bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) used to be on this list\r\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it [here](https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/) to learn more.\r\n\r\n# More resources\r\n\r\n* [Changelog](https://docs.python.org/3.10/whatsnew/changelog.html#changelog)\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nStrange quarks are the third lightest quarks, which are subatomic particles that are so small, they are believed to be the fundamental particles, and not further divisible. Like down quarks, strange quarks have a charge of -1/3. Like all fermions (which are particles that can not exist in the same place at the same time), strange quarks have a spin of 1/2. What makes strange quarks different from down quarks\u2013apart from having 25 times the mass of down quarks\u2013is that they have something that scientists call \"strangeness.\" Strangeness is basically a resistance to decay against strong force and electromagnetism. This means that any particle that contains a strange quark can not decay due to strong force (or electromagnetism), but instead with the much slower weak force. It was believed that this was a 'strange' method of decay, which is why the scientists gave the particles that name.", + "content_markup_type": "markdown", + "_content_rendered": "

    \"Python

    \n

    This is the fifth maintenance release of Python 3.10

    \n

    Python 3.10.5 is the newest major release of the Python programming language, and it contains many new features and optimizations.

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Among the new major new features and changes so far:

    \n
      \n
    • PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • PEP 613 -- Explicit Type Aliases
    • \n
    • PEP 634 -- Structural Pattern Matching: Specification
    • \n
    • PEP 635 -- Structural Pattern Matching: Motivation and Rationale
    • \n
    • PEP 636 -- Structural Pattern Matching: Tutorial
    • \n
    • PEP 644 -- Require OpenSSL 1.1.1 or newer
    • \n
    • PEP 624 -- Remove Py_UNICODE encoder APIs
    • \n
    • PEP 597 -- Add optional EncodingWarning
    • \n
    \n

    bpo-38605: from __future__ import annotations (PEP 563) used to be on this list\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it here to learn more.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Strange quarks are the third lightest quarks, which are subatomic particles that are so small, they are believed to be the fundamental particles, and not further divisible. Like down quarks, strange quarks have a charge of -1/3. Like all fermions (which are particles that can not exist in the same place at the same time), strange quarks have a spin of 1/2. What makes strange quarks different from down quarks\u2013apart from having 25 times the mass of down quarks\u2013is that they have something that scientists call \"strangeness.\" Strangeness is basically a resistance to decay against strong force and electromagnetism. This means that any particle that contains a strange quark can not decay due to strong force (or electromagnetism), but instead with the much slower weak force. It was believed that this was a 'strange' method of decay, which is why the scientists gave the particles that name.

    " + } +}, +{ + "model": "downloads.release", + "pk": 721, + "fields": { + "created": "2022-07-11T17:30:56.559Z", + "updated": "2022-07-11T19:43:39.750Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.11.0b4", + "slug": "python-3110b4", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2022-07-11T17:30:29Z", + "release_page": null, + "release_notes_url": "", + "content": "## This is a beta preview of Python 3.11\r\n\r\nPython 3.11 is still in development. 3.11.0b4 is the fourth of five planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.11** during the beta phase and report issues found to [the Python bug tracker](https://github.com/python/cpython/issues) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is have no ABI changes after beta 4 and as few code changes as possible after 3.11.0rc1, the first release candidate. To achieve that, it will be **extremely important** to get as much exposure for 3.11 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n# Major new features of the 3.11 series, compared to 3.10\r\n\r\nSome of the new major new features and changes in Python 3.11 are:\r\n\r\n## General changes\r\n\r\n* [PEP 657](https://www.python.org/dev/peps/pep-0657/) -- Include Fine-Grained Error Locations in Tracebacks\r\n* [PEP 654](https://www.python.org/dev/peps/pep-0654/) -- Exception Groups and except*\r\n* [PEP 680](https://www.python.org/dev/peps/pep-0680/)-- tomllib: Support for Parsing TOML in the Standard Library\r\n* [PEP 681](https://www.python.org/dev/peps/pep-0681/)-- Data Class Transforms\r\n* [bpo-46752](https://bugs.python.org/issue46752)-- Introduce task groups to asyncio\r\n* [bpo-433030](https://github.com/python/cpython/issues/34627/) -- Atomic grouping ((?>...)) and possessive quantifiers (`*+, ++, ?+, {m,n}+`) are now supported in regular expressions. \r\n* The [Faster Cpython Project](https://github.com/faster-cpython/) is already yielding some exciting results. Python 3.11 is up to 10-60% faster than Python 3.10. On average, we measured a 1.22x speedup on the standard benchmark suite. See [Faster CPython](https://docs.python.org/3.11/whatsnew/3.11.html#faster-cpython) for details.\r\n\r\n## Typing and typing language changes\r\n\r\n* [PEP 673](https://www.python.org/dev/peps/pep-0673/) -- Self Type\r\n* [PEP 646](https://www.python.org/dev/peps/pep-0646/)-- Variadic Generics\r\n* [PEP 675](https://www.python.org/dev/peps/pep-0675/)-- Arbitrary Literal String Type\r\n* [PEP 655](https://www.python.org/dev/peps/pep-0655/)-- Marking individual TypedDict items as required or potentially-missing\r\n\r\n(Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.11 will be 3.11.0b5, currently scheduled for Monday, 2022-07-25.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.11/)\r\n* [PEP 664](https://www.python.org/dev/peps/pep-0664/), 3.11 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\nThe Planck temperature is 1.416784\u00d710**32 K. At this temperature, the wavelength of light emitted by thermal radiation reaches the Planck length. There are no known physical models able to describe temperatures greater than the Planck temperature and a quantum theory of gravity would be required to model the extreme energies attained. Hypothetically, a system in thermal equilibrium at the Planck temperature might contain Planck-scale black holes, constantly being formed from thermal radiation and decaying via Hawking evaporation; adding energy to such a system might decrease its temperature by creating larger black holes, whose Hawking temperature is lower.\r\n\r\nRumours say the Planck temperature can be reached in some of the hottest parts of Spain in summer.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.11

    \n

    Python 3.11 is still in development. 3.11.0b4 is the fourth of five planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.11 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is have no ABI changes after beta 4 and as few code changes as possible after 3.11.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.11 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.11 series, compared to 3.10

    \n

    Some of the new major new features and changes in Python 3.11 are:

    \n

    General changes

    \n
      \n
    • PEP 657 -- Include Fine-Grained Error Locations in Tracebacks
    • \n
    • PEP 654 -- Exception Groups and except*
    • \n
    • PEP 680-- tomllib: Support for Parsing TOML in the Standard Library
    • \n
    • PEP 681-- Data Class Transforms
    • \n
    • bpo-46752-- Introduce task groups to asyncio
    • \n
    • bpo-433030 -- Atomic grouping ((?>...)) and possessive quantifiers (*+, ++, ?+, {m,n}+) are now supported in regular expressions.
    • \n
    • The Faster Cpython Project is already yielding some exciting results. Python 3.11 is up to 10-60% faster than Python 3.10. On average, we measured a 1.22x speedup on the standard benchmark suite. See Faster CPython for details.
    • \n
    \n

    Typing and typing language changes

    \n
      \n
    • PEP 673 -- Self Type
    • \n
    • PEP 646-- Variadic Generics
    • \n
    • PEP 675-- Arbitrary Literal String Type
    • \n
    • PEP 655-- Marking individual TypedDict items as required or potentially-missing
    • \n
    \n

    (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

    \n

    The next pre-release of Python 3.11 will be 3.11.0b5, currently scheduled for Monday, 2022-07-25.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    The Planck temperature is 1.416784\u00d710**32 K. At this temperature, the wavelength of light emitted by thermal radiation reaches the Planck length. There are no known physical models able to describe temperatures greater than the Planck temperature and a quantum theory of gravity would be required to model the extreme energies attained. Hypothetically, a system in thermal equilibrium at the Planck temperature might contain Planck-scale black holes, constantly being formed from thermal radiation and decaying via Hawking evaporation; adding energy to such a system might decrease its temperature by creating larger black holes, whose Hawking temperature is lower.

    \n

    Rumours say the Planck temperature can be reached in some of the hottest parts of Spain in summer.

    " + } +}, +{ + "model": "downloads.release", + "pk": 722, + "fields": { + "created": "2022-07-26T10:12:31.306Z", + "updated": "2022-07-26T11:28:54.721Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.11.0b5", + "slug": "python-3110b5", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2022-07-26T10:10:19Z", + "release_page": null, + "release_notes_url": "", + "content": "## This is a beta preview of Python 3.11\r\n\r\nPython 3.11 is still in development. 3.11.0b5 is the last of the five planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.\r\n\r\nWe **strongly encourage** maintainers of third-party Python projects to **test with 3.11** during the beta phase and report issues found to [the Python bug tracker](https://github.com/python/cpython/issues) as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is have no ABI changes after beta 4 and as few code changes as possible after 3.11.0rc1, the first release candidate. To achieve that, it will be **extremely important** to get as much exposure for 3.11 as possible during the beta phase. \r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n# Major new features of the 3.11 series, compared to 3.10\r\n\r\nSome of the new major new features and changes in Python 3.11 are:\r\n\r\n## General changes\r\n\r\n* [PEP 657](https://www.python.org/dev/peps/pep-0657/) -- Include Fine-Grained Error Locations in Tracebacks\r\n* [PEP 654](https://www.python.org/dev/peps/pep-0654/) -- Exception Groups and `except*`\r\n* [PEP 680](https://www.python.org/dev/peps/pep-0680/) -- tomllib: Support for Parsing TOML in the Standard Library\r\n* [PEP 681](https://www.python.org/dev/peps/pep-0681/) -- Data Class Transforms\r\n* [gh-90908](https://github.com/python/cpython/issues/90908) -- Introduce task groups to asyncio\r\n* [gh-34627](https://github.com/python/cpython/issues/34627/) -- Atomic grouping (`(?>...)`) and possessive quantifiers (`*+, ++, ?+, {m,n}+`) are now supported in regular expressions. \r\n* The [Faster CPython Project](https://github.com/faster-cpython/) is already yielding some exciting results. Python 3.11 is up to 10-60% faster than Python 3.10. On average, we measured a 1.22x speedup on the standard benchmark suite. See [Faster CPython](https://docs.python.org/3.11/whatsnew/3.11.html#faster-cpython) for details.\r\n\r\n## Typing and typing language changes\r\n\r\n* [PEP 673](https://www.python.org/dev/peps/pep-0673/) -- Self Type\r\n* [PEP 646](https://www.python.org/dev/peps/pep-0646/) -- Variadic Generics\r\n* [PEP 675](https://www.python.org/dev/peps/pep-0675/) -- Arbitrary Literal String Type\r\n* [PEP 655](https://www.python.org/dev/peps/pep-0655/) -- Marking individual TypedDict items as required or potentially-missing\r\n\r\n(Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.11 will be 3.11.0rc1, currently scheduled for Monday, 2022-08-01.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.11/)\r\n* [PEP 664](https://www.python.org/dev/peps/pep-0664/), 3.11 Release Schedule\r\n* Report bugs at [https://github.com/python/cpython/issues](https://github.com/python/cpython/issues).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n\r\n# And now for something completely different\r\n\r\nSchwarzschild wormholes, also known as Einstein\u2013Rosen bridges (named after Albert Einstein and Nathan Rosen), are connections between areas of space that can be modelled as vacuum solutions to the Einstein field equations, and that are now understood to be intrinsic parts of the maximally extended version of the Schwarzschild metric describing an eternal black hole with no charge and no rotation. Here, \"maximally extended\" refers to the idea that spacetime should not have any \"edges\": it should be possible to continue this path arbitrarily far into the particle's future or past for any possible trajectory of a free-falling particle (following a geodesic in the spacetime).\r\n\r\nThe Einstein\u2013Rosen bridge was discovered by Ludwig Flamm in 1916, a few months after Schwarzschild published his solution, and was rediscovered by Albert Einstein and his colleague Nathan Rosen, who published their result in 1935. However, in 1962, John Archibald Wheeler and Robert W. Fuller published a paper showing that this type of wormhole is unstable if it connects two parts of the same universe and that it will pinch off too quickly for light (or any particle moving slower than light) that falls in from one exterior region to make it to the other exterior region.\r\n\r\nAlthough Schwarzschild wormholes are not traversable in both directions, their existence inspired Kip Thorne to imagine traversable wormholes created by holding the \"throat\" of a Schwarzschild wormhole open with exotic matter (material that has negative mass/energy).", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a beta preview of Python 3.11

    \n

    Python 3.11 is still in development. 3.11.0b5 is the last of the five planned beta release previews. Beta release previews are intended to give the wider community the opportunity to test new features and bug fixes and to prepare their projects to support the new feature release.

    \n

    We strongly encourage maintainers of third-party Python projects to test with 3.11 during the beta phase and report issues found to the Python bug tracker as soon as possible. While the release is planned to be feature complete entering the beta phase, it is possible that features may be modified or, in rare cases, deleted up until the start of the release candidate phase (Monday, 2021-08-02). Our goal is have no ABI changes after beta 4 and as few code changes as possible after 3.11.0rc1, the first release candidate. To achieve that, it will be extremely important to get as much exposure for 3.11 as possible during the beta phase.

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.11 series, compared to 3.10

    \n

    Some of the new major new features and changes in Python 3.11 are:

    \n

    General changes

    \n
      \n
    • PEP 657 -- Include Fine-Grained Error Locations in Tracebacks
    • \n
    • PEP 654 -- Exception Groups and except*
    • \n
    • PEP 680 -- tomllib: Support for Parsing TOML in the Standard Library
    • \n
    • PEP 681 -- Data Class Transforms
    • \n
    • gh-90908 -- Introduce task groups to asyncio
    • \n
    • gh-34627 -- Atomic grouping ((?>...)) and possessive quantifiers (*+, ++, ?+, {m,n}+) are now supported in regular expressions.
    • \n
    • The Faster CPython Project is already yielding some exciting results. Python 3.11 is up to 10-60% faster than Python 3.10. On average, we measured a 1.22x speedup on the standard benchmark suite. See Faster CPython for details.
    • \n
    \n

    Typing and typing language changes

    \n
      \n
    • PEP 673 -- Self Type
    • \n
    • PEP 646 -- Variadic Generics
    • \n
    • PEP 675 -- Arbitrary Literal String Type
    • \n
    • PEP 655 -- Marking individual TypedDict items as required or potentially-missing
    • \n
    \n

    (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

    \n

    The next pre-release of Python 3.11 will be 3.11.0rc1, currently scheduled for Monday, 2022-08-01.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    Schwarzschild wormholes, also known as Einstein\u2013Rosen bridges (named after Albert Einstein and Nathan Rosen), are connections between areas of space that can be modelled as vacuum solutions to the Einstein field equations, and that are now understood to be intrinsic parts of the maximally extended version of the Schwarzschild metric describing an eternal black hole with no charge and no rotation. Here, \"maximally extended\" refers to the idea that spacetime should not have any \"edges\": it should be possible to continue this path arbitrarily far into the particle's future or past for any possible trajectory of a free-falling particle (following a geodesic in the spacetime).

    \n

    The Einstein\u2013Rosen bridge was discovered by Ludwig Flamm in 1916, a few months after Schwarzschild published his solution, and was rediscovered by Albert Einstein and his colleague Nathan Rosen, who published their result in 1935. However, in 1962, John Archibald Wheeler and Robert W. Fuller published a paper showing that this type of wormhole is unstable if it connects two parts of the same universe and that it will pinch off too quickly for light (or any particle moving slower than light) that falls in from one exterior region to make it to the other exterior region.

    \n

    Although Schwarzschild wormholes are not traversable in both directions, their existence inspired Kip Thorne to imagine traversable wormholes created by holding the \"throat\" of a Schwarzschild wormhole open with exotic matter (material that has negative mass/energy).

    " + } +}, +{ + "model": "downloads.release", + "pk": 723, + "fields": { + "created": "2022-08-02T10:04:51.840Z", + "updated": "2022-08-02T10:41:24.884Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.6", + "slug": "python-3106", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2022-08-02T10:02:05Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.10.6/whatsnew/changelog.html#python-3-10-6-final", + "content": "![Python 3.10 release logo](https://user-images.githubusercontent.com/11718525/135937807-fd3e0fd2-a31a-47a4-90c6-b0bb1d0704d4.png)\r\n\r\n## This is the sixth maintenance release of Python 3.10\r\n\r\nPython 3.10.6 is the newest major release of the Python programming language, and it contains many new features and optimizations.\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nAmong the new major new features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n* [PEP 634 ](https://www.python.org/dev/peps/pep-0634/) -- Structural Pattern Matching: Specification\r\n* [PEP 635 ](https://www.python.org/dev/peps/pep-0635/) -- Structural Pattern Matching: Motivation and Rationale\r\n* [PEP 636 ](https://www.python.org/dev/peps/pep-0636/) -- Structural Pattern Matching: Tutorial\r\n* [PEP 644 ](https://www.python.org/dev/peps/pep-0644/) -- Require OpenSSL 1.1.1 or newer\r\n* [PEP 624 ](https://www.python.org/dev/peps/pep-0624/) -- Remove Py_UNICODE encoder APIs\r\n* [PEP 597 ](https://www.python.org/dev/peps/pep-0597/) -- Add optional EncodingWarning\r\n\r\n[bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) used to be on this list\r\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it [here](https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/) to learn more.\r\n\r\n# More resources\r\n\r\n* [Changelog](https://docs.python.org/3.10/whatsnew/changelog.html#changelog)\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nA pentaquark is a human-made subatomic particle, consisting of four quarks and one antiquark bound together; they are not known to occur naturally or exist outside of experiments to create them. As quarks have a baryon number of (+1/3), and antiquarks of (\u22121/3), the pentaquark would have a total baryon number of 1 and thus would be a baryon. Further, because it has five quarks instead of the usual three found in regular baryons (a.k.a. 'triquarks'), it is classified as an exotic baryon. The name pentaquark was coined by Claude Gignoux et al. (1987) and Harry J. Lipkin in 1987; however, the possibility of five-quark particles was identified as early as 1964 when Murray Gell-Mann first postulated the existence of quarks. Although predicted for decades, pentaquarks proved surprisingly tricky to discover and some physicists were beginning to suspect that an unknown law of nature prevented their production.", + "content_markup_type": "markdown", + "_content_rendered": "

    \"Python

    \n

    This is the sixth maintenance release of Python 3.10

    \n

    Python 3.10.6 is the newest major release of the Python programming language, and it contains many new features and optimizations.

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Among the new major new features and changes so far:

    \n
      \n
    • PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • PEP 613 -- Explicit Type Aliases
    • \n
    • PEP 634 -- Structural Pattern Matching: Specification
    • \n
    • PEP 635 -- Structural Pattern Matching: Motivation and Rationale
    • \n
    • PEP 636 -- Structural Pattern Matching: Tutorial
    • \n
    • PEP 644 -- Require OpenSSL 1.1.1 or newer
    • \n
    • PEP 624 -- Remove Py_UNICODE encoder APIs
    • \n
    • PEP 597 -- Add optional EncodingWarning
    • \n
    \n

    bpo-38605: from __future__ import annotations (PEP 563) used to be on this list\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it here to learn more.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    A pentaquark is a human-made subatomic particle, consisting of four quarks and one antiquark bound together; they are not known to occur naturally or exist outside of experiments to create them. As quarks have a baryon number of (+1/3), and antiquarks of (\u22121/3), the pentaquark would have a total baryon number of 1 and thus would be a baryon. Further, because it has five quarks instead of the usual three found in regular baryons (a.k.a. 'triquarks'), it is classified as an exotic baryon. The name pentaquark was coined by Claude Gignoux et al. (1987) and Harry J. Lipkin in 1987; however, the possibility of five-quark particles was identified as early as 1964 when Murray Gell-Mann first postulated the existence of quarks. Although predicted for decades, pentaquarks proved surprisingly tricky to discover and some physicists were beginning to suspect that an unknown law of nature prevented their production.

    " + } +}, +{ + "model": "downloads.release", + "pk": 724, + "fields": { + "created": "2022-08-08T13:06:50.709Z", + "updated": "2022-09-05T10:59:17.559Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.11.0rc1", + "slug": "python-3110rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": false, + "release_date": "2022-08-08T13:03:27Z", + "release_page": null, + "release_notes_url": "", + "content": "## This is the first release candidate of Python 3.11\r\n\r\nThis release, **3.11.0rc1**, is the penultimate release preview. Entering the release candidate phase, only reviewed code changes which are clear bug fixes are allowed between this release candidate and the final release. The second candidate and the last planned release preview is currently planned for Monday, 2022-09-05 while the official release is planned for Monday, 2022-10-03.\r\n\r\nThere will be no ABI changes from this point forward in the 3.11 series and the goal is that there will be as few code changes as possible.\r\n\r\n## Call to action\r\n\r\n#### Core developers: all eyes on the docs now\r\n\r\n* Are all your changes properly documented?\r\n* Did you notice other changes you know of to have insufficient documentation?\r\n\r\n#### Community members\r\n\r\nWe strongly encourage maintainers of third-party Python projects to prepare their projects for 3.11 compatibilities during this phase. As always, report any issues to [the Python bug tracker ](https://github.com/python/cpython/issues).\r\n\r\nPlease keep in mind that this is a preview release and its use is **not** recommended for production environments.\r\n\r\n# Major new features of the 3.11 series, compared to 3.10\r\n\r\nSome of the new major new features and changes in Python 3.11 are:\r\n\r\n## General changes\r\n\r\n* [PEP 657](https://www.python.org/dev/peps/pep-0657/) -- Include Fine-Grained Error Locations in Tracebacks\r\n* [PEP 654](https://www.python.org/dev/peps/pep-0654/) -- Exception Groups and `except*`\r\n* [PEP 680](https://www.python.org/dev/peps/pep-0680/) -- tomllib: Support for Parsing TOML in the Standard Library\r\n* [gh-90908](https://github.com/python/cpython/issues/90908) -- Introduce task groups to asyncio\r\n* [gh-34627](https://github.com/python/cpython/issues/34627/) -- Atomic grouping (`(?>...)`) and possessive quantifiers (`*+, ++, ?+, {m,n}+`) are now supported in regular expressions. \r\n* The [Faster CPython Project](https://github.com/faster-cpython/) is already yielding some exciting results. Python 3.11 is up to 10-60% faster than Python 3.10. On average, we measured a 1.22x speedup on the standard benchmark suite. See [Faster CPython](https://docs.python.org/3.11/whatsnew/3.11.html#faster-cpython) for details.\r\n\r\n## Typing and typing language changes\r\n\r\n* [PEP 673](https://www.python.org/dev/peps/pep-0673/) -- Self Type\r\n* [PEP 646](https://www.python.org/dev/peps/pep-0646/) -- Variadic Generics\r\n* [PEP 675](https://www.python.org/dev/peps/pep-0675/) -- Arbitrary Literal String Type\r\n* [PEP 655](https://www.python.org/dev/peps/pep-0655/) -- Marking individual TypedDict items as required or potentially-missing\r\n* [PEP 681](https://www.python.org/dev/peps/pep-0681/) -- Data Class Transforms\r\n\r\n(Hey, **fellow core developer,** if a feature you find important is missing from this list, [let Pablo know](mailto:pablogsal@python.org).)\r\n\r\nThe next pre-release of Python 3.11 will be 3.11.0rc2, currently scheduled for Monday, 2022-09-05.\r\n\r\n# More resources\r\n\r\n* [Online Documentation](https://docs.python.org/3.11/)\r\n* [PEP 664](https://www.python.org/dev/peps/pep-0664/), 3.11 Release Schedule\r\n* Report bugs at [https://github.com/python/cpython/issues](https://github.com/python/cpython/issues).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\n\r\nA quark star is a hypothetical type of compact, exotic star, where extremely high core temperature and pressure have forced nuclear particles to form quark matter, a continuous state of matter consisting of free quarks. \r\n\r\nSome massive stars collapse to form neutron stars at the end of their life cycle, as has been both observed and explained theoretically. Under the extreme temperatures and pressures inside neutron stars, the neutrons are normally kept apart by degeneracy pressure, stabilizing the star and hindering further gravitational collapse. However, it is hypothesized that under even more extreme temperature and pressure, the degeneracy pressure of the neutrons is overcome, and the neutrons are forced to merge and dissolve into their constituent quarks, creating an ultra-dense phase of quark matter based on densely packed quarks. In this state, a new equilibrium is supposed to emerge, as a new degeneracy pressure between the quarks, as well as repulsive electromagnetic forces, will occur and hinder total gravitational collapse.\r\n\r\nIf these ideas are correct, quark stars might occur, and be observable, somewhere in the universe. Theoretically, such a scenario is seen as scientifically plausible, but it has been impossible to prove both observationally and experimentally because the very extreme conditions needed for stabilizing quark matter cannot be created in any laboratory nor observed directly in nature. The stability of quark matter, and hence the existence of quark stars, is for these reasons among the unsolved problems in physics.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is the first release candidate of Python 3.11

    \n

    This release, 3.11.0rc1, is the penultimate release preview. Entering the release candidate phase, only reviewed code changes which are clear bug fixes are allowed between this release candidate and the final release. The second candidate and the last planned release preview is currently planned for Monday, 2022-09-05 while the official release is planned for Monday, 2022-10-03.

    \n

    There will be no ABI changes from this point forward in the 3.11 series and the goal is that there will be as few code changes as possible.

    \n

    Call to action

    \n

    Core developers: all eyes on the docs now

    \n
      \n
    • Are all your changes properly documented?
    • \n
    • Did you notice other changes you know of to have insufficient documentation?
    • \n
    \n

    Community members

    \n

    We strongly encourage maintainers of third-party Python projects to prepare their projects for 3.11 compatibilities during this phase. As always, report any issues to the Python bug tracker .

    \n

    Please keep in mind that this is a preview release and its use is not recommended for production environments.

    \n

    Major new features of the 3.11 series, compared to 3.10

    \n

    Some of the new major new features and changes in Python 3.11 are:

    \n

    General changes

    \n
      \n
    • PEP 657 -- Include Fine-Grained Error Locations in Tracebacks
    • \n
    • PEP 654 -- Exception Groups and except*
    • \n
    • PEP 680 -- tomllib: Support for Parsing TOML in the Standard Library
    • \n
    • gh-90908 -- Introduce task groups to asyncio
    • \n
    • gh-34627 -- Atomic grouping ((?>...)) and possessive quantifiers (*+, ++, ?+, {m,n}+) are now supported in regular expressions.
    • \n
    • The Faster CPython Project is already yielding some exciting results. Python 3.11 is up to 10-60% faster than Python 3.10. On average, we measured a 1.22x speedup on the standard benchmark suite. See Faster CPython for details.
    • \n
    \n

    Typing and typing language changes

    \n
      \n
    • PEP 673 -- Self Type
    • \n
    • PEP 646 -- Variadic Generics
    • \n
    • PEP 675 -- Arbitrary Literal String Type
    • \n
    • PEP 655 -- Marking individual TypedDict items as required or potentially-missing
    • \n
    • PEP 681 -- Data Class Transforms
    • \n
    \n

    (Hey, fellow core developer, if a feature you find important is missing from this list, let Pablo know.)

    \n

    The next pre-release of Python 3.11 will be 3.11.0rc2, currently scheduled for Monday, 2022-09-05.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    A quark star is a hypothetical type of compact, exotic star, where extremely high core temperature and pressure have forced nuclear particles to form quark matter, a continuous state of matter consisting of free quarks.

    \n

    Some massive stars collapse to form neutron stars at the end of their life cycle, as has been both observed and explained theoretically. Under the extreme temperatures and pressures inside neutron stars, the neutrons are normally kept apart by degeneracy pressure, stabilizing the star and hindering further gravitational collapse. However, it is hypothesized that under even more extreme temperature and pressure, the degeneracy pressure of the neutrons is overcome, and the neutrons are forced to merge and dissolve into their constituent quarks, creating an ultra-dense phase of quark matter based on densely packed quarks. In this state, a new equilibrium is supposed to emerge, as a new degeneracy pressure between the quarks, as well as repulsive electromagnetic forces, will occur and hinder total gravitational collapse.

    \n

    If these ideas are correct, quark stars might occur, and be observable, somewhere in the universe. Theoretically, such a scenario is seen as scientifically plausible, but it has been impossible to prove both observationally and experimentally because the very extreme conditions needed for stabilizing quark matter cannot be created in any laboratory nor observed directly in nature. The stability of quark matter, and hence the existence of quark stars, is for these reasons among the unsolved problems in physics.

    " + } +}, +{ + "model": "downloads.release", + "pk": 725, + "fields": { + "created": "2022-09-06T09:18:19.144Z", + "updated": "2022-09-06T10:09:37.988Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.10.7", + "slug": "python-3107", + "version": 3, + "is_latest": true, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2022-09-06T09:14:59Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.10.7/whatsnew/changelog.html#python-3-10-7-final", + "content": "![Python 3.10 release logo](https://user-images.githubusercontent.com/11718525/135937807-fd3e0fd2-a31a-47a4-90c6-b0bb1d0704d4.png)\r\n\r\n## This is the seventh maintenance release of Python 3.10\r\n\r\nPython 3.10.7 is the newest major release of the Python programming language, and it contains many new features and optimizations.\r\n\r\n# Major new features of the 3.10 series, compared to 3.9\r\n\r\nAmong the new major new features and changes so far:\r\n\r\n* [PEP 623](https://www.python.org/dev/peps/pep-0623/) -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.\r\n* [PEP 604](https://www.python.org/dev/peps/pep-0604/) -- Allow writing union types as X | Y\r\n* [PEP 612](https://www.python.org/dev/peps/pep-0612/) -- Parameter Specification Variables\r\n* [PEP 626](https://www.python.org/dev/peps/pep-0626/) -- Precise line numbers for debugging and other tools.\r\n* [PEP 618 ](https://www.python.org/dev/peps/pep-0618/) -- Add Optional Length-Checking To zip.\r\n* [bpo-12782](https://bugs.python.org/issue12782): Parenthesized context managers are now officially allowed.\r\n* [PEP 632 ](https://www.python.org/dev/peps/pep-0632/) -- Deprecate distutils module.\r\n* [PEP 613 ](https://www.python.org/dev/peps/pep-0613/) -- Explicit Type Aliases\r\n* [PEP 634 ](https://www.python.org/dev/peps/pep-0634/) -- Structural Pattern Matching: Specification\r\n* [PEP 635 ](https://www.python.org/dev/peps/pep-0635/) -- Structural Pattern Matching: Motivation and Rationale\r\n* [PEP 636 ](https://www.python.org/dev/peps/pep-0636/) -- Structural Pattern Matching: Tutorial\r\n* [PEP 644 ](https://www.python.org/dev/peps/pep-0644/) -- Require OpenSSL 1.1.1 or newer\r\n* [PEP 624 ](https://www.python.org/dev/peps/pep-0624/) -- Remove Py_UNICODE encoder APIs\r\n* [PEP 597 ](https://www.python.org/dev/peps/pep-0597/) -- Add optional EncodingWarning\r\n\r\n[bpo-38605](https://bugs.python.org/issue38605): `from __future__ import annotations` ([PEP 563](https://www.python.org/dev/peps/pep-0563/)) used to be on this list\r\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it [here](https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/) to learn more.\r\n\r\n# More resources\r\n\r\n* [Changelog](https://docs.python.org/3.10/whatsnew/changelog.html#changelog)\r\n* [Online Documentation](https://docs.python.org/3.10/)\r\n* [PEP 619](https://www.python.org/dev/peps/pep-0619/), 3.10 Release Schedule\r\n* Report bugs at [https://bugs.python.org](https://bugs.python.org).\r\n* [Help fund Python and its community](/psf/donations/).\r\n\r\n# And now for something completely different\r\nIn quantum mechanics, the uncertainty principle (also known as Heisenberg's uncertainty principle) is any of a variety of mathematical inequalities asserting a fundamental limit to the accuracy with which the values for certain pairs of physical quantities of a particle, such as position and momentum or the time and the energy can be predicted from initial conditions. Such variable pairs are known as complementary variables or canonically conjugate variables; and, depending on interpretation, the uncertainty principle limits to what extent such conjugate properties maintain their approximate meaning, as the mathematical framework of quantum physics does not support the notion of simultaneously well-defined conjugate properties expressed by a single value. The uncertainty principle implies that it is in general not possible to predict the value of a quantity with arbitrary certainty, even if all initial conditions are specified.", + "content_markup_type": "markdown", + "_content_rendered": "

    \"Python

    \n

    This is the seventh maintenance release of Python 3.10

    \n

    Python 3.10.7 is the newest major release of the Python programming language, and it contains many new features and optimizations.

    \n

    Major new features of the 3.10 series, compared to 3.9

    \n

    Among the new major new features and changes so far:

    \n
      \n
    • PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
    • \n
    • PEP 604 -- Allow writing union types as X | Y
    • \n
    • PEP 612 -- Parameter Specification Variables
    • \n
    • PEP 626 -- Precise line numbers for debugging and other tools.
    • \n
    • PEP 618 -- Add Optional Length-Checking To zip.
    • \n
    • bpo-12782: Parenthesized context managers are now officially allowed.
    • \n
    • PEP 632 -- Deprecate distutils module.
    • \n
    • PEP 613 -- Explicit Type Aliases
    • \n
    • PEP 634 -- Structural Pattern Matching: Specification
    • \n
    • PEP 635 -- Structural Pattern Matching: Motivation and Rationale
    • \n
    • PEP 636 -- Structural Pattern Matching: Tutorial
    • \n
    • PEP 644 -- Require OpenSSL 1.1.1 or newer
    • \n
    • PEP 624 -- Remove Py_UNICODE encoder APIs
    • \n
    • PEP 597 -- Add optional EncodingWarning
    • \n
    \n

    bpo-38605: from __future__ import annotations (PEP 563) used to be on this list\nin previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. You can read the Steering Council communication about it here to learn more.

    \n

    More resources

    \n\n

    And now for something completely different

    \n

    In quantum mechanics, the uncertainty principle (also known as Heisenberg's uncertainty principle) is any of a variety of mathematical inequalities asserting a fundamental limit to the accuracy with which the values for certain pairs of physical quantities of a particle, such as position and momentum or the time and the energy can be predicted from initial conditions. Such variable pairs are known as complementary variables or canonically conjugate variables; and, depending on interpretation, the uncertainty principle limits to what extent such conjugate properties maintain their approximate meaning, as the mathematical framework of quantum physics does not support the notion of simultaneously well-defined conjugate properties expressed by a single value. The uncertainty principle implies that it is in general not possible to predict the value of a quantity with arbitrary certainty, even if all initial conditions are specified.

    " + } +}, +{ + "model": "downloads.release", + "pk": 726, + "fields": { + "created": "2022-09-06T21:43:21.492Z", + "updated": "2022-09-06T21:43:21.549Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.9.14", + "slug": "python-3914", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2022-09-06T21:34:10Z", + "release_page": null, + "release_notes_url": "http://docs.python.org/release/3.9.14/whatsnew/changelog.html", + "content": "## This is a security release of Python 3.9\r\n\r\n**Note:** The release you're looking at is Python 3.9.14, a **security bugfix release** for the legacy 3.9 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/).\r\n\r\n## Security content in this release\r\n- CVE-2020-10735: converting between int and str in bases other than 2 (binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal) now raises a ValueError if the number of digits in string form is above a limit to avoid potential denial of service attacks due to the algorithmic complexity.\r\n- gh-87389: http.server: Fix an open redirection vulnerability in the HTTP server when an URI path starts with //.\r\n- gh-93065: Fix contextvars HAMT implementation to handle iteration over deep trees to avoid a potential crash of the interpreter.\r\n- gh-90355: Fix ensurepip environment isolation for the subprocess running pip.\r\n\r\n## No installers\r\nAccording to the release calendar specified in [PEP 596](https://www.python.org/dev/peps/pep-0596/), Python 3.9 is now in the \"security fixes only\" stage of its life cycle: the 3.9 branch only accepts security fixes and releases of those are made irregularly in source-only form until October 2025. Python 3.9 isn't receiving regular bug fixes anymore, and binary installers are no longer provided for it. **Python 3.9.13** was the last full *bugfix release* of Python 3.9 with binary installers.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a security release of Python 3.9

    \n

    Note: The release you're looking at is Python 3.9.14, a security bugfix release for the legacy 3.9 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    Security content in this release

    \n
      \n
    • CVE-2020-10735: converting between int and str in bases other than 2 (binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal) now raises a ValueError if the number of digits in string form is above a limit to avoid potential denial of service attacks due to the algorithmic complexity.
    • \n
    • gh-87389: http.server: Fix an open redirection vulnerability in the HTTP server when an URI path starts with //.
    • \n
    • gh-93065: Fix contextvars HAMT implementation to handle iteration over deep trees to avoid a potential crash of the interpreter.
    • \n
    • gh-90355: Fix ensurepip environment isolation for the subprocess running pip.
    • \n
    \n

    No installers

    \n

    According to the release calendar specified in PEP 596, Python 3.9 is now in the \"security fixes only\" stage of its life cycle: the 3.9 branch only accepts security fixes and releases of those are made irregularly in source-only form until October 2025. Python 3.9 isn't receiving regular bug fixes anymore, and binary installers are no longer provided for it. Python 3.9.13 was the last full bugfix release of Python 3.9 with binary installers.

    " + } +}, +{ + "model": "downloads.release", + "pk": 727, + "fields": { + "created": "2022-09-06T21:45:58.981Z", + "updated": "2022-09-06T21:45:59.034Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.8.14", + "slug": "python-3814", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2022-09-06T21:43:49Z", + "release_page": null, + "release_notes_url": "http://docs.python.org/release/3.8.14/whatsnew/changelog.html", + "content": "## This is a security release of Python 3.8\r\n\r\n**Note:** The release you're looking at is Python 3.8.13, a **security bugfix release** for the legacy 3.8 series. *Python 3.10* is now the latest feature release series of Python 3. [Get the latest release of 3.10.x here](/downloads/).\r\n\r\n## Security content in this release\r\n- CVE-2020-10735: converting between int and str in bases other than 2 (binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal) now raises a ValueError if the number of digits in string form is above a limit to avoid potential denial of service attacks due to the algorithmic complexity.\r\n- gh-87389: http.server: Fix an open redirection vulnerability in the HTTP server when an URI path starts with //.\r\n- gh-93065: Fix contextvars HAMT implementation to handle iteration over deep trees to avoid a potential crash of the interpreter.\r\n- gh-90355: Fix ensurepip environment isolation for the subprocess running pip.\r\n- gh-80254: Raise ProgrammingError instead of segfaulting on recursive usage of cursors in sqlite3 converters.\r\n\r\n## No installers\r\nAccording to the release calendar specified in [PEP 569](https://www.python.org/dev/peps/pep-0569/), Python 3.8 is now in the \"security fixes only\" stage of its life cycle: 3.8 branch only accepts security fixes and releases of those are made irregularly in source-only form until October 2024. Python 3.8 isn't receiving regular bug fixes anymore, and binary installers are no longer provided for it. **Python 3.8.10** was the last full *bugfix release* of Python 3.8 with binary installers.", + "content_markup_type": "markdown", + "_content_rendered": "

    This is a security release of Python 3.8

    \n

    Note: The release you're looking at is Python 3.8.13, a security bugfix release for the legacy 3.8 series. Python 3.10 is now the latest feature release series of Python 3. Get the latest release of 3.10.x here.

    \n

    Security content in this release

    \n
      \n
    • CVE-2020-10735: converting between int and str in bases other than 2 (binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal) now raises a ValueError if the number of digits in string form is above a limit to avoid potential denial of service attacks due to the algorithmic complexity.
    • \n
    • gh-87389: http.server: Fix an open redirection vulnerability in the HTTP server when an URI path starts with //.
    • \n
    • gh-93065: Fix contextvars HAMT implementation to handle iteration over deep trees to avoid a potential crash of the interpreter.
    • \n
    • gh-90355: Fix ensurepip environment isolation for the subprocess running pip.
    • \n
    • gh-80254: Raise ProgrammingError instead of segfaulting on recursive usage of cursors in sqlite3 converters.
    • \n
    \n

    No installers

    \n

    According to the release calendar specified in PEP 569, Python 3.8 is now in the \"security fixes only\" stage of its life cycle: 3.8 branch only accepts security fixes and releases of those are made irregularly in source-only form until October 2024. Python 3.8 isn't receiving regular bug fixes anymore, and binary installers are no longer provided for it. Python 3.8.10 was the last full bugfix release of Python 3.8 with binary installers.

    " + } +}, +{ + "model": "downloads.release", + "pk": 728, + "fields": { + "created": "2022-09-06T22:39:49.731Z", + "updated": "2022-09-07T02:45:56.278Z", + "creator": null, + "last_modified_by": null, + "name": "Python 3.7.14", + "slug": "python-3714", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": false, + "show_on_download_page": true, + "release_date": "2022-09-06T22:13:59Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/release/3.7.14/whatsnew/changelog.html#changelog", + "content": "**Note:** The release you are looking at is **Python 3.7.14**, a **security bugfix release** for the legacy **3.7** series which is now in the **security fix** phase of its life cycle. See the `downloads page `_ for currently supported versions of Python and for the most recent source-only **security fix** release for 3.7. The final **bugfix release** with binary installers for 3.7 was `3.7.9 `_.\r\n\r\nPlease see the `Full Changelog `_ link for more information about the contents of this release and see `What\u2019s New In Python 3.7 `_ for more information about 3.7 features. \r\n\r\nSecurity content in this release\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\n* `CVE-2020-10735 `_: converting between int and str in bases other than 2 (binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal) `now raises a ValueError `_ if the number of digits in string form is above a limit to avoid potential denial of service attacks due to the algorithmic complexity.\r\n* gh-87389: http.server: Fix an open redirection vulnerability in the HTTP server when an URI path starts with //.\r\n* gh-93065: Fix contextvars HAMT implementation to handle iteration over deep trees to avoid a potential crash of the interpreter.\r\n* gh-80254: Raise ProgrammingError instead of segfaulting on recursive usage of cursors in sqlite3 converters.\r\n\r\n\r\nMore resources\r\n^^^^^^^^^^^^^^\r\n\r\n* `Online Documentation `_\r\n* :pep:`537`, 3.7 Release Schedule\r\n* Report bugs at ``_.\r\n* `Help fund Python and its community `_.", + "content_markup_type": "restructuredtext", + "_content_rendered": "

    Note: The release you are looking at is Python 3.7.14, a security bugfix release for the legacy 3.7 series which is now in the security fix phase of its life cycle. See the downloads page for currently supported versions of Python and for the most recent source-only security fix release for 3.7. The final bugfix release with binary installers for 3.7 was 3.7.9.

    \n

    Please see the Full Changelog link for more information about the contents of this release and see What\u2019s New In Python 3.7 for more information about 3.7 features.

    \n
    \n

    Security content in this release

    \n
      \n
    • CVE-2020-10735: converting between int and str in bases other than 2 (binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal) now raises a ValueError if the number of digits in string form is above a limit to avoid potential denial of service attacks due to the algorithmic complexity.
    • \n
    • gh-87389: http.server: Fix an open redirection vulnerability in the HTTP server when an URI path starts with //.
    • \n
    • gh-93065: Fix contextvars HAMT implementation to handle iteration over deep trees to avoid a potential crash of the interpreter.
    • \n
    • gh-80254: Raise ProgrammingError instead of segfaulting on recursive usage of cursors in sqlite3 converters.
    • \n
    \n
    \n
    \n

    More resources

    \n\n
    \n" + } +}, +{ + "model": "downloads.releasefile", + "pk": 1, + "fields": { + "created": "2014-02-14T22:01:48.372Z", + "updated": "2014-03-22T01:19:21.680Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI Installer", + "slug": "windows-x86-276", + "os": 1, + "release": 1, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.6/python-2.7.6.msi", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ac54e14f7ba180253b9bae6635d822ea", + "filesize": 16281600, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2, + "fields": { + "created": "2014-02-14T22:01:48.375Z", + "updated": "2014-03-22T02:23:39.721Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI program database", + "slug": "windows-x86-pdb-276", + "os": 1, + "release": 1, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.6/python-2.7.6-pdb.zip", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ec3184d886efdc4c679eeaed5f62643b", + "filesize": 18244674, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3, + "fields": { + "created": "2014-02-14T22:01:48.377Z", + "updated": "2014-03-22T01:19:21.674Z", + "creator": null, + "last_modified_by": null, + "name": "Windows X86-64 MSI Installer", + "slug": "windows-x86-64-276", + "os": 1, + "release": 1, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.6/python-2.7.6.amd64.msi", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b73f8753c76924bc7b75afaa6d304645", + "filesize": 16674816, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 4, + "fields": { + "created": "2014-02-14T22:01:48.379Z", + "updated": "2014-03-22T01:19:21.668Z", + "creator": null, + "last_modified_by": null, + "name": "Windows X86-64 MSI program database", + "slug": "windows-x86-64-pdb-276", + "os": 1, + "release": 1, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.6/python-2.7.6.amd64-pdb.zip", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e4866ce2f277d1f8e41d6fdf0296799d", + "filesize": 17458242, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 5, + "fields": { + "created": "2014-02-14T22:01:48.381Z", + "updated": "2014-03-22T01:19:21.656Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "windows-help-276", + "os": 1, + "release": 1, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.6/python276.chm", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ef628818d054401bdfb186a1faa8b5b6", + "filesize": 6010777, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 6, + "fields": { + "created": "2014-02-14T22:01:48.383Z", + "updated": "2014-03-22T01:19:21.637Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit x86-64/i386 Installer", + "slug": "osx-64bit-276", + "os": 2, + "release": 1, + "description": "For Mac OS X 10.6 and later. You may need an updated Tcl/Tk install to run IDLE or use Tkinter, see note 2 for instructions.", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.6/python-2.7.6-macosx10.6.dmg", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a2b0f708dcd5e22148e52ae77c6cdd3e", + "filesize": 20169125, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 7, + "fields": { + "created": "2014-02-14T22:01:48.385Z", + "updated": "2014-03-22T01:19:21.629Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC Installer", + "slug": "osx-32bit-276", + "os": 2, + "release": 1, + "description": "for Mac OS X 10.3 and later [2] (sig).", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.6/python-2.7.6-macosx10.3.dmg", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b721f7899e131dfdc0f33d805a90a677", + "filesize": 20588267, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 8, + "fields": { + "created": "2014-02-14T22:01:48.387Z", + "updated": "2014-03-22T01:19:21.650Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tar ball", + "slug": "xz-source-276", + "os": 3, + "release": 1, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bcf93efa8eaf383c98ed3ce40b763497", + "filesize": 10431288, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 9, + "fields": { + "created": "2014-02-14T22:01:48.389Z", + "updated": "2014-03-22T01:19:21.643Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tar ball", + "slug": "gzip-source-276", + "os": 3, + "release": 1, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1d8728eb0dfcac72a0fd99c17ec7f386", + "filesize": 14725931, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 10, + "fields": { + "created": "2014-02-14T22:24:20.166Z", + "updated": "2014-02-14T22:24:20.227Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tar ball", + "slug": "xz-source-334", + "os": 3, + "release": 2, + "description": " ~ 11 MB", + "is_source": true, + "url": "http://www.python.org/ftp/python/3.3.4/Python-3.3.4.tar.xz", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8fb961a20600aafafd249537af3ac637", + "filesize": 12087568, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 11, + "fields": { + "created": "2014-02-14T22:24:20.168Z", + "updated": "2014-02-16T02:27:03.355Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tar ball", + "slug": "gzip-source-334", + "os": 3, + "release": 2, + "description": "~ 16 MB", + "is_source": true, + "url": "http://www.python.org/ftp/python/3.3.4/Python-3.3.4.tgz", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9f7df0dde690132c63b1dd2b640ed3a6", + "filesize": 16843278, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 12, + "fields": { + "created": "2014-02-14T22:24:20.170Z", + "updated": "2014-02-16T02:27:03.368Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI Installer", + "slug": "windows-x86-334", + "os": 1, + "release": 2, + "description": "", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.4/python-3.3.4.msi", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "839af9c8044a1c45338b618294d7a6f3", + "filesize": 20627456, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 13, + "fields": { + "created": "2014-02-14T22:24:20.172Z", + "updated": "2014-02-14T22:24:20.232Z", + "creator": null, + "last_modified_by": null, + "name": "Windows X86-64 MSI Installer", + "slug": "windows-x86-64-334", + "os": 1, + "release": 2, + "description": "", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.4/python-3.3.4.amd64.msi", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fe66db6a92f8135cbbefa3265e8a99ec", + "filesize": 21168128, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 14, + "fields": { + "created": "2014-02-14T22:24:20.174Z", + "updated": "2014-02-16T02:27:03.360Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit Installer", + "slug": "osx-334-64bit", + "os": 2, + "release": 2, + "description": "For Mac OS X 10.6 and later", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.4/python-3.3.4-macosx10.6.dmg", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7ca8dab58e94f475418792ba2294b73f", + "filesize": 19991575, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 15, + "fields": { + "created": "2014-02-14T22:24:20.176Z", + "updated": "2014-02-14T22:24:20.235Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC Installer", + "slug": "osx-32bit-334", + "os": 2, + "release": 2, + "description": "For OS X 10.5 and later", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.4/python-3.3.4-macosx10.5.dmg", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "22501eb8acaaa849c834c5596c3cee37", + "filesize": 19914620, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 16, + "fields": { + "created": "2014-02-23T10:40:44.470Z", + "updated": "2014-03-02T08:31:37.380Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tar ball", + "slug": "gzip-source-335", + "os": 3, + "release": 3, + "description": "~ 16 MB", + "is_source": true, + "url": "http://www.python.org/ftp/python/3.3.5/Python-3.3.5rc1.tgz", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/Python-3.3.5rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f5385c4c809072b1c5b49d5faae4f9b2", + "filesize": 16876611, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 17, + "fields": { + "created": "2014-02-23T10:41:37.126Z", + "updated": "2014-03-02T08:31:37.374Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "xz-source-335", + "os": 3, + "release": 3, + "description": "~ 11 MB", + "is_source": true, + "url": "http://www.python.org/ftp/python/3.3.5/Python-3.3.5rc1.tar.xz", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/Python-3.3.5rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "91afd237a2e378476c6d4616b2a69dda", + "filesize": 16876611, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 18, + "fields": { + "created": "2014-02-23T11:10:27.050Z", + "updated": "2014-03-02T08:31:37.362Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit Installer", + "slug": "osx-335-64bit", + "os": 2, + "release": 3, + "description": "For Mac OS X 10.6 and later", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc1-macosx10.6.dmg", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc1-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "60aaf53e0ebb5a7ecd2349f212c62835", + "filesize": 20017628, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 19, + "fields": { + "created": "2014-02-23T11:15:42.510Z", + "updated": "2014-03-02T08:31:37.368Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC Installer", + "slug": "osx-32bit-335", + "os": 2, + "release": 3, + "description": "For OS X 10.5 and later", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc1-macosx10.5.dmg", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc1-macosx10.5.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8ab7ec6d3e81ead6b3578f6bf75810d9", + "filesize": 19963194, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 20, + "fields": { + "created": "2014-02-23T11:15:42.513Z", + "updated": "2014-03-02T08:31:37.386Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI Installer", + "slug": "windows-x86-335", + "os": 1, + "release": 3, + "description": "", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc1.msi", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "981592c6735608d584ab871ae0714f80", + "filesize": 20660224, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 21, + "fields": { + "created": "2014-02-23T11:15:42.515Z", + "updated": "2014-03-02T08:31:37.392Z", + "creator": null, + "last_modified_by": null, + "name": "Windows X86-64 MSI Installer", + "slug": "windows-x86-64-335", + "os": 1, + "release": 3, + "description": "", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc1.amd64.msi", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "97bb3692b165df901b1e72226d413fe6", + "filesize": 21209088, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 84, + "fields": { + "created": "2014-03-03T10:19:04.638Z", + "updated": "2014-03-03T10:19:04.648Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-3-5-rc2-XZ-compressed-source-tarball", + "os": 3, + "release": 5, + "description": "", + "is_source": true, + "url": "http://www.python.org/ftp/python/3.3.5/Python-3.3.5rc2.tar.xz", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/Python-3.3.5rc2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f8564947f4e4604e500cd3b802ff821d", + "filesize": 12105636, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 85, + "fields": { + "created": "2014-03-03T10:19:06.054Z", + "updated": "2014-03-03T10:19:06.064Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-3-5-rc2-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 5, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc2-macosx10.6.dmg", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc2-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "11d0a88e15c4882dc30271dcf9341bf9", + "filesize": 20021227, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 86, + "fields": { + "created": "2014-03-03T10:19:07.609Z", + "updated": "2014-03-03T10:19:07.619Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-3-5-rc2-Gzipped-source-tarball", + "os": 3, + "release": 5, + "description": "", + "is_source": true, + "url": "http://www.python.org/ftp/python/3.3.5/Python-3.3.5rc2.tgz", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/Python-3.3.5rc2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "45a6adb9cca2a90eab9270d4eadb2e00", + "filesize": 16881986, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 87, + "fields": { + "created": "2014-03-03T10:19:08.932Z", + "updated": "2014-03-03T10:19:08.941Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-3-5-rc2-Windows-help-file", + "os": 1, + "release": 5, + "description": "", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python335rc2.chm", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python335rc2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "992e94fca4ae09d31246a3d6c5f87748", + "filesize": 6705379, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 88, + "fields": { + "created": "2014-03-03T10:19:10.373Z", + "updated": "2017-07-18T21:41:58.981Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "3-3-5-rc2-Windows-x86-64-MSI-installer", + "os": 1, + "release": 5, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc2.amd64.msi", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc2.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "15534a04a832fde3137d756f8d2a2833", + "filesize": 21217280, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 89, + "fields": { + "created": "2014-03-03T10:19:11.779Z", + "updated": "2014-03-03T10:19:11.790Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-3-5-rc2-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 5, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc2-macosx10.5.dmg", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc2-macosx10.5.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9c18fb0aa68cf3c17eaf63079295b6e3", + "filesize": 19965085, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 90, + "fields": { + "created": "2014-03-03T10:19:13.262Z", + "updated": "2014-03-03T10:19:13.271Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "3-3-5-rc2-Windows-x86-MSI-installer", + "os": 1, + "release": 5, + "description": "", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc2.msi", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc2.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ff43520e8f1fdf86dd1e2fa05299e77b", + "filesize": 20672512, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 91, + "fields": { + "created": "2014-03-03T10:19:18.221Z", + "updated": "2014-03-03T10:19:18.230Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "3-3-5-rc2-Windows-debug-information-files", + "os": 1, + "release": 5, + "description": "", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc2-pdb.zip", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python-3.3.5rc2-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4d14e8b8bb6d694af37625beabee6069", + "filesize": 26903080, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 116, + "fields": { + "created": "2014-03-09T10:25:44.619Z", + "updated": "2014-03-09T10:25:44.633Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-3-5-Gzipped-source-tarball", + "os": 3, + "release": 6, + "description": "", + "is_source": true, + "url": "http://www.python.org/ftp/python/3.3.5/Python-3.3.5.tgz", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/Python-3.3.5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "803a75927f8f241ca78633890c798021", + "filesize": 16881688, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 117, + "fields": { + "created": "2014-03-09T10:25:45.949Z", + "updated": "2017-07-18T21:41:57.190Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "3-3-5-Windows-x86-64-MSI-installer", + "os": 1, + "release": 6, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python-3.3.5.amd64.msi", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python-3.3.5.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ebb3ab0df91389a6dd45317d6f4ac838", + "filesize": 21221376, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 118, + "fields": { + "created": "2014-03-09T10:25:47.396Z", + "updated": "2014-03-09T10:25:47.411Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-3-5-Windows-help-file", + "os": 1, + "release": 6, + "description": "", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python335.chm", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python335.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9f527d47eefbb04c5c90448ad8447c46", + "filesize": 6708586, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 119, + "fields": { + "created": "2014-03-09T10:25:48.868Z", + "updated": "2014-03-09T10:25:48.883Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "3-3-5-Windows-x86-MSI-installer", + "os": 1, + "release": 6, + "description": "", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python-3.3.5.msi", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python-3.3.5.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ee4de0c34fd8c575db8a7805e2b9584a", + "filesize": 20676608, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 120, + "fields": { + "created": "2014-03-09T10:25:50.197Z", + "updated": "2014-03-09T10:25:50.211Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "3-3-5-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 6, + "description": "", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python-3.3.5.amd64-pdb.zip", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python-3.3.5.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "847a2f894aa66319197e0a946e49d181", + "filesize": 22161782, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 121, + "fields": { + "created": "2014-03-09T10:25:51.539Z", + "updated": "2014-03-09T10:25:51.553Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-3-5-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 6, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python-3.3.5-macosx10.5.dmg", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python-3.3.5-macosx10.5.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d0c01c7c901ed63d14c059f15dbc0d92", + "filesize": 19963502, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 122, + "fields": { + "created": "2014-03-09T10:25:52.834Z", + "updated": "2014-03-09T10:25:52.848Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-3-5-XZ-compressed-source-tarball", + "os": 3, + "release": 6, + "description": "", + "is_source": true, + "url": "http://www.python.org/ftp/python/3.3.5/Python-3.3.5.tar.xz", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/Python-3.3.5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b2a4df195d934e5b229e8328ca864960", + "filesize": 12116308, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 123, + "fields": { + "created": "2014-03-09T10:25:54.154Z", + "updated": "2014-03-09T10:25:54.168Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-3-5-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 6, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python-3.3.5-macosx10.6.dmg", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python-3.3.5-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bb57aab02f13706aa4e24ea736e3fdeb", + "filesize": 20019828, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 124, + "fields": { + "created": "2014-03-09T10:25:55.497Z", + "updated": "2014-03-09T10:25:55.511Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "3-3-5-Windows-debug-information-files", + "os": 1, + "release": 6, + "description": "", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.3.5/python-3.3.5-pdb.zip", + "gpg_signature_file": "http://www.python.org/ftp/python/3.3.5/python-3.3.5-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b6ba73e8f2ae303ef7d3d85751d63ed8", + "filesize": 26935848, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 130, + "fields": { + "created": "2014-03-10T08:08:18.859Z", + "updated": "2017-07-18T21:42:00.444Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "3-4-0-rc3-Windows-x86-64-MSI-installer", + "os": 1, + "release": 8, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.4.0/python-3.4.0rc3.amd64.msi", + "gpg_signature_file": "http://www.python.org/ftp/python/3.4.0/python-3.4.0rc3.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "25ab911732a009d31015763a0c722520", + "filesize": 25161728, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 131, + "fields": { + "created": "2014-03-10T08:08:19.369Z", + "updated": "2014-03-10T08:08:19.384Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-4-0-rc3-Gzipped-source-tarball", + "os": 3, + "release": 8, + "description": "", + "is_source": true, + "url": "http://www.python.org/ftp/python/3.4.0/Python-3.4.0rc3.tgz", + "gpg_signature_file": "http://www.python.org/ftp/python/3.4.0/Python-3.4.0rc3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "15f30d9d906eea3c5f2b1893769a20ca", + "filesize": 19188599, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 132, + "fields": { + "created": "2014-03-10T08:08:19.688Z", + "updated": "2014-03-10T08:08:19.703Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-4-0-rc3-XZ-compressed-source-tarball", + "os": 3, + "release": 8, + "description": "", + "is_source": true, + "url": "http://www.python.org/ftp/python/3.4.0/Python-3.4.0rc3.tar.xz", + "gpg_signature_file": "http://www.python.org/ftp/python/3.4.0/Python-3.4.0rc3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d356945d284d254990a6e962bbba60bb", + "filesize": 14039828, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 133, + "fields": { + "created": "2014-03-10T08:08:20.103Z", + "updated": "2014-03-10T08:08:20.118Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "3-4-0-rc3-Windows-x86-MSI-installer", + "os": 1, + "release": 8, + "description": "", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.4.0/python-3.4.0rc3.msi", + "gpg_signature_file": "http://www.python.org/ftp/python/3.4.0/python-3.4.0rc3.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7791b30f69744ea7ff3166f6daf8f7cb", + "filesize": 24461312, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 134, + "fields": { + "created": "2014-03-10T08:08:20.650Z", + "updated": "2014-03-10T08:08:20.664Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-4-0-rc3-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 8, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.4.0/python-3.4.0rc3-macosx10.5.dmg", + "gpg_signature_file": "http://www.python.org/ftp/python/3.4.0/python-3.4.0rc3-macosx10.5.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0a32943ced5042e5da117b7254a36b1e", + "filesize": 22733674, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 135, + "fields": { + "created": "2014-03-10T08:08:20.994Z", + "updated": "2014-03-10T08:08:21.008Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "3-4-0-rc3-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 8, + "description": "", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.4.0/python-3.4.0rc3.amd64-pdb.zip", + "gpg_signature_file": "http://www.python.org/ftp/python/3.4.0/python-3.4.0rc3.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8bc0db6d20c2ee41b7beff5fcb46052f", + "filesize": 24112834, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 136, + "fields": { + "created": "2014-03-10T08:08:21.384Z", + "updated": "2014-03-10T08:08:21.399Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "3-4-0-rc3-Windows-debug-information-files", + "os": 1, + "release": 8, + "description": "", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.4.0/python-3.4.0rc3-pdb.zip", + "gpg_signature_file": "http://www.python.org/ftp/python/3.4.0/python-3.4.0rc3-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3b020ee7c1c51e58119d473370af35fd", + "filesize": 36687020, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 137, + "fields": { + "created": "2014-03-10T08:08:21.724Z", + "updated": "2014-03-10T08:08:21.743Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-4-0-rc3-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 8, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.4.0/python-3.4.0rc3-macosx10.6.dmg", + "gpg_signature_file": "http://www.python.org/ftp/python/3.4.0/python-3.4.0rc3-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8cf7b9ab15807e89a4847891af9562da", + "filesize": 22819322, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 138, + "fields": { + "created": "2014-03-10T08:08:22.009Z", + "updated": "2014-03-10T08:08:22.023Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-4-0-rc3-Windows-help-file", + "os": 1, + "release": 8, + "description": "", + "is_source": false, + "url": "http://www.python.org/ftp/python/3.4.0/python340rc3.chm", + "gpg_signature_file": "http://www.python.org/ftp/python/3.4.0/python340rc3.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c5c823a4492b6f83f3b8cbedb10b589e", + "filesize": 7226435, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 148, + "fields": { + "created": "2014-03-17T06:43:20.053Z", + "updated": "2014-03-17T06:43:20.072Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-4-0-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 9, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.0/python-3.4.0-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.0/python-3.4.0-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d464bfe275a58715d35623d95d2b977d", + "filesize": 22847868, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 149, + "fields": { + "created": "2014-03-17T06:43:20.922Z", + "updated": "2014-03-17T06:43:20.936Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-4-0-Gzipped-source-tarball", + "os": 3, + "release": 9, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.0/Python-3.4.0.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.0/Python-3.4.0.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3ca973eb72bb06ed5cadde0e28eaaaca", + "filesize": 19222299, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 150, + "fields": { + "created": "2014-03-17T06:43:21.265Z", + "updated": "2017-07-18T21:41:59.874Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "3-4-0-Windows-x86-64-MSI-installer", + "os": 1, + "release": 9, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.0/python-3.4.0.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.0/python-3.4.0.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d59aaf1bb32d1bc01a051b3613ab0966", + "filesize": 25206784, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 151, + "fields": { + "created": "2014-03-17T06:43:21.619Z", + "updated": "2014-03-17T06:43:21.633Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-4-0-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 9, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.0/python-3.4.0-macosx10.5.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.0/python-3.4.0-macosx10.5.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5298bfa96ea61e0f96de33f879f730c0", + "filesize": 22777385, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 152, + "fields": { + "created": "2014-03-17T06:43:21.957Z", + "updated": "2014-03-17T06:43:21.971Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "3-4-0-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 9, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.0/python-3.4.0.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.0/python-3.4.0.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a65731cdbd538716072e1a07add04c32", + "filesize": 24121026, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 153, + "fields": { + "created": "2014-03-17T06:43:22.323Z", + "updated": "2014-03-17T06:43:22.337Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "3-4-0-Windows-debug-information-files", + "os": 1, + "release": 9, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.0/python-3.4.0-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.0/python-3.4.0-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "283ed83b73b257129dc13e024b21093b", + "filesize": 36687020, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 154, + "fields": { + "created": "2014-03-17T06:43:22.624Z", + "updated": "2014-03-17T06:43:22.637Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-4-0-Windows-help-file", + "os": 1, + "release": 9, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.0/python340.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.0/python340.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c75ae8a94e664f51b52ebe3d21e8b758", + "filesize": 7269706, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 155, + "fields": { + "created": "2014-03-17T06:43:23.402Z", + "updated": "2014-03-17T06:43:23.417Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-4-0-XZ-compressed-source-tarball", + "os": 3, + "release": 9, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.0/Python-3.4.0.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.0/Python-3.4.0.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "77c22725e14af3d71022cbfdebff4903", + "filesize": 14084912, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 156, + "fields": { + "created": "2014-03-17T06:43:23.758Z", + "updated": "2014-03-17T06:43:23.772Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "3-4-0-Windows-x86-MSI-installer", + "os": 1, + "release": 9, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.0/python-3.4.0.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.0/python-3.4.0.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e3be8a63294e42e126493ca96cfe48bd", + "filesize": 24498176, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 578, + "fields": { + "created": "2014-03-20T22:35:25.519Z", + "updated": "2014-03-20T22:35:25.534Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-265-Gzipped-source-tarball", + "os": 3, + "release": 111, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.5/Python-2.6.5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.5/Python-2.6.5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c83cf77f32463c3949b85c94f661c090", + "filesize": 58071040, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 579, + "fields": { + "created": "2014-03-20T22:35:25.747Z", + "updated": "2014-03-20T22:35:25.764Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-265-bzip2-compressed-source-tarball", + "os": 3, + "release": 111, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.5/Python-2.6.5.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.5/Python-2.6.5.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6bef0417e71a1a1737ccf5750420fdb3", + "filesize": 11095581, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 580, + "fields": { + "created": "2014-03-20T22:35:26.002Z", + "updated": "2014-03-20T22:35:26.017Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X installer", + "slug": "python-265-Mac-OS-X-installer", + "os": 2, + "release": 111, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.5/python-2.6.5-macosx10.3-2010-03-24.dmg", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "84489bba813fdbb6041b69d4310a86da", + "filesize": 20348693, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 581, + "fields": { + "created": "2014-03-20T22:35:26.256Z", + "updated": "2017-07-18T21:41:30.090Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-265-Windows-x86-64-MSI-installer", + "os": 1, + "release": 111, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.5/python-2.6.5.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.5/python-2.6.5.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9cd2c4d23dea7dfcd964449c3008f042", + "filesize": 15430656, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 582, + "fields": { + "created": "2014-03-20T22:35:26.526Z", + "updated": "2014-03-20T22:35:26.541Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-265-Windows-x86-MSI-installer", + "os": 1, + "release": 111, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.5/python-2.6.5.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.5/python-2.6.5.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0b6bc43c45fb2e3195ecdab3fad59fc2", + "filesize": 15103488, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 583, + "fields": { + "created": "2014-03-20T22:35:27.553Z", + "updated": "2017-07-18T21:41:39.029Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-272-Windows-x86-64-MSI-installer", + "os": 1, + "release": 112, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.2/python-2.7.2.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.2/python-2.7.2.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "937e2551a5d1c37a13a5958c83a05e3f", + "filesize": 16334848, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 584, + "fields": { + "created": "2014-03-20T22:35:27.788Z", + "updated": "2014-03-20T22:35:27.803Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-272-Windows-x86-MSI-installer", + "os": 1, + "release": 112, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.2/python-2.7.2.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.2/python-2.7.2.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "44c8bbe92b644d78dd49e18df354386f", + "filesize": 15970304, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 585, + "fields": { + "created": "2014-03-20T22:35:28.026Z", + "updated": "2014-03-20T22:35:28.040Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-272-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 112, + "description": "for Mac OS X 10.3 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.2/python-2.7.2-macosx10.3.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.2/python-2.7.2-macosx10.3.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "348bf509e778ed2e193d08d02eee5566", + "filesize": 22041602, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 586, + "fields": { + "created": "2014-03-20T22:35:28.271Z", + "updated": "2014-03-20T22:35:28.285Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-272-bzip2-compressed-source-tarball", + "os": 3, + "release": 112, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ba7b2f11ffdbf195ee0d111b9455a5bd", + "filesize": 11754834, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 587, + "fields": { + "created": "2014-03-20T22:35:28.505Z", + "updated": "2014-03-20T22:35:28.519Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-272-XZ-compressed-source-tarball", + "os": 3, + "release": 112, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.2/Python-2.7.2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.2/Python-2.7.2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "75c87a80c6ddb0b785a57ea3583e04fa", + "filesize": 9936152, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 588, + "fields": { + "created": "2014-03-20T22:35:28.721Z", + "updated": "2014-03-20T22:35:28.735Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-272-Gzipped-source-tarball", + "os": 3, + "release": 112, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ceac2c4a6a3607799097eae6c2f1f398", + "filesize": 63467520, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 589, + "fields": { + "created": "2014-03-20T22:35:28.953Z", + "updated": "2014-03-20T22:35:28.967Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-272-Windows-debug-information-files", + "os": 1, + "release": 112, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.2/python-2.7.2-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.2/python-2.7.2-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e78e8520765af3cbb1cddbef891830bf", + "filesize": 16122946, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 590, + "fields": { + "created": "2014-03-20T22:35:31.815Z", + "updated": "2014-03-20T22:35:31.830Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "python-272-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 112, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.2/python-2.7.2-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.2/python-2.7.2-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "92bc7480a840182aac486b2afd5c4181", + "filesize": 18632739, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 591, + "fields": { + "created": "2014-03-20T22:35:32.553Z", + "updated": "2014-03-20T22:35:32.567Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-314-Windows-debug-information-files", + "os": 1, + "release": 113, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1.4/python-3.1.4-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1/python-3.1.4-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b632340d63c6583382f77358f7f220ce", + "filesize": 12711906, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 592, + "fields": { + "created": "2014-03-20T22:35:32.798Z", + "updated": "2014-03-20T22:35:32.812Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-314-XZ-compressed-source-tarball", + "os": 3, + "release": 113, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.1.4/Python-3.1.4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.4/Python-3.1.4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dcd128e69f8ee239182b54e33313aac7", + "filesize": 8184052, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 593, + "fields": { + "created": "2014-03-20T22:35:33.038Z", + "updated": "2014-03-20T22:35:33.052Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-314-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 113, + "description": "for Mac OS X 10.3 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1.4/python-3.1.4-macosx10.3.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.4/python-3.1.4-macosx10.3.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4384d3fa1ae96d0f21c37c7aff03161f", + "filesize": 17580055, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 594, + "fields": { + "created": "2014-03-20T22:35:35.847Z", + "updated": "2014-03-20T22:35:35.862Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-314-bzip2-compressed-source-tarball", + "os": 3, + "release": 113, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.1.4/Python-3.1.4.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.4/Python-3.1.4.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "09ed98eace4c403b475846702708675e", + "filesize": 9887870, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 595, + "fields": { + "created": "2014-03-20T22:35:36.075Z", + "updated": "2014-03-20T22:35:36.089Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-314-Windows-x86-MSI-installer", + "os": 1, + "release": 113, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1.4/python-3.1.4.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1/python-3.1.4.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "142acb595152b322f5341045327a42b8", + "filesize": 14282752, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 596, + "fields": { + "created": "2014-03-20T22:35:36.312Z", + "updated": "2014-03-20T22:35:36.326Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-314-Gzipped-source-tarball", + "os": 3, + "release": 113, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.1.4/Python-3.1.4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.4/Python-3.1.4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6fe41ed93866a2c3a9bbb3f0955d23e8", + "filesize": 51517440, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 597, + "fields": { + "created": "2014-03-20T22:35:36.553Z", + "updated": "2017-07-18T21:41:49.288Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-314-Windows-x86-64-MSI-installer", + "os": 1, + "release": 113, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1.4/python-3.1.4.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1/python-3.1.4.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "829794fc7902880e4d55c7937c364541", + "filesize": 14557184, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 598, + "fields": { + "created": "2014-03-20T22:35:37.264Z", + "updated": "2014-03-20T22:35:37.279Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-271-Gzipped-source-tarball", + "os": 3, + "release": 114, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8e09bf989281c1a299cb2467b50a3699", + "filesize": 63252480, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 599, + "fields": { + "created": "2014-03-20T22:35:37.497Z", + "updated": "2014-03-20T22:35:37.512Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-271-Windows-debug-information-files", + "os": 1, + "release": 114, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.1/python-2.7.1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.1/python-2.7.1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c7a750e85e632294c9b527ee8358d805", + "filesize": 16065602, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 600, + "fields": { + "created": "2014-03-20T22:35:37.735Z", + "updated": "2014-03-20T22:35:37.750Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "python-271-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 114, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.1/python-2.7.1-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.1/python-2.7.1-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "723b12ec324fafb7b4a12f102c744ae7", + "filesize": 18529455, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 601, + "fields": { + "created": "2014-03-20T22:35:40.551Z", + "updated": "2014-03-20T22:35:40.566Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-271-Windows-x86-MSI-installer", + "os": 1, + "release": 114, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.1/python-2.7.1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.1/python-2.7.1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a69ce1b2d870be29befd1cefb4615d82", + "filesize": 16003072, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 602, + "fields": { + "created": "2014-03-20T22:35:40.817Z", + "updated": "2017-07-18T21:41:32.702Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-271-Windows-x86-64-MSI-installer", + "os": 1, + "release": 114, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.1/python-2.7.1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.1/python-2.7.1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c4eb466b9d01fde770097a559445e33b", + "filesize": 16333824, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 603, + "fields": { + "created": "2014-03-20T22:35:41.065Z", + "updated": "2014-03-20T22:35:41.080Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-271-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 114, + "description": "for Mac OS X 10.3 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.1/python-2.7.1-macosx10.3.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.1/python-2.7.1-macosx10.3.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aa399c743796a519148d08b77fab0fe7", + "filesize": 21429186, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 604, + "fields": { + "created": "2014-03-20T22:35:41.313Z", + "updated": "2014-03-20T22:35:41.328Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-271-bzip2-compressed-source-tarball", + "os": 3, + "release": 114, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.1/Python-2.7.1.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.1/Python-2.7.1.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aa27bc25725137ba155910bd8e5ddc4f", + "filesize": 11722546, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 605, + "fields": { + "created": "2014-03-20T22:35:42.051Z", + "updated": "2014-03-20T22:35:42.065Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-315-bzip2-compressed-source-tarball", + "os": 3, + "release": 115, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.1.5/Python-3.1.5.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.5/Python-3.1.5.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dc8a7a96c12880d2e61e9f4add9d3dc7", + "filesize": 9889191, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 606, + "fields": { + "created": "2014-03-20T22:35:42.277Z", + "updated": "2014-05-06T05:55:31.090Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-315-Gzipped-source-tarball", + "os": 3, + "release": 115, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.1.5/Python-3.1.5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.5/Python-3.1.5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "02196d3fc7bc76bdda68aa36b0dd16ab", + "filesize": 11798798, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 607, + "fields": { + "created": "2014-03-20T22:35:42.512Z", + "updated": "2014-03-20T22:35:42.527Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-315-XZ-compressed-source-tarball", + "os": 3, + "release": 115, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.1.5/Python-3.1.5.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.5/Python-3.1.5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "20dd2b7f801dc97db948dd168df4dd52", + "filesize": 8189536, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 608, + "fields": { + "created": "2014-03-20T22:35:43.259Z", + "updated": "2017-07-18T23:08:35.259Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-243-Windows-x86-MSI-installer", + "os": 1, + "release": 116, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.4.3/python-2.4.3.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.3/python-2.4.3.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9a06d08854ddffc85d8abd11f3c2acc2", + "filesize": 8121856, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 609, + "fields": { + "created": "2014-03-20T22:35:43.503Z", + "updated": "2014-03-20T22:35:43.518Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-243-Windows-help-file", + "os": 1, + "release": 116, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.4.3/python24.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.4/python24.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "39ffc79b9a775b12f8cf785a395b3ddd", + "filesize": 3772352, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 611, + "fields": { + "created": "2014-03-20T22:35:46.272Z", + "updated": "2014-03-20T22:35:46.287Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-243-Gzipped-source-tarball", + "os": 3, + "release": 116, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.4.3/Python-2.4.3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.3/Python-2.4.3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "46f68a5d5936fa09a6a9b5c85403d0fe", + "filesize": 39352320, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 612, + "fields": { + "created": "2014-03-20T22:35:46.506Z", + "updated": "2014-03-20T22:35:46.522Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-243-bzip2-compressed-source-tarball", + "os": 3, + "release": 116, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.4.3/Python-2.4.3.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.3/Python-2.4.3.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "141c683447d5e76be1d2bd4829574f02", + "filesize": 8005915, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 613, + "fields": { + "created": "2014-03-20T22:35:47.227Z", + "updated": "2014-03-20T22:35:47.241Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-269-XZ-compressed-source-tarball", + "os": 3, + "release": 117, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.9/Python-2.6.9.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.9/Python-2.6.9.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "933a811f11e3db3d73ae492f6c3a7a76", + "filesize": 9333664, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 614, + "fields": { + "created": "2014-03-20T22:35:47.471Z", + "updated": "2014-03-20T22:35:47.485Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-269-Gzipped-source-tarball", + "os": 3, + "release": 117, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.9/Python-2.6.9.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.9/Python-2.6.9.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "458a6bd5c01bdae93fc6dfdfb1f41f64", + "filesize": 59238400, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 615, + "fields": { + "created": "2014-03-20T22:35:50.775Z", + "updated": "2014-03-20T22:35:50.790Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-273-Windows-x86-MSI-installer", + "os": 1, + "release": 118, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.3/python-2.7.3.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.3/python-2.7.3.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c846d7a5ed186707d3675564a9838cc2", + "filesize": 15867904, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 616, + "fields": { + "created": "2014-03-20T22:35:51.015Z", + "updated": "2014-03-20T22:35:51.029Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-273-Windows-help-file", + "os": 1, + "release": 118, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.3/python273.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.3/python273.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9401a5f847b0c1078a4c68dccf6cd38a", + "filesize": 5898853, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 617, + "fields": { + "created": "2014-03-20T22:35:51.247Z", + "updated": "2014-03-20T22:35:51.264Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-273-Gzipped-source-tarball", + "os": 3, + "release": 118, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ba854a72c9c0ca671b99a36e070d78e0", + "filesize": 63682560, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 618, + "fields": { + "created": "2014-03-20T22:35:51.484Z", + "updated": "2014-03-20T22:35:51.499Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-273-XZ-compressed-source-tarball", + "os": 3, + "release": 118, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "62c4c1699170078c469f79ddfed21bc0", + "filesize": 9976088, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 619, + "fields": { + "created": "2014-03-20T22:35:51.713Z", + "updated": "2017-07-18T21:41:39.883Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-273-Windows-x86-64-MSI-installer", + "os": 1, + "release": 118, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.3/python-2.7.3.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.3/python-2.7.3.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d11d4aeb7e5425bf28f28ab1c7452886", + "filesize": 16420864, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 620, + "fields": { + "created": "2014-03-20T22:35:51.947Z", + "updated": "2014-03-20T22:35:51.961Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-273-bzip2-compressed-source-tarball", + "os": 3, + "release": 118, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c57477edd6d18bd9eeca2f21add73919", + "filesize": 11793433, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 621, + "fields": { + "created": "2014-03-20T22:35:52.185Z", + "updated": "2014-03-20T22:35:52.199Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "python-273-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 118, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.3/python-2.7.3-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.3/python-2.7.3-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "15c434a11abe7ea5575ef451cfd60f67", + "filesize": 18761950, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 622, + "fields": { + "created": "2014-03-20T22:35:52.427Z", + "updated": "2014-03-20T22:35:52.443Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-273-Windows-debug-information-files", + "os": 1, + "release": 118, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.3/python-2.7.3-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.3/python-2.7.3-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "008a63d89d67d41801a55ea341a34676", + "filesize": 16221250, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 623, + "fields": { + "created": "2014-03-20T22:35:52.660Z", + "updated": "2014-03-20T22:35:52.675Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-273-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 118, + "description": "for Mac OS X 10.3 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.3/python-2.7.3-macosx10.3.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.3/python-2.7.3-macosx10.3.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "80461c3c60fae64122b51eb20341b453", + "filesize": 22178854, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 624, + "fields": { + "created": "2014-03-20T22:35:53.367Z", + "updated": "2014-03-20T22:35:53.382Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-252-bzip2-compressed-source-tarball", + "os": 3, + "release": 119, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.5.2/Python-2.5.2.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.2/Python-2.5.2.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "afb5451049eda91fbde10bd5a4b7fadc", + "filesize": 9807597, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 625, + "fields": { + "created": "2014-03-20T22:35:53.597Z", + "updated": "2017-07-18T21:41:23.070Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-252-Windows-x86-64-MSI-installer", + "os": 1, + "release": 119, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5.2/python-2.5.2.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.2/python-2.5.2.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d44a5741d54eefd690298e118b0f815a", + "filesize": 11307520, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 626, + "fields": { + "created": "2014-03-20T22:35:53.837Z", + "updated": "2014-03-20T22:35:53.852Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X installer", + "slug": "python-252-Mac-OS-X-installer", + "os": 2, + "release": 119, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5.2/python-2.5.2-macosx.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.2/python-2.5.2-macosx.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f72ba5ba35bf631eec94870e8ebeba61", + "filesize": 19201111, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 627, + "fields": { + "created": "2014-03-20T22:35:54.078Z", + "updated": "2014-03-20T22:35:54.093Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-252-Windows-help-file", + "os": 1, + "release": 119, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5.2/Python25.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.1/Python25.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4c2f7e124287525a93849b0b53893bf0", + "filesize": 4176592, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 628, + "fields": { + "created": "2014-03-20T22:35:54.331Z", + "updated": "2014-03-20T22:35:54.346Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-252-Windows-x86-MSI-installer", + "os": 1, + "release": 119, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5.2/python-2.5.2.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.2/python-2.5.2.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d71e45968fdc4e206bb69fbf4cb82b2d", + "filesize": 11292672, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 629, + "fields": { + "created": "2014-03-20T22:35:54.577Z", + "updated": "2014-03-20T22:35:54.592Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-252-Gzipped-source-tarball", + "os": 3, + "release": 119, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6b1655a7ee5f66ed7e89bce3f0f09c3f", + "filesize": 50073600, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 631, + "fields": { + "created": "2014-03-20T22:35:58.431Z", + "updated": "2014-03-20T22:35:58.445Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-220-Gzipped-source-tarball", + "os": 3, + "release": 120, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.2/Python-2.2.tgz", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "84def9b91df4a5f97efeeaf3108f72c8", + "filesize": 28416000, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 632, + "fields": { + "created": "2014-03-20T22:35:58.669Z", + "updated": "2014-03-20T22:35:58.685Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer", + "slug": "python-220-Windows-installer", + "os": 1, + "release": 120, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.2/Python-2.2.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "568cf638ef5fc4edfdb4cc878d661129", + "filesize": 7074248, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 633, + "fields": { + "created": "2014-03-20T22:35:59.455Z", + "updated": "2014-03-20T22:35:59.470Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-268-bzip2-compressed-source-tarball", + "os": 3, + "release": 121, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.8/Python-2.6.8.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.8/Python-2.6.8.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c6e0420a21d8b23dee8b0195c9b9a125", + "filesize": 11127915, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 634, + "fields": { + "created": "2014-03-20T22:35:59.715Z", + "updated": "2014-03-20T22:35:59.730Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-268-Gzipped-source-tarball", + "os": 3, + "release": 121, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.8/Python-2.6.8.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.8/Python-2.6.8.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c10862ed0fa13344252bb4ed37139177", + "filesize": 59217920, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 635, + "fields": { + "created": "2014-03-20T22:36:00.501Z", + "updated": "2014-03-20T22:36:00.516Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-263-Gzipped-source-tarball", + "os": 3, + "release": 122, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.3/Python-2.6.3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.3/Python-2.6.3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "792e79f637a18fbf706a9b8678d115e8", + "filesize": 57876480, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 636, + "fields": { + "created": "2014-03-20T22:36:00.753Z", + "updated": "2014-03-20T22:36:00.767Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-263-Windows-x86-MSI-installer", + "os": 1, + "release": 122, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.3/python-2.6.3.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.3/python-2.6.3.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9ff76b6101fdb1c935970476ed428569", + "filesize": 14871552, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 637, + "fields": { + "created": "2014-03-20T22:36:01.005Z", + "updated": "2014-03-20T22:36:01.019Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-263-bzip2-compressed-source-tarball", + "os": 3, + "release": 122, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.3/Python-2.6.3.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.3/Python-2.6.3.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8755fc03075b1701ca3f13932e6ade9f", + "filesize": 11249543, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 638, + "fields": { + "created": "2014-03-20T22:36:01.256Z", + "updated": "2017-07-18T21:41:28.635Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-263-Windows-x86-64-MSI-installer", + "os": 1, + "release": 122, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.3/python-2.6.3.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.3/python-2.6.3.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f7382afe57e21ced274eeec614dbda37", + "filesize": 15214592, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 639, + "fields": { + "created": "2014-03-20T22:36:01.507Z", + "updated": "2014-03-20T22:36:01.521Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X installer", + "slug": "python-263-Mac-OS-X-installer", + "os": 2, + "release": 122, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.3/python-2.6.3-macosx.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.3/python-2.6.3-macosx.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "114d26c741d4c0b8ee91191a7a06aa2a", + "filesize": 20329350, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 640, + "fields": { + "created": "2014-03-20T22:36:02.293Z", + "updated": "2014-03-20T22:36:02.308Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-250-Windows-x86-MSI-installer", + "os": 1, + "release": 123, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5/python-2.5.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5/python-2.5.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "33fffe927e4a84aa728d7a47165b2059", + "filesize": 10695680, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 641, + "fields": { + "created": "2014-03-20T22:36:02.557Z", + "updated": "2017-07-18T21:41:21.252Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-250-Windows-x86-64-MSI-installer", + "os": 1, + "release": 123, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5/python-2.5.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5/python-2.5.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c9ebc47dfab4fdc78d895ed6ab715db0", + "filesize": 10889216, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 642, + "fields": { + "created": "2014-03-20T22:36:02.823Z", + "updated": "2014-03-20T22:36:02.839Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X installer", + "slug": "python-250-Mac-OS-X-installer", + "os": 2, + "release": 123, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5/python-2.5-macosx.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5/python-2.5-macosx.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9ea85494251357970d83a023658fddc7", + "filesize": 18749464, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 643, + "fields": { + "created": "2014-03-20T22:36:03.075Z", + "updated": "2014-03-20T22:36:03.092Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-250-Windows-help-file", + "os": 1, + "release": 123, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5/Python25.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.1/Python25.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d8bfc10c7fd6505271ef5c755999c7cc", + "filesize": 4160038, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 644, + "fields": { + "created": "2014-03-20T22:36:03.345Z", + "updated": "2014-03-20T22:36:03.361Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-250-bzip2-compressed-source-tarball", + "os": 3, + "release": 123, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.5/Python-2.5.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5/Python-2.5.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ddb7401e711354ca83b7842b733825a3", + "filesize": 9357099, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 645, + "fields": { + "created": "2014-03-20T22:36:03.608Z", + "updated": "2014-03-20T22:36:03.623Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-250-Gzipped-source-tarball", + "os": 3, + "release": 123, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.5/Python-2.5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5/Python-2.5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2598e447f648a59dd1e8b359fd05dbb2", + "filesize": 46612480, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 647, + "fields": { + "created": "2014-03-20T22:36:12.045Z", + "updated": "2014-03-20T22:36:12.060Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X installer", + "slug": "python-253-Mac-OS-X-installer", + "os": 2, + "release": 124, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5.3/python-2.5.3-macosx.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.3/python-2.5.3-macosx.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "924bb2ef0cfd932aab4f3f018a722bef", + "filesize": 19279872, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 648, + "fields": { + "created": "2014-03-20T22:36:12.305Z", + "updated": "2014-03-20T22:36:12.320Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-253-Windows-help-file", + "os": 1, + "release": 124, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5.3/Python25.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.1/Python25.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ad881bc4e6755c57cbf5fa1cdd594369", + "filesize": 4182160, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 649, + "fields": { + "created": "2014-03-20T22:36:12.562Z", + "updated": "2014-03-20T22:36:12.577Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-253-Windows-x86-MSI-installer", + "os": 1, + "release": 124, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5.3/python-2.5.3.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.3/python-2.5.3.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5566b7420b12c53d1f2bba3b27a4c3a9", + "filesize": 11323904, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 650, + "fields": { + "created": "2014-03-20T22:36:12.816Z", + "updated": "2014-03-20T22:36:12.831Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-253-bzip2-compressed-source-tarball", + "os": 3, + "release": 124, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.5.3/Python-2.5.3.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.3/Python-2.5.3.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "655a0e63c00bbf1277092ea5c58e9b34", + "filesize": 9821271, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 652, + "fields": { + "created": "2014-03-20T22:36:15.558Z", + "updated": "2017-07-18T21:41:24.182Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-253-Windows-x86-64-MSI-installer", + "os": 1, + "release": 124, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5.3/python-2.5.3.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.3/python-2.5.3.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "887b2cfbbfec3d1966f8d63f206cf0d2", + "filesize": 11337728, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 653, + "fields": { + "created": "2014-03-20T22:36:15.807Z", + "updated": "2014-03-20T22:36:15.823Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-253-Gzipped-source-tarball", + "os": 3, + "release": 124, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.5.3/Python-2.5.3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.3/Python-2.5.3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "02a8f6689a0f826822866d11d7b17058", + "filesize": 50155520, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 654, + "fields": { + "created": "2014-03-20T22:36:16.561Z", + "updated": "2014-03-20T22:36:16.576Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-261-bzip2-compressed-source-tarball", + "os": 3, + "release": 125, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.1/Python-2.6.1.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.2/Python-2.6.1.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e81c2f0953aa60f8062c05a4673f2be0", + "filesize": 10960385, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 655, + "fields": { + "created": "2014-03-20T22:36:16.812Z", + "updated": "2014-03-20T22:36:16.828Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-261-Windows-x86-MSI-installer", + "os": 1, + "release": 125, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.1/python-2.6.1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.2/python-2.6.1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9ed57add157ce069c0f8584f11b77991", + "filesize": 14481408, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 656, + "fields": { + "created": "2014-03-20T22:36:17.075Z", + "updated": "2014-03-20T22:36:17.090Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X installer", + "slug": "python-261-Mac-OS-X-installer", + "os": 2, + "release": 125, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.1/python-2.6.1-macosx2008-12-06.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.2/python-2.6.1-macosx2008-12-06.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ea72cc669a33d266c34aa9ef5d660933", + "filesize": 23986137, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 657, + "fields": { + "created": "2014-03-20T22:36:17.335Z", + "updated": "2014-03-20T22:36:17.349Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-261-Gzipped-source-tarball", + "os": 3, + "release": 125, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.1/Python-2.6.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.2/Python-2.6.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e45fa12c1ab2c23532741ad34a947c75", + "filesize": 57067520, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 658, + "fields": { + "created": "2014-03-20T22:36:17.597Z", + "updated": "2017-07-18T21:41:26.882Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-261-Windows-x86-64-MSI-installer", + "os": 1, + "release": 125, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.1/python-2.6.1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.2/python-2.6.1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ece88acad43e854587a46aaa8a070c9c", + "filesize": 14803456, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 659, + "fields": { + "created": "2014-03-20T22:36:18.370Z", + "updated": "2014-03-20T22:36:18.384Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-262-Windows-x86-MSI-installer", + "os": 1, + "release": 126, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.2/python-2.6.2.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.2/python-2.6.2.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4bca00171aa614b4886b889290c4fed9", + "filesize": 14536192, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 660, + "fields": { + "created": "2014-03-20T22:36:18.622Z", + "updated": "2017-07-18T21:41:27.754Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-262-Windows-x86-64-MSI-installer", + "os": 1, + "release": 126, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.2/python-2.6.2.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.2/python-2.6.2.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d570f2f5cacad0d3338e2da2d105ab57", + "filesize": 14868480, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 661, + "fields": { + "created": "2014-03-20T22:36:18.869Z", + "updated": "2014-03-20T22:36:18.883Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X installer", + "slug": "python-262-Mac-OS-X-installer", + "os": 2, + "release": 126, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.2/python-2.6.2-macosx2009-04-16.dmg", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "82490e5ad8e79893fe26abdc2a25fb88", + "filesize": 24197663, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 662, + "fields": { + "created": "2014-03-20T22:36:19.116Z", + "updated": "2014-03-20T22:36:19.131Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-262-Gzipped-source-tarball", + "os": 3, + "release": 126, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.2/Python-2.6.2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.2/Python-2.6.2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "93af253090d21a0a84e366fd5bdcf1c0", + "filesize": 57651200, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 663, + "fields": { + "created": "2014-03-20T22:36:19.382Z", + "updated": "2014-03-20T22:36:19.396Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-262-bzip2-compressed-source-tarball", + "os": 3, + "release": 126, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.2/Python-2.6.2.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.2/Python-2.6.2.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "245db9f1e0f09ab7e0faaa0cf7301011", + "filesize": 11156901, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 664, + "fields": { + "created": "2014-03-20T22:36:19.629Z", + "updated": "2014-03-20T22:36:19.644Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-262-Windows-help-file", + "os": 1, + "release": 126, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.2/python262.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.2/python262.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0588e5bb28ffc748473c39a63e4b98e8", + "filesize": 5154141, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 665, + "fields": { + "created": "2014-03-20T22:36:20.636Z", + "updated": "2014-03-20T22:36:20.651Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-251-Windows-x86-MSI-installer", + "os": 1, + "release": 127, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5.1/python-2.5.1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.1/python-2.5.1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a1d1a9c07bc4c78bd8fa05dd3efec87f", + "filesize": 10970624, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 667, + "fields": { + "created": "2014-03-20T22:36:23.344Z", + "updated": "2014-03-20T22:36:23.359Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-251-Gzipped-source-tarball", + "os": 3, + "release": 127, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.5.1/Python-2.5.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.1/Python-2.5.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "968039b3b2a077061d11671e1c6b40a2", + "filesize": 46796800, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 668, + "fields": { + "created": "2014-03-20T22:36:23.596Z", + "updated": "2014-03-20T22:36:23.611Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-251-Windows-help-file", + "os": 1, + "release": 127, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5.1/Python25.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.1/Python25.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ee652cd776cf930a0a40ff64c436f0b1", + "filesize": 4176034, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 669, + "fields": { + "created": "2014-03-20T22:36:23.817Z", + "updated": "2014-03-20T22:36:23.833Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-251-bzip2-compressed-source-tarball", + "os": 3, + "release": 127, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.5.1/Python-2.5.1.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.1/Python-2.5.1.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "70084ffa561660f07de466c2c8c4842d", + "filesize": 9383651, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 670, + "fields": { + "created": "2014-03-20T22:36:24.051Z", + "updated": "2017-07-18T21:41:22.179Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-251-Windows-x86-64-MSI-installer", + "os": 1, + "release": 127, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5.1/python-2.5.1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.1/python-2.5.1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5cf96e05ad6721f90cdd9da146981640", + "filesize": 10983936, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 671, + "fields": { + "created": "2014-03-20T22:36:24.293Z", + "updated": "2014-03-20T22:36:24.308Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X installer", + "slug": "python-251-Mac-OS-X-installer", + "os": 2, + "release": 127, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5.1/python-2.5.1-macosx.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.1/python-2.5.1-macosx.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "59796329bc160a3a1e2abc01bf30bb50", + "filesize": 18719946, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 672, + "fields": { + "created": "2014-03-20T22:36:25.055Z", + "updated": "2014-03-20T22:36:25.069Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer", + "slug": "python-231-Windows-installer", + "os": 1, + "release": 128, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.3.1/Python-2.3.1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.1/Python-2.3.1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2cff4d8a54ad3535376b7bce57538f7a", + "filesize": 9583272, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 673, + "fields": { + "created": "2014-03-20T22:36:25.298Z", + "updated": "2014-03-20T22:36:25.313Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-231-Gzipped-source-tarball", + "os": 3, + "release": 128, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.3.1/Python-2.3.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.1/Python-2.3.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0b84ae32726d0705933bffa6a1fa1674", + "filesize": 37150720, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 674, + "fields": { + "created": "2014-03-20T22:36:26.018Z", + "updated": "2014-03-20T22:36:26.033Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-311-Gzipped-source-tarball", + "os": 3, + "release": 129, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.1.1/Python-3.1.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.1/Python-3.1.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d530eaaad96edb3238488b2767051c53", + "filesize": 50012160, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 675, + "fields": { + "created": "2014-03-20T22:36:26.250Z", + "updated": "2014-03-20T22:36:26.264Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-311-bzip2-compressed-source-tarball", + "os": 3, + "release": 129, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.1.1/Python-3.1.1.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.1/Python-3.1.1.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d1ddd9f16e3c6a51c7208f33518cd674", + "filesize": 9757032, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 676, + "fields": { + "created": "2014-03-20T22:36:26.489Z", + "updated": "2017-07-18T21:41:47.377Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-311-Windows-x86-64-MSI-installer", + "os": 1, + "release": 129, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1.1/python-3.1.1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.1/python-3.1.1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d31e3e91c2ddd3e5ea7c40abe436917e", + "filesize": 14130176, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 677, + "fields": { + "created": "2014-03-20T22:36:26.716Z", + "updated": "2014-03-20T22:36:26.730Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X installer", + "slug": "python-311-Mac-OS-X-installer", + "os": 2, + "release": 129, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1.1/python-3.1.1.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.1/python-3.1.1.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9c7f85cc7fb5a2fa533d338c88229633", + "filesize": 17148746, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 678, + "fields": { + "created": "2014-03-20T22:36:26.950Z", + "updated": "2014-03-20T22:36:26.965Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-311-Windows-x86-MSI-installer", + "os": 1, + "release": 129, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1.1/python-3.1.1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.1/python-3.1.1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e05a6134b920ae86f0e33b8a43a801b3", + "filesize": 13737984, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 679, + "fields": { + "created": "2014-03-20T22:36:27.636Z", + "updated": "2014-03-20T22:36:27.650Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-230-Gzipped-source-tarball", + "os": 3, + "release": 130, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.3/Python-2.3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3/Python-2.3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c6a1337a46f9dd3f8598b91b8668e1ba", + "filesize": 35778560, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 680, + "fields": { + "created": "2014-03-20T22:36:27.865Z", + "updated": "2014-03-20T22:36:27.879Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer", + "slug": "python-230-Windows-installer", + "os": 1, + "release": 130, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.3/Python-2.3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3/Python-2.3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5763d167f4ab3467455e4728ac5a03ac", + "filesize": 9380742, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 681, + "fields": { + "created": "2014-03-20T22:36:31.731Z", + "updated": "2017-07-18T21:41:25.969Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-260-Windows-x86-64-MSI-installer", + "os": 1, + "release": 132, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6/python-2.6.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6/python-2.6.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fe34764ad0027d01176eb1b321dd20c5", + "filesize": 14503936, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 682, + "fields": { + "created": "2014-03-20T22:36:31.964Z", + "updated": "2014-03-20T22:36:31.978Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-260-Windows-x86-MSI-installer", + "os": 1, + "release": 132, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6/python-2.6.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6/python-2.6.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6c62c123d248a48dccbaa4d3edc12680", + "filesize": 14173184, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 683, + "fields": { + "created": "2014-03-20T22:36:32.200Z", + "updated": "2014-03-20T22:36:32.215Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-260-Gzipped-source-tarball", + "os": 3, + "release": 132, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6/Python-2.6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6/Python-2.6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "117a3f75faff0bef980169f0c1b2c50a", + "filesize": 56954880, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 684, + "fields": { + "created": "2014-03-20T22:36:32.434Z", + "updated": "2014-03-20T22:36:32.449Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-260-bzip2-compressed-source-tarball", + "os": 3, + "release": 132, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6/Python-2.6.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6/Python-2.6.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "837476958702cb386c657b5dba61cdc5", + "filesize": 10957859, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 685, + "fields": { + "created": "2014-03-20T22:36:32.921Z", + "updated": "2014-03-20T22:36:32.935Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X installer", + "slug": "python-260-Mac-OS-X-installer", + "os": 2, + "release": 132, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6/python-2.6-macosx2008-10-01.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6/python-2.6-macosx2008-10-01.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "29a1a22f8d9fd8a4501b30d97fbee61c", + "filesize": 23593748, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 686, + "fields": { + "created": "2014-03-20T22:36:33.641Z", + "updated": "2014-03-20T22:36:33.661Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-240-Gzipped-source-tarball", + "os": 3, + "release": 133, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.4/Python-2.4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4/Python-2.4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7656605303e0babbd3c8a7fdec52ddb7", + "filesize": 39116800, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 687, + "fields": { + "created": "2014-03-20T22:36:34.131Z", + "updated": "2017-07-18T23:10:45.211Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-240-Windows-x86-MSI-installer", + "os": 1, + "release": 133, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.4/python-2.4.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4/python-2.4.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5810ed46da712adef93315b08791aea8", + "filesize": 8858624, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 689, + "fields": { + "created": "2014-03-20T22:36:37.307Z", + "updated": "2014-03-20T22:36:37.322Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-240-bzip2-compressed-source-tarball", + "os": 3, + "release": 133, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.4/Python-2.4.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4/Python-2.4.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "44c2226eff0f3fc1f2fedaa1ce596533", + "filesize": 7840762, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 690, + "fields": { + "created": "2014-03-20T22:36:38.027Z", + "updated": "2014-03-20T22:36:38.041Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-255-Gzipped-source-tarball", + "os": 3, + "release": 134, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.5.5/Python-2.5.5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.5/Python-2.5.5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6953d49c4d2470d88d8577b4e5ed3ce2", + "filesize": 50155520, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 691, + "fields": { + "created": "2014-03-20T22:36:38.259Z", + "updated": "2014-03-20T22:36:38.273Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-255-bzip2-compressed-source-tarball", + "os": 3, + "release": 134, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.5.5/Python-2.5.5.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.5/Python-2.5.5.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1d00e2fb19418e486c30b850df625aa3", + "filesize": 9822917, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 692, + "fields": { + "created": "2014-03-20T22:36:38.981Z", + "updated": "2014-03-20T22:36:38.996Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-241-bzip2-compressed-source-tarball", + "os": 3, + "release": 135, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.4.1/Python-2.4.1.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.1/Python-2.4.1.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "de3e9a8836fab6df7c7ce545331afeb3", + "filesize": 7847025, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 693, + "fields": { + "created": "2014-03-20T22:36:39.214Z", + "updated": "2014-03-20T22:36:39.229Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-241-Windows-x86-MSI-installer", + "os": 1, + "release": 135, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.4.1/python-2.4.1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.1/python-2.4.1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5de61a8f3a20a0cc8d0ec82e9901aa6b", + "filesize": 10970624, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 695, + "fields": { + "created": "2014-03-20T22:36:46.878Z", + "updated": "2014-03-20T22:36:46.893Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-241-Gzipped-source-tarball", + "os": 3, + "release": 135, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.4.1/Python-2.4.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.1/Python-2.4.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ac3effd1479b51a73a68cfcab720dd67", + "filesize": 39229440, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 696, + "fields": { + "created": "2014-03-20T22:36:47.660Z", + "updated": "2014-03-20T22:36:47.675Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer", + "slug": "python-232-Windows-installer", + "os": 1, + "release": 136, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.3.2/Python-2.3.2-1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.2/Python-2.3.2-1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "87aed0e4a79c350065b770f9a4ddfd75", + "filesize": 9481060, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 697, + "fields": { + "created": "2014-03-20T22:36:47.903Z", + "updated": "2014-03-20T22:36:47.918Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-232-Gzipped-source-tarball", + "os": 3, + "release": 136, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.3.2/Python-2.3.2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.2/Python-2.3.2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "401365b2c6e2a55bf8a1c337744716ad", + "filesize": 35880960, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 698, + "fields": { + "created": "2014-03-20T22:36:48.139Z", + "updated": "2014-03-20T22:36:48.154Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-232-bzip2-compressed-source-tarball", + "os": 3, + "release": 136, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.3.2/Python-2.3.2.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.2/Python-2.3.2.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9271171d55690e5cacd692e563924305", + "filesize": 7161770, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 699, + "fields": { + "created": "2014-03-20T22:36:48.914Z", + "updated": "2014-03-20T22:36:48.929Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-310-Gzipped-source-tarball", + "os": 3, + "release": 137, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.1/Python-3.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1/Python-3.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "26d10a8f591886af67b2b19e155e8daf", + "filesize": 49950720, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 700, + "fields": { + "created": "2014-03-20T22:36:49.159Z", + "updated": "2017-07-18T21:41:46.504Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-310-Windows-x86-64-MSI-installer", + "os": 1, + "release": 137, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1/python-3.1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1/python-3.1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9c90c9bbdd4bab5124802a9b43b95f3b", + "filesize": 14094336, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 701, + "fields": { + "created": "2014-03-20T22:36:49.409Z", + "updated": "2014-03-20T22:36:49.424Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-310-bzip2-compressed-source-tarball", + "os": 3, + "release": 137, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.1/Python-3.1.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1/Python-3.1.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f64437a24d39f1917aa1878cc70621f6", + "filesize": 9510460, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 702, + "fields": { + "created": "2014-03-20T22:36:49.658Z", + "updated": "2014-03-20T22:36:49.673Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-310-Windows-x86-MSI-installer", + "os": 1, + "release": 137, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1/python-3.1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1/python-3.1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "85b0ce2e6dc5334d856a3fba534010b3", + "filesize": 13814272, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 703, + "fields": { + "created": "2014-03-20T22:36:49.908Z", + "updated": "2014-03-20T22:36:49.922Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X installer", + "slug": "python-310-Mac-OS-X-installer", + "os": 2, + "release": 137, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1/python-3.1.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1/python-3.1.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fd1547fefabd7f73f9a038b812fd1017", + "filesize": 17119035, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 704, + "fields": { + "created": "2014-03-20T22:36:50.736Z", + "updated": "2014-03-20T22:36:50.751Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-330-Windows-help-file", + "os": 1, + "release": 138, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.0/python330.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.0/python330.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e3a31bce895efedd44b1d0db26614344", + "filesize": 6353251, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 705, + "fields": { + "created": "2014-03-20T22:36:54.060Z", + "updated": "2014-03-20T22:36:54.075Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-330-Gzipped-source-tarball", + "os": 3, + "release": 138, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b8089594cc16003f9ffb3a0c5995c037", + "filesize": 67799040, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 706, + "fields": { + "created": "2014-03-20T22:36:54.337Z", + "updated": "2014-03-20T22:36:54.352Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "python-330-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 138, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.0/python-3.3.0-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.0/python-3.3.0-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a42dbeb9d17d46b40a6666f496207b4e", + "filesize": 19441635, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 707, + "fields": { + "created": "2014-03-20T22:36:54.592Z", + "updated": "2014-03-20T22:36:54.608Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-330-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 138, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.0/python-3.3.0-macosx10.5.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.0/python-3.3.0-macosx10.5.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9813d8f76b007fffa595abb3a11b3b0f", + "filesize": 19367758, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 708, + "fields": { + "created": "2014-03-20T22:36:54.851Z", + "updated": "2017-07-18T21:41:54.542Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-330-Windows-x86-64-MSI-installer", + "os": 1, + "release": 138, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.0/python-3.3.0.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.0/python-3.3.0.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5129376df1c56297a80e69a1a6144b4e", + "filesize": 20508672, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 709, + "fields": { + "created": "2014-03-20T22:36:55.110Z", + "updated": "2014-03-20T22:36:55.125Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-330-XZ-compressed-source-tarball", + "os": 3, + "release": 138, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.0/Python-3.3.0.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.0/Python-3.3.0.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2e7533b4009ac4adae62a7797a442e7a", + "filesize": 11720732, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 710, + "fields": { + "created": "2014-03-20T22:36:55.381Z", + "updated": "2014-03-20T22:36:55.396Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-330-Windows-debug-information-files", + "os": 1, + "release": 138, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.0/python-3.3.0-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.0/python-3.3.0-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a730d8ce509ce666170911a834ef1e2e", + "filesize": 27897502, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 711, + "fields": { + "created": "2014-03-20T22:36:55.638Z", + "updated": "2014-03-20T22:36:55.654Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-330-bzip2-compressed-source-tarball", + "os": 3, + "release": 138, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.0/Python-3.3.0.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.0/Python-3.3.0.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b3b2524f72409d919a4137826a870a8f", + "filesize": 13781940, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 712, + "fields": { + "created": "2014-03-20T22:36:55.893Z", + "updated": "2014-03-20T22:36:55.908Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-330-Windows-x86-MSI-installer", + "os": 1, + "release": 138, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.0/python-3.3.0.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.0/python-3.3.0.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "70062e4b9a1f959f5e07555e471c5657", + "filesize": 19980288, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 713, + "fields": { + "created": "2014-03-20T22:36:56.617Z", + "updated": "2014-03-20T22:36:56.631Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-325-bzip2-compressed-source-tarball", + "os": 3, + "release": 139, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.5/Python-3.2.5.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.5/Python-3.2.5.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "99e7de6abd96185480f819c5029709d2", + "filesize": 10996792, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 714, + "fields": { + "created": "2014-03-20T22:36:56.858Z", + "updated": "2014-03-20T22:36:56.873Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "python-325-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 139, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.5/python-3.2.5-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.5/python-3.2.5-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c97c7ff305b4b8ed84c6d708e0bde27c", + "filesize": 17461482, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 715, + "fields": { + "created": "2014-03-20T22:36:57.090Z", + "updated": "2014-03-20T22:36:57.105Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-325-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 139, + "description": "for Mac OS X 10.3 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.5/python-3.2.5-macosx10.3.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.5/python-3.2.5-macosx10.3.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e119db5243fd9db25734f02fbfc48816", + "filesize": 17773901, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 716, + "fields": { + "created": "2014-03-20T22:36:57.328Z", + "updated": "2014-03-20T22:36:57.343Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-325-Windows-x86-MSI-installer", + "os": 1, + "release": 139, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.5/python-3.2.5.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.5/python-3.2.5.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cdd6fdc59461c968bd105fdf08f4a17d", + "filesize": 18329600, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 717, + "fields": { + "created": "2014-03-20T22:36:57.581Z", + "updated": "2014-03-20T22:36:57.596Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-325-Gzipped-source-tarball", + "os": 3, + "release": 139, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.5/Python-3.2.5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.5/Python-3.2.5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f922d83147caf2199b02da1a4cc08ae8", + "filesize": 57589760, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 718, + "fields": { + "created": "2014-03-20T22:36:57.826Z", + "updated": "2014-03-20T22:36:57.843Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-325-XZ-compressed-source-tarball", + "os": 3, + "release": 139, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.5/Python-3.2.5.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.5/Python-3.2.5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "03c5843638c576d29b3321947facd22d", + "filesize": 9221624, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 719, + "fields": { + "created": "2014-03-20T22:36:58.072Z", + "updated": "2014-03-20T22:36:58.087Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-325-Windows-help-file", + "os": 1, + "release": 139, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.5/python324.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.4/python324.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ee857dfdaf0ab02cad35ead2eac0dbff", + "filesize": 10775, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 720, + "fields": { + "created": "2014-03-20T22:37:00.771Z", + "updated": "2014-03-20T22:37:00.786Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-325-Windows-debug-information-files", + "os": 1, + "release": 139, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.5/python-3.2.5-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.5/python-3.2.5-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a6597c204d0351abb3668b43a8a330aa", + "filesize": 22029384, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 721, + "fields": { + "created": "2014-03-20T22:37:01.009Z", + "updated": "2017-07-18T21:41:53.648Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-325-Windows-x86-64-MSI-installer", + "os": 1, + "release": 139, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.5/python-3.2.5.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.5/python-3.2.5.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b3b7bc402c630d61a37516986aaa1c4b", + "filesize": 18812928, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 722, + "fields": { + "created": "2014-03-20T22:37:01.691Z", + "updated": "2014-03-20T22:37:01.708Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-331-Windows-debug-information-files", + "os": 1, + "release": 140, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.1/python-3.3.1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.1/python-3.3.1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f563b701466bbfddc9e228d6cd894647", + "filesize": 26714664, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 723, + "fields": { + "created": "2014-03-20T22:37:04.900Z", + "updated": "2014-03-20T22:37:04.915Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-331-bzip2-compressed-source-tarball", + "os": 3, + "release": 140, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.1/Python-3.3.1.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.1/Python-3.3.1.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fb7147a15359a941e0b048c641fd7123", + "filesize": 13975626, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 724, + "fields": { + "created": "2014-03-20T22:37:05.158Z", + "updated": "2014-03-20T22:37:05.173Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-331-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 140, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.1/python-3.3.1-macosx10.5.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.1/python-3.3.1-macosx10.5.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ec10c5be176faeda17382d3ce6739f32", + "filesize": 19601538, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 725, + "fields": { + "created": "2014-03-20T22:37:05.411Z", + "updated": "2014-03-20T22:37:05.427Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-331-Windows-help-file", + "os": 1, + "release": 140, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.1/python331.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.1/python331.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ef3058449389c4b77385e6637a911d87", + "filesize": 6596709, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 726, + "fields": { + "created": "2014-03-20T22:37:05.660Z", + "updated": "2014-03-20T22:37:05.675Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-331-Windows-x86-MSI-installer", + "os": 1, + "release": 140, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.1/python-3.3.1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.1/python-3.3.1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8c78e017ba32aafb00f6574c38d0101f", + "filesize": 20217856, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 727, + "fields": { + "created": "2014-03-20T22:37:05.903Z", + "updated": "2014-03-20T22:37:05.918Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-331-Gzipped-source-tarball", + "os": 3, + "release": 140, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.1/Python-3.3.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.1/Python-3.3.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6a1050d8d9f924d05c499dbebcb8e6a6", + "filesize": 68587520, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 728, + "fields": { + "created": "2014-03-20T22:37:06.136Z", + "updated": "2017-07-18T21:41:55.114Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-331-Windows-x86-64-MSI-installer", + "os": 1, + "release": 140, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.1/python-3.3.1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.1/python-3.3.1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "69ad9e442d33e8c2470b2b6c7575d6dd", + "filesize": 20758528, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 729, + "fields": { + "created": "2014-03-20T22:37:06.397Z", + "updated": "2014-03-20T22:37:06.412Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-331-XZ-compressed-source-tarball", + "os": 3, + "release": 140, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.1/Python-3.3.1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.1/Python-3.3.1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "993232d9f4d9b4863cc1ec69a792e9cd", + "filesize": 11852964, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 730, + "fields": { + "created": "2014-03-20T22:37:06.653Z", + "updated": "2014-03-20T22:37:06.669Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "python-331-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 140, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.1/python-3.3.1-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.1/python-3.3.1-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b208b962515d49c7e236f6dce565a723", + "filesize": 19700219, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 731, + "fields": { + "created": "2014-03-20T22:37:07.413Z", + "updated": "2014-03-20T22:37:07.428Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-324-bzip2-compressed-source-tarball", + "os": 3, + "release": 141, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.4/Python-3.2.4.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.4/Python-3.2.4.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9864fc7fcb95ea6e3e3ea8d23f8c5f3f", + "filesize": 10998399, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 732, + "fields": { + "created": "2014-03-20T22:37:07.668Z", + "updated": "2014-03-20T22:37:07.683Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-324-XZ-compressed-source-tarball", + "os": 3, + "release": 141, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.4/Python-3.2.4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.4/Python-3.2.4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a52116f79701f811da9d850d3bc5bade", + "filesize": 9223024, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 733, + "fields": { + "created": "2014-03-20T22:37:07.913Z", + "updated": "2014-03-20T22:37:07.929Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-324-Windows-debug-information-files", + "os": 1, + "release": 141, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.4/python-3.2.4-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.4/python-3.2.4-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e4087c68fdf6db0fc611fef361c4bf8c", + "filesize": 21849160, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 734, + "fields": { + "created": "2014-03-20T22:37:08.171Z", + "updated": "2014-03-20T22:37:08.185Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-324-Windows-help-file", + "os": 1, + "release": 141, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.4/python324.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.4/python324.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ee857dfdaf0ab02cad35ead2eac0dbff", + "filesize": 10775, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 735, + "fields": { + "created": "2014-03-20T22:37:08.428Z", + "updated": "2014-03-20T22:37:08.443Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "python-324-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 141, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.4/python-3.2.4-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.4/python-3.2.4-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3968b46a7657bbde35f4116e7d44127e", + "filesize": 17462524, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 736, + "fields": { + "created": "2014-03-20T22:37:08.682Z", + "updated": "2017-07-18T21:41:53.075Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-324-Windows-x86-64-MSI-installer", + "os": 1, + "release": 141, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.4/python-3.2.4.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.4/python-3.2.4.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ea56e9ed6619534e0ee6a182dae7cc44", + "filesize": 18812928, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 737, + "fields": { + "created": "2014-03-20T22:37:08.963Z", + "updated": "2014-03-20T22:37:08.978Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-324-Windows-x86-MSI-installer", + "os": 1, + "release": 141, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.4/python-3.2.4.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.4/python-3.2.4.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "962f3af4c90169b5f72c782645a80287", + "filesize": 18329600, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 738, + "fields": { + "created": "2014-03-20T22:37:12.403Z", + "updated": "2014-03-20T22:37:12.418Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-324-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 141, + "description": "for Mac OS X 10.3 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.4/python-3.2.4-macosx10.3.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.4/python-3.2.4-macosx10.3.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "81f330132f82f8a42de4d9c379df9b73", + "filesize": 17771385, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 739, + "fields": { + "created": "2014-03-20T22:37:12.660Z", + "updated": "2014-03-20T22:37:12.675Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-324-Gzipped-source-tarball", + "os": 3, + "release": 141, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.4/Python-3.2.4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.4/Python-3.2.4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8d95400791f598c68277f9365293cafd", + "filesize": 57600000, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 740, + "fields": { + "created": "2014-03-20T22:37:13.445Z", + "updated": "2014-03-20T22:37:13.460Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-300-Windows-x86-MSI-installer", + "os": 1, + "release": 142, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.0/python-3.0.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.0/python-3.0.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2b85194a040b34088b64a48fa907c0af", + "filesize": 13168640, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 741, + "fields": { + "created": "2014-03-20T22:37:13.697Z", + "updated": "2014-03-20T22:37:13.711Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-300-bzip2-compressed-source-tarball", + "os": 3, + "release": 142, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.0/Python-3.0.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.0/Python-3.0.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "28021e4c542323b7544aace274a03bed", + "filesize": 9474659, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 742, + "fields": { + "created": "2014-03-20T22:37:13.928Z", + "updated": "2014-03-20T22:37:13.942Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-300-Gzipped-source-tarball", + "os": 3, + "release": 142, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.0/Python-3.0.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.0/Python-3.0.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aea67683cb95c121c8f3d91336e4c681", + "filesize": 47964160, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 743, + "fields": { + "created": "2014-03-20T22:37:14.173Z", + "updated": "2017-07-18T21:41:45.445Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-300-Windows-x86-64-MSI-installer", + "os": 1, + "release": 142, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.0/python-3.0.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.0/python-3.0.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "054131fb1dcaf0bc20b23711d1028099", + "filesize": 13421056, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 744, + "fields": { + "created": "2014-03-20T22:37:14.847Z", + "updated": "2014-03-20T22:37:14.862Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer", + "slug": "python-213-Windows-installer", + "os": 1, + "release": 143, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.1.3/Python-2.1.3.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fc8020b2be17c098b69368543c5589a9", + "filesize": 6418289, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 745, + "fields": { + "created": "2014-03-20T22:37:15.089Z", + "updated": "2014-03-20T22:37:15.103Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-213-Gzipped-source-tarball", + "os": 3, + "release": 143, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.1.3/Python-2.1.3.tgz", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9b8dad1d90c1bfebe9b00e77433d4b8a", + "filesize": 29143040, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 746, + "fields": { + "created": "2014-03-20T22:37:15.802Z", + "updated": "2014-03-20T22:37:15.817Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-332-Gzipped-source-tarball", + "os": 3, + "release": 144, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.2/Python-3.3.2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.2/Python-3.3.2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "da521bfb9cc85b259b3e1dd154208325", + "filesize": 68638720, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 747, + "fields": { + "created": "2014-03-20T22:37:16.059Z", + "updated": "2014-03-20T22:37:16.074Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-332-bzip2-compressed-source-tarball", + "os": 3, + "release": 144, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7dffe775f3bea68a44f762a3490e5e28", + "filesize": 13983134, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 748, + "fields": { + "created": "2014-03-20T22:37:16.307Z", + "updated": "2014-03-20T22:37:16.322Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-332-Windows-debug-information-files", + "os": 1, + "release": 144, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.2/python-3.3.2-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.2/python-3.3.2-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2a3911ed48b54ce0a25683c72154a5ca", + "filesize": 27025960, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 749, + "fields": { + "created": "2014-03-20T22:37:16.574Z", + "updated": "2014-03-20T22:37:16.589Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-332-Windows-help-file", + "os": 1, + "release": 144, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.2/python332.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.2/python332.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e7eb67a7defbed74cbcf08b574f01f52", + "filesize": 6605621, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 750, + "fields": { + "created": "2014-03-20T22:37:19.734Z", + "updated": "2017-07-18T21:41:56.038Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-332-Windows-x86-64-MSI-installer", + "os": 1, + "release": 144, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.2/python-3.3.2.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.2/python-3.3.2.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2477b4bd8e9a337705f7b5fda8b3b45f", + "filesize": 20774912, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 751, + "fields": { + "created": "2014-03-20T22:37:19.971Z", + "updated": "2014-03-20T22:37:19.986Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-332-XZ-compressed-source-tarball", + "os": 3, + "release": 144, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c94b78ea3b68a9bbc9906af4d5b4fdc7", + "filesize": 11847676, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 752, + "fields": { + "created": "2014-03-20T22:37:20.210Z", + "updated": "2014-03-20T22:37:20.225Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "python-332-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 144, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.2/python-3.3.2-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.2/python-3.3.2-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ce63202f4a6caa956dac2116e21a29f4", + "filesize": 19709642, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 753, + "fields": { + "created": "2014-03-20T22:37:20.459Z", + "updated": "2014-03-20T22:37:20.474Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-332-Windows-x86-MSI-installer", + "os": 1, + "release": 144, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.2/python-3.3.2.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.2/python-3.3.2.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0d9db9c2316562c62e1e4c347b6f9430", + "filesize": 20238336, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 754, + "fields": { + "created": "2014-03-20T22:37:20.710Z", + "updated": "2014-03-20T22:37:20.724Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-332-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 144, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.2/python-3.3.2-macosx10.5.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.2/python-3.3.2-macosx10.5.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9d6094d54f5200d9c13d11c98d283cfe", + "filesize": 19618740, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 755, + "fields": { + "created": "2014-03-20T22:37:21.488Z", + "updated": "2014-03-20T22:37:21.503Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-333-Windows-x86-MSI-installer", + "os": 1, + "release": 145, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.3/python-3.3.3.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.3/python-3.3.3.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ab6a031aeca66507e4c8697ff93a0007", + "filesize": 20537344, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 756, + "fields": { + "created": "2014-03-20T22:37:21.739Z", + "updated": "2014-03-20T22:37:21.755Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-333-bzip2-compressed-source-tarball", + "os": 3, + "release": 145, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.3/Python-3.3.3.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.3/Python-3.3.3.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f3ebe34d4d8695bf889279b54673e10c", + "filesize": 14122529, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 757, + "fields": { + "created": "2014-03-20T22:37:21.987Z", + "updated": "2014-03-20T22:37:22.002Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-333-XZ-compressed-source-tarball", + "os": 3, + "release": 145, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.3/Python-3.3.3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.3/Python-3.3.3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4ca001c5586eb0744e3174bc75c6fba8", + "filesize": 12057744, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 758, + "fields": { + "created": "2014-03-20T22:37:22.221Z", + "updated": "2014-03-20T22:37:22.236Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "python-333-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 145, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.3/python-3.3.3-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.3/python-3.3.3-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3f7b6c1dc58d7e0b5282f3b7a2e00ef7", + "filesize": 19956580, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 759, + "fields": { + "created": "2014-03-20T22:37:24.891Z", + "updated": "2014-03-20T22:37:24.906Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-333-Gzipped-source-tarball", + "os": 3, + "release": 145, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.3/Python-3.3.3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.3/Python-3.3.3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a44bec5d1391b1af654cf15e25c282f2", + "filesize": 69120000, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 760, + "fields": { + "created": "2014-03-20T22:37:25.129Z", + "updated": "2014-03-20T22:37:25.144Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-333-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 145, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.3/python-3.3.3-macosx10.5.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.3/python-3.3.3-macosx10.5.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "60f44c22bbd00fbf3f63d98ef761295b", + "filesize": 19876666, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 761, + "fields": { + "created": "2014-03-20T22:37:25.356Z", + "updated": "2014-03-20T22:37:25.371Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-333-Windows-help-file", + "os": 1, + "release": 145, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.3/python333.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.3/python333.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c86d6d68ca1a1de7395601a4918314f9", + "filesize": 6651185, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 762, + "fields": { + "created": "2014-03-20T22:37:25.584Z", + "updated": "2017-07-18T21:41:56.613Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-333-Windows-x86-64-MSI-installer", + "os": 1, + "release": 145, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.3/python-3.3.3.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.3/python-3.3.3.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8de52d1e2e4bbb3419b7f40bdf48e855", + "filesize": 21086208, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 763, + "fields": { + "created": "2014-03-20T22:37:25.806Z", + "updated": "2014-03-20T22:37:25.822Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-333-Windows-debug-information-files", + "os": 1, + "release": 145, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.3/python-3.3.3-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.3/python-3.3.3-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3fc2925746372ab8401dfabce278d418", + "filesize": 27034152, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 764, + "fields": { + "created": "2014-03-20T22:37:26.790Z", + "updated": "2014-03-20T22:37:26.808Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-201-Gzipped-source-tarball", + "os": 3, + "release": 146, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.0.1/Python-2.0.1.tgz", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eba86a416f8e8ab682544aade7d0cc27", + "filesize": 17571840, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 765, + "fields": { + "created": "2014-03-20T22:37:27.028Z", + "updated": "2014-03-20T22:37:27.043Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer", + "slug": "python-201-Windows-installer", + "os": 1, + "release": 146, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.0.1/Python-2.0.1.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5940b6eea8972136f8e365346f1b1313", + "filesize": 5842162, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 766, + "fields": { + "created": "2014-03-20T22:37:27.250Z", + "updated": "2014-03-20T22:37:27.264Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-201-Windows-debug-information-files", + "os": 1, + "release": 146, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.0.1/Python-2.0.1-Debug.zip", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0a8506c7379a2efdc95759ecbc8f16a0", + "filesize": 1794859, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 767, + "fields": { + "created": "2014-03-20T22:37:27.933Z", + "updated": "2014-03-20T22:37:27.948Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer", + "slug": "python-222-Windows-installer", + "os": 1, + "release": 147, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.2.2/Python-2.2.2.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9914cd4fc203008decf9ca7fb5aa1252", + "filesize": 7282997, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 768, + "fields": { + "created": "2014-03-20T22:37:28.160Z", + "updated": "2014-03-20T22:37:28.174Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-222-Gzipped-source-tarball", + "os": 3, + "release": 147, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.2.2/Python-2.2.2.tgz", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9dcae3b26c11d2507b2e49738055e0e7", + "filesize": 29235200, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 769, + "fields": { + "created": "2014-03-20T22:37:28.882Z", + "updated": "2014-03-20T22:37:28.896Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-223-Gzipped-source-tarball", + "os": 3, + "release": 148, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.2.3/Python-2.2.3.tgz", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a252b35aef554947413da9c8dff1208d", + "filesize": 29378560, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 770, + "fields": { + "created": "2014-03-20T22:37:29.093Z", + "updated": "2014-03-20T22:37:29.107Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer", + "slug": "python-223-Windows-installer", + "os": 1, + "release": 148, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.2.3/Python-2.2.3.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d76e774a4169794ae0d7a8598478e69e", + "filesize": 7334106, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 771, + "fields": { + "created": "2014-03-20T22:37:29.775Z", + "updated": "2014-03-20T22:37:29.789Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X installer", + "slug": "python-301-Mac-OS-X-installer", + "os": 2, + "release": 149, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.0.1/python-3.0.1-macosx2009-02-14.dmg", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b17949fe1aa84c7b1b5c8932046c5b6f", + "filesize": 16984391, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 772, + "fields": { + "created": "2014-03-20T22:37:30.015Z", + "updated": "2014-03-20T22:37:30.030Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-301-bzip2-compressed-source-tarball", + "os": 3, + "release": 149, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.0.1/Python-3.0.1.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.0.1/Python-3.0.1.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7291eac6a9a7a3642e309c78b8d744e5", + "filesize": 9495088, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 773, + "fields": { + "created": "2014-03-20T22:37:30.220Z", + "updated": "2017-07-18T21:41:45.964Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-301-Windows-x86-64-MSI-installer", + "os": 1, + "release": 149, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.0.1/python-3.0.1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.0.1/python-3.0.1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "be8f57265e1419330965692a4fa15d9a", + "filesize": 13702656, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 774, + "fields": { + "created": "2014-03-20T22:37:30.421Z", + "updated": "2014-03-20T22:37:30.435Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-301-Windows-x86-MSI-installer", + "os": 1, + "release": 149, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.0.1/python-3.0.1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.0.1/python-3.0.1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ffce874eb1a832927fb705b84720bfc6", + "filesize": 13434880, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 775, + "fields": { + "created": "2014-03-20T22:37:30.636Z", + "updated": "2014-03-20T22:37:30.651Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-301-Gzipped-source-tarball", + "os": 3, + "release": 149, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.0.1/Python-3.0.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.0.1/Python-3.0.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ad569034f6dec2d358afefc705e8c387", + "filesize": 48486400, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 776, + "fields": { + "created": "2014-03-20T22:37:31.361Z", + "updated": "2014-03-20T22:37:31.376Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-245-Gzipped-source-tarball", + "os": 3, + "release": 150, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.4.5/Python-2.4.5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.5/Python-2.4.5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7fadaad5841135faca962c69f5616c9b", + "filesize": 39751680, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 777, + "fields": { + "created": "2014-03-20T22:37:31.607Z", + "updated": "2014-03-20T22:37:31.622Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-245-bzip2-compressed-source-tarball", + "os": 3, + "release": 150, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.4.5/Python-2.4.5.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.5/Python-2.4.5.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aade3958cb097cc1c69ae0074297d359", + "filesize": 8159705, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 778, + "fields": { + "created": "2014-03-20T22:37:32.348Z", + "updated": "2014-03-20T22:37:32.363Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-321-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 151, + "description": "for Mac OS X 10.3 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.1/python-3.2.1-macosx10.3.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.1/python-3.2.1-macosx10.3.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d61f37f109d6d8c6fdec7bc4913b5ce2", + "filesize": 19505848, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 779, + "fields": { + "created": "2014-03-20T22:37:32.585Z", + "updated": "2014-03-20T22:37:32.599Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-321-Windows-x86-MSI-installer", + "os": 1, + "release": 151, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.1/python-3.2.1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.1/python-3.2.1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c148e89b97cd07352c42ecb3bb4f42e2", + "filesize": 18014208, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 780, + "fields": { + "created": "2014-03-20T22:37:32.831Z", + "updated": "2014-03-20T22:37:32.845Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-321-Windows-debug-information-files", + "os": 1, + "release": 151, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.1/python-3.2.1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.1/python-3.2.1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1b230ae0f527bfc92bc0d7dec2bcf563", + "filesize": 18233314, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 781, + "fields": { + "created": "2014-03-20T22:37:33.096Z", + "updated": "2014-03-20T22:37:33.111Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-321-bzip2-compressed-source-tarball", + "os": 3, + "release": 151, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.1/Python-3.2.1.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.1/Python-3.2.1.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f0869ba3f3797aacb1f954ef24c256f3", + "filesize": 10709280, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 782, + "fields": { + "created": "2014-03-20T22:37:33.347Z", + "updated": "2014-03-20T22:37:33.361Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "python-321-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 151, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.1/python-3.2.1-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.1/python-3.2.1-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "add9d9d05c57e73f4891386a2d15c819", + "filesize": 16190928, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 783, + "fields": { + "created": "2014-03-20T22:37:33.554Z", + "updated": "2014-03-20T22:37:33.569Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-321-Gzipped-source-tarball", + "os": 3, + "release": 151, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.1/Python-3.2.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.1/Python-3.2.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "457cc64d21bc157f1f3a21d6ea9064c4", + "filesize": 55746560, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 784, + "fields": { + "created": "2014-03-20T22:37:36.156Z", + "updated": "2017-07-18T21:41:50.738Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-321-Windows-x86-64-MSI-installer", + "os": 1, + "release": 151, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.1/python-3.2.1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.1/python-3.2.1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1bdb9e0eddb75f701f18a15c2d1ec3d6", + "filesize": 18526208, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 785, + "fields": { + "created": "2014-03-20T22:37:36.386Z", + "updated": "2014-03-20T22:37:36.401Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-321-Windows-help-file", + "os": 1, + "release": 151, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.1/python321.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.1/python321.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c05472b404526f3979f1ebbd8234e972", + "filesize": 5800119, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 786, + "fields": { + "created": "2014-03-20T22:37:36.609Z", + "updated": "2014-03-20T22:37:36.625Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-321-XZ-compressed-source-tarball", + "os": 3, + "release": 151, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.1/Python-3.2.1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.1/Python-3.2.1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2cf014296afc18897daa7b79414ad773", + "filesize": 8911452, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 787, + "fields": { + "created": "2014-03-20T22:37:37.289Z", + "updated": "2014-03-20T22:37:37.304Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer", + "slug": "python-234-Windows-installer", + "os": 1, + "release": 152, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.3.4/Python-2.3.4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.4/Python-2.3.4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "65275cc93b905c25d130d71c116892f2", + "filesize": 9889611, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 788, + "fields": { + "created": "2014-03-20T22:37:37.488Z", + "updated": "2014-03-20T22:37:37.502Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-234-bzip2-compressed-source-tarball", + "os": 3, + "release": 152, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.3.4/Python-2.3.4.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.4/Python-2.3.4.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a2c089faa2726c142419c03472fc4063", + "filesize": 7189129, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 789, + "fields": { + "created": "2014-03-20T22:37:37.684Z", + "updated": "2014-03-20T22:37:37.698Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-234-Gzipped-source-tarball", + "os": 3, + "release": 152, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.3.4/Python-2.3.4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.4/Python-2.3.4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a4395635c0f6da0a69dfeee9e0453d19", + "filesize": 36096000, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 790, + "fields": { + "created": "2014-03-20T22:37:38.311Z", + "updated": "2014-03-20T22:37:38.326Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-275-XZ-compressed-source-tarball", + "os": 3, + "release": 153, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5eea8462f69ab1369d32f9c4cd6272ab", + "filesize": 10252148, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 791, + "fields": { + "created": "2014-03-20T22:37:38.509Z", + "updated": "2014-03-20T22:37:38.523Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-275-Gzipped-source-tarball", + "os": 3, + "release": 153, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aca0e667865359f962dc77ad30a934eb", + "filesize": 65290240, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 792, + "fields": { + "created": "2014-03-20T22:37:38.713Z", + "updated": "2014-03-20T22:37:38.728Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-275-Windows-help-file", + "os": 1, + "release": 153, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.5/python275.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.5/python275.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "edc2df9809bcaaf704314ec387ff5ee7", + "filesize": 5997097, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 793, + "fields": { + "created": "2014-03-20T22:37:38.924Z", + "updated": "2014-03-20T22:37:38.938Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-275-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 153, + "description": "for Mac OS X 10.3 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.5/python-2.7.5-macosx10.3.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.5/python-2.7.5-macosx10.3.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ead4f83ec7823325ae287295193644a7", + "filesize": 20395084, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 794, + "fields": { + "created": "2014-03-20T22:37:39.129Z", + "updated": "2014-03-20T22:37:39.143Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-275-Windows-debug-information-files", + "os": 1, + "release": 153, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.5/python-2.7.5-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.5/python-2.7.5-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e632ba7c34b922e4485667e332096999", + "filesize": 18236482, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 795, + "fields": { + "created": "2014-03-20T22:37:41.507Z", + "updated": "2014-03-20T22:37:41.521Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-275-Windows-x86-MSI-installer", + "os": 1, + "release": 153, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.5/python-2.7.5.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.5/python-2.7.5.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0006d6219160ce6abe711a71c835ebb0", + "filesize": 16228352, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 796, + "fields": { + "created": "2014-03-20T22:37:41.776Z", + "updated": "2014-03-20T22:37:41.790Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-275-bzip2-compressed-source-tarball", + "os": 3, + "release": 153, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6334b666b7ff2038c761d7b27ba699c1", + "filesize": 12147710, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 797, + "fields": { + "created": "2014-03-20T22:37:41.987Z", + "updated": "2014-03-20T22:37:42.001Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "python-275-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 153, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.5/python-2.7.5-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.5/python-2.7.5-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "248ec7d77220ec6c770a23df3cb537bc", + "filesize": 19979778, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 798, + "fields": { + "created": "2014-03-20T22:37:42.203Z", + "updated": "2017-07-18T21:41:40.995Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-275-Windows-x86-64-MSI-installer", + "os": 1, + "release": 153, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.5/python-2.7.5.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.5/python-2.7.5.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "83f5d9ba639bd2e33d104df9ea969f31", + "filesize": 16617472, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 799, + "fields": { + "created": "2014-03-20T22:37:42.823Z", + "updated": "2017-07-18T21:41:40.444Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-274-Windows-x86-64-MSI-installer", + "os": 1, + "release": 154, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.4/python-2.7.4.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.4/python-2.7.4.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7c44c508a1594a8be8145d172b056b90", + "filesize": 16625664, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 800, + "fields": { + "created": "2014-03-20T22:37:43.020Z", + "updated": "2014-03-20T22:37:43.034Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "python-274-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 154, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.4/python-2.7.4-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.4/python-2.7.4-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bf586a6e7419bf1f222babbfe5177208", + "filesize": 19985319, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 801, + "fields": { + "created": "2014-03-20T22:37:43.216Z", + "updated": "2014-03-20T22:37:43.230Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-274-Windows-help-file", + "os": 1, + "release": 154, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.4/python274.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.4/python274.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eff74952b544c77316982bb660eebbda", + "filesize": 6003987, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 802, + "fields": { + "created": "2014-03-20T22:37:45.643Z", + "updated": "2014-03-20T22:37:45.658Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-274-Windows-debug-information-files", + "os": 1, + "release": 154, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.4/python-2.7.4-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.4/python-2.7.4-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bb475605feffd85194902d5cc0ce62d6", + "filesize": 18105410, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 803, + "fields": { + "created": "2014-03-20T22:37:45.935Z", + "updated": "2014-03-20T22:37:45.950Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-274-Windows-x86-MSI-installer", + "os": 1, + "release": 154, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.4/python-2.7.4.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.4/python-2.7.4.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4610171c0dbc22712d597f808dcb8d37", + "filesize": 16232448, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 804, + "fields": { + "created": "2014-03-20T22:37:46.290Z", + "updated": "2014-03-20T22:37:46.304Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-274-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 154, + "description": "for Mac OS X 10.3 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.4/python-2.7.4-macosx10.3.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.4/python-2.7.4-macosx10.3.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "05314675faa1aa4d1b7ec0e8b21355a0", + "filesize": 20397182, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 805, + "fields": { + "created": "2014-03-20T22:37:46.602Z", + "updated": "2014-03-20T22:37:46.616Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-274-Gzipped-source-tarball", + "os": 3, + "release": 154, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.4/Python-2.7.4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.4/Python-2.7.4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d706aa592de157379ca5d775f1432fed", + "filesize": 65280000, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 806, + "fields": { + "created": "2014-03-20T22:37:46.824Z", + "updated": "2014-03-20T22:37:46.838Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-274-XZ-compressed-source-tarball", + "os": 3, + "release": 154, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.4/Python-2.7.4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.4/Python-2.7.4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "86909785aa1ff13b49d87737b75b5f54", + "filesize": 10250644, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 807, + "fields": { + "created": "2014-03-20T22:37:47.063Z", + "updated": "2014-03-20T22:37:47.077Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-274-bzip2-compressed-source-tarball", + "os": 3, + "release": 154, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.4/Python-2.7.4.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.4/Python-2.7.4.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "62704ea0f125923208d84ff0568f7d50", + "filesize": 12146770, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 808, + "fields": { + "created": "2014-03-20T22:37:47.837Z", + "updated": "2014-03-20T22:37:47.852Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-335-rc1-Windows-x86-MSI-installer", + "os": 1, + "release": 155, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.5/python-3.3.5rc1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.5/python-3.3.5rc1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "981592c6735608d584ab871ae0714f80", + "filesize": 20660224, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 809, + "fields": { + "created": "2014-03-20T22:37:48.068Z", + "updated": "2014-03-20T22:37:48.083Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-335-rc1-Gzipped-source-tarball", + "os": 3, + "release": 155, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.5/Python-3.3.5rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.5/Python-3.3.5rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "612fdfa58da740155fc05e42fdeddcd1", + "filesize": 69416960, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 810, + "fields": { + "created": "2014-03-20T22:37:48.302Z", + "updated": "2014-03-20T22:37:48.318Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-335-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 155, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.5/Python-3.3.5rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.5/Python-3.3.5rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "91afd237a2e378476c6d4616b2a69dda", + "filesize": 12103472, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 811, + "fields": { + "created": "2014-03-20T22:37:48.536Z", + "updated": "2014-03-20T22:37:48.551Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-335-rc1-Windows-help-file", + "os": 1, + "release": 155, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.5/python335rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.5/python335rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d8993436235be56dfddc304f0c1d6237", + "filesize": 6708839, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 812, + "fields": { + "created": "2014-03-20T22:37:51.995Z", + "updated": "2014-03-20T22:37:52.010Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "python-335-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 155, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.5/python-3.3.5rc1-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.5/python-3.3.5rc1-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "60aaf53e0ebb5a7ecd2349f212c62835", + "filesize": 20017628, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 813, + "fields": { + "created": "2014-03-20T22:37:52.245Z", + "updated": "2014-03-20T22:37:52.259Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-335-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 155, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.5/python-3.3.5rc1-macosx10.5.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.5/python-3.3.5rc1-macosx10.5.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8ab7ec6d3e81ead6b3578f6bf75810d9", + "filesize": 19963194, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 814, + "fields": { + "created": "2014-03-20T22:37:52.497Z", + "updated": "2014-03-20T22:37:52.511Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-335-rc1-Windows-debug-information-files", + "os": 1, + "release": 155, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.5/python-3.3.5rc1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.5/python-3.3.5rc1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "539cfc3b15ce42603bfaadd471e9c158", + "filesize": 27050536, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 815, + "fields": { + "created": "2014-03-20T22:37:52.747Z", + "updated": "2017-07-18T21:41:58.077Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-335-rc1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 155, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.3.5/python-3.3.5rc1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.5/python-3.3.5rc1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "97bb3692b165df901b1e72226d413fe6", + "filesize": 21209088, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 816, + "fields": { + "created": "2014-03-20T22:37:53.520Z", + "updated": "2014-03-20T22:37:53.534Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer", + "slug": "python-221-Windows-installer", + "os": 1, + "release": 156, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.2.1/Python-2.2.1.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1d1d8c1922177fd9e603552f0507d33b", + "filesize": 7142643, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 817, + "fields": { + "created": "2014-03-20T22:37:53.766Z", + "updated": "2014-03-20T22:37:53.781Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-221-Gzipped-source-tarball", + "os": 3, + "release": 156, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.2.1/Python-2.2.1.tgz", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3b164ee6085546c7fd5035b48e8d15ee", + "filesize": 28651520, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 818, + "fields": { + "created": "2014-03-20T22:37:57.186Z", + "updated": "2014-03-20T22:37:57.212Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-322-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 157, + "description": "for Mac OS X 10.3 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.2/python-3.2.2-macosx10.3.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.2/python-3.2.2-macosx10.3.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f6001a9b2be57ecfbefa865e50698cdf", + "filesize": 19519332, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 819, + "fields": { + "created": "2014-03-20T22:37:57.418Z", + "updated": "2014-03-20T22:37:57.439Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-322-Gzipped-source-tarball", + "os": 3, + "release": 157, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.2/Python-3.2.2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.2/Python-3.2.2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9dce58f27d00e993312cdce78323cb9d", + "filesize": 55828480, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 820, + "fields": { + "created": "2014-03-20T22:37:57.651Z", + "updated": "2014-03-20T22:37:57.667Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-322-XZ-compressed-source-tarball", + "os": 3, + "release": 157, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.2/Python-3.2.2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.2/Python-3.2.2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3720ce9460597e49264bbb63b48b946d", + "filesize": 8923224, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 821, + "fields": { + "created": "2014-03-20T22:37:57.881Z", + "updated": "2017-07-18T21:41:51.319Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-322-Windows-x86-64-MSI-installer", + "os": 1, + "release": 157, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.2/python-3.2.2.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.2/python-3.2.2.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ddeb3e3fb93ab5a900adb6f04edab21e", + "filesize": 18542592, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 822, + "fields": { + "created": "2014-03-20T22:37:58.101Z", + "updated": "2014-03-20T22:37:58.116Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-322-bzip2-compressed-source-tarball", + "os": 3, + "release": 157, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.2/Python-3.2.2.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.2/Python-3.2.2.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9d763097a13a59ff53428c9e4d098a05", + "filesize": 10743647, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 823, + "fields": { + "created": "2014-03-20T22:37:58.322Z", + "updated": "2014-03-20T22:37:58.336Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-322-Windows-x86-MSI-installer", + "os": 1, + "release": 157, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.2/python-3.2.2.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.2/python-3.2.2.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8afb1b01e8fab738e7b234eb4fe3955c", + "filesize": 18034688, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 824, + "fields": { + "created": "2014-03-20T22:37:58.548Z", + "updated": "2014-03-20T22:37:58.563Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-322-Windows-help-file", + "os": 1, + "release": 157, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.2/python322.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.2/python322.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ee857dfdaf0ab02cad35ead2eac0dbff", + "filesize": 10775, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 825, + "fields": { + "created": "2014-03-20T22:37:58.771Z", + "updated": "2014-03-20T22:37:58.786Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-322-Windows-debug-information-files", + "os": 1, + "release": 157, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.2/python-3.2.2-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.2/python-3.2.2-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cccb03e14146f7ef82907cf12bf5883c", + "filesize": 18241506, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 826, + "fields": { + "created": "2014-03-20T22:37:58.994Z", + "updated": "2014-03-20T22:37:59.009Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "python-322-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 157, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.2/python-3.2.2-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.2/python-3.2.2-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8fe82d14dbb2e96a84fd6fa1985b6f73", + "filesize": 16226426, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 827, + "fields": { + "created": "2014-03-20T22:37:59.681Z", + "updated": "2014-03-20T22:37:59.695Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-236-bzip2-compressed-source-tarball", + "os": 3, + "release": 158, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.3.6/Python-2.3.6.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.6/Python-2.3.6.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1bd475e69e20481c6301853eef7018f1", + "filesize": 7350182, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 828, + "fields": { + "created": "2014-03-20T22:37:59.902Z", + "updated": "2014-03-20T22:37:59.916Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-236-Gzipped-source-tarball", + "os": 3, + "release": 158, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.3.6/Python-2.3.6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.6/Python-2.3.6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "119b624a0f109674666b452a26b5865f", + "filesize": 36290560, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 829, + "fields": { + "created": "2014-03-20T22:38:00.597Z", + "updated": "2014-03-20T22:38:00.615Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer", + "slug": "python-235-Windows-installer", + "os": 1, + "release": 159, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.3.5/Python-2.3.5.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.5/Python-2.3.5.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ba6f9eb9da40ad23bc631a1f31149a01", + "filesize": 9881382, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 830, + "fields": { + "created": "2014-03-20T22:38:00.824Z", + "updated": "2014-03-20T22:38:00.840Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-235-Gzipped-source-tarball", + "os": 3, + "release": 159, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.3.5/Python-2.3.5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.5/Python-2.3.5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a45ff1ff04134dc6e0c9dc8ae6e5fdc2", + "filesize": 36259840, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 831, + "fields": { + "created": "2014-03-20T22:38:01.048Z", + "updated": "2014-03-20T22:38:01.063Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-235-bzip2-compressed-source-tarball", + "os": 3, + "release": 159, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.3.5/Python-2.3.5.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.5/Python-2.3.5.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c12b57c6e0cf8bc676fd9444d71c9e18", + "filesize": 7230000, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 832, + "fields": { + "created": "2014-03-20T22:38:03.929Z", + "updated": "2014-03-20T22:38:03.944Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-323-Gzipped-source-tarball", + "os": 3, + "release": 161, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.3/Python-3.2.3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.3/Python-3.2.3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5539bfce2313e5fc9850ff90d2aca4d1", + "filesize": 56023040, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 833, + "fields": { + "created": "2014-03-20T22:38:04.126Z", + "updated": "2014-03-20T22:38:04.141Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-323-bzip2-compressed-source-tarball", + "os": 3, + "release": 161, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.3/Python-3.2.3.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.3/Python-3.2.3.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cea34079aeb2e21e7b60ee82a0ac286b", + "filesize": 10743046, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 834, + "fields": { + "created": "2014-03-20T22:38:04.336Z", + "updated": "2014-03-20T22:38:04.351Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-323-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 161, + "description": "for Mac OS X 10.3 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.3/python-3.2.3-macosx10.3.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.3/python-3.2.3-macosx10.3.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "389836f8b9d39e1366cb05e6ae302bd7", + "filesize": 19550807, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 835, + "fields": { + "created": "2014-03-20T22:38:07.358Z", + "updated": "2014-03-20T22:38:07.373Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-323-Windows-help-file", + "os": 1, + "release": 161, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.3/python323.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.3/python323.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "caaeaaa161de6819c10a5a8b0b208e40", + "filesize": 5769675, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 836, + "fields": { + "created": "2014-03-20T22:38:07.578Z", + "updated": "2014-03-20T22:38:07.593Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-323-Windows-debug-information-files", + "os": 1, + "release": 161, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.3/python-3.2.3-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.3/python-3.2.3-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d8ef37dc27ca7f8625327c4696aa5942", + "filesize": 18307042, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 837, + "fields": { + "created": "2014-03-20T22:38:07.802Z", + "updated": "2017-07-18T21:41:52.216Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-323-Windows-x86-64-MSI-installer", + "os": 1, + "release": 161, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.3/python-3.2.3.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.3/python-3.2.3.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "01aae7d96fa1c5a585f596b20233c6eb", + "filesize": 18554880, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 838, + "fields": { + "created": "2014-03-20T22:38:08.021Z", + "updated": "2014-03-20T22:38:08.035Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "python-323-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 161, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.3/python-3.2.3-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.3/python-3.2.3-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "778b4038cbd4471e409942d4148effea", + "filesize": 16229112, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 839, + "fields": { + "created": "2014-03-20T22:38:08.245Z", + "updated": "2014-03-20T22:38:08.261Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-323-Windows-x86-MSI-installer", + "os": 1, + "release": 161, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2.3/python-3.2.3.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.3/python-3.2.3.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c176c60e6d780773e3085ee824b3078b", + "filesize": 17829888, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 840, + "fields": { + "created": "2014-03-20T22:38:08.472Z", + "updated": "2014-03-20T22:38:08.487Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-323-XZ-compressed-source-tarball", + "os": 3, + "release": 161, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.3/Python-3.2.3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.3/Python-3.2.3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "187564726f2c1473d301c586acc24847", + "filesize": 8970368, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 841, + "fields": { + "created": "2014-03-20T22:38:09.162Z", + "updated": "2014-03-20T22:38:09.176Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-313-Windows-debug-information-files", + "os": 1, + "release": 162, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1.3/python-3.1.3-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.3/python-3.1.3-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e2190c128dd1ebc1364d11f65f9a9560", + "filesize": 12695522, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 842, + "fields": { + "created": "2014-03-20T22:38:09.382Z", + "updated": "2014-03-20T22:38:09.397Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-313-bzip2-compressed-source-tarball", + "os": 3, + "release": 162, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.1.3/Python-3.1.3.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.3/Python-3.1.3.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ad5e5f1c07e829321e0a015f8cafe245", + "filesize": 9875464, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 843, + "fields": { + "created": "2014-03-20T22:38:11.613Z", + "updated": "2014-03-20T22:38:11.627Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-313-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 162, + "description": "for Mac OS X 10.3 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1.3/python-3.1.3-macosx10.3.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.3/python-3.1.3-macosx10.3.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7c56fb34443ad74a76c5a119f2f7c485", + "filesize": 17533819, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 844, + "fields": { + "created": "2014-03-20T22:38:11.812Z", + "updated": "2014-03-20T22:38:11.827Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-313-Windows-x86-MSI-installer", + "os": 1, + "release": 162, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1.3/python-3.1.3.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.3/python-3.1.3.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "736d8b583d553237dd602461f43dfa65", + "filesize": 14300160, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 845, + "fields": { + "created": "2014-03-20T22:38:12.009Z", + "updated": "2014-03-20T22:38:12.024Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-313-Gzipped-source-tarball", + "os": 3, + "release": 162, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.1.3/Python-3.1.3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.3/Python-3.1.3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b258ed06a75306bdc143d96337d06e0c", + "filesize": 51343360, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 846, + "fields": { + "created": "2014-03-20T22:38:12.209Z", + "updated": "2017-07-18T21:41:48.728Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-313-Windows-x86-64-MSI-installer", + "os": 1, + "release": 162, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1.3/python-3.1.3.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.3/python-3.1.3.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c077495e19641111534b974107d6b8d3", + "filesize": 14549504, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 847, + "fields": { + "created": "2014-03-20T22:38:12.828Z", + "updated": "2017-07-18T21:41:49.874Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-320-Windows-x86-64-MSI-installer", + "os": 1, + "release": 163, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2/python-3.2.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2/python-3.2.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2edc738a0445edc24c7e2039a269aaea", + "filesize": 18558464, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 848, + "fields": { + "created": "2014-03-20T22:38:13.025Z", + "updated": "2014-03-20T22:38:13.040Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-320-Windows-help-file", + "os": 1, + "release": 163, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2/python32.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2/python32.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "82300eb392f4f06b743d713cb2a66f11", + "filesize": 5790291, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 849, + "fields": { + "created": "2014-03-20T22:38:13.220Z", + "updated": "2014-03-20T22:38:13.235Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "python-320-XZ-compressed-source-tarball", + "os": 3, + "release": 163, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2/Python-3.2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2/Python-3.2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "563c0b4b8c8596e332cc076c4f013971", + "filesize": 8877208, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 850, + "fields": { + "created": "2014-03-20T22:38:13.417Z", + "updated": "2014-03-20T22:38:13.431Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-320-bzip2-compressed-source-tarball", + "os": 3, + "release": 163, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2/Python-3.2.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2/Python-3.2.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "92e94b5b6652b96349d6362b8337811d", + "filesize": 10592958, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 851, + "fields": { + "created": "2014-03-20T22:38:13.612Z", + "updated": "2014-03-20T22:38:13.628Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "python-320-Windows-debug-information-files", + "os": 1, + "release": 163, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2/python-3.2-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2/python-3.2-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e7eb9ca03fa05131d4b6edcee050ceec", + "filesize": 18364386, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 852, + "fields": { + "created": "2014-03-20T22:38:13.813Z", + "updated": "2014-03-20T22:38:13.830Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "python-320-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 163, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2/python-3.2-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2/python-3.2-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f827c26555e69847c63c9e350ea443c0", + "filesize": 16199254, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 853, + "fields": { + "created": "2014-03-20T22:38:16.021Z", + "updated": "2014-03-20T22:38:16.036Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-320-Windows-x86-MSI-installer", + "os": 1, + "release": 163, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2/python-3.2.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2/python-3.2.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5860e37c5ff15cea4cda3698a756c81a", + "filesize": 18041344, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 854, + "fields": { + "created": "2014-03-20T22:38:16.227Z", + "updated": "2014-03-20T22:38:16.242Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-320-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 163, + "description": "for Mac OS X 10.3 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.2/python-3.2-macosx10.3.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2/python-3.2-macosx10.3.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9086f91f5cb7c252752566dc8358a790", + "filesize": 19495255, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 855, + "fields": { + "created": "2014-03-20T22:38:16.793Z", + "updated": "2014-03-20T22:38:16.809Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-320-Gzipped-source-tarball", + "os": 3, + "release": 163, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2/Python-3.2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2/Python-3.2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "890afb37d68a258f68fdfb85929ea697", + "filesize": 55449600, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 856, + "fields": { + "created": "2014-03-20T22:38:17.499Z", + "updated": "2017-07-18T23:06:52.062Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-244-Windows-x86-MSI-installer", + "os": 1, + "release": 164, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.4.4/python-2.4.4.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.4/python-2.4.4.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e153f8e72e53b34694323321d1a6654c", + "filesize": 8212992, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 857, + "fields": { + "created": "2014-03-20T22:38:17.696Z", + "updated": "2014-03-20T22:38:17.711Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-244-Windows-help-file", + "os": 1, + "release": 164, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.4.4/python24.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.4/python24.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "95540ad75b566a3934cad6b77fb6ebea", + "filesize": 3777664, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 858, + "fields": { + "created": "2014-03-20T22:38:17.917Z", + "updated": "2014-03-20T22:38:17.937Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-244-bzip2-compressed-source-tarball", + "os": 3, + "release": 164, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.4.4/Python-2.4.4.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.4/Python-2.4.4.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0ba90c79175c017101100ebf5978e906", + "filesize": 8158073, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 860, + "fields": { + "created": "2014-03-20T22:38:20.625Z", + "updated": "2014-03-20T22:38:20.640Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X installer", + "slug": "python-244-Mac-OS-X-installer", + "os": 2, + "release": 164, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.4.4/python-2.4.4-macosx2006-10-18.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.4/python-2.4.4-macosx2006-10-18.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3b7a449a1ae321a1609912c1e507d005", + "filesize": 16744696, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 861, + "fields": { + "created": "2014-03-20T22:38:20.827Z", + "updated": "2014-03-20T22:38:20.842Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-244-Gzipped-source-tarball", + "os": 3, + "release": 164, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.4.4/Python-2.4.4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.4/Python-2.4.4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7c393d83bd8c02ff58bc60aa453a278f", + "filesize": 39741440, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 862, + "fields": { + "created": "2014-03-20T22:38:21.474Z", + "updated": "2014-03-20T22:38:21.489Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-237-bzip2-compressed-source-tarball", + "os": 3, + "release": 165, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.3.7/Python-2.3.7.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.7/Python-2.3.7.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fa73476c5214c57d0751fae527f991e1", + "filesize": 7352771, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 863, + "fields": { + "created": "2014-03-20T22:38:21.678Z", + "updated": "2014-03-20T22:38:21.692Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-237-Gzipped-source-tarball", + "os": 3, + "release": 165, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.3.7/Python-2.3.7.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.7/Python-2.3.7.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "454aa0f8db594c9533ee762f8102e5eb", + "filesize": 36300800, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 864, + "fields": { + "created": "2014-03-20T22:38:22.346Z", + "updated": "2014-03-20T22:38:22.360Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-256-bzip2-compressed-source-tarball", + "os": 3, + "release": 166, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.5.6/Python-2.5.6.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.6/Python-2.5.6.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5d45979c5f30fb2dd5f067c6b06b88e4", + "filesize": 9821788, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 865, + "fields": { + "created": "2014-03-20T22:38:22.574Z", + "updated": "2014-03-20T22:38:22.588Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-256-Gzipped-source-tarball", + "os": 3, + "release": 166, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.5.6/Python-2.5.6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.6/Python-2.5.6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e835cfc25e510200a5c4cf2a72ee52a7", + "filesize": 50155520, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 866, + "fields": { + "created": "2014-03-20T22:38:23.276Z", + "updated": "2014-03-20T22:38:23.290Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-312-bzip2-compressed-source-tarball", + "os": 3, + "release": 167, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.1.2/Python-3.1.2.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.2/Python-3.1.2.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "45350b51b58a46b029fb06c61257e350", + "filesize": 9719769, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 867, + "fields": { + "created": "2014-03-20T22:38:23.530Z", + "updated": "2014-03-20T22:38:23.545Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-312-Windows-x86-MSI-installer", + "os": 1, + "release": 167, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1.2/python-3.1.2.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.2/python-3.1.2.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "098269f6057916821e41e82e7a7be227", + "filesize": 14098432, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 868, + "fields": { + "created": "2014-03-20T22:38:23.764Z", + "updated": "2014-03-20T22:38:23.779Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X installer", + "slug": "python-312-Mac-OS-X-installer", + "os": 2, + "release": 167, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1.2/python-3.1.2-macosx10.3-2010-03-24.dmg", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "597ba520c9c989f23464e0bf534db389", + "filesize": 17418524, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 869, + "fields": { + "created": "2014-03-20T22:38:24.009Z", + "updated": "2017-07-18T21:41:48.202Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-312-Windows-x86-64-MSI-installer", + "os": 1, + "release": 167, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.1.2/python-3.1.2.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.2/python-3.1.2.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a50d1fe2648783126c7a70654a08b755", + "filesize": 14369280, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 870, + "fields": { + "created": "2014-03-20T22:38:24.284Z", + "updated": "2014-03-20T22:38:24.299Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-312-Gzipped-source-tarball", + "os": 3, + "release": 167, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.1.2/Python-3.1.2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.1.2/Python-3.1.2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "12c26d08d63dd636073466bb84fa8041", + "filesize": 50503680, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 871, + "fields": { + "created": "2014-03-20T22:38:25.009Z", + "updated": "2014-03-20T22:38:25.023Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-246-Gzipped-source-tarball", + "os": 3, + "release": 168, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.4.6/Python-2.4.6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.6/Python-2.4.6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d408bb001550778484081b41174dd5e6", + "filesize": 39761920, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 872, + "fields": { + "created": "2014-03-20T22:38:25.210Z", + "updated": "2014-03-20T22:38:25.225Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-246-bzip2-compressed-source-tarball", + "os": 3, + "release": 168, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.4.6/Python-2.4.6.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.6/Python-2.4.6.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "76083277f6c7e4d78992f36d7ad9018d", + "filesize": 8154677, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 873, + "fields": { + "created": "2014-03-20T22:38:25.878Z", + "updated": "2014-03-20T22:38:25.893Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-266-Windows-help-file", + "os": 1, + "release": 169, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.6/python266.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.9/python266.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "29af0ada063ca98257a7d4e3e685e2e8", + "filesize": 5468483, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 874, + "fields": { + "created": "2014-03-20T22:38:26.078Z", + "updated": "2014-03-20T22:38:26.092Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-266-Windows-x86-MSI-installer", + "os": 1, + "release": 169, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.6/python-2.6.6.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.6/python-2.6.6.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "80b1ef074a3b86f34a2e6b454a05c8eb", + "filesize": 15227904, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 875, + "fields": { + "created": "2014-03-20T22:38:26.288Z", + "updated": "2017-07-18T21:41:30.966Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-266-Windows-x86-64-MSI-installer", + "os": 1, + "release": 169, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.6/python-2.6.6.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.6/python-2.6.6.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6f91625fe7744771da04dd1cabef0adc", + "filesize": 15561216, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 876, + "fields": { + "created": "2014-03-20T22:38:26.497Z", + "updated": "2014-03-20T22:38:26.511Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-266-bzip2-compressed-source-tarball", + "os": 3, + "release": 169, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.6/Python-2.6.6.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.6/Python-2.6.6.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cf4e6881bb84a7ce6089e4a307f71f14", + "filesize": 11080872, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 877, + "fields": { + "created": "2014-03-20T22:38:26.694Z", + "updated": "2014-03-20T22:38:26.708Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-266-Gzipped-source-tarball", + "os": 3, + "release": 169, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9a5df978065cc061fa9299780c337e74", + "filesize": 59187200, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 878, + "fields": { + "created": "2014-03-20T22:38:26.901Z", + "updated": "2014-03-20T22:38:26.915Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-266-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 169, + "description": "for Mac OS X 10.3 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.6/python-2.6.6-macosx10.3.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.6/python-2.6.6-macosx10.3.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f9b532a7e674a4d67fa214419c83398a", + "filesize": 20452372, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 879, + "fields": { + "created": "2014-03-20T22:38:27.557Z", + "updated": "2014-03-20T22:38:27.572Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-233-bzip2-compressed-source-tarball", + "os": 3, + "release": 170, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.3.3/Python-2.3.3.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.3/Python-2.3.3.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "70ada9f65742ab2c77a96bcd6dffd9b1", + "filesize": 7195007, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 880, + "fields": { + "created": "2014-03-20T22:38:27.769Z", + "updated": "2014-03-20T22:38:27.783Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer", + "slug": "python-233-Windows-installer", + "os": 1, + "release": 170, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.3.3/Python-2.3.3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.3/Python-2.3.3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "92b8e2bb82f0589b70ef5afff204da39", + "filesize": 9559046, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 881, + "fields": { + "created": "2014-03-20T22:38:27.973Z", + "updated": "2014-03-20T22:38:27.987Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-233-Gzipped-source-tarball", + "os": 3, + "release": 170, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.3.3/Python-2.3.3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.3.3/Python-2.3.3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4d448cb51d7729eb5710c751fbdbe113", + "filesize": 35993600, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 882, + "fields": { + "created": "2014-03-20T22:38:28.608Z", + "updated": "2014-03-20T22:38:28.622Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-267-Gzipped-source-tarball", + "os": 3, + "release": 171, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.7/Python-2.6.7.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.7/Python-2.6.7.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "73c634cfc9d6894902c423f6fa4ed313", + "filesize": 59197440, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 883, + "fields": { + "created": "2014-03-20T22:38:28.811Z", + "updated": "2014-03-20T22:38:28.826Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-267-bzip2-compressed-source-tarball", + "os": 3, + "release": 171, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.7/Python-2.6.7.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.7/Python-2.6.7.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d40ef58ed88438a870bbeb0ac5d4217b", + "filesize": 11084667, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 884, + "fields": { + "created": "2014-03-20T22:38:29.473Z", + "updated": "2014-03-20T22:38:29.489Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-254-Windows-x86-MSI-installer", + "os": 1, + "release": 172, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5.4/python-2.5.4.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.4/python-2.5.4.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b4bbaf5a24f7f0f5389706d768b4d210", + "filesize": 11323392, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 886, + "fields": { + "created": "2014-03-20T22:38:32.274Z", + "updated": "2014-03-20T22:38:32.290Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-254-Gzipped-source-tarball", + "os": 3, + "release": 172, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.5.4/Python-2.5.4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.4/Python-2.5.4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f58e4d4cd0e7764f187f775f2a0a4384", + "filesize": 50155520, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 887, + "fields": { + "created": "2014-03-20T22:38:32.484Z", + "updated": "2017-07-18T21:41:25.097Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-254-Windows-x86-64-MSI-installer", + "os": 1, + "release": 172, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5.4/python-2.5.4.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.4/python-2.5.4.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b1e1e2a43324b0b6ddaff101ecbd8913", + "filesize": 11340800, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 888, + "fields": { + "created": "2014-03-20T22:38:32.685Z", + "updated": "2014-03-20T22:38:32.700Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-254-Windows-help-file", + "os": 1, + "release": 172, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5.4/Python25.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.1/Python25.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "46d82531cfb9384d19d1bb4c9bbcfbab", + "filesize": 4182312, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 889, + "fields": { + "created": "2014-03-20T22:38:32.888Z", + "updated": "2014-03-20T22:38:32.903Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-254-bzip2-compressed-source-tarball", + "os": 3, + "release": 172, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.5.4/Python-2.5.4.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.4/Python-2.5.4.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "394a5f56a5ce811fb0f023197ec0833e", + "filesize": 9821313, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 890, + "fields": { + "created": "2014-03-20T22:38:33.107Z", + "updated": "2014-03-20T22:38:33.123Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X installer", + "slug": "python-254-Mac-OS-X-installer", + "os": 2, + "release": 172, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.5.4/python-2.5.4-macosx.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.5.4/python-2.5.4-macosx.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d8bd62fd175f5f9e9f4573e31096747e", + "filesize": 19277129, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 891, + "fields": { + "created": "2014-03-20T22:38:33.750Z", + "updated": "2017-07-18T23:09:51.273Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-242-Windows-x86-MSI-installer", + "os": 1, + "release": 173, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.4.2/python-2.4.2.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.2/python-2.4.2.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f9a189a11316dc523732b38334c9dd7b", + "filesize": 8110080, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 892, + "fields": { + "created": "2014-03-20T22:38:33.958Z", + "updated": "2014-03-20T22:38:33.973Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-242-Windows-help-file", + "os": 1, + "release": 173, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.4.2/python24.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.4/python24.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0ea24d9d000c773760a6eae98506b8c3", + "filesize": 3768458, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 893, + "fields": { + "created": "2014-03-20T22:38:34.181Z", + "updated": "2014-03-20T22:38:34.196Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-242-Gzipped-source-tarball", + "os": 3, + "release": 173, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.4.2/Python-2.4.2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.2/Python-2.4.2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "15a46a67c031a378b67b1f978ac56a51", + "filesize": 39311360, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 895, + "fields": { + "created": "2014-03-20T22:38:36.402Z", + "updated": "2014-03-20T22:38:36.417Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-242-bzip2-compressed-source-tarball", + "os": 3, + "release": 173, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.4.2/Python-2.4.2.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.4.2/Python-2.4.2.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "98db1465629693fc434d4dc52db93838", + "filesize": 7853169, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 896, + "fields": { + "created": "2014-03-20T22:38:37.020Z", + "updated": "2014-03-20T22:38:37.034Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "python-270-Windows-help-file", + "os": 1, + "release": 174, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7/python27.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7/python27.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "575156d33dc71b6581865a374f5c7ad2", + "filesize": 5754439, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 897, + "fields": { + "created": "2014-03-20T22:38:37.224Z", + "updated": "2014-03-20T22:38:37.238Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-270-Gzipped-source-tarball", + "os": 3, + "release": 174, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7/Python-2.7.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7/Python-2.7.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dd7c8845ebc482b9ec808dcef95906f5", + "filesize": 63098880, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 898, + "fields": { + "created": "2014-03-20T22:38:37.422Z", + "updated": "2014-03-20T22:38:37.436Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "python-270-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 174, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7/python-2.7-macosx10.5.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7/python-2.7-macosx10.5.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bb3d6f1e300da7fbc2730f1af9317d99", + "filesize": 21509961, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 899, + "fields": { + "created": "2014-03-20T22:38:37.625Z", + "updated": "2014-03-20T22:38:37.644Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-270-Windows-x86-MSI-installer", + "os": 1, + "release": 174, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7/python-2.7.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7/python-2.7.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1719febcbc0e0af3a6d3a47ba5fbf851", + "filesize": 15913472, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 900, + "fields": { + "created": "2014-03-20T22:38:37.826Z", + "updated": "2017-07-18T21:41:31.801Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-270-Windows-x86-64-MSI-installer", + "os": 1, + "release": 174, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7/python-2.7.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7/python-2.7.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bd0dc174cbefbc37064ea81db1f669b7", + "filesize": 16247296, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 902, + "fields": { + "created": "2014-03-20T22:38:40.044Z", + "updated": "2014-03-20T22:38:40.059Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-270-bzip2-compressed-source-tarball", + "os": 3, + "release": 174, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7/Python-2.7.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7/Python-2.7.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0e8c9ec32abf5b732bea7d91b38c3339", + "filesize": 11735195, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 903, + "fields": { + "created": "2014-03-20T22:38:40.674Z", + "updated": "2014-03-20T22:38:40.689Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "python-264-Gzipped-source-tarball", + "os": 3, + "release": 175, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.4/Python-2.6.4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.4/Python-2.6.4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "97b09eab5d1bca5c1e7fb76b00fc9ba0", + "filesize": 57896960, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 904, + "fields": { + "created": "2014-03-20T22:38:40.872Z", + "updated": "2014-03-20T22:38:40.886Z", + "creator": null, + "last_modified_by": null, + "name": "bzip2 compressed source tarball", + "slug": "python-264-bzip2-compressed-source-tarball", + "os": 3, + "release": 175, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.6.4/Python-2.6.4.tar.bz2", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.4/Python-2.6.4.tar.bz2.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fee5408634a54e721a93531aba37f8c1", + "filesize": 11249486, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 905, + "fields": { + "created": "2014-03-20T22:38:41.069Z", + "updated": "2017-07-18T21:41:29.547Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "python-264-Windows-x86-64-MSI-installer", + "os": 1, + "release": 175, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.4/python-2.6.4.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.4/python-2.6.4.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d6c51dfa162bbecc22cfcf11544243f7", + "filesize": 15223296, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 906, + "fields": { + "created": "2014-03-20T22:38:41.273Z", + "updated": "2014-03-20T22:38:41.288Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "python-264-Windows-x86-MSI-installer", + "os": 1, + "release": 175, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.4/python-2.6.4.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.4/python-2.6.4.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2e2b60ae73e9e99cd343a3fe9ed6e770", + "filesize": 14890496, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 907, + "fields": { + "created": "2014-03-20T22:38:41.486Z", + "updated": "2014-03-20T22:38:41.500Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X installer", + "slug": "python-264-Mac-OS-X-installer", + "os": 2, + "release": 175, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.6.4/python-2.6.4_macosx10.3.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.6.4/python-2.6.4_macosx10.3.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "252c4d06cb84132c42d00fae93ee8ceb", + "filesize": 20347856, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 917, + "fields": { + "created": "2014-05-05T11:23:35.823Z", + "updated": "2014-05-05T11:23:35.837Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-4-1-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 176, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.1/python-3.4.1rc1-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/python-3.4.1rc1-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "297bae844e63c62a8d7926517eb6adf4", + "filesize": 22899257, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 918, + "fields": { + "created": "2014-05-05T11:23:36.183Z", + "updated": "2017-07-18T21:42:01.511Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "3-4-1-rc1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 176, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.1/python-3.4.1rc1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/python-3.4.1rc1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d4d7f15976992cc69fcfb4c7d2cf6560", + "filesize": 25255936, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 919, + "fields": { + "created": "2014-05-05T11:23:36.976Z", + "updated": "2014-05-05T11:23:36.990Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-4-1-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 176, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.1/Python-3.4.1rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/Python-3.4.1rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fba41e2d0b26b9042791eff642428b14", + "filesize": 14105008, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 920, + "fields": { + "created": "2014-05-05T11:23:37.315Z", + "updated": "2014-05-05T11:23:37.329Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "3-4-1-rc1-Windows-x86-MSI-installer", + "os": 1, + "release": 176, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.1/python-3.4.1rc1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/python-3.4.1rc1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fff0fe9cf48cbd6ef439665991650ed0", + "filesize": 24551424, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 921, + "fields": { + "created": "2014-05-05T11:23:38.126Z", + "updated": "2014-05-05T11:23:38.141Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "3-4-1-rc1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 176, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.1/python-3.4.1rc1.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/python-3.4.1rc1.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "525f88136ad791f665ef64298b9c8ed0", + "filesize": 24121026, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 922, + "fields": { + "created": "2014-05-05T11:23:38.448Z", + "updated": "2014-05-05T11:23:38.462Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-4-1-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 176, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.1/python-3.4.1rc1-macosx10.5.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/python-3.4.1rc1-macosx10.5.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0d2449cdb0e6d29c86c9b31717964fb2", + "filesize": 22831000, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 923, + "fields": { + "created": "2014-05-05T11:23:39.364Z", + "updated": "2014-05-05T11:23:39.378Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "3-4-1-rc1-Windows-debug-information-files", + "os": 1, + "release": 176, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.1/python-3.4.1rc1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/python-3.4.1rc1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0f87f551df1653afe4119ba75e30fbb0", + "filesize": 36744364, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 924, + "fields": { + "created": "2014-05-05T11:23:39.682Z", + "updated": "2014-05-05T11:23:39.697Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-4-1-rc1-Gzipped-source-tarball", + "os": 3, + "release": 176, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.1/Python-3.4.1rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/Python-3.4.1rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "618f398f53260dd50303795bbe432906", + "filesize": 19261231, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 925, + "fields": { + "created": "2014-05-05T11:23:40.481Z", + "updated": "2014-05-05T11:23:40.496Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-4-1-rc1-Windows-help-file", + "os": 1, + "release": 176, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.1/python341rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/python341rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aa70bee4837e4f9d583b8abb85a7b784", + "filesize": 7295965, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 937, + "fields": { + "created": "2014-05-19T05:34:31.528Z", + "updated": "2014-05-19T05:34:31.543Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-4-1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 178, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.1/python-3.4.1-macosx10.5.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/python-3.4.1-macosx10.5.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "534f8ec2f5ad5539f9165b3125b5e959", + "filesize": 22692757, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 938, + "fields": { + "created": "2014-05-19T05:34:32.707Z", + "updated": "2014-05-19T05:34:32.721Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "3-4-1-Windows-debug-information-files", + "os": 1, + "release": 178, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.1/python-3.4.1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/python-3.4.1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9ce29e8356cf13f88e41f7595c2d7399", + "filesize": 36744364, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 939, + "fields": { + "created": "2014-05-19T05:34:33.522Z", + "updated": "2017-07-18T21:42:00.985Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "3-4-1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 178, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.1/python-3.4.1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/python-3.4.1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "25440653f27ee1597fd6b3e15eee155f", + "filesize": 25104384, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 940, + "fields": { + "created": "2014-05-19T05:34:33.834Z", + "updated": "2014-09-11T16:06:49.072Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-4-1-XZ-compressed-source-tarball", + "os": 3, + "release": 178, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.1/Python-3.4.1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/Python-3.4.1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6cafc183b4106476dd73d5738d7f616a", + "filesize": 14125788, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 941, + "fields": { + "created": "2014-05-19T05:34:34.516Z", + "updated": "2014-05-19T05:34:34.531Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "3-4-1-Windows-x86-MSI-installer", + "os": 1, + "release": 178, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.1/python-3.4.1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/python-3.4.1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4940c3fad01ffa2ca7f9cc43a005b89a", + "filesize": 24408064, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 942, + "fields": { + "created": "2014-05-19T05:34:34.838Z", + "updated": "2014-09-11T16:06:49.064Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-4-1-Gzipped-source-tarball", + "os": 3, + "release": 178, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.1/Python-3.4.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/Python-3.4.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "26695450087f8587b26d0b6a63844af5", + "filesize": 19113124, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 943, + "fields": { + "created": "2014-05-19T05:34:35.484Z", + "updated": "2014-05-19T05:34:35.497Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "3-4-1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 178, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.1/python-3.4.1.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/python-3.4.1.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "44a2d4d3c62a147f5a9f733b030490d1", + "filesize": 24129218, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 944, + "fields": { + "created": "2014-05-19T05:34:37.056Z", + "updated": "2014-05-19T05:34:37.071Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-4-1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 178, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.1/python-3.4.1-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/python-3.4.1-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "316a2f83edff73bbbcb2c84390bee2db", + "filesize": 22776248, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 945, + "fields": { + "created": "2014-05-19T05:34:38.117Z", + "updated": "2014-05-19T05:34:38.132Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-4-1-Windows-help-file", + "os": 1, + "release": 178, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.1/python341.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.1/python341.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6ff47ff938b15d2900f3c7311ab629e5", + "filesize": 7297786, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 946, + "fields": { + "created": "2014-06-01T20:09:23.375Z", + "updated": "2014-06-01T20:09:23.392Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2-7-7-rc1-Gzipped-source-tarball", + "os": 3, + "release": 177, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.7/Python-2.7.7rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/Python-2.7.7rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "32a645e2f61d084f9681905724c85b5c", + "filesize": 14811482, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 947, + "fields": { + "created": "2014-06-01T20:09:23.893Z", + "updated": "2014-06-01T20:09:23.907Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "2-7-7-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 177, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.7/python-2.7.7rc1-macosx10.5.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/python-2.7.7rc1-macosx10.5.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6d281e567af1a5877d09f7f25978b2e4", + "filesize": 20446616, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 948, + "fields": { + "created": "2014-06-01T20:09:24.579Z", + "updated": "2014-06-01T20:09:24.593Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2-7-7-rc1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 177, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.7/python-2.7.7rc1.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/python-2.7.7rc1.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1a4d82912d6fe10f9f902b7ee3f1c6ec", + "filesize": 17589314, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 949, + "fields": { + "created": "2014-06-01T20:09:24.987Z", + "updated": "2014-06-01T20:09:25.001Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2-7-7-rc1-Windows-x86-MSI-installer", + "os": 1, + "release": 177, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.7/python-2.7.7rc1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/python-2.7.7rc1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fb1cec5992e7ee6c84de36339cc6a665", + "filesize": 16093184, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 950, + "fields": { + "created": "2014-06-01T20:09:25.971Z", + "updated": "2014-06-01T20:09:25.989Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2-7-7-rc1-Windows-debug-information-files", + "os": 1, + "release": 177, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.7/python-2.7.7rc1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/python-2.7.7rc1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a743b8b85ee35449a0cc1dbf709b3a73", + "filesize": 18310210, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 951, + "fields": { + "created": "2014-06-01T20:09:27.099Z", + "updated": "2014-06-01T20:09:27.113Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2-7-7-rc1-Windows-help-file", + "os": 1, + "release": 177, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.7/python277rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/python277rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "58df11ab556f488aec15886c236773cb", + "filesize": 6048399, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 952, + "fields": { + "created": "2014-06-01T20:09:28.042Z", + "updated": "2014-06-01T20:09:28.056Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2-7-7-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 177, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.7/Python-2.7.7rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/Python-2.7.7rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1bed9f1b44afd40751289547cc6ad622", + "filesize": 10497544, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 953, + "fields": { + "created": "2014-06-01T20:09:29.070Z", + "updated": "2014-06-01T20:09:29.085Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "2-7-7-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 177, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.7/python-2.7.7rc1-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/python-2.7.7rc1-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6a89dfa29f42823ccfb620b8a9ca3dbf", + "filesize": 20332108, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 954, + "fields": { + "created": "2014-06-01T20:09:30.390Z", + "updated": "2017-07-18T21:41:42.679Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2-7-7-rc1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 177, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.7/python-2.7.7rc1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/python-2.7.7rc1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3128948a9ce01234e09584b5b506012c", + "filesize": 16523264, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 964, + "fields": { + "created": "2014-06-01T22:48:58.050Z", + "updated": "2014-06-01T22:48:58.067Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2-7-7-Windows-x86-MSI-installer", + "os": 1, + "release": 179, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.7/python-2.7.7.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/python-2.7.7.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "35ff484a9cf08d155e64dc0fb4965f90", + "filesize": 16674816, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 965, + "fields": { + "created": "2014-06-01T22:48:58.361Z", + "updated": "2014-06-01T22:48:58.379Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2-7-7-XZ-compressed-source-tarball", + "os": 3, + "release": 179, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.7/Python-2.7.7.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/Python-2.7.7.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "41f7348b348e3f72fcfb4f4d76701352", + "filesize": 10496500, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 966, + "fields": { + "created": "2014-06-01T22:48:58.650Z", + "updated": "2014-06-01T22:48:58.665Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2-7-7-Windows-help-file", + "os": 1, + "release": 179, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.7/python277.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/python277.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0b7bd740a41edda10cfe403fa8a00ca3", + "filesize": 6049272, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 967, + "fields": { + "created": "2014-06-01T22:48:59.008Z", + "updated": "2014-06-01T22:48:59.022Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2-7-7-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 179, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.7/python-2.7.7.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/python-2.7.7.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "99e68b15fb43a5f25be45e0bff3f7576", + "filesize": 23643202, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 968, + "fields": { + "created": "2014-06-01T22:48:59.358Z", + "updated": "2014-06-01T22:48:59.376Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "2-7-7-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 179, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.7/python-2.7.7-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/python-2.7.7-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7f79090c979299e3f5e918e150a75c83", + "filesize": 20330236, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 969, + "fields": { + "created": "2014-06-01T22:48:59.719Z", + "updated": "2014-06-01T22:48:59.733Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2-7-7-Windows-debug-information-files", + "os": 1, + "release": 179, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.7/python-2.7.7-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/python-2.7.7-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "abb3d9c5207045e5e874c3bbccbbd270", + "filesize": 25297986, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 970, + "fields": { + "created": "2014-06-01T22:49:00.553Z", + "updated": "2014-06-01T22:49:00.571Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "2-7-7-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 179, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.7/python-2.7.7-macosx10.5.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/python-2.7.7-macosx10.5.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "73aa1007f721bcb4addf3255cc9c9494", + "filesize": 20444003, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 971, + "fields": { + "created": "2014-06-01T22:49:01.368Z", + "updated": "2017-07-18T21:41:41.827Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2-7-7-Windows-x86-64-MSI-installer", + "os": 1, + "release": 179, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.7/python-2.7.7.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/python-2.7.7.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "497e749747ebd31e40b06bffdfebb2ee", + "filesize": 17199104, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 972, + "fields": { + "created": "2014-06-01T22:49:02.189Z", + "updated": "2014-06-01T22:49:02.203Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2-7-7-Gzipped-source-tarball", + "os": 3, + "release": 179, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.7/Python-2.7.7.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.7/Python-2.7.7.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cf842800b67841d64e7fb3cd8acb5663", + "filesize": 14809415, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 973, + "fields": { + "created": "2014-07-02T04:47:13.668Z", + "updated": "2014-07-02T04:47:13.682Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2-7-8-Windows-x86-MSI-installer", + "os": 1, + "release": 180, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.8/python-2.7.8.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.8/python-2.7.8.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ef95d83ace85d1577b915dbd481977d4", + "filesize": 16703488, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 974, + "fields": { + "created": "2014-07-02T04:47:14.573Z", + "updated": "2014-07-02T04:47:14.594Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2-7-8-Windows-debug-information-files", + "os": 1, + "release": 180, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.8/python-2.7.8-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.8/python-2.7.8-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "83c1b28264ca8eb1ea97100065988192", + "filesize": 25355330, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 975, + "fields": { + "created": "2014-07-02T04:47:15.573Z", + "updated": "2014-07-02T04:47:15.587Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "2-7-8-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 180, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.8/python-2.7.8-macosx10.5.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.8/python-2.7.8-macosx10.5.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "23e9a3e4e0e4ef2f0989148edaa507e5", + "filesize": 20469575, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 976, + "fields": { + "created": "2014-07-02T04:47:15.885Z", + "updated": "2017-07-18T21:41:43.518Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2-7-8-Windows-x86-64-MSI-installer", + "os": 1, + "release": 180, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.8/python-2.7.8.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.8/python-2.7.8.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "38cadfcac6dd56ecf772f2f3f14ee846", + "filesize": 17231872, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 977, + "fields": { + "created": "2014-07-02T04:47:16.927Z", + "updated": "2014-07-02T04:47:16.941Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "2-7-8-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 180, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.8/python-2.7.8-macosx10.6.dmg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.8/python-2.7.8-macosx10.6.dmg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "183f72950e4d04a7137fc29848740d09", + "filesize": 20370972, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 978, + "fields": { + "created": "2014-07-02T04:47:17.267Z", + "updated": "2014-07-02T04:47:17.281Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2-7-8-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 180, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.8/python-2.7.8.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.8/python-2.7.8.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1d573b6422d4b00aeb39c1ed5aa05d8c", + "filesize": 23561282, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 979, + "fields": { + "created": "2014-07-02T04:47:18.162Z", + "updated": "2014-09-11T16:06:12.984Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2-7-8-Gzipped-source-tarball", + "os": 3, + "release": 180, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d4bca0159acb0b44a781292b5231936f", + "filesize": 14846119, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 980, + "fields": { + "created": "2014-07-02T04:47:19.160Z", + "updated": "2014-09-11T16:06:12.991Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2-7-8-XZ-compressed-source-tarball", + "os": 3, + "release": 180, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d235bdfa75b8396942e360a70487ee00", + "filesize": 10525244, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 981, + "fields": { + "created": "2014-07-02T04:47:19.452Z", + "updated": "2014-07-02T04:47:19.466Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2-7-8-Windows-help-file", + "os": 1, + "release": 180, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.8/python278.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.8/python278.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1cda33c3546f20b484869bed243d8726", + "filesize": 6062806, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 982, + "fields": { + "created": "2014-09-22T14:02:48.828Z", + "updated": "2014-09-22T14:02:48.856Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "3-4-2-rc1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 181, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.2/python-3.4.2rc1.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/python-3.4.2rc1.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ce96b08e03826acae67a1a03e942174c", + "filesize": 24104642, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 983, + "fields": { + "created": "2014-09-22T14:02:49.373Z", + "updated": "2014-09-22T14:02:49.394Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-4-2-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 181, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.2/Python-3.4.2rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/Python-3.4.2rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e5ca23606ee57b93dfc6c8d09d95cdbf", + "filesize": 14174672, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 984, + "fields": { + "created": "2014-09-22T14:02:49.582Z", + "updated": "2014-09-22T14:02:49.598Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-4-2-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 181, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.2/python-3.4.2rc1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/python-3.4.2rc1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d86a6dc6c93ed3f9c8a9dfd039eb684a", + "filesize": 22762516, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 985, + "fields": { + "created": "2014-09-22T14:02:49.801Z", + "updated": "2014-09-22T14:02:49.816Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-4-2-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 181, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.2/python-3.4.2rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/python-3.4.2rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ac30c9bc1d11014baf06543006e27cfd", + "filesize": 22853559, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 986, + "fields": { + "created": "2014-09-22T14:02:50.013Z", + "updated": "2014-09-22T14:02:50.028Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-4-2-rc1-Gzipped-source-tarball", + "os": 3, + "release": 181, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.2/Python-3.4.2rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/Python-3.4.2rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "95069fceb3c1190a576b8c4f41702a01", + "filesize": 19281545, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 987, + "fields": { + "created": "2014-09-22T14:02:50.258Z", + "updated": "2014-09-22T14:02:50.273Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "3-4-2-rc1-Windows-x86-MSI-installer", + "os": 1, + "release": 181, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.2/python-3.4.2rc1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/python-3.4.2rc1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9c52cd40cb5ec8eb887822dce9824ddc", + "filesize": 24530944, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 988, + "fields": { + "created": "2014-09-22T14:02:50.782Z", + "updated": "2014-09-22T14:02:50.797Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "3-4-2-rc1-Windows-debug-information-files", + "os": 1, + "release": 181, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.2/python-3.4.2rc1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/python-3.4.2rc1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a2b74edf76aff050cbda6aba68a9e6f3", + "filesize": 36785324, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 989, + "fields": { + "created": "2014-09-22T14:02:51.210Z", + "updated": "2014-09-22T14:02:51.226Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-4-2-rc1-Windows-help-file", + "os": 1, + "release": 181, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.2/python342rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/python342rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "42084873a6556ee3a66c97d21a61ab04", + "filesize": 7360915, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 990, + "fields": { + "created": "2014-09-22T14:02:51.694Z", + "updated": "2017-07-18T21:42:03.276Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "3-4-2-rc1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 181, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.2/python-3.4.2rc1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/python-3.4.2rc1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0fed82bc18feda23f71ee1d16b641751", + "filesize": 25235456, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 991, + "fields": { + "created": "2014-10-04T12:52:33.213Z", + "updated": "2014-10-04T12:52:33.229Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-2-6-rc1-Gzipped-source-tarball", + "os": 3, + "release": 182, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.6/Python-3.2.6rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.6/Python-3.2.6rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0f918674678aac48b8270d28d7af29a7", + "filesize": 13136556, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 992, + "fields": { + "created": "2014-10-04T12:52:33.770Z", + "updated": "2014-10-04T12:52:33.786Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-2-6-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 182, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.6/Python-3.2.6rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.6/Python-3.2.6rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "25f70046ae3e84a33af21a8a9f0474f1", + "filesize": 9241952, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 993, + "fields": { + "created": "2014-10-04T13:05:55.715Z", + "updated": "2014-10-04T13:05:55.733Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-3-6-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 183, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.6/Python-3.3.6rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.6/Python-3.3.6rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "811103b0ed8f18583e18af189fd96def", + "filesize": 12129652, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 994, + "fields": { + "created": "2014-10-04T13:05:56.209Z", + "updated": "2014-10-04T13:05:56.224Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-3-6-rc1-Gzipped-source-tarball", + "os": 3, + "release": 183, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.6/Python-3.3.6rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.6/Python-3.3.6rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "35344936a6e59e57ca5992bd10ef93af", + "filesize": 16887301, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 995, + "fields": { + "created": "2014-10-08T08:50:12.326Z", + "updated": "2014-10-08T08:50:12.343Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-4-2-XZ-compressed-source-tarball", + "os": 3, + "release": 184, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.2/Python-3.4.2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/Python-3.4.2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "36fc7327c02c6f12fa24fc9ba78039e3", + "filesize": 14223804, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 996, + "fields": { + "created": "2014-10-08T08:50:12.847Z", + "updated": "2014-10-08T08:50:12.863Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-4-2-Gzipped-source-tarball", + "os": 3, + "release": 184, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.2/Python-3.4.2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/Python-3.4.2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5566bc7e1fdf6bed45f9a750d5f80fc2", + "filesize": 19257270, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 997, + "fields": { + "created": "2014-10-08T08:50:13.300Z", + "updated": "2014-10-08T08:50:13.318Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-4-2-Windows-help-file", + "os": 1, + "release": 184, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.2/python342.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/python342.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0735dab44019fb59a32c843fbe6576d9", + "filesize": 7361836, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 998, + "fields": { + "created": "2014-10-08T08:50:13.778Z", + "updated": "2014-10-08T08:50:13.793Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-4-2-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 184, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.2/python-3.4.2-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/python-3.4.2-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "20c89ed88254aa0eeb4bb44ddfa7fc16", + "filesize": 22851716, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 999, + "fields": { + "created": "2014-10-08T08:50:14.244Z", + "updated": "2014-10-08T08:50:14.259Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-4-2-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 184, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.2/python-3.4.2-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/python-3.4.2-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "39635ba1fc5f471639a122c39bf12912", + "filesize": 22759983, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1000, + "fields": { + "created": "2014-10-08T08:50:14.720Z", + "updated": "2014-10-08T08:50:14.737Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "3-4-2-Windows-x86-MSI-installer", + "os": 1, + "release": 184, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.2/python-3.4.2.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/python-3.4.2.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0aa1a556892d8dc0b60c19bf3102fb3f", + "filesize": 24530944, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1001, + "fields": { + "created": "2014-10-08T08:50:14.989Z", + "updated": "2014-10-08T08:50:15.004Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "3-4-2-Windows-debug-information-files", + "os": 1, + "release": 184, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.2/python-3.4.2-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/python-3.4.2-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d5dd462fb786c35e228375a53c701e88", + "filesize": 36785324, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1002, + "fields": { + "created": "2014-10-08T08:50:15.481Z", + "updated": "2017-07-18T21:42:02.417Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "3-4-2-Windows-x86-64-MSI-installer", + "os": 1, + "release": 184, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.2/python-3.4.2.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/python-3.4.2.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "45140ce7891a18cd52530cecdf7717ff", + "filesize": 25235456, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1003, + "fields": { + "created": "2014-10-08T08:50:15.985Z", + "updated": "2014-10-08T08:50:16.000Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "3-4-2-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 184, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.2/python-3.4.2.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.2/python-3.4.2.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e14696859c8b65b9016ec6a29b0302ed", + "filesize": 24137410, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1004, + "fields": { + "created": "2014-10-12T07:15:57.080Z", + "updated": "2014-10-12T07:15:57.098Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-2-6-Gzipped-source-tarball", + "os": 3, + "release": 185, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.6/Python-3.2.6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.6/Python-3.2.6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "23815d82ae706e9b781ca65865353d39", + "filesize": 13135239, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1005, + "fields": { + "created": "2014-10-12T07:15:57.602Z", + "updated": "2014-10-12T07:15:57.617Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-2-6-XZ-compressed-source-tarball", + "os": 3, + "release": 185, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.2.6/Python-3.2.6.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.2.6/Python-3.2.6.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e0ba4360dfcb4aec735e666cc0ae7b0e", + "filesize": 9243292, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1006, + "fields": { + "created": "2014-10-12T07:23:50.725Z", + "updated": "2014-10-12T07:23:50.741Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-3-6-XZ-compressed-source-tarball", + "os": 3, + "release": 186, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.6/Python-3.3.6.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.6/Python-3.3.6.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "67b8ddd9ee600d636423ada321b8da86", + "filesize": 12116460, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1007, + "fields": { + "created": "2014-10-12T07:23:51.211Z", + "updated": "2014-10-12T07:23:51.230Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-3-6-Gzipped-source-tarball", + "os": 3, + "release": 186, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.6/Python-3.3.6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.6/Python-3.3.6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cdb3cd08f96f074b3f3994ccb51063e9", + "filesize": 16887234, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1040, + "fields": { + "created": "2014-11-26T18:02:34.815Z", + "updated": "2017-07-18T21:41:44.877Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2-7-9-rc1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 187, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.9/python-2.7.9rc1.amd64.msi", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4608562f0fe56324ce6057cf8aae70c2", + "filesize": 18833408, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1041, + "fields": { + "created": "2014-11-26T18:02:35.028Z", + "updated": "2014-11-26T18:02:35.038Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2-7-9-rc1-Windows-x86-MSI-installer", + "os": 1, + "release": 187, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.9/python-2.7.9rc1.msi", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9a14a63a06fbae6ad17fadb7721d57da", + "filesize": 18300928, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1042, + "fields": { + "created": "2014-11-26T18:02:35.489Z", + "updated": "2014-11-26T18:02:35.499Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2-7-9-rc1-Gzipped-source-tarball", + "os": 3, + "release": 187, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.9/Python-2.7.9rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.9/Python-2.7.9rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "59fd7bd181fc26464dfac8c4a61174d3", + "filesize": 16646401, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1043, + "fields": { + "created": "2014-11-26T18:02:35.734Z", + "updated": "2014-11-26T18:02:35.745Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2-7-9-rc1-Windows-debug-information-files", + "os": 1, + "release": 187, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.9/python-2.7.9rc1-pdb.zip", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8ab042c419a07c5f5f8ccfdf13a6e6e3", + "filesize": 25969730, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1044, + "fields": { + "created": "2014-11-26T18:02:36.189Z", + "updated": "2014-11-26T18:02:36.201Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2-7-9-rc1-Windows-help-file", + "os": 1, + "release": 187, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.9/python279rc1.chm", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "00e934739ce412c1066d9292128e9601", + "filesize": 6120787, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1045, + "fields": { + "created": "2014-11-26T18:02:36.665Z", + "updated": "2014-11-26T18:02:36.675Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2-7-9-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 187, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.9/Python-2.7.9rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.9/Python-2.7.9rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3976ad214d5813fd659de13e3c446390", + "filesize": 12159788, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1046, + "fields": { + "created": "2014-11-26T18:02:36.890Z", + "updated": "2014-11-26T18:02:36.901Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "2-7-9-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 187, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.9/python-2.7.9rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.9/python-2.7.9rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3c38713a1beadfa520f2a0c1cc25af87", + "filesize": 22002818, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1047, + "fields": { + "created": "2014-11-26T18:02:37.112Z", + "updated": "2014-11-26T18:02:37.123Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2-7-9-rc1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 187, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.9/python-2.7.9rc1.amd64-pdb.zip", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "05f446b0c0bc1dd74e28cbb9ec313c23", + "filesize": 23979074, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1048, + "fields": { + "created": "2014-11-26T18:02:37.385Z", + "updated": "2014-11-26T18:02:37.396Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "2-7-9-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 187, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.9/python-2.7.9rc1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.9/python-2.7.9rc1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7388f64c61d1e5c7770d6782c50c339d", + "filesize": 22109307, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1055, + "fields": { + "created": "2014-12-10T22:29:00.568Z", + "updated": "2017-07-18T21:41:44.359Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2-7-9-Windows-x86-64-MSI-installer", + "os": 1, + "release": 188, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.9/python-2.7.9.amd64.msi", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "21ee51a9f44b7160cb6fc68e29a1ddd0", + "filesize": 18833408, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1056, + "fields": { + "created": "2014-12-10T22:29:00.847Z", + "updated": "2014-12-10T22:29:00.857Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2-7-9-XZ-compressed-source-tarball", + "os": 3, + "release": 188, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "38d530f7efc373d64a8fb1637e3baaa7", + "filesize": 12164712, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1057, + "fields": { + "created": "2014-12-10T22:29:01.314Z", + "updated": "2014-12-10T22:29:01.331Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2-7-9-Windows-x86-MSI-installer", + "os": 1, + "release": 188, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.9/python-2.7.9.msi", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3ed20d8b06dcd339f814b38861f88fc9", + "filesize": 18309120, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1058, + "fields": { + "created": "2014-12-10T22:29:01.768Z", + "updated": "2014-12-10T22:29:01.778Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "2-7-9-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 188, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.9/python-2.7.9-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.9/python-2.7.9-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8d8a26fed767302ff38bc5056612c73a", + "filesize": 23759976, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1059, + "fields": { + "created": "2014-12-10T22:29:02.005Z", + "updated": "2014-12-10T22:29:02.015Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2-7-9-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 188, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.9/python-2.7.9.amd64-pdb.zip", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "544e1137e8ecdce4f4cd2954ea520fa7", + "filesize": 23979074, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1060, + "fields": { + "created": "2014-12-10T22:29:02.203Z", + "updated": "2014-12-10T22:29:02.215Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2-7-9-Windows-help-file", + "os": 1, + "release": 188, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.9/python279.chm", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dd438e999824c48001e54a2138c4f455", + "filesize": 6120616, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1061, + "fields": { + "created": "2014-12-10T22:29:02.713Z", + "updated": "2014-12-10T22:29:02.722Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2-7-9-Windows-debug-information-files", + "os": 1, + "release": 188, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.9/python-2.7.9-pdb.zip", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c5838ec1cdd529a7065902c7573d1607", + "filesize": 25969730, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1062, + "fields": { + "created": "2014-12-10T22:29:03.202Z", + "updated": "2014-12-10T22:29:03.213Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "2-7-9-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 188, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.9/python-2.7.9-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.9/python-2.7.9-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "307c2b99a212204e7a1182a354328e94", + "filesize": 22006891, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1063, + "fields": { + "created": "2014-12-10T22:29:03.407Z", + "updated": "2014-12-10T22:29:03.417Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2-7-9-Gzipped-source-tarball", + "os": 3, + "release": 188, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5eebcaa0030dc4061156d3429657fb83", + "filesize": 16657930, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1066, + "fields": { + "created": "2015-02-08T21:24:42.224Z", + "updated": "2015-02-08T21:24:42.236Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-4-3-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 189, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.3/Python-3.4.3rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/Python-3.4.3rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5bac881b3dd7cf4d0b6d6b733eb2affa", + "filesize": 14426156, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1067, + "fields": { + "created": "2015-02-08T21:24:42.424Z", + "updated": "2015-02-08T21:24:42.434Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-4-3-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 189, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.3/python-3.4.3rc1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/python-3.4.3rc1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "359e9caacf9350cf9eb22ae66c374acf", + "filesize": 24738905, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1068, + "fields": { + "created": "2015-02-08T21:24:42.677Z", + "updated": "2015-02-08T21:24:42.689Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "3-4-3-rc1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 189, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.3/python-3.4.3rc1.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/python-3.4.3rc1.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5ff0c91d611796e06334c6ca375f54d8", + "filesize": 24260290, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1069, + "fields": { + "created": "2015-02-08T21:24:42.972Z", + "updated": "2017-07-18T21:42:04.451Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "3-4-3-rc1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 189, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.3/python-3.4.3rc1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/python-3.4.3rc1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "21146fe84fcc0b0d891f8870687f0081", + "filesize": 25550848, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1070, + "fields": { + "created": "2015-02-08T21:24:43.221Z", + "updated": "2015-02-08T21:24:43.232Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "3-4-3-rc1-Windows-x86-MSI-installer", + "os": 1, + "release": 189, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.3/python-3.4.3rc1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/python-3.4.3rc1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "008e6377367e618a4f178287cf013857", + "filesize": 24793088, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1071, + "fields": { + "created": "2015-02-08T21:24:43.412Z", + "updated": "2015-02-08T21:24:43.425Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-4-3-rc1-Windows-help-file", + "os": 1, + "release": 189, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.3/python343rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/python343rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4b2483de7e96541150330be122f1656e", + "filesize": 7406541, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1072, + "fields": { + "created": "2015-02-08T21:24:43.832Z", + "updated": "2015-02-08T21:24:43.841Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "3-4-3-rc1-Windows-debug-information-files", + "os": 1, + "release": 189, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.3/python-3.4.3rc1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/python-3.4.3rc1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c659c3c88b7d8637bfcf15ad9e09c96b", + "filesize": 36900012, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1073, + "fields": { + "created": "2015-02-08T21:24:44.056Z", + "updated": "2015-02-08T21:24:44.066Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-4-3-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 189, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.3/python-3.4.3rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/python-3.4.3rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f117f7291e17e1ee6c8685ff80a917ca", + "filesize": 23170109, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1074, + "fields": { + "created": "2015-02-08T21:24:44.169Z", + "updated": "2015-02-08T21:24:44.184Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-4-3-rc1-Gzipped-source-tarball", + "os": 3, + "release": 189, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.3/Python-3.4.3rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/Python-3.4.3rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fab0f871a76682882e080ac35439c09f", + "filesize": 19563970, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1112, + "fields": { + "created": "2015-02-08T21:52:23.269Z", + "updated": "2015-02-08T21:52:23.279Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "3-5-0-a1-Windows-x86-executable-installer", + "os": 1, + "release": 190, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a1.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d8457a909f1d2d5711f245df00725640", + "filesize": 22104208, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1113, + "fields": { + "created": "2015-02-08T21:52:23.417Z", + "updated": "2015-02-08T21:52:23.427Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-5-0-a1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 190, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "db2cc92ee6b231716a690900d80eaa65", + "filesize": 25160803, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1114, + "fields": { + "created": "2015-02-08T21:52:23.603Z", + "updated": "2015-02-08T21:52:23.613Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-5-0-a1-Windows-help-file", + "os": 1, + "release": 190, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python350a1.chm", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e306ad10de67f9823d53c8b8b5eb736a", + "filesize": 7498784, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1116, + "fields": { + "created": "2015-02-08T21:52:23.964Z", + "updated": "2015-02-08T21:52:23.975Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-5-0-a1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 190, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "81282502c8a5c04e9efb64b24ae106b3", + "filesize": 23579746, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1118, + "fields": { + "created": "2015-02-08T21:52:24.219Z", + "updated": "2015-02-08T21:52:24.230Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-5-0-a1-XZ-compressed-source-tarball", + "os": 3, + "release": 190, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3113a8138146bdc71f4eb328130f601b", + "filesize": 14721120, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1119, + "fields": { + "created": "2015-02-08T21:52:24.352Z", + "updated": "2015-02-08T21:52:24.363Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-5-0-a1-Gzipped-source-tarball", + "os": 3, + "release": 190, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f1ea32ce88ffff8787ea31302e00b05a", + "filesize": 19878483, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1121, + "fields": { + "created": "2015-02-08T21:54:59.539Z", + "updated": "2017-07-18T21:42:09.161Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "Windows-x86-64-executable-installer-for-AMD64-EM64", + "os": 1, + "release": 190, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a1-amd64.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e62c943c1ebf9143bef93b51671a11d9", + "filesize": 22844576, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1122, + "fields": { + "created": "2015-02-08T21:56:37.493Z", + "updated": "2015-02-08T21:56:37.910Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "Windows-x86-web-based-installer", + "os": 1, + "release": 190, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a1-webinstall.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "05e061e417cf311534c8a17ddc943c2b", + "filesize": 890464, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1123, + "fields": { + "created": "2015-02-08T21:58:33.194Z", + "updated": "2017-07-18T21:42:09.785Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "Windows-x86-64-web-based-installer", + "os": 1, + "release": 190, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a1-amd64-webinstall.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "34e88bb7ee92706371160dd29b2f3f75", + "filesize": 916296, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1127, + "fields": { + "created": "2015-02-25T12:42:55.692Z", + "updated": "2015-02-25T12:42:55.702Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-4-3-XZ-compressed-source-tarball", + "os": 3, + "release": 191, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7d092d1bba6e17f0d9bd21b49e441dd5", + "filesize": 14421964, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1128, + "fields": { + "created": "2015-02-25T12:42:55.877Z", + "updated": "2015-02-25T12:42:55.887Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-4-3-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 191, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.3/python-3.4.3-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/python-3.4.3-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "86b29d7dddc60b4b3fc5848de55ca704", + "filesize": 23170148, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1129, + "fields": { + "created": "2015-02-25T12:42:56.036Z", + "updated": "2015-02-25T12:42:56.045Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-4-3-Gzipped-source-tarball", + "os": 3, + "release": 191, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4281ff86778db65892c05151d5de738d", + "filesize": 19554643, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1130, + "fields": { + "created": "2015-02-25T12:42:56.179Z", + "updated": "2015-02-25T12:42:56.190Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-4-3-Windows-help-file", + "os": 1, + "release": 191, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.3/python343.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/python343.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d5703787758eb1a674101ee2b0bc28be", + "filesize": 7405996, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1131, + "fields": { + "created": "2015-02-25T12:42:56.508Z", + "updated": "2015-02-25T12:42:56.518Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "3-4-3-Windows-debug-information-files", + "os": 1, + "release": 191, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.3/python-3.4.3-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/python-3.4.3-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b3d8752e74a502db97bd0c6ef30ac60f", + "filesize": 36900012, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1132, + "fields": { + "created": "2015-02-25T12:42:56.708Z", + "updated": "2015-02-25T12:42:56.717Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "3-4-3-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 191, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.3/python-3.4.3.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/python-3.4.3.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6c1be415ae552e190ef0fb06a5de9473", + "filesize": 24301250, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1133, + "fields": { + "created": "2015-02-25T12:42:56.963Z", + "updated": "2015-02-25T12:42:56.973Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "3-4-3-Windows-x86-MSI-installer", + "os": 1, + "release": 191, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.3/python-3.4.3.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/python-3.4.3.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cb450d1cc616bfc8f7a2d6bd88780bf6", + "filesize": 24846336, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1134, + "fields": { + "created": "2015-02-25T12:42:57.208Z", + "updated": "2017-07-18T21:42:03.878Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "3-4-3-Windows-x86-64-MSI-installer", + "os": 1, + "release": 191, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.3/python-3.4.3.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/python-3.4.3.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f6ade29acaf8fcdc0463e69a6e7ccf87", + "filesize": 25550848, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1135, + "fields": { + "created": "2015-02-25T12:42:57.467Z", + "updated": "2015-02-25T12:42:57.477Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-4-3-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 191, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.3/python-3.4.3-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.3/python-3.4.3-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "548f79e55708130c755bbd0f1ddd921c", + "filesize": 24734803, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1136, + "fields": { + "created": "2015-03-09T09:15:48.558Z", + "updated": "2015-03-09T19:44:15.259Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "3-5-0-a2-Windows-x86-executable-installer", + "os": 1, + "release": 192, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a2.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "807a898a6b61696ab9c4257152a939c5", + "filesize": 28762312, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1139, + "fields": { + "created": "2015-03-09T09:15:49.169Z", + "updated": "2015-03-09T09:15:49.178Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-5-0-a2-XZ-compressed-source-tarball", + "os": 3, + "release": 192, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7c91e88f86d14340ce75fa55a16e8b9c", + "filesize": 14702080, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1140, + "fields": { + "created": "2015-03-09T09:15:54.330Z", + "updated": "2015-03-09T09:15:54.339Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-5-0-a2-Gzipped-source-tarball", + "os": 3, + "release": 192, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8e72209d95f286efb33bf96a6593d475", + "filesize": 19909359, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1141, + "fields": { + "created": "2015-03-09T09:15:54.475Z", + "updated": "2015-03-09T19:44:15.253Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-5-0-a2-Windows-help-file", + "os": 1, + "release": 192, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python350a2.chm", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "68007011a878c5cf5f498a3290085066", + "filesize": 7525910, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1143, + "fields": { + "created": "2015-03-09T09:15:54.970Z", + "updated": "2015-03-09T09:15:54.979Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-5-0-a2-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 192, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a2-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a2-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d0d88a9d7b2c33fb5b2ff641cded8816", + "filesize": 25291880, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1144, + "fields": { + "created": "2015-03-09T09:16:00.182Z", + "updated": "2015-03-09T09:16:00.191Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-5-0-a2-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 192, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a2-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a2-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b56b5cea2b60cb10836e14178e7f6c53", + "filesize": 23632991, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1145, + "fields": { + "created": "2015-03-09T09:23:51.782Z", + "updated": "2017-07-18T21:42:10.346Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "3-5-0a2-Windows-x86-64-executable-installer", + "os": 1, + "release": 192, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a2-amd64.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "91771bce1d8993071b5d766920321ca8", + "filesize": 29669336, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1146, + "fields": { + "created": "2015-03-09T09:24:58.778Z", + "updated": "2017-07-18T21:42:10.832Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "3-5-0-a2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 192, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a2-amd64-webinstall.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7b057970b302106304e943da2ccc1ead", + "filesize": 910792, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1147, + "fields": { + "created": "2015-03-09T09:26:26.913Z", + "updated": "2015-03-09T19:44:15.261Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "3-5-0-a2-Windows-x86-web-based-installer", + "os": 1, + "release": 192, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a2-webinstall.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dc2cebbb402f117f0590c7d11f662129", + "filesize": 885206, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1148, + "fields": { + "created": "2015-03-30T08:25:15.730Z", + "updated": "2015-03-30T08:25:15.741Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-5-0-a3-XZ-compressed-source-tarball", + "os": 3, + "release": 193, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4c5e7119a07edcc640527c3eaa8aa7e1", + "filesize": 14779596, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1149, + "fields": { + "created": "2015-03-30T08:25:15.835Z", + "updated": "2015-04-14T18:29:07.409Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "3-5-0-a3-Windows-x86-executable-installer", + "os": 1, + "release": 193, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a3.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "40ad08b3f94f8962a7ec5909f4ff4eaf", + "filesize": 28166488, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1150, + "fields": { + "created": "2015-03-30T08:25:15.958Z", + "updated": "2015-03-30T08:25:15.975Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-5-0-a3-Windows-help-file", + "os": 1, + "release": 193, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python350a3.chm", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dbb48cfc59b9f4d072b532c69ff0309b", + "filesize": 7596582, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1152, + "fields": { + "created": "2015-03-30T08:25:16.665Z", + "updated": "2015-03-30T08:25:16.676Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-5-0-a3-Gzipped-source-tarball", + "os": 3, + "release": 193, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5521bdf9ae9af5b794cd65477bcb02a3", + "filesize": 19945010, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1153, + "fields": { + "created": "2015-03-30T08:25:17.006Z", + "updated": "2015-03-30T08:25:17.015Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-5-0-a3-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 193, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a3-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a3-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5aeead5d0813b30fe97b2d94f52d4a41", + "filesize": 25345137, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1154, + "fields": { + "created": "2015-03-30T08:25:17.257Z", + "updated": "2015-03-30T08:25:17.267Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-5-0-a3-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 193, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a3-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a3-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9c37e366c05133ff5337dcf84cf7c6de", + "filesize": 23682167, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1157, + "fields": { + "created": "2015-03-30T08:31:15.563Z", + "updated": "2015-03-30T08:31:27.102Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "3-5-0-a3-Windows-x86-web-based-installer", + "os": 1, + "release": 193, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a3-webinstall.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e5c7a6e77052280d309fa3702f96bce5", + "filesize": 886336, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1158, + "fields": { + "created": "2015-03-30T08:31:15.568Z", + "updated": "2017-07-18T21:42:11.413Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "3-5-0a3-Windows-x86-64-executable-installer", + "os": 1, + "release": 193, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a3-amd64.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b0e42578749fc46018345c43f01352c0", + "filesize": 28888960, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1159, + "fields": { + "created": "2015-03-30T08:31:15.571Z", + "updated": "2017-07-18T21:42:11.941Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "3-5-0-a3-Windows-x86-64-web-based-installer", + "os": 1, + "release": 193, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a3-amd64-webinstall.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "25b4e4d355bc4649608c8ae3e4bee910", + "filesize": 911944, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1160, + "fields": { + "created": "2015-04-20T07:57:37.597Z", + "updated": "2015-04-20T08:03:39.904Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "3-5-0-a4-Windows-x86-executable-installer", + "os": 1, + "release": 194, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a220359f4f6cefcc316504cccd3dc0fb", + "filesize": 28459976, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1161, + "fields": { + "created": "2015-04-20T07:57:37.849Z", + "updated": "2015-04-20T07:57:37.859Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-5-0-a4-XZ-compressed-source-tarball", + "os": 3, + "release": 194, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dd8d2dcb8c8b301d57228be896317612", + "filesize": 14704088, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1162, + "fields": { + "created": "2015-04-20T07:57:38.015Z", + "updated": "2015-04-20T07:57:38.027Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-5-0-a4-Windows-help-file", + "os": 1, + "release": 194, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python350a4.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python350a4.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d5434e2cf712ebdf11ede3b6cdb43a64", + "filesize": 7581518, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1164, + "fields": { + "created": "2015-04-20T07:57:38.807Z", + "updated": "2015-04-20T07:57:38.819Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-5-0-a4-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 194, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a4-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a4-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c648d4f3f02ce06d839e2b754e8382bc", + "filesize": 25250926, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1165, + "fields": { + "created": "2015-04-20T07:57:39.021Z", + "updated": "2015-04-20T07:57:39.030Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-5-0-a4-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 194, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a4-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a4-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d7321ddabc46927fd619a694c0d87086", + "filesize": 23587943, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1169, + "fields": { + "created": "2015-04-20T07:57:40.064Z", + "updated": "2015-04-20T07:57:40.076Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-5-0-a4-Gzipped-source-tarball", + "os": 3, + "release": 194, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "34667f07604352a4a1ef4651dcb7f870", + "filesize": 19874914, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1171, + "fields": { + "created": "2015-04-20T08:00:22.293Z", + "updated": "2015-04-20T08:00:27.819Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "3-5-0-a4-Windows-x86-web-based-installer", + "os": 1, + "release": 194, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a4-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a4-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dd6712fe691f4212fb9e516541103721", + "filesize": 886400, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1172, + "fields": { + "created": "2015-04-20T08:03:34.228Z", + "updated": "2015-04-20T08:04:00.879Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable installer", + "slug": "3-5-0-a4-Windows-x86-embeddable-installer", + "os": 1, + "release": 194, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a4-embed-win32.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a4-embed-win32.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "32f1d62bc4cad46e5bf3444d648e53f0", + "filesize": 6068184, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1173, + "fields": { + "created": "2015-04-20T08:08:02.543Z", + "updated": "2015-04-20T08:08:03.135Z", + "creator": null, + "last_modified_by": null, + "name": "Windows amd64 embeddable installer", + "slug": "3-5-0-a4-Windows-amd64-embeddable-installer", + "os": 1, + "release": 194, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a4-embed-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a4-embed-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b2c3001cd03d478293680f88beaf5218", + "filesize": 6660944, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1174, + "fields": { + "created": "2015-04-20T08:08:02.546Z", + "updated": "2015-04-20T08:08:03.137Z", + "creator": null, + "last_modified_by": null, + "name": "Windows amd executable installer", + "slug": "3-5-0-a4-Windows-amd64-executable-installer", + "os": 1, + "release": 194, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5ca6f1dcc56c66065d874420ae95ea23", + "filesize": 29316824, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1175, + "fields": { + "created": "2015-04-20T08:08:02.549Z", + "updated": "2015-04-20T23:33:20.080Z", + "creator": null, + "last_modified_by": null, + "name": "Windows amd64 web-based installer", + "slug": "3-5-0-a4-Windows-amd64-web-based-installer", + "os": 1, + "release": 194, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a4-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0a4-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b2c3001cd03d478293680f88beaf5218", + "filesize": 912024, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1192, + "fields": { + "created": "2015-05-11T15:12:44.013Z", + "updated": "2017-07-18T21:41:33.819Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2-7-1-rc1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 195, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.10/python-2.7.10rc1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/python-2.7.10rc1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e6149cfe1ec1280c8fe90bbc16146b8f", + "filesize": 19402752, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1193, + "fields": { + "created": "2015-05-11T15:12:44.154Z", + "updated": "2015-05-11T15:12:44.160Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2-7-1-rc1-Windows-x86-MSI-installer", + "os": 1, + "release": 195, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.10/python-2.7.10rc1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/python-2.7.10rc1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "52a229242efd5550225700d6ba857741", + "filesize": 18452480, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1194, + "fields": { + "created": "2015-05-11T15:12:44.267Z", + "updated": "2015-05-11T15:12:44.274Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2-7-1-rc1-Windows-help-file", + "os": 1, + "release": 195, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.10/python2710rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/python2710rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "40b590ce6d28e194e5b4b4740eae0018", + "filesize": 6130650, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1195, + "fields": { + "created": "2015-05-11T15:12:44.517Z", + "updated": "2015-05-11T15:12:44.524Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "2-7-1-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 195, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.10/python-2.7.10rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/python-2.7.10rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a7b2bdcea51f40777c9a9269477bf4ba", + "filesize": 22129790, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1196, + "fields": { + "created": "2015-05-11T15:12:44.785Z", + "updated": "2015-05-11T15:12:44.791Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "2-7-1-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 195, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.10/python-2.7.10rc1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/python-2.7.10rc1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bf76232110855f0710e3ca90784a565b", + "filesize": 23989381, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1197, + "fields": { + "created": "2015-05-11T15:12:44.944Z", + "updated": "2015-05-11T15:12:44.950Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2-7-1-rc1-Gzipped-source-tarball", + "os": 3, + "release": 195, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.10/Python-2.7.10rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/Python-2.7.10rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "138f71999c30ead0114729cf1692b8d0", + "filesize": 16765792, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1198, + "fields": { + "created": "2015-05-11T15:12:45.103Z", + "updated": "2015-05-11T15:12:45.109Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2-7-1-rc1-Windows-debug-information-files", + "os": 1, + "release": 195, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.10/python-2.7.10rc1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/python-2.7.10rc1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "702a697b3778e8737842476b30121b28", + "filesize": 26592322, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1199, + "fields": { + "created": "2015-05-11T15:12:45.247Z", + "updated": "2015-05-11T15:12:45.254Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2-7-1-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 195, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.10/Python-2.7.10rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/Python-2.7.10rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "69d9c5962ed54af2dd650f8ba55b3220", + "filesize": 12249092, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1200, + "fields": { + "created": "2015-05-11T15:12:45.512Z", + "updated": "2015-05-11T15:12:45.524Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2-7-1-rc1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 195, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.10/python-2.7.10rc1.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/python-2.7.10rc1.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9dc93b20c6534209013c6841603ceb8f", + "filesize": 24626242, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1201, + "fields": { + "created": "2015-05-23T23:39:50.438Z", + "updated": "2015-05-23T23:39:50.447Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2-7-1-Windows-debug-information-files", + "os": 1, + "release": 196, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.10/python-2.7.10-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/python-2.7.10-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "44c155e72ddae4bfface20932ea2f5cf", + "filesize": 26592322, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1202, + "fields": { + "created": "2015-05-23T23:39:50.660Z", + "updated": "2015-05-23T23:39:50.666Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2-7-1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 196, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.10/python-2.7.10.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/python-2.7.10.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2460724a7ce7a736e7b5e3ee44879e53", + "filesize": 24626242, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1203, + "fields": { + "created": "2015-05-23T23:39:50.859Z", + "updated": "2015-05-23T23:39:50.865Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "2-7-1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 196, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.10/python-2.7.10-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/python-2.7.10-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3a5419361628c542f5fc28691eb7b773", + "filesize": 22129777, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1204, + "fields": { + "created": "2015-05-23T23:39:51.016Z", + "updated": "2015-05-23T23:39:51.025Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2-7-1-Windows-help-file", + "os": 1, + "release": 196, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.10/python2710.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/python2710.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5798437100884d987a57626e11d2c618", + "filesize": 6132901, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1205, + "fields": { + "created": "2015-05-23T23:39:51.240Z", + "updated": "2015-05-23T23:39:51.247Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "2-7-1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 196, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.10/python-2.7.10-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/python-2.7.10-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "40c01b527ee9898460f8cd515f1c1651", + "filesize": 23985274, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1206, + "fields": { + "created": "2015-05-23T23:39:51.468Z", + "updated": "2017-07-18T21:41:33.252Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2-7-1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 196, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.10/python-2.7.10.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/python-2.7.10.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "35f5c301beab341f6f6c9785939882ee", + "filesize": 19382272, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1207, + "fields": { + "created": "2015-05-23T23:39:51.659Z", + "updated": "2015-05-23T23:39:51.665Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2-7-1-XZ-compressed-source-tarball", + "os": 3, + "release": 196, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c685ef0b8e9f27b5e3db5db12b268ac6", + "filesize": 12250696, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1208, + "fields": { + "created": "2015-05-23T23:39:56.919Z", + "updated": "2015-05-23T23:39:56.933Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2-7-1-Gzipped-source-tarball", + "os": 3, + "release": 196, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d7547558fd673bd9d38e2108c6b42521", + "filesize": 16768806, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1209, + "fields": { + "created": "2015-05-23T23:39:57.097Z", + "updated": "2015-05-23T23:39:57.107Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2-7-1-Windows-x86-MSI-installer", + "os": 1, + "release": 196, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.10/python-2.7.10.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.10/python-2.7.10.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4ba2c79b103f6003bc4611c837a08208", + "filesize": 18423808, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1210, + "fields": { + "created": "2015-05-24T23:03:30.995Z", + "updated": "2015-05-24T23:03:31.007Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-5-0-b1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 197, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1acb10f8d8bac4ee453a2823a77912f6", + "filesize": 23628889, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1211, + "fields": { + "created": "2015-05-24T23:03:31.206Z", + "updated": "2015-05-24T23:30:05.937Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "3-5-0-b1-Windows-x86-executable-installer", + "os": 1, + "release": 197, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "878cd8f7a104601bd2de8bbbbc079c5c", + "filesize": 27939992, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1213, + "fields": { + "created": "2015-05-24T23:03:36.726Z", + "updated": "2015-05-24T23:03:36.736Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-5-0-b1-XZ-compressed-source-tarball", + "os": 3, + "release": 197, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c336db6cfa13aebd30a8ab6bfe1e8091", + "filesize": 14657144, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1214, + "fields": { + "created": "2015-05-24T23:03:36.927Z", + "updated": "2015-05-24T23:03:36.936Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-5-0-b1-Gzipped-source-tarball", + "os": 3, + "release": 197, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "435ec867c2f3433052317ef905c9589e", + "filesize": 19915714, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1215, + "fields": { + "created": "2015-05-24T23:03:37.104Z", + "updated": "2015-05-24T23:03:37.113Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-5-0-b1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 197, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f6f035138c593446510a1f766e53b3d3", + "filesize": 25291886, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1218, + "fields": { + "created": "2015-05-24T23:03:42.877Z", + "updated": "2015-05-24T23:03:42.886Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-5-0-b1-Windows-help-file", + "os": 1, + "release": 197, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python350b1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python350b1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b1c56c7bf60c79ebc397033c1cf26841", + "filesize": 7590336, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1219, + "fields": { + "created": "2015-05-24T23:22:17.347Z", + "updated": "2015-05-24T23:22:17.443Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "3-5-0-b1-Windows-x86-web-based-installer", + "os": 1, + "release": 197, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "30544135e1b1ff5f37fc9ff51ced416f", + "filesize": 889424, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1220, + "fields": { + "created": "2015-05-24T23:25:02.711Z", + "updated": "2015-05-24T23:25:02.872Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable installer", + "slug": "3-5-0-b1-Windows-x86-embeddable-installer", + "os": 1, + "release": 197, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fb31910daa9055f3bdb87661c60430f5", + "filesize": 7045718, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1221, + "fields": { + "created": "2015-05-24T23:27:09.622Z", + "updated": "2015-05-24T23:33:04.784Z", + "creator": null, + "last_modified_by": null, + "name": "Windows AMD64 web-based installer", + "slug": "3-5-0-b1-Windows-amd64-web-based-installer", + "os": 1, + "release": 197, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3bbe95109fd3df8c2b544c26c5a8eb53", + "filesize": 916016, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1222, + "fields": { + "created": "2015-05-24T23:30:05.819Z", + "updated": "2015-05-24T23:33:04.786Z", + "creator": null, + "last_modified_by": null, + "name": "Windows AMD64 executable installer", + "slug": "3-5-0-b1-Windows-amd64-executable-installer", + "os": 1, + "release": 197, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9dd5021887b087b27fa1d44c1fe22f04", + "filesize": 28799600, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1223, + "fields": { + "created": "2015-05-24T23:31:22.788Z", + "updated": "2015-05-24T23:33:04.782Z", + "creator": null, + "last_modified_by": null, + "name": "Windows AMD64 embeddable installer", + "slug": "3-5-0-b1-Windows-amd64-embeddable-installer", + "os": 1, + "release": 197, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "37225a8da45f3866711a701623728974", + "filesize": 7824329, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1345, + "fields": { + "created": "2015-06-01T04:30:50.273Z", + "updated": "2015-06-01T04:30:50.283Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-5-0-b2-Windows-help-file", + "os": 1, + "release": 199, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python350b2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python350b2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "514e74c21c0cdbfd5289d68dec631d5e", + "filesize": 7587734, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1346, + "fields": { + "created": "2015-06-01T04:30:50.495Z", + "updated": "2015-06-01T04:30:50.508Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "3-5-0-b2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 199, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ec51b5cb09ab4d5aa9f852d880fe689a", + "filesize": 7045755, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1347, + "fields": { + "created": "2015-06-01T04:30:50.670Z", + "updated": "2015-06-01T04:30:50.680Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-5-0-b2-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 199, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b2-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b2-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "059b5bff7d3f4d3d39aa9cafc127ac22", + "filesize": 23657621, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1348, + "fields": { + "created": "2015-06-01T04:30:50.810Z", + "updated": "2017-07-18T21:42:13.917Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "3-5-0-b2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 199, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "72929c9dbcdd267f1e052dd9f49e96d4", + "filesize": 916040, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1349, + "fields": { + "created": "2015-06-01T04:30:56.041Z", + "updated": "2015-06-01T04:30:56.050Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-5-0-b2-Gzipped-source-tarball", + "os": 3, + "release": 199, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5b6436d16c899241e5f671707277f69c", + "filesize": 19931103, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1350, + "fields": { + "created": "2015-06-01T04:30:56.141Z", + "updated": "2017-07-18T21:42:13.379Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "3-5-0-b2-Windows-x86-64-executable-installer", + "os": 1, + "release": 199, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d0d4fe0b670f3ec280b7bc0d9621af4b", + "filesize": 28826392, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1351, + "fields": { + "created": "2015-06-01T04:30:56.225Z", + "updated": "2015-06-01T04:30:56.234Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-5-0-b2-XZ-compressed-source-tarball", + "os": 3, + "release": 199, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ef12dce3770032138d83f6159e7d5c3a", + "filesize": 14715572, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1352, + "fields": { + "created": "2015-06-01T04:30:56.313Z", + "updated": "2015-06-01T04:30:56.324Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "3-5-0-b2-Windows-x86-web-based-installer", + "os": 1, + "release": 199, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b5679902ff7913e0fbcdfbe43193e306", + "filesize": 889384, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1353, + "fields": { + "created": "2015-06-01T04:30:56.438Z", + "updated": "2015-06-01T04:30:56.447Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "3-5-0-b2-Windows-x86-executable-installer", + "os": 1, + "release": 199, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e3dcc1c990be92046e497777c906d3e8", + "filesize": 27962032, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1354, + "fields": { + "created": "2015-06-01T04:30:56.509Z", + "updated": "2015-06-01T04:30:56.518Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-5-0-b2-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 199, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b2-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b2-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "81800c76b56e043dbe623e639ca2062f", + "filesize": 25316466, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1355, + "fields": { + "created": "2015-06-01T04:31:01.595Z", + "updated": "2017-07-18T21:42:12.522Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "3-5-0-b2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 199, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cf9930e68f855ac831f24a89faa5a885", + "filesize": 7825533, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1356, + "fields": { + "created": "2015-07-05T17:13:19.442Z", + "updated": "2017-07-18T21:42:15.501Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "3-5-0-b3-Windows-x86-64-web-based-installer", + "os": 1, + "release": 200, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b3-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b3-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0094f59d6be39b8acbd3e1b91be48812", + "filesize": 791520, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1357, + "fields": { + "created": "2015-07-05T17:13:19.593Z", + "updated": "2017-07-18T21:42:14.491Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "3-5-0-b3-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 200, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "84c7070dbe1db02d88d55273908cc4f9", + "filesize": 8362333, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1358, + "fields": { + "created": "2015-07-05T17:13:19.740Z", + "updated": "2015-07-05T17:13:19.749Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-5-0-b3-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 200, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b3-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b3-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b6305f756c8b10426fe70147872c32d2", + "filesize": 23739505, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1359, + "fields": { + "created": "2015-07-05T17:13:19.887Z", + "updated": "2015-07-05T17:13:19.899Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-5-0-b3-XZ-compressed-source-tarball", + "os": 3, + "release": 200, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5d21f2a7aaf597b0e0a8b1f133db4ecd", + "filesize": 14750368, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1360, + "fields": { + "created": "2015-07-05T17:13:20.012Z", + "updated": "2015-07-05T17:13:20.027Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "3-5-0-b3-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 200, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b93dc190c307da3d3185f44806c42c09", + "filesize": 7529090, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1361, + "fields": { + "created": "2015-07-05T17:13:25.177Z", + "updated": "2015-07-05T17:13:25.188Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-5-0-b3-Windows-help-file", + "os": 1, + "release": 200, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python350b3.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python350b3.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f953d35fc7dee224015364d8d273a2fc", + "filesize": 7607406, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1362, + "fields": { + "created": "2015-07-05T17:13:25.328Z", + "updated": "2015-07-05T17:13:25.341Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-5-0-b3-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 200, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b3-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b3-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4eb97f4ce446624ed98746e58296fad0", + "filesize": 25406561, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1363, + "fields": { + "created": "2015-07-05T17:13:25.433Z", + "updated": "2015-07-05T17:13:25.445Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-5-0-b3-Gzipped-source-tarball", + "os": 3, + "release": 200, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "69f4eb8e67027db291a714e9ec58336f", + "filesize": 19960412, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1364, + "fields": { + "created": "2015-07-05T17:13:25.546Z", + "updated": "2015-07-05T17:13:25.555Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "3-5-0-b3-Windows-x86-web-based-installer", + "os": 1, + "release": 200, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b3-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b3-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9fa51a2825086e55487885f75844d9fb", + "filesize": 786512, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1365, + "fields": { + "created": "2015-07-05T17:13:25.670Z", + "updated": "2017-07-18T21:42:15.017Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "3-5-0-b3-Windows-x86-64-executable-installer", + "os": 1, + "release": 200, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0f5140e89b2484696d45f40b27f6df87", + "filesize": 29574184, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1366, + "fields": { + "created": "2015-07-05T17:13:25.879Z", + "updated": "2015-07-05T17:13:25.889Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "3-5-0-b3-Windows-x86-executable-installer", + "os": 1, + "release": 200, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e86f35c6187ed5249cc0166b50b27fbd", + "filesize": 28569776, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1367, + "fields": { + "created": "2015-07-26T14:35:03.919Z", + "updated": "2017-07-18T21:42:16.505Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "3-5-0-b4-Windows-x86-64-executable-installer", + "os": 1, + "release": 201, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b453bf4ce18924bed43eb5481e63238f", + "filesize": 29455808, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1368, + "fields": { + "created": "2015-07-26T14:35:04.114Z", + "updated": "2017-07-18T21:42:17.406Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "3-5-0-b4-Windows-x86-64-web-based-installer", + "os": 1, + "release": 201, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b4-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b4-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8fb241651fd72e01bf33f6c74dcd4e70", + "filesize": 787992, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1369, + "fields": { + "created": "2015-07-26T14:35:04.244Z", + "updated": "2017-07-18T21:42:16.003Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "3-5-0-b4-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 201, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b4dc03c7405540dc3f9898ae4c68660f", + "filesize": 8361938, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1370, + "fields": { + "created": "2015-07-26T14:35:04.392Z", + "updated": "2015-07-26T14:35:04.410Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-5-0-b4-XZ-compressed-source-tarball", + "os": 3, + "release": 201, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "17a44df9ec94cfb00cad7c57256d4208", + "filesize": 14755880, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1371, + "fields": { + "created": "2015-07-26T14:35:04.509Z", + "updated": "2015-07-26T14:35:04.519Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "3-5-0-b4-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 201, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "09c113f761e6c3d46d3961d907a903da", + "filesize": 7522474, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1372, + "fields": { + "created": "2015-07-26T14:35:04.647Z", + "updated": "2015-07-26T14:35:04.658Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-5-0-b4-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 201, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b4-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b4-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "14e3b40cc9d715324f3fdf155f13b1b3", + "filesize": 23751784, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1373, + "fields": { + "created": "2015-07-26T14:35:04.856Z", + "updated": "2015-07-26T14:35:04.866Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "3-5-0-b4-Windows-x86-executable-installer", + "os": 1, + "release": 201, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b47dd2e3c41cf60af2e8c4b1a2b3f405", + "filesize": 28451168, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1374, + "fields": { + "created": "2015-07-26T14:35:05.021Z", + "updated": "2015-07-26T14:35:05.033Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-5-0-b4-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 201, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b4-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b4-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "47a66b00ee784bc8b87e4c310b31d376", + "filesize": 25418851, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1375, + "fields": { + "created": "2015-07-26T14:35:10.233Z", + "updated": "2015-07-26T14:35:10.248Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-5-0-b4-Windows-help-file", + "os": 1, + "release": 201, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python350b4.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python350b4.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "70b275953d593c58e8f321869ee06bb3", + "filesize": 7615692, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1376, + "fields": { + "created": "2015-07-26T14:35:10.396Z", + "updated": "2015-07-26T14:35:10.406Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "3-5-0-b4-Windows-x86-web-based-installer", + "os": 1, + "release": 201, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b4-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0b4-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "59acaf9e5a329d1a8a0bafd4fd879b76", + "filesize": 783624, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1377, + "fields": { + "created": "2015-07-26T14:35:10.545Z", + "updated": "2015-07-26T14:35:10.554Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-5-0-b4-Gzipped-source-tarball", + "os": 3, + "release": 201, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "98cf14f87710aa34dd523b5ab84dcae2", + "filesize": 19980637, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1398, + "fields": { + "created": "2015-08-11T01:01:53.528Z", + "updated": "2015-08-11T01:01:53.537Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "3-5-0-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 202, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7935a1d545e87ac777251a9934bb11d2", + "filesize": 28588432, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1399, + "fields": { + "created": "2015-08-11T01:01:53.676Z", + "updated": "2017-07-18T21:42:18.960Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "3-5-0-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 202, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7ccb8ff26829be09479dbda7f427fd7a", + "filesize": 29588504, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1400, + "fields": { + "created": "2015-08-11T01:01:53.824Z", + "updated": "2015-08-11T01:01:53.834Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "3-5-0-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 202, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "623df1c5b517b2d9331a0babae30af73", + "filesize": 783720, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1401, + "fields": { + "created": "2015-08-11T01:01:53.934Z", + "updated": "2015-08-11T01:01:53.944Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "3-5-0-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 202, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6e652786c13b87cbc00299a4a7e50a6d", + "filesize": 7593792, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1402, + "fields": { + "created": "2015-08-11T01:01:59.089Z", + "updated": "2015-08-11T01:01:59.099Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-5-0-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 202, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c3b4094b9cc6379e11e4d7b8712d36f4", + "filesize": 23886955, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1403, + "fields": { + "created": "2015-08-11T01:01:59.324Z", + "updated": "2017-07-18T21:42:19.441Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "3-5-0-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 202, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d47ecc6da662dda33a3e4bbc41812e0a", + "filesize": 788088, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1404, + "fields": { + "created": "2015-08-11T01:01:59.478Z", + "updated": "2015-08-11T01:01:59.490Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-5-0-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 202, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b7176710e4adc4ae1291613ab229f24a", + "filesize": 25554034, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1405, + "fields": { + "created": "2015-08-11T01:01:59.693Z", + "updated": "2017-07-18T21:42:18.248Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "3-5-0-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 202, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c1f82466d4c9b47849cb95daefc590c9", + "filesize": 8443625, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1406, + "fields": { + "created": "2015-08-11T01:02:04.846Z", + "updated": "2015-08-11T01:02:04.858Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-5-0-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 202, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "984540f202abc9305435df321c91720c", + "filesize": 14798596, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1407, + "fields": { + "created": "2015-08-11T01:02:04.946Z", + "updated": "2015-08-11T01:02:04.959Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-5-0-rc1-Gzipped-source-tarball", + "os": 3, + "release": 202, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7ef9c440b863dc19a4c9fed55c3e9093", + "filesize": 20038557, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1408, + "fields": { + "created": "2015-08-11T01:02:05.042Z", + "updated": "2015-08-11T01:02:05.055Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-5-0-rc1-Windows-help-file", + "os": 1, + "release": 202, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python350rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python350rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1f42a0409077ee8f45a5b5ecbcc1576b", + "filesize": 7649585, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1409, + "fields": { + "created": "2015-08-25T18:02:22.744Z", + "updated": "2015-08-25T18:02:22.758Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-5-0-rc2-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 203, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc2-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc2-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "22f792e573dab846584c01292be39e2e", + "filesize": 23886997, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1410, + "fields": { + "created": "2015-08-25T18:02:22.968Z", + "updated": "2017-07-18T21:42:19.967Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "3-5-0-rc2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 203, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "316e52fbe70c7aa82e0a5bea36d489e0", + "filesize": 8443645, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1411, + "fields": { + "created": "2015-08-25T18:02:23.107Z", + "updated": "2015-08-25T18:02:23.117Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "3-5-0-rc2-Windows-x86-web-based-installer", + "os": 1, + "release": 203, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "31b22fec715a1bbd476a1bc27ade31fd", + "filesize": 783680, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1412, + "fields": { + "created": "2015-08-25T18:02:23.311Z", + "updated": "2017-07-18T21:42:21.343Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "3-5-0-rc2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 203, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "245cd9d267202e840bd4ceb97d17380d", + "filesize": 788064, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1413, + "fields": { + "created": "2015-08-25T18:02:23.388Z", + "updated": "2017-07-18T21:42:20.496Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "3-5-0-rc2-Windows-x86-64-executable-installer", + "os": 1, + "release": 203, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cb17639d68641757f46cabedaaa1efc4", + "filesize": 29590648, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1414, + "fields": { + "created": "2015-08-25T18:02:23.608Z", + "updated": "2015-08-25T18:02:23.617Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-5-0-rc2-Windows-help-file", + "os": 1, + "release": 203, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python350rc2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python350rc2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4e8a2b58a1af7c4e8c0fcf74daac3818", + "filesize": 7648815, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1415, + "fields": { + "created": "2015-08-25T18:02:23.850Z", + "updated": "2015-08-25T18:02:23.867Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-5-0-rc2-XZ-compressed-source-tarball", + "os": 3, + "release": 203, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "157b61e72b4421497f068aa53405b9e1", + "filesize": 14841476, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1416, + "fields": { + "created": "2015-08-25T18:02:24.048Z", + "updated": "2015-08-25T18:02:24.059Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "3-5-0-rc2-Windows-x86-executable-installer", + "os": 1, + "release": 203, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "696b60a9952762eeb552728c59f60a58", + "filesize": 28586488, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1417, + "fields": { + "created": "2015-08-25T18:02:24.179Z", + "updated": "2015-08-25T18:02:24.189Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-5-0-rc2-Gzipped-source-tarball", + "os": 3, + "release": 203, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bfd6938e8072b768a277125837eb7aed", + "filesize": 20055455, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1418, + "fields": { + "created": "2015-08-25T18:02:24.288Z", + "updated": "2015-08-25T18:02:24.297Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-5-0-rc2-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 203, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc2-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc2-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "80560604d0cf345c2606edce066d1895", + "filesize": 25558149, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1419, + "fields": { + "created": "2015-08-25T18:02:24.421Z", + "updated": "2015-08-25T18:02:24.433Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "3-5-0-rc2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 203, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "13fecb0a0e897108f3659076da62639c", + "filesize": 7593943, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1420, + "fields": { + "created": "2015-09-08T01:25:17.911Z", + "updated": "2015-09-08T01:25:17.921Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-5-0-rc3-Gzipped-source-tarball", + "os": 3, + "release": 204, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "403976441d51734ac0c8e8f64a4faa5c", + "filesize": 20036047, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1421, + "fields": { + "created": "2015-09-08T01:25:18.115Z", + "updated": "2017-07-18T21:42:21.883Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "3-5-0-rc3-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 204, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1ffcd5c5a1607b0c5e8f60d5b9a582df", + "filesize": 8443983, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1422, + "fields": { + "created": "2015-09-08T01:25:18.219Z", + "updated": "2017-07-18T21:42:22.949Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "3-5-0-rc3-Windows-x86-64-web-based-installer", + "os": 1, + "release": 204, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc3-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc3-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "24dbfd351b1f5b37619409945ac1620e", + "filesize": 788080, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1423, + "fields": { + "created": "2015-09-08T01:25:18.338Z", + "updated": "2015-09-08T01:25:18.348Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-5-0-rc3-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 204, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc3-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc3-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "79d2d2cf5b3a2e8b8f214a50af3f8f2b", + "filesize": 25554050, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1424, + "fields": { + "created": "2015-09-08T01:25:18.395Z", + "updated": "2015-09-08T01:25:18.404Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-5-0-rc3-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 204, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc3-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc3-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "01cbfbd284bd34ab52f0c6ec14029748", + "filesize": 23882872, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1425, + "fields": { + "created": "2015-09-08T01:25:23.501Z", + "updated": "2015-09-08T01:25:23.510Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-5-0-rc3-XZ-compressed-source-tarball", + "os": 3, + "release": 204, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b6161f59b3d614bd7904200f287b166a", + "filesize": 14796996, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1426, + "fields": { + "created": "2015-09-08T01:25:23.602Z", + "updated": "2015-09-08T01:25:23.612Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "3-5-0-rc3-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 204, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "defa3b7b3aa63846eb358d388bb1991e", + "filesize": 7594426, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1427, + "fields": { + "created": "2015-09-08T01:25:23.703Z", + "updated": "2017-07-18T21:42:22.438Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "3-5-0-rc3-Windows-x86-64-executable-installer", + "os": 1, + "release": 204, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a6726a3f41eee82b2868c1b85673c50d", + "filesize": 29589896, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1428, + "fields": { + "created": "2015-09-08T01:25:23.865Z", + "updated": "2015-09-08T01:25:23.875Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "3-5-0-rc3-Windows-x86-executable-installer", + "os": 1, + "release": 204, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8571d50f194b960e1b0d392d056d3b64", + "filesize": 28583864, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1429, + "fields": { + "created": "2015-09-08T01:25:23.929Z", + "updated": "2015-09-08T01:25:23.938Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-5-0-rc3-Windows-help-file", + "os": 1, + "release": 204, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python350rc3.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python350rc3.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1cb7991708d27b641be9944bef1bcdae", + "filesize": 7650655, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1430, + "fields": { + "created": "2015-09-08T01:25:24.061Z", + "updated": "2015-09-08T01:25:24.070Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "3-5-0-rc3-Windows-x86-web-based-installer", + "os": 1, + "release": 204, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc3-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc3-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d3ce827c4f9b79b0a3e9e2918b57959c", + "filesize": 783728, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1431, + "fields": { + "created": "2015-09-09T13:04:56.781Z", + "updated": "2017-07-18T21:42:23.491Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "3-5-0-rc4-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 205, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "79d71dd1b26a14899ce64cb01184ef8f", + "filesize": 7992760, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1432, + "fields": { + "created": "2015-09-09T13:04:56.989Z", + "updated": "2015-09-09T13:04:56.998Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-5-0-rc4-Windows-help-file", + "os": 1, + "release": 205, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python350rc4.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python350rc4.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ee1f038156988e7211bf060715244c5f", + "filesize": 7651795, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1433, + "fields": { + "created": "2015-09-09T13:04:57.095Z", + "updated": "2015-09-09T13:04:57.104Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-5-0-rc4-Gzipped-source-tarball", + "os": 3, + "release": 205, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3ebd84ed4b63558c0d4d3465b32801f8", + "filesize": 20023346, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1434, + "fields": { + "created": "2015-09-09T13:04:57.198Z", + "updated": "2017-07-18T21:42:24.585Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "3-5-0-rc4-Windows-x86-64-web-based-installer", + "os": 1, + "release": 205, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc4-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc4-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eaaa249ef73c8386fa4c74a186a2286f", + "filesize": 911664, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1435, + "fields": { + "created": "2015-09-09T13:04:57.304Z", + "updated": "2015-09-09T13:04:57.313Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-5-0-rc4-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 205, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc4-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc4-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4b009b0a0fb5779418eac01986542d06", + "filesize": 25554026, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1436, + "fields": { + "created": "2015-09-09T13:04:57.375Z", + "updated": "2015-09-09T13:04:57.387Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-5-0-rc4-XZ-compressed-source-tarball", + "os": 3, + "release": 205, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0rc4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8e9b1e72a9c880c20925a8ce9996ba69", + "filesize": 14797608, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1437, + "fields": { + "created": "2015-09-09T13:04:57.486Z", + "updated": "2015-09-09T13:04:57.495Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "3-5-0-rc4-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 205, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2eeff904e39f39fa85eaf9880da351c7", + "filesize": 7196435, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1438, + "fields": { + "created": "2015-09-09T13:05:02.732Z", + "updated": "2015-09-09T13:05:02.748Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-5-0-rc4-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 205, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc4-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc4-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a02811704c544481693a69964a7d4c08", + "filesize": 23886926, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1439, + "fields": { + "created": "2015-09-09T13:05:02.886Z", + "updated": "2015-09-09T13:05:02.896Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "3-5-0-rc4-Windows-x86-executable-installer", + "os": 1, + "release": 205, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8f83355ad0e20185b020de40c6df5f54", + "filesize": 28569488, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1440, + "fields": { + "created": "2015-09-09T13:05:02.962Z", + "updated": "2015-09-09T13:05:02.971Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "3-5-0-rc4-Windows-x86-web-based-installer", + "os": 1, + "release": 205, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc4-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc4-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b551371d60478b202ad2dc3eb9a2318e", + "filesize": 886048, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1441, + "fields": { + "created": "2015-09-09T13:05:03.078Z", + "updated": "2017-07-18T21:42:24.045Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "3-5-0-rc4-Windows-x86-64-executable-installer", + "os": 1, + "release": 205, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0rc4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "267721925b5397f70db3c3b6efbd3928", + "filesize": 29442264, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1442, + "fields": { + "created": "2015-09-13T14:27:27.653Z", + "updated": "2015-09-13T14:27:27.666Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3-5-0-Gzipped-source-tarball", + "os": 3, + "release": 206, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a56c0c0b45d75a0ec9c6dee933c41c36", + "filesize": 20053428, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1443, + "fields": { + "created": "2015-09-13T14:27:27.823Z", + "updated": "2015-09-13T14:27:27.838Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "3-5-0-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 206, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6701f6eba0697949bc9031e887e27b32", + "filesize": 7196321, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1444, + "fields": { + "created": "2015-09-13T14:27:27.931Z", + "updated": "2015-09-13T14:27:27.942Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3-5-0-Windows-help-file", + "os": 1, + "release": 206, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python350.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python350.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c4c62a5d0b0a3bf504f65ff55dd9f06e", + "filesize": 7677806, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1445, + "fields": { + "created": "2015-09-13T14:27:27.996Z", + "updated": "2015-09-13T15:14:22.790Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "3-5-0-Windows-x86-executable-installer", + "os": 1, + "release": 206, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1e87ad24225657a3de447171f0eda1df", + "filesize": 28620792, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1446, + "fields": { + "created": "2015-09-13T14:27:28.114Z", + "updated": "2017-07-18T21:42:07.682Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "3-5-0-Windows-x86-64-executable-installer", + "os": 1, + "release": 206, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "facc4c9fb6f359b0ca45db0e11455421", + "filesize": 29495840, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1447, + "fields": { + "created": "2015-09-13T14:27:28.188Z", + "updated": "2017-07-18T21:42:08.250Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "3-5-0-Windows-x86-64-web-based-installer", + "os": 1, + "release": 206, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "066e3f30ae25ec5d73f5759529faf9bd", + "filesize": 911720, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1448, + "fields": { + "created": "2015-09-13T14:27:33.353Z", + "updated": "2015-09-13T15:14:22.792Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "3-5-0-Windows-x86-web-based-installer", + "os": 1, + "release": 206, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2d2686317f9ca85cd28b24cd66bbda41", + "filesize": 886128, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1449, + "fields": { + "created": "2015-09-13T14:27:33.434Z", + "updated": "2015-09-13T14:27:33.443Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "3-5-0-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 206, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9f2e59d52cc3d80ca8ab2c63293976fa", + "filesize": 25603201, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1450, + "fields": { + "created": "2015-09-13T14:27:33.550Z", + "updated": "2015-09-13T14:27:33.559Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "3-5-0-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 206, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6f61f6b23ed3a4c5a51ccba0cb0959d0", + "filesize": 23932028, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1451, + "fields": { + "created": "2015-09-13T14:27:33.692Z", + "updated": "2015-09-13T14:27:33.701Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3-5-0-XZ-compressed-source-tarball", + "os": 3, + "release": 206, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d149d2812f10cbe04c042232e7964171", + "filesize": 14808460, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1452, + "fields": { + "created": "2015-09-13T14:27:33.896Z", + "updated": "2017-07-18T21:42:07.067Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "3-5-0-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 206, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.0/python-3.5.0-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.0/python-3.5.0-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "09a9bcabcbf8c616c21b1e5a6eaa9129", + "filesize": 7992653, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1463, + "fields": { + "created": "2015-11-22T02:36:56.119Z", + "updated": "2015-11-22T02:36:56.129Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2711-rc1-Windows-help-file", + "os": 1, + "release": 207, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.11/python2711rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/python2711rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8b577dd54ba2adead185a8cddecfabf1", + "filesize": 6174710, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1464, + "fields": { + "created": "2015-11-22T02:36:56.277Z", + "updated": "2015-11-22T02:36:56.287Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2711-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 207, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.11/Python-2.7.11rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/Python-2.7.11rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c56eb9ecf64d933246083a52e6e8db5c", + "filesize": 12278764, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1465, + "fields": { + "created": "2015-11-22T02:36:56.479Z", + "updated": "2015-11-22T02:36:56.488Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2711-rc1-Gzipped-source-tarball", + "os": 3, + "release": 207, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.11/Python-2.7.11rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/Python-2.7.11rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6f7de2a0d18e2f7467774f06e1669f10", + "filesize": 16855905, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1466, + "fields": { + "created": "2015-11-22T02:36:56.691Z", + "updated": "2015-11-22T02:36:56.700Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2711-rc1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 207, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.11/python-2.7.11rc1.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/python-2.7.11rc1.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "93792ebd687a29c094cdffa7154eb327", + "filesize": 25104550, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1467, + "fields": { + "created": "2015-11-22T02:36:56.804Z", + "updated": "2015-11-22T02:36:56.811Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "2711-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 207, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.11/python-2.7.11rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/python-2.7.11rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fe2a1c8a45acb57c013ca5710b6b8f6a", + "filesize": 22166575, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1468, + "fields": { + "created": "2015-11-22T02:36:56.947Z", + "updated": "2017-07-18T21:41:35.270Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2711-rc1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 207, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.11/python-2.7.11rc1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/python-2.7.11rc1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f6c30ca25a0cdaa07d26c4c87da81cc5", + "filesize": 19546112, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1469, + "fields": { + "created": "2015-11-22T02:36:57.036Z", + "updated": "2015-11-22T02:36:57.044Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "2711-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 207, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.11/python-2.7.11rc1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/python-2.7.11rc1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f4dce6cc6f9e968a46aefa3bae0e95db", + "filesize": 24017986, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1470, + "fields": { + "created": "2015-11-22T02:36:57.238Z", + "updated": "2015-11-22T02:36:57.245Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2711-rc1-Windows-x86-MSI-installer", + "os": 1, + "release": 207, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.11/python-2.7.11rc1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/python-2.7.11rc1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "812d4cb8ddb52d9e5eef97b0d2fe77c7", + "filesize": 18644992, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1471, + "fields": { + "created": "2015-11-22T02:36:57.328Z", + "updated": "2015-11-22T02:36:57.334Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2711-rc1-Windows-debug-information-files", + "os": 1, + "release": 207, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.11/python-2.7.11rc1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/python-2.7.11rc1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "31a211d812e4e49a63988db61de18534", + "filesize": 24359078, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1472, + "fields": { + "created": "2015-11-23T07:08:23.928Z", + "updated": "2017-07-18T21:42:28.002Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "351-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 208, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python-3.5.1rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python-3.5.1rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a6c00bf2265d058963db667b6999c4ea", + "filesize": 29629128, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1473, + "fields": { + "created": "2015-11-23T07:08:24.140Z", + "updated": "2015-11-23T07:08:24.154Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "351-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 208, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.1/Python-3.5.1rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/Python-3.5.1rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ee1f4214f7347e015028bfcb989bae8f", + "filesize": 14888296, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1474, + "fields": { + "created": "2015-11-23T07:08:24.262Z", + "updated": "2015-11-23T07:08:24.275Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "351-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 208, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python-3.5.1rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python-3.5.1rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a31e2085b80521bd4b697f62124235dd", + "filesize": 28741392, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1475, + "fields": { + "created": "2015-11-23T07:08:24.403Z", + "updated": "2015-11-23T07:08:24.412Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "351-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 208, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python-3.5.1rc1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python-3.5.1rc1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a51b5aa2fdbf88cd10b2f60e5a27abc8", + "filesize": 25709640, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1476, + "fields": { + "created": "2015-11-23T07:08:24.507Z", + "updated": "2015-11-23T07:08:24.517Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "351-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 208, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python-3.5.1rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python-3.5.1rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e8eec5d3386e1d279f2c63ee79b2b887", + "filesize": 24038471, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1477, + "fields": { + "created": "2015-11-23T07:08:24.723Z", + "updated": "2017-07-18T21:42:27.124Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "351-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 208, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python-3.5.1rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python-3.5.1rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8722fed99f3d0b02e0e5c40e6234543a", + "filesize": 6832465, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1478, + "fields": { + "created": "2015-11-23T07:08:24.846Z", + "updated": "2015-11-23T07:08:24.859Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "351-rc1-Gzipped-source-tarball", + "os": 3, + "release": 208, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.1/Python-3.5.1rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/Python-3.5.1rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e6dc75746e2237542684d01c3806a572", + "filesize": 20157744, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1479, + "fields": { + "created": "2015-11-23T07:08:24.991Z", + "updated": "2015-11-23T07:08:25.000Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "351-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 208, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python-3.5.1rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python-3.5.1rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d1428899c10ea678301404660b7a74ad", + "filesize": 937520, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1480, + "fields": { + "created": "2015-11-23T07:08:25.203Z", + "updated": "2017-07-18T21:42:28.566Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "351-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 208, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python-3.5.1rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python-3.5.1rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "21cceca439daa403af880abfc287829c", + "filesize": 963240, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1481, + "fields": { + "created": "2015-11-23T07:08:25.318Z", + "updated": "2015-11-23T07:08:25.327Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "351-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 208, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python-3.5.1rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python-3.5.1rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dd2637c59a38368992ed0f459d52f6ec", + "filesize": 6023061, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1482, + "fields": { + "created": "2015-11-23T07:08:25.507Z", + "updated": "2015-11-23T07:08:25.517Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "351-rc1-Windows-help-file", + "os": 1, + "release": 208, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python351rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python351rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "07ba691789f78f459d51ee383579ea02", + "filesize": 7719779, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1483, + "fields": { + "created": "2015-12-05T22:04:30.803Z", + "updated": "2015-12-05T22:04:30.812Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2711-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 209, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.11/python-2.7.11.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/python-2.7.11.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "34b3e9342b7a9dd58e0f20c6108e72e6", + "filesize": 25104550, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1484, + "fields": { + "created": "2015-12-05T22:04:31.015Z", + "updated": "2015-12-05T22:04:31.026Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "2711-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 209, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.11/python-2.7.11-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/python-2.7.11-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8d563a63b261fc3868c101471442b601", + "filesize": 24018001, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1485, + "fields": { + "created": "2015-12-05T22:04:31.223Z", + "updated": "2015-12-05T22:04:31.230Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2711-Windows-debug-information-files", + "os": 1, + "release": 209, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.11/python-2.7.11-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/python-2.7.11-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b5ebe6703d69ee97d1d648d20df6ee55", + "filesize": 24359078, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1486, + "fields": { + "created": "2015-12-05T22:04:31.372Z", + "updated": "2015-12-05T22:04:31.378Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2711-Windows-help-file", + "os": 1, + "release": 209, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.11/python2711.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/python2711.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0d8044f1da197c8381be0789c2d5cc98", + "filesize": 6171837, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1487, + "fields": { + "created": "2015-12-05T22:04:31.443Z", + "updated": "2015-12-05T22:04:31.450Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2711-XZ-compressed-source-tarball", + "os": 3, + "release": 209, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1dbcc848b4cd8399a8199d000f9f823c", + "filesize": 12277476, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1488, + "fields": { + "created": "2015-12-05T22:04:31.636Z", + "updated": "2015-12-05T22:04:31.646Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2711-Windows-x86-MSI-installer", + "os": 1, + "release": 209, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.11/python-2.7.11.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/python-2.7.11.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "241bf8e097ab4e1047d9bb4f59602095", + "filesize": 18636800, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1489, + "fields": { + "created": "2015-12-05T22:04:31.800Z", + "updated": "2017-07-18T21:41:34.402Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2711-Windows-x86-64-MSI-installer", + "os": 1, + "release": 209, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.11/python-2.7.11.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/python-2.7.11.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "25acca42662d4b02682eee0df3f3446d", + "filesize": 19550208, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1490, + "fields": { + "created": "2015-12-05T22:04:31.943Z", + "updated": "2015-12-05T22:04:31.950Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "2711-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 209, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.11/python-2.7.11-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/python-2.7.11-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cacd8b6a05c5a5c0f0e19f684a0c7f10", + "filesize": 22162527, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1491, + "fields": { + "created": "2015-12-05T22:04:32.134Z", + "updated": "2015-12-05T22:04:32.141Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2711-Gzipped-source-tarball", + "os": 3, + "release": 209, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6b6076ec9e93f05dd63e47eb9c15728b", + "filesize": 16856409, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1503, + "fields": { + "created": "2015-12-07T05:04:40.325Z", + "updated": "2015-12-07T05:04:40.335Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "344-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 211, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.4/python-3.4.4rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/python-3.4.4rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c27eca85f417ea31f7e9e3b407891905", + "filesize": 23170114, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1504, + "fields": { + "created": "2015-12-07T05:04:40.459Z", + "updated": "2015-12-07T05:04:40.469Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "344-rc1-Windows-x86-MSI-installer", + "os": 1, + "release": 211, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.4/python-3.4.4rc1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/python-3.4.4rc1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9f1e8b3f11e855683c1e7826bcfacbb7", + "filesize": 24879104, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1505, + "fields": { + "created": "2015-12-07T05:04:40.561Z", + "updated": "2015-12-07T05:04:40.571Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "344-rc1-Windows-debug-information-files", + "os": 1, + "release": 211, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.4/python-3.4.4rc1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/python-3.4.4rc1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a8ea797ca4b81e4e0c764bd6d010e657", + "filesize": 37735596, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1506, + "fields": { + "created": "2015-12-07T05:04:40.641Z", + "updated": "2015-12-07T05:04:40.654Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "344-rc1-Windows-help-file", + "os": 1, + "release": 211, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.4/python344rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/python344rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "81d166cd55cee2e00e7fd036aeaa1c6c", + "filesize": 7463227, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1507, + "fields": { + "created": "2015-12-07T05:04:40.726Z", + "updated": "2015-12-07T05:04:40.736Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "344-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 211, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.4/python-3.4.4rc1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/python-3.4.4rc1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c58065bdf9ad2e17a17b85bc5ae609d7", + "filesize": 24833091, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1508, + "fields": { + "created": "2015-12-07T05:04:40.828Z", + "updated": "2015-12-07T05:04:40.839Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "344-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 211, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.4/Python-3.4.4rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/Python-3.4.4rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "035d324072040440a0e3f80180ac8582", + "filesize": 14382348, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1509, + "fields": { + "created": "2015-12-07T05:04:41.033Z", + "updated": "2015-12-07T05:04:41.044Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "344-rc1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 211, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.4/python-3.4.4rc1.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/python-3.4.4rc1.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "baf4fbc27ced1fc8872d3a068f9c8f83", + "filesize": 25038530, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1510, + "fields": { + "created": "2015-12-07T05:04:46.132Z", + "updated": "2015-12-07T05:04:46.142Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "344-rc1-Gzipped-source-tarball", + "os": 3, + "release": 211, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.4/Python-3.4.4rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/Python-3.4.4rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "47bfd39aa78d32bd27d3353717a679ae", + "filesize": 19481079, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1511, + "fields": { + "created": "2015-12-07T05:04:46.347Z", + "updated": "2017-07-18T21:42:06.208Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "344-rc1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 211, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.4/python-3.4.4rc1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/python-3.4.4rc1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c5f37917d7e8e3ff5369768814aca574", + "filesize": 26054656, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1523, + "fields": { + "created": "2015-12-11T04:10:47.362Z", + "updated": "2017-07-18T21:42:25.065Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "351-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 210, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python-3.5.1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python-3.5.1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b07d15f515882452684e0551decad242", + "filesize": 6832590, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1524, + "fields": { + "created": "2015-12-11T04:10:47.519Z", + "updated": "2015-12-11T04:10:47.530Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "351-Gzipped-source-tarball", + "os": 3, + "release": 210, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "be78e48cdfc1a7ad90efff146dce6cfe", + "filesize": 20143759, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1525, + "fields": { + "created": "2015-12-11T04:10:52.627Z", + "updated": "2015-12-11T04:10:52.642Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "351-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 210, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python-3.5.1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python-3.5.1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c66bddc2a4a560496e68fb16600143a7", + "filesize": 25709672, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1526, + "fields": { + "created": "2015-12-11T04:10:52.802Z", + "updated": "2015-12-11T04:10:52.817Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "351-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 210, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python-3.5.1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python-3.5.1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1c41a4bd7e6644b8680fc2508cebf1ed", + "filesize": 24038487, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1527, + "fields": { + "created": "2015-12-11T04:10:53.012Z", + "updated": "2015-12-11T04:10:53.022Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "351-Windows-x86-executable-installer", + "os": 1, + "release": 210, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python-3.5.1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python-3.5.1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4d6fdb5c3630cf60d457c9825f69b4d7", + "filesize": 28743504, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1528, + "fields": { + "created": "2015-12-11T04:10:53.216Z", + "updated": "2015-12-11T04:10:53.226Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "351-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 210, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python-3.5.1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python-3.5.1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6e783d8fd44570315d488b9a9881ff10", + "filesize": 6023182, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1529, + "fields": { + "created": "2015-12-11T04:10:53.430Z", + "updated": "2015-12-11T04:10:53.440Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "351-Windows-help-file", + "os": 1, + "release": 210, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python351.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python351.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cc3e73cbe2d71920483923b731710391", + "filesize": 7719456, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1530, + "fields": { + "created": "2015-12-11T04:10:53.548Z", + "updated": "2017-07-18T21:42:25.678Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "351-Windows-x86-64-executable-installer", + "os": 1, + "release": 210, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python-3.5.1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python-3.5.1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "863782d22a521d8ea9f3cf41db1e484d", + "filesize": 29627072, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1531, + "fields": { + "created": "2015-12-11T04:10:53.673Z", + "updated": "2017-07-18T21:42:26.543Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "351-Windows-x86-64-web-based-installer", + "os": 1, + "release": 210, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python-3.5.1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python-3.5.1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6a14ac8dfb70017c07b8f6cb622daa1a", + "filesize": 963360, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1532, + "fields": { + "created": "2015-12-11T04:10:53.877Z", + "updated": "2015-12-11T04:10:53.887Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "351-XZ-compressed-source-tarball", + "os": 3, + "release": 210, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e9ea6f2623fffcdd871b7b19113fde80", + "filesize": 14830408, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1533, + "fields": { + "created": "2015-12-11T04:10:54.078Z", + "updated": "2015-12-11T04:10:54.088Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "351-Windows-x86-web-based-installer", + "os": 1, + "release": 210, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.1/python-3.5.1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.1/python-3.5.1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6dfcc4012c96d84f0a83d00cfddf8bb8", + "filesize": 937680, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1534, + "fields": { + "created": "2015-12-21T06:32:41.777Z", + "updated": "2015-12-21T06:32:41.789Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "344-Gzipped-source-tarball", + "os": 3, + "release": 212, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e80a0c1c71763ff6b5a81f8cc9bb3d50", + "filesize": 19435166, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1535, + "fields": { + "created": "2015-12-21T06:32:41.906Z", + "updated": "2015-12-21T06:32:41.916Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "344-Windows-debug-information-files", + "os": 1, + "release": 212, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.4/python-3.4.4-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/python-3.4.4-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d6ffcb8cdabd93ed7f2feff661816511", + "filesize": 37743788, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1536, + "fields": { + "created": "2015-12-21T06:32:42.067Z", + "updated": "2015-12-21T06:32:42.080Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "344-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 212, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.4/python-3.4.4-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/python-3.4.4-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8491d013826252228ffcdeda0d9348d6", + "filesize": 24829047, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1537, + "fields": { + "created": "2015-12-21T06:32:42.222Z", + "updated": "2015-12-21T06:32:42.236Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "344-Windows-x86-MSI-installer", + "os": 1, + "release": 212, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.4/python-3.4.4.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/python-3.4.4.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e96268f7042d2a3d14f7e23b2535738b", + "filesize": 24932352, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1538, + "fields": { + "created": "2015-12-21T06:32:42.331Z", + "updated": "2015-12-21T06:32:42.344Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "344-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 212, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.4/python-3.4.4.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/python-3.4.4.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a0eea5b3742954c1ed02bddf30d07101", + "filesize": 25038530, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1539, + "fields": { + "created": "2015-12-21T06:32:42.411Z", + "updated": "2017-07-18T21:42:05.344Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "344-Windows-x86-64-MSI-installer", + "os": 1, + "release": 212, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.4/python-3.4.4.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/python-3.4.4.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "963f67116935447fad73e09cc561c713", + "filesize": 26054656, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1540, + "fields": { + "created": "2015-12-21T06:32:42.633Z", + "updated": "2015-12-21T06:32:42.646Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "344-Windows-help-file", + "os": 1, + "release": 212, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.4/python344.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/python344.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5fa4e75dd4edc25e33e56f3c7486cd15", + "filesize": 7461732, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1541, + "fields": { + "created": "2015-12-21T06:32:47.736Z", + "updated": "2015-12-21T06:32:47.747Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "344-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 212, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.4.4/python-3.4.4-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/python-3.4.4-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "349c61e374f6aeb44ca85481ee14d2f5", + "filesize": 23170139, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1542, + "fields": { + "created": "2015-12-21T06:32:47.888Z", + "updated": "2015-12-21T06:32:47.901Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "344-XZ-compressed-source-tarball", + "os": 3, + "release": 212, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8d526b7128affed5fbe72ceac8d2fc63", + "filesize": 14307620, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1543, + "fields": { + "created": "2016-05-17T20:22:37.085Z", + "updated": "2017-07-18T21:42:38.821Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "360-a1-Windows-x86-64-executable-installer", + "os": 1, + "release": 213, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cc2a4b36d60f8f1f1407ce1dba8e87a9", + "filesize": 30183280, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1544, + "fields": { + "created": "2016-05-17T20:22:37.198Z", + "updated": "2016-05-17T20:22:37.208Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "360-a1-XZ-compressed-source-tarball", + "os": 3, + "release": 213, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0a1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0a1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "03a50e47b2b516fe036083d7381f4b51", + "filesize": 15328032, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1545, + "fields": { + "created": "2016-05-17T20:22:37.261Z", + "updated": "2016-05-17T20:22:37.268Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "360-a1-Windows-x86-executable-installer", + "os": 1, + "release": 213, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "32af5f5756a0cdebc6cbb825e2e0771b", + "filesize": 29279424, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1546, + "fields": { + "created": "2016-05-17T20:22:37.361Z", + "updated": "2017-07-18T21:42:38.255Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "360-a1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 213, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cb0c2457a8d5162f715b7c54c4276187", + "filesize": 6882328, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1547, + "fields": { + "created": "2016-05-17T20:22:37.467Z", + "updated": "2016-05-17T20:22:37.503Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "360-a1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 213, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d8c5aa06d340e101b1a317588d1ec09e", + "filesize": 24693857, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1548, + "fields": { + "created": "2016-05-17T20:22:37.753Z", + "updated": "2016-05-17T20:22:37.765Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "360-a1-Gzipped-source-tarball", + "os": 3, + "release": 213, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0a1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0a1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "205e1424c57c1779069b5f9301c1ab48", + "filesize": 20521662, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1549, + "fields": { + "created": "2016-05-17T20:22:37.809Z", + "updated": "2016-05-17T20:22:37.819Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "360-a1-Windows-x86-web-based-installer", + "os": 1, + "release": 213, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a85e9b4bffcb1c33db9e7a7487eeed83", + "filesize": 939416, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1550, + "fields": { + "created": "2016-05-17T20:22:37.887Z", + "updated": "2017-07-18T21:42:39.396Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "360-a1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 213, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "811f34b34005588f69d2118e0af31e62", + "filesize": 965400, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1551, + "fields": { + "created": "2016-05-17T20:22:37.988Z", + "updated": "2016-05-17T20:22:37.996Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "360-a1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 213, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a2956a81968f15964183f67a99c20454", + "filesize": 6064320, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1552, + "fields": { + "created": "2016-05-17T20:22:43.051Z", + "updated": "2016-05-17T20:22:43.060Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "360-a1-Windows-help-file", + "os": 1, + "release": 213, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python360a1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python360a1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cada1dc45ce84f6950950fc1c0b671ad", + "filesize": 7797812, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1553, + "fields": { + "created": "2016-06-13T03:00:57.137Z", + "updated": "2016-06-13T03:00:57.149Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "345-rc1-Gzipped-source-tarball", + "os": 3, + "release": 214, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.5/Python-3.4.5rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.5/Python-3.4.5rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9135ae5f1282df0503c4b8ab49a5d611", + "filesize": 19609289, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1554, + "fields": { + "created": "2016-06-13T03:00:57.337Z", + "updated": "2016-06-13T03:00:57.349Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "345-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 214, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.5/Python-3.4.5rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.5/Python-3.4.5rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "691d2d0f81593c3f38eb6c08b26add7c", + "filesize": 14475700, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1555, + "fields": { + "created": "2016-06-13T03:02:20.193Z", + "updated": "2016-06-13T03:02:20.203Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "352-rc1-Windows-help-file", + "os": 1, + "release": 215, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python352rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python352rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7fa6eeb851a51dc326b53cdf62cc3be6", + "filesize": 7774849, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1556, + "fields": { + "created": "2016-06-13T03:02:20.340Z", + "updated": "2017-07-18T21:42:32.431Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "352-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 215, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python-3.5.2rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python-3.5.2rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bb938bf6ca476a4f85cec7dd7864df54", + "filesize": 970248, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1557, + "fields": { + "created": "2016-06-13T03:02:25.488Z", + "updated": "2016-06-13T03:02:25.497Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "352-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 215, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python-3.5.2rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python-3.5.2rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7cabde0baf412ecc0d5cd34ddde2ad18", + "filesize": 24570934, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1558, + "fields": { + "created": "2016-06-13T03:02:25.567Z", + "updated": "2016-06-13T03:02:25.576Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "352-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 215, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python-3.5.2rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python-3.5.2rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0bcfa61888adc77086fa4d5d940ec050", + "filesize": 29263120, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1559, + "fields": { + "created": "2016-06-13T03:02:25.664Z", + "updated": "2016-06-13T03:02:25.675Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "352-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 215, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python-3.5.2rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python-3.5.2rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c007a68f413406fcd89c42a5fa2a2c46", + "filesize": 6048207, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1560, + "fields": { + "created": "2016-06-13T03:02:25.852Z", + "updated": "2016-06-13T03:02:25.861Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "352-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 215, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.2/Python-3.5.2rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/Python-3.5.2rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6f5093ca363e5cc47e6cd7baec47ba7e", + "filesize": 15249184, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1561, + "fields": { + "created": "2016-06-13T03:02:25.959Z", + "updated": "2017-07-18T21:42:31.590Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "352-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 215, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python-3.5.2rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python-3.5.2rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a51de20f6171c42b78ee9553cdf3843a", + "filesize": 30172960, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1562, + "fields": { + "created": "2016-06-13T03:02:31.151Z", + "updated": "2016-06-13T03:02:31.161Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "352-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 215, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python-3.5.2rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python-3.5.2rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2e4490e6142f2ef013fdc44b954e276c", + "filesize": 944344, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1563, + "fields": { + "created": "2016-06-13T03:02:31.259Z", + "updated": "2016-06-13T03:02:31.273Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "352-rc1-Gzipped-source-tarball", + "os": 3, + "release": 215, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.2/Python-3.5.2rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/Python-3.5.2rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "063809e271587b9be9f40ff77aa25a7b", + "filesize": 20521961, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1564, + "fields": { + "created": "2016-06-13T03:02:31.357Z", + "updated": "2016-06-13T03:02:31.366Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "352-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 215, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python-3.5.2rc1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python-3.5.2rc1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0b41f86de500b347d2cec421d6ec0b1a", + "filesize": 26250305, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1565, + "fields": { + "created": "2016-06-13T03:02:31.461Z", + "updated": "2017-07-18T21:42:31.052Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "352-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 215, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python-3.5.2rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python-3.5.2rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "72263ba3bb85526ef09b5590054d7060", + "filesize": 6861297, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1566, + "fields": { + "created": "2016-06-13T03:17:44.356Z", + "updated": "2016-06-13T03:17:44.363Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2712-rc1-Windows-help-file", + "os": 1, + "release": 216, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.12/python2712rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/python2712rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "634f4c1c939e904e6952a4e74d5a3d54", + "filesize": 6194274, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1567, + "fields": { + "created": "2016-06-13T03:17:44.496Z", + "updated": "2016-06-13T03:17:44.504Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "2712-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 216, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.12/python-2.7.12rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/python-2.7.12rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9cc6c7b95bfa2edb55d76e06add31851", + "filesize": 22359114, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1568, + "fields": { + "created": "2016-06-13T03:17:44.649Z", + "updated": "2016-06-13T03:17:44.660Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2712-rc1-Windows-x86-MSI-installer", + "os": 1, + "release": 216, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.12/python-2.7.12rc1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/python-2.7.12rc1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ef09276b8b716217e31ce0a227a2ac1c", + "filesize": 19492864, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1569, + "fields": { + "created": "2016-06-13T03:17:44.851Z", + "updated": "2016-06-13T03:17:44.857Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2712-rc1-Windows-debug-information-files", + "os": 1, + "release": 216, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.12/python-2.7.12rc1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/python-2.7.12rc1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "306086a0d752de5de68ddda94730d8df", + "filesize": 24670374, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1570, + "fields": { + "created": "2016-06-13T03:17:44.974Z", + "updated": "2016-06-13T03:17:44.980Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2712-rc1-Gzipped-source-tarball", + "os": 3, + "release": 216, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.12/Python-2.7.12rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/Python-2.7.12rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "03468e9e5489923ffd8cfc61e8115541", + "filesize": 16937605, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1571, + "fields": { + "created": "2016-06-13T03:17:45.083Z", + "updated": "2016-06-13T03:17:45.090Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2712-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 216, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.12/Python-2.7.12rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/Python-2.7.12rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fe5cf46b198054a5526d64bad7062b7d", + "filesize": 12389948, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1572, + "fields": { + "created": "2016-06-13T03:17:45.279Z", + "updated": "2017-07-18T21:41:36.679Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2712-rc1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 216, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.12/python-2.7.12rc1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/python-2.7.12rc1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "be2dab0977c9b3dec91a0de9df2825c2", + "filesize": 19812352, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1573, + "fields": { + "created": "2016-06-13T03:17:45.394Z", + "updated": "2016-06-13T03:17:45.401Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "2712-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 216, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.12/python-2.7.12rc1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/python-2.7.12rc1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "88ef83a726901ae8ba34408cc55b4efa", + "filesize": 24214586, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1574, + "fields": { + "created": "2016-06-13T03:17:45.589Z", + "updated": "2016-06-13T03:17:45.596Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2712-rc1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 216, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.12/python-2.7.12rc1.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/python-2.7.12rc1.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8b8fde6eeca3ed27882a2ccf7ec7f8c0", + "filesize": 25424038, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1575, + "fields": { + "created": "2016-06-14T03:30:20.144Z", + "updated": "2017-07-18T21:42:40.992Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "360-a2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 217, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f20e053a0d8a35ed66ff4e31ec989ecc", + "filesize": 970416, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1576, + "fields": { + "created": "2016-06-14T03:30:20.249Z", + "updated": "2016-06-14T03:30:20.256Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "360-a2-XZ-compressed-source-tarball", + "os": 3, + "release": 217, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0a2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0a2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "95c71007221b96d161c7c5e0786caf86", + "filesize": 15236260, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1577, + "fields": { + "created": "2016-06-14T03:30:20.356Z", + "updated": "2017-07-18T21:42:39.899Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "360-a2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 217, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bc0abc0f425bf7d763fbcc1d2526553f", + "filesize": 6795790, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1578, + "fields": { + "created": "2016-06-14T03:30:20.476Z", + "updated": "2017-07-18T21:42:40.440Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "360-a2-Windows-x86-64-executable-installer", + "os": 1, + "release": 217, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5edc274044b84519ebeecb90ea6fc88d", + "filesize": 30231248, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1579, + "fields": { + "created": "2016-06-14T03:30:20.629Z", + "updated": "2016-06-14T03:30:20.639Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "360-a2-Windows-help-file", + "os": 1, + "release": 217, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python360a2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python360a2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2d273202781ecacf12227d312166ba22", + "filesize": 7825676, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1580, + "fields": { + "created": "2016-06-14T03:30:20.782Z", + "updated": "2016-06-14T03:30:20.797Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "360-a2-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 217, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a2-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a2-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ce9b4b6509705a19d66399926d110b70", + "filesize": 24693840, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1581, + "fields": { + "created": "2016-06-14T03:30:20.931Z", + "updated": "2016-06-14T03:30:20.942Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "360-a2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 217, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a164a7ef63702ba3724f93796b5df55f", + "filesize": 5982043, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1582, + "fields": { + "created": "2016-06-14T03:30:20.999Z", + "updated": "2016-06-14T03:30:21.006Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "360-a2-Gzipped-source-tarball", + "os": 3, + "release": 217, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0a2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0a2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c90fdf9d8a56806a741c549aa9de4fd3", + "filesize": 20429310, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1583, + "fields": { + "created": "2016-06-14T03:30:21.091Z", + "updated": "2016-06-14T03:30:21.100Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "360-a2-Windows-x86-web-based-installer", + "os": 1, + "release": 217, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2786963482262448b73a2ffb5a78a393", + "filesize": 944528, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1584, + "fields": { + "created": "2016-06-14T03:30:21.198Z", + "updated": "2016-06-14T03:30:21.205Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "360-a2-Windows-x86-executable-installer", + "os": 1, + "release": 217, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "65ac97a401f64a41ae362dd69e8cd55a", + "filesize": 29323208, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1589, + "fields": { + "created": "2016-06-27T02:28:27.576Z", + "updated": "2016-06-27T02:28:27.586Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "345-XZ-compressed-source-tarball", + "os": 3, + "release": 219, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.5/Python-3.4.5.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.5/Python-3.4.5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5caaca47eead170070a856fae5f6e78c", + "filesize": 14516820, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1590, + "fields": { + "created": "2016-06-27T02:28:27.645Z", + "updated": "2016-06-27T02:28:27.656Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "345-Gzipped-source-tarball", + "os": 3, + "release": 219, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.5/Python-3.4.5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.5/Python-3.4.5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5f2ef90b1adef35a64df14d4bb7af733", + "filesize": 19611207, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1591, + "fields": { + "created": "2016-06-27T04:40:32.182Z", + "updated": "2017-07-18T21:42:30.186Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "352-Windows-x86-64-web-based-installer", + "os": 1, + "release": 218, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python-3.5.2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python-3.5.2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c35b6526761a9cde4b6dccab4a3d7c60", + "filesize": 970224, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1592, + "fields": { + "created": "2016-06-27T04:40:32.241Z", + "updated": "2016-06-27T04:40:32.254Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "352-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 218, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python-3.5.2-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python-3.5.2-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "11a9f4fc3f6b93e3ffb26c383822a272", + "filesize": 24566858, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1593, + "fields": { + "created": "2016-06-27T04:40:32.300Z", + "updated": "2016-06-27T04:40:32.312Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "352-Gzipped-source-tarball", + "os": 3, + "release": 218, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3fe8434643a78630c61c6464fe2e7e72", + "filesize": 20566643, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1594, + "fields": { + "created": "2016-06-27T04:40:32.363Z", + "updated": "2016-06-27T04:40:32.374Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "352-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 218, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python-3.5.2-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python-3.5.2-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5ae81eea42bb6758b6d775ebcaf32eda", + "filesize": 26250336, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1595, + "fields": { + "created": "2016-06-27T04:40:37.471Z", + "updated": "2016-06-27T04:40:37.488Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "352-XZ-compressed-source-tarball", + "os": 3, + "release": 218, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8906efbacfcdc7c3c9198aeefafd159e", + "filesize": 15222676, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1596, + "fields": { + "created": "2016-06-27T04:40:37.542Z", + "updated": "2016-06-27T04:40:37.551Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "352-Windows-x86-web-based-installer", + "os": 1, + "release": 218, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python-3.5.2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python-3.5.2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aed3ac79b8e2458b84135ecfdca66764", + "filesize": 944304, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1597, + "fields": { + "created": "2016-06-27T04:40:37.603Z", + "updated": "2016-06-27T04:40:37.613Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "352-Windows-x86-executable-installer", + "os": 1, + "release": 218, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python-3.5.2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python-3.5.2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2ddf428fd8b9c063ba05b5a0c8636c37", + "filesize": 29269656, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1598, + "fields": { + "created": "2016-06-27T04:40:37.658Z", + "updated": "2016-06-27T04:40:37.668Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "352-Windows-help-file", + "os": 1, + "release": 218, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python352.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python352.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "24b95be314f7bad1cc5361ae449adc3d", + "filesize": 7777812, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1599, + "fields": { + "created": "2016-06-27T04:40:37.766Z", + "updated": "2016-06-27T04:40:37.776Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "352-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 218, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python-3.5.2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python-3.5.2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ad637a1db7cf91e344318d55c94ad3ca", + "filesize": 6048722, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1600, + "fields": { + "created": "2016-06-27T04:40:37.829Z", + "updated": "2017-07-18T21:42:29.113Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "352-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 218, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python-3.5.2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python-3.5.2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f1c24bb78bd6dd792a73d5ebfbd3b20e", + "filesize": 6862200, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1601, + "fields": { + "created": "2016-06-27T04:40:37.922Z", + "updated": "2017-07-18T21:42:29.641Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "352-Windows-x86-64-executable-installer", + "os": 1, + "release": 218, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.2/python-3.5.2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.2/python-3.5.2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4da6dbc8e43e2249a0892d257e977291", + "filesize": 30177896, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1602, + "fields": { + "created": "2016-06-28T04:19:47.081Z", + "updated": "2016-06-28T04:19:47.090Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "2712-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 220, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.12/python-2.7.12-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/python-2.7.12-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3adbedcc935a0db1ab08aa41f3ec4e33", + "filesize": 24214628, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1603, + "fields": { + "created": "2016-06-28T04:19:47.179Z", + "updated": "2016-06-28T04:19:47.188Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2712-XZ-compressed-source-tarball", + "os": 3, + "release": 220, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "57dffcee9cee8bb2ab5f82af1d8e9a69", + "filesize": 12390820, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1604, + "fields": { + "created": "2016-06-28T04:19:47.272Z", + "updated": "2016-06-28T04:19:47.281Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2712-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 220, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.12/python-2.7.12.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/python-2.7.12.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c5433a7fca9ede6e52835bd40e40aa8d", + "filesize": 25481382, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1605, + "fields": { + "created": "2016-06-28T04:19:47.341Z", + "updated": "2016-06-28T04:19:47.347Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2712-Windows-x86-MSI-installer", + "os": 1, + "release": 220, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.12/python-2.7.12.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/python-2.7.12.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fe0ef5b8fd02722f32f7284324934f9d", + "filesize": 18907136, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1606, + "fields": { + "created": "2016-06-28T04:19:47.430Z", + "updated": "2016-06-28T04:19:47.438Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "2712-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 220, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.12/python-2.7.12-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/python-2.7.12-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "86bedde2becd37335d27aa9df84952e1", + "filesize": 22355024, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1607, + "fields": { + "created": "2016-06-28T04:19:52.498Z", + "updated": "2016-06-28T04:19:52.504Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2712-Gzipped-source-tarball", + "os": 3, + "release": 220, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "88d61f82e3616a4be952828b3694109d", + "filesize": 16935960, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1608, + "fields": { + "created": "2016-06-28T04:19:52.553Z", + "updated": "2016-06-28T04:19:52.559Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2712-Windows-help-file", + "os": 1, + "release": 220, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.12/python2712.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/python2712.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7bc4e15ecae8ede7c85e122f0a6d5f27", + "filesize": 6224175, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1609, + "fields": { + "created": "2016-06-28T04:19:52.605Z", + "updated": "2017-07-18T21:41:36.116Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2712-Windows-x86-64-MSI-installer", + "os": 1, + "release": 220, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.12/python-2.7.12.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/python-2.7.12.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8fa13925db87638aa472a3e794ca4ee3", + "filesize": 19820544, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1610, + "fields": { + "created": "2016-06-28T04:19:52.697Z", + "updated": "2016-06-28T04:19:52.704Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2712-Windows-debug-information-files", + "os": 1, + "release": 220, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.12/python-2.7.12-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.12/python-2.7.12-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1751598e16431be04e1f4f24ca52b53a", + "filesize": 24678566, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1611, + "fields": { + "created": "2016-07-12T04:55:20.171Z", + "updated": "2016-07-12T04:55:20.181Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "360-a3-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 221, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9390ab85adb5f3bbd57caabc3b73916c", + "filesize": 5985232, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1612, + "fields": { + "created": "2016-07-12T04:55:20.239Z", + "updated": "2017-07-18T21:42:42.803Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "360-a3-Windows-x86-64-web-based-installer", + "os": 1, + "release": 221, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a3-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a3-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1c0d3a5add727c7534d37effa9783695", + "filesize": 970472, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1613, + "fields": { + "created": "2016-07-12T04:55:20.338Z", + "updated": "2016-07-12T04:55:20.344Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "360-a3-XZ-compressed-source-tarball", + "os": 3, + "release": 221, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0a3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0a3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b4363e360bf00d8e1ad3243c952d6e7e", + "filesize": 15258272, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1614, + "fields": { + "created": "2016-07-12T04:55:20.427Z", + "updated": "2016-07-12T04:55:20.437Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "360-a3-Gzipped-source-tarball", + "os": 3, + "release": 221, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0a3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0a3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1724fdaccffd977efd0568746be24c47", + "filesize": 20451717, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1615, + "fields": { + "created": "2016-07-12T04:55:20.484Z", + "updated": "2016-07-12T04:55:20.491Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "360-a3-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 221, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a3-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a3-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d740c61646f7970a7586be67d087187a", + "filesize": 24718444, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1616, + "fields": { + "created": "2016-07-12T04:55:20.575Z", + "updated": "2017-07-18T21:42:42.182Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "360-a3-Windows-x86-64-executable-installer", + "os": 1, + "release": 221, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a2653f8180a0ca99d3f48c2882e47744", + "filesize": 30262784, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1617, + "fields": { + "created": "2016-07-12T04:55:25.646Z", + "updated": "2016-07-12T04:55:25.659Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "360-a3-Windows-x86-executable-installer", + "os": 1, + "release": 221, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5c7173f51ed839cd8435b0c77b489cd8", + "filesize": 29347312, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1618, + "fields": { + "created": "2016-07-12T04:55:25.746Z", + "updated": "2016-07-12T04:55:25.753Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "360-a3-Windows-x86-web-based-installer", + "os": 1, + "release": 221, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a3-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a3-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d650c105599dce97888929d2a0e43e53", + "filesize": 944528, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1619, + "fields": { + "created": "2016-07-12T04:55:25.837Z", + "updated": "2017-07-18T21:42:41.598Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "360-a3-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 221, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2cad592ab7dcf39afcb0e56c012da393", + "filesize": 6798538, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1620, + "fields": { + "created": "2016-07-12T04:55:25.893Z", + "updated": "2016-07-12T04:55:25.900Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "360-a3-Windows-help-file", + "os": 1, + "release": 221, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python360a3.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python360a3.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7eb6951a3d4b4767795620a8f160fa17", + "filesize": 7836938, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1621, + "fields": { + "created": "2016-08-16T02:22:31.232Z", + "updated": "2016-08-16T02:22:31.239Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "360-a4-Windows-x86-web-based-installer", + "os": 1, + "release": 222, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a4-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a4-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b9bd9d093cb84afba92ef3bacfb746bd", + "filesize": 948264, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1622, + "fields": { + "created": "2016-08-16T02:22:31.451Z", + "updated": "2016-08-16T02:22:31.459Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "360-a4-Gzipped-source-tarball", + "os": 3, + "release": 222, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0a4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0a4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "250b1afed9b18b06987b100ece82296a", + "filesize": 20432909, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1623, + "fields": { + "created": "2016-08-16T02:22:31.745Z", + "updated": "2016-08-16T02:22:31.753Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "360-a4-XZ-compressed-source-tarball", + "os": 3, + "release": 222, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0a4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0a4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e26eccce0f5f0edfe889b5af314c4cd0", + "filesize": 15231132, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1624, + "fields": { + "created": "2016-08-16T02:22:31.926Z", + "updated": "2017-07-18T21:42:43.396Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "360-a4-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 222, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "64f2c2c489cacc8910ab42919357693f", + "filesize": 6838412, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1625, + "fields": { + "created": "2016-08-16T02:22:32.106Z", + "updated": "2016-08-16T02:22:32.115Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "360-a4-Windows-help-file", + "os": 1, + "release": 222, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python360a4.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python360a4.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b77010bfd94dec3483fb5551eabfb017", + "filesize": 7855222, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1626, + "fields": { + "created": "2016-08-16T02:22:32.365Z", + "updated": "2016-08-16T02:22:32.375Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "360-a4-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 222, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0c663104f7e066d70403fdbd2358f19b", + "filesize": 6018047, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1627, + "fields": { + "created": "2016-08-16T02:22:32.681Z", + "updated": "2017-07-18T21:42:43.927Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "360-a4-Windows-x86-64-executable-installer", + "os": 1, + "release": 222, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4b6201dfee439f273b846ac892ef636a", + "filesize": 30282520, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1628, + "fields": { + "created": "2016-08-16T02:22:32.864Z", + "updated": "2017-07-18T21:42:44.463Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "360-a4-Windows-x86-64-web-based-installer", + "os": 1, + "release": 222, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a4-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a4-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "63ee595457ca439cd54b470884ece5c4", + "filesize": 974064, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1629, + "fields": { + "created": "2016-08-16T02:22:33.051Z", + "updated": "2016-08-16T02:22:33.057Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "360-a4-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 222, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a4-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a4-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3e379ff6568e6cf859a7d7813763558b", + "filesize": 24763436, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1630, + "fields": { + "created": "2016-08-16T02:22:33.354Z", + "updated": "2016-08-16T02:22:33.360Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "360-a4-Windows-x86-executable-installer", + "os": 1, + "release": 222, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0a4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c7fcec95b576b19dcf31606ce6588f7a", + "filesize": 29366464, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1631, + "fields": { + "created": "2016-09-12T22:59:22.999Z", + "updated": "2016-09-12T22:59:23.011Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "360-b1-Windows-x86-executable-installer", + "os": 1, + "release": 223, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "39ded9fd7138efc1819e7f9b8590db17", + "filesize": 30563960, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1632, + "fields": { + "created": "2016-09-12T22:59:23.145Z", + "updated": "2016-09-12T22:59:23.156Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "360-b1-Windows-help-file", + "os": 1, + "release": 223, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python360b1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python360b1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1504c8648e5eb9123cda78cfd6aa08e9", + "filesize": 8075052, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1633, + "fields": { + "created": "2016-09-12T22:59:23.317Z", + "updated": "2016-09-12T22:59:23.329Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "360-b1-Gzipped-source-tarball", + "os": 3, + "release": 223, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0b1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0b1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "56985a4919bc172b0fc41a6e24299b07", + "filesize": 22109887, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1634, + "fields": { + "created": "2016-09-12T22:59:23.463Z", + "updated": "2016-09-12T22:59:23.470Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "360-b1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 223, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f6395509bd8a698a0260d4f5afab0970", + "filesize": 6272447, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1635, + "fields": { + "created": "2016-09-12T22:59:23.540Z", + "updated": "2016-09-12T22:59:23.550Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "360-b1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 223, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "001f3be6c3e569bbfc2568d10402d8fa", + "filesize": 27261993, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1636, + "fields": { + "created": "2016-09-12T22:59:23.618Z", + "updated": "2016-09-12T22:59:23.625Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "360-b1-XZ-compressed-source-tarball", + "os": 3, + "release": 223, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0b1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0b1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "564bc5b1ea9d85ea6c6be1c45f74e80e", + "filesize": 16684096, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1637, + "fields": { + "created": "2016-09-12T22:59:23.698Z", + "updated": "2016-09-12T22:59:23.704Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "360-b1-Windows-x86-web-based-installer", + "os": 1, + "release": 223, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "09276b7b822bbc70d1888b8627e2aeb8", + "filesize": 1286984, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1638, + "fields": { + "created": "2016-09-12T22:59:23.837Z", + "updated": "2017-07-18T21:42:45.612Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "360-b1-Windows-x86-64-executable-installer", + "os": 1, + "release": 223, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b892bd303effad16c561c5d49743ab99", + "filesize": 31513528, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1639, + "fields": { + "created": "2016-09-12T22:59:23.923Z", + "updated": "2017-07-18T21:42:46.187Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "360-b1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 223, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bde5f6a3eff1c8f54552f646d7a98953", + "filesize": 1312432, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1640, + "fields": { + "created": "2016-09-12T22:59:24.025Z", + "updated": "2017-07-18T21:42:45.067Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "360-b1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 223, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "98664028c806f457bb40801c9e0a0846", + "filesize": 6883093, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1641, + "fields": { + "created": "2016-10-11T00:38:20.888Z", + "updated": "2016-10-11T00:38:20.900Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "360-b2-Windows-help-file", + "os": 1, + "release": 224, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python360b2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python360b2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ea87d2164b004aaba756ab31ac5a8783", + "filesize": 8004332, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1642, + "fields": { + "created": "2016-10-11T00:38:21.032Z", + "updated": "2016-10-11T00:38:21.042Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "360-b2-XZ-compressed-source-tarball", + "os": 3, + "release": 224, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0b2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0b2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6ba1c213ac4022a9a8dbdf8b815feb10", + "filesize": 16709864, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1643, + "fields": { + "created": "2016-10-11T00:38:21.113Z", + "updated": "2016-10-11T00:38:21.120Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "360-b2-Gzipped-source-tarball", + "os": 3, + "release": 224, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0b2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0b2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "62e53b820def90cde9cb36a573ee24f7", + "filesize": 22144029, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1644, + "fields": { + "created": "2016-10-11T00:38:21.224Z", + "updated": "2016-10-11T00:38:21.231Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "360-b2-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 224, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b2-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b2-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9ec40c4e1cbbb79d8343e5dafe87e12b", + "filesize": 27323422, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1645, + "fields": { + "created": "2016-10-11T00:38:21.305Z", + "updated": "2016-10-11T00:38:21.312Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "360-b2-Windows-x86-executable-installer", + "os": 1, + "release": 224, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b97041b884da05ad4a305559e83872dd", + "filesize": 30584216, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1646, + "fields": { + "created": "2016-10-11T00:38:21.408Z", + "updated": "2016-10-11T00:38:21.420Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "360-b2-Windows-x86-web-based-installer", + "os": 1, + "release": 224, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bacbf787b7aed2fc62c5958b61dc18dc", + "filesize": 1287048, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1647, + "fields": { + "created": "2016-10-11T00:38:21.489Z", + "updated": "2017-07-18T21:42:47.919Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "360-b2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 224, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "43f561c37d1f463b76b23d92667dbf6b", + "filesize": 1312448, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1648, + "fields": { + "created": "2016-10-11T00:38:21.565Z", + "updated": "2016-10-11T00:38:21.574Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "360-b2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 224, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eab8dc1bbc9300f2d4515561308c600e", + "filesize": 6297839, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1649, + "fields": { + "created": "2016-10-11T00:38:21.644Z", + "updated": "2017-07-18T21:42:47.315Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "360-b2-Windows-x86-64-executable-installer", + "os": 1, + "release": 224, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0e28f186183fda0c5cca516c7b2c5133", + "filesize": 31524192, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1650, + "fields": { + "created": "2016-10-11T00:38:21.722Z", + "updated": "2017-07-18T21:42:46.728Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "360-b2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 224, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "40ac6383caacd7a66e4c5e2bbfdecc78", + "filesize": 6908950, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1651, + "fields": { + "created": "2016-11-01T04:23:24.064Z", + "updated": "2016-11-01T04:23:24.073Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "360-b3-XZ-compressed-source-tarball", + "os": 3, + "release": 225, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0b3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0b3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0a519c0d98c0648315cd5d4b89a0e4fe", + "filesize": 16723016, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1652, + "fields": { + "created": "2016-11-01T04:23:24.143Z", + "updated": "2016-11-01T04:23:24.150Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "360-b3-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 225, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b3-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b3-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bea362539b36c7105aab2a05061066d8", + "filesize": 27347999, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1653, + "fields": { + "created": "2016-11-01T04:23:24.241Z", + "updated": "2016-11-01T04:23:24.248Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "360-b3-Windows-x86-web-based-installer", + "os": 1, + "release": 225, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b3-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b3-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "16d7f88c1a2cc7f63a251548aa060f76", + "filesize": 1287016, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1654, + "fields": { + "created": "2016-11-01T04:23:24.384Z", + "updated": "2016-11-01T04:23:24.398Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "360-b3-Gzipped-source-tarball", + "os": 3, + "release": 225, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0b3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0b3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7d5ee138a870c55db18b61c2b7f88fae", + "filesize": 22159570, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1655, + "fields": { + "created": "2016-11-01T04:23:24.467Z", + "updated": "2017-07-18T21:42:49.940Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "360-b3-Windows-x86-64-web-based-installer", + "os": 1, + "release": 225, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b3-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b3-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ecc2559c7a114a8dc27ea6cc4eb3ce1a", + "filesize": 1312448, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1656, + "fields": { + "created": "2016-11-01T04:23:24.569Z", + "updated": "2017-07-18T21:42:48.820Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "360-b3-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 225, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c6fcaeba0880e125cfb3df7b34a02e45", + "filesize": 6921024, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1657, + "fields": { + "created": "2016-11-01T04:23:24.654Z", + "updated": "2017-07-18T21:42:49.378Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "360-b3-Windows-x86-64-executable-installer", + "os": 1, + "release": 225, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8733a388b5c245d4bb5709aedfeef454", + "filesize": 31545232, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1658, + "fields": { + "created": "2016-11-01T04:23:24.729Z", + "updated": "2016-11-01T04:23:24.736Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "360-b3-Windows-help-file", + "os": 1, + "release": 225, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python360b3.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python360b3.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9b34cf124560ce7ce0b3a85e1f791e27", + "filesize": 7999426, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1659, + "fields": { + "created": "2016-11-01T04:23:24.806Z", + "updated": "2016-11-01T04:23:24.814Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "360-b3-Windows-x86-executable-installer", + "os": 1, + "release": 225, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b84b8cb0b88ae7f5cf289a7af2005636", + "filesize": 30596800, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1660, + "fields": { + "created": "2016-11-01T04:23:24.950Z", + "updated": "2016-11-01T04:23:24.957Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "360-b3-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 225, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "df2d8f30bdb23c9e51413742e7f544b3", + "filesize": 6310411, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1661, + "fields": { + "created": "2016-11-22T06:34:42.505Z", + "updated": "2017-07-18T21:42:51.070Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "360-b4-Windows-x86-64-executable-installer", + "os": 1, + "release": 226, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ff9579da284ebd5983bb7c5f87439bad", + "filesize": 31643912, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1662, + "fields": { + "created": "2016-11-22T06:34:42.656Z", + "updated": "2016-11-22T06:34:42.663Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "360-b4-XZ-compressed-source-tarball", + "os": 3, + "release": 226, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0b4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0b4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f24ad7a990baef4686ba6fe962910bae", + "filesize": 16801836, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1663, + "fields": { + "created": "2016-11-22T06:34:42.758Z", + "updated": "2016-11-22T06:34:42.765Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "360-b4-Gzipped-source-tarball", + "os": 3, + "release": 226, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0b4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0b4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ab3ddd6d00e3946e0eb6fbe6a43656ff", + "filesize": 22246833, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1664, + "fields": { + "created": "2016-11-22T06:34:42.893Z", + "updated": "2016-11-22T06:34:42.904Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "360-b4-Windows-help-file", + "os": 1, + "release": 226, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python360b4.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python360b4.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "10ee15e0e5384512cb526acfbeb5b87a", + "filesize": 8036432, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1665, + "fields": { + "created": "2016-11-22T06:34:43.038Z", + "updated": "2017-07-18T21:42:51.597Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "360-b4-Windows-x86-64-web-based-installer", + "os": 1, + "release": 226, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b4-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b4-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f6c35d25820885fab459c3db56b3b8f9", + "filesize": 1312400, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1666, + "fields": { + "created": "2016-11-22T06:34:43.114Z", + "updated": "2016-11-22T06:34:43.121Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "360-b4-Windows-x86-executable-installer", + "os": 1, + "release": 226, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0601bb992f761fb8a9f43c03ea94ce01", + "filesize": 30704136, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1667, + "fields": { + "created": "2016-11-22T06:34:43.205Z", + "updated": "2016-11-22T06:34:43.214Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "360-b4-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 226, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b4-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b4-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0123697e7f0890bf03612f324f7e822a", + "filesize": 27499564, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1668, + "fields": { + "created": "2016-11-22T06:34:43.307Z", + "updated": "2016-11-22T06:34:43.315Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "360-b4-Windows-x86-web-based-installer", + "os": 1, + "release": 226, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b4-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b4-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "94646086a01a6ee91e6c11dec1cd586d", + "filesize": 1287024, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1669, + "fields": { + "created": "2016-11-22T06:34:43.388Z", + "updated": "2016-11-22T06:34:43.396Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "360-b4-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 226, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "baf106e6ff95e6f80ea2e9753fd8f8ed", + "filesize": 6314699, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1670, + "fields": { + "created": "2016-11-22T06:34:43.491Z", + "updated": "2017-07-18T21:42:50.484Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "360-b4-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 226, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0b4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "55371d93914b267abed8bbac3e6df9a5", + "filesize": 6923365, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1680, + "fields": { + "created": "2016-12-04T04:17:23.326Z", + "updated": "2016-12-04T04:17:23.334Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2713-rc1-Gzipped-source-tarball", + "os": 3, + "release": 227, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.13/Python-2.7.13rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/Python-2.7.13rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "58c61166190fdb00b3f05ec60897adb4", + "filesize": 17078889, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1681, + "fields": { + "created": "2016-12-04T04:17:23.406Z", + "updated": "2016-12-04T04:17:23.413Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2713-rc1-Windows-x86-MSI-installer", + "os": 1, + "release": 227, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.13/python-2.7.13rc1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/python-2.7.13rc1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3971b5d812e803f67b93f4ed0e128e60", + "filesize": 19156992, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1682, + "fields": { + "created": "2016-12-04T04:17:23.504Z", + "updated": "2016-12-04T04:17:23.510Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2713-rc1-Windows-debug-information-files", + "os": 1, + "release": 227, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.13/python-2.7.13rc1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/python-2.7.13rc1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e6019923e0ec9836964cbbfa00b39afa", + "filesize": 24703142, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1683, + "fields": { + "created": "2016-12-04T04:17:23.578Z", + "updated": "2016-12-04T04:17:23.585Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2713-rc1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 227, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.13/python-2.7.13rc1.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/python-2.7.13rc1.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a1d0cc9beb30911fc400b693c77bd94d", + "filesize": 25505958, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1684, + "fields": { + "created": "2016-12-04T04:17:23.658Z", + "updated": "2016-12-04T04:17:23.665Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2713-rc1-Windows-help-file", + "os": 1, + "release": 227, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.13/python2713rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/python2713rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b55063cf412926610d3175363bd4b271", + "filesize": 6226322, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1685, + "fields": { + "created": "2016-12-04T04:17:23.772Z", + "updated": "2016-12-04T04:17:23.780Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "2713-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 227, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.13/python-2.7.13rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/python-2.7.13rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3a2be86129465557d183b76eff556ad2", + "filesize": 22461480, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1686, + "fields": { + "created": "2016-12-04T04:17:23.851Z", + "updated": "2017-07-18T21:41:38.464Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2713-rc1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 227, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.13/python-2.7.13rc1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/python-2.7.13rc1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bd3744f1f0ad2573d0ec4a13f4d4196b", + "filesize": 20090880, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1687, + "fields": { + "created": "2016-12-04T04:17:23.954Z", + "updated": "2016-12-04T04:17:23.962Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2713-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 227, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.13/Python-2.7.13rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/Python-2.7.13rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "95f3c455d52f9c102e1fbce738d71d2d", + "filesize": 12497100, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1688, + "fields": { + "created": "2016-12-04T04:17:24.041Z", + "updated": "2016-12-04T04:17:24.048Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "2713-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 227, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.13/python-2.7.13rc1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/python-2.7.13rc1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "62556d0b6ed36402ff7dcaf4afe8d234", + "filesize": 24251445, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1689, + "fields": { + "created": "2016-12-07T06:24:31.854Z", + "updated": "2017-07-18T21:42:53.150Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "360-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 228, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5fb6456cd95b42b2fe979c18a4db0b4c", + "filesize": 1312472, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1690, + "fields": { + "created": "2016-12-07T06:24:31.997Z", + "updated": "2016-12-07T06:24:32.007Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "360-rc1-Windows-help-file", + "os": 1, + "release": 228, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python360rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python360rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "85bb35327e9483b59199f3174af64102", + "filesize": 8052979, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1691, + "fields": { + "created": "2016-12-07T06:24:32.098Z", + "updated": "2017-07-18T21:42:52.643Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "360-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 228, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5f4021a0c605bb75866bf6d069fa5760", + "filesize": 31659288, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1692, + "fields": { + "created": "2016-12-07T06:24:32.198Z", + "updated": "2016-12-07T06:24:32.207Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "360-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 228, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "404c390ae27f067aaab34f168cf913eb", + "filesize": 27511873, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1693, + "fields": { + "created": "2016-12-07T06:24:32.340Z", + "updated": "2016-12-07T06:24:32.347Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "360-rc1-Gzipped-source-tarball", + "os": 3, + "release": 228, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9dadf6a0401c9af57c039eb086084479", + "filesize": 22254727, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1694, + "fields": { + "created": "2016-12-07T06:24:32.450Z", + "updated": "2016-12-07T06:24:32.457Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "360-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 228, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c87f129d66434e6862a6c5d88c9d05cd", + "filesize": 1287080, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1695, + "fields": { + "created": "2016-12-07T06:24:32.526Z", + "updated": "2016-12-07T06:24:32.532Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "360-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 228, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d5f27483adb6fa7e3513ad174f469aa3", + "filesize": 6300340, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1696, + "fields": { + "created": "2016-12-07T06:24:32.824Z", + "updated": "2016-12-07T06:24:32.831Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "360-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 228, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7f3d344c7f15e1d580663d74fd77ee09", + "filesize": 30704936, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1697, + "fields": { + "created": "2016-12-07T06:24:33.137Z", + "updated": "2017-07-18T21:42:52.080Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "360-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 228, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0984a2706d49df4597e48794175a7533", + "filesize": 6926006, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1698, + "fields": { + "created": "2016-12-07T06:24:33.218Z", + "updated": "2016-12-07T06:24:33.226Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "360-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 228, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f079686c1b76052c96b38642ab341d2e", + "filesize": 16798208, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1699, + "fields": { + "created": "2016-12-17T03:40:37.912Z", + "updated": "2016-12-17T03:40:37.922Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "360-rc2-XZ-compressed-source-tarball", + "os": 3, + "release": 229, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0rc2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0rc2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "89cae0fd4ecd7d813abb19924537323f", + "filesize": 16807600, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1700, + "fields": { + "created": "2016-12-17T03:40:38.017Z", + "updated": "2016-12-17T03:40:38.024Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "360-rc2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 229, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "02a7857452973b7f23fac062c48da10b", + "filesize": 6315772, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1701, + "fields": { + "created": "2016-12-17T03:40:38.123Z", + "updated": "2016-12-17T03:40:38.129Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "360-rc2-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 229, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc2-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc2-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3c120bf3ab8a780e11b58bd0c13ca889", + "filesize": 27520046, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1702, + "fields": { + "created": "2016-12-17T03:40:38.226Z", + "updated": "2017-07-18T21:42:53.733Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "360-rc2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 229, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f9d6fd8d43476e4218f191a6dfc68ca1", + "filesize": 6925484, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1703, + "fields": { + "created": "2016-12-17T03:40:38.305Z", + "updated": "2017-07-18T21:42:55.248Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "360-rc2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 229, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6a5d5d57c7275beff78267ae5a8d0c06", + "filesize": 1312504, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1704, + "fields": { + "created": "2016-12-17T03:40:38.398Z", + "updated": "2016-12-17T03:40:38.408Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "360-rc2-Gzipped-source-tarball", + "os": 3, + "release": 229, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0rc2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0rc2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a122a75b2b024539cb22b9b8452dddc7", + "filesize": 22256774, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1705, + "fields": { + "created": "2016-12-17T03:40:38.501Z", + "updated": "2017-07-18T21:42:54.594Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "360-rc2-Windows-x86-64-executable-installer", + "os": 1, + "release": 229, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d216ea513fee6fc9c5b850d973534522", + "filesize": 31664672, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1706, + "fields": { + "created": "2016-12-17T03:40:38.640Z", + "updated": "2016-12-17T03:40:38.646Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "360-rc2-Windows-help-file", + "os": 1, + "release": 229, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python360rc2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python360rc2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7aca9b0f6fe91d6938b8aeab11267448", + "filesize": 8052749, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1707, + "fields": { + "created": "2016-12-17T03:40:38.719Z", + "updated": "2016-12-17T03:40:38.727Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "360-rc2-Windows-x86-executable-installer", + "os": 1, + "release": 229, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "412571b29fb544397c3651f594d239d8", + "filesize": 30718520, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1708, + "fields": { + "created": "2016-12-17T03:40:38.798Z", + "updated": "2016-12-17T03:40:38.805Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "360-rc2-Windows-x86-web-based-installer", + "os": 1, + "release": 229, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0rc2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "02dea78aa08d63b29f1cac2378b1c761", + "filesize": 1287088, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1709, + "fields": { + "created": "2016-12-17T21:30:11.648Z", + "updated": "2016-12-17T21:30:11.657Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "2713-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 230, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.13/python-2.7.13-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/python-2.7.13-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4c60d95cb637423b53c59c3064cc2e69", + "filesize": 24251431, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1710, + "fields": { + "created": "2016-12-17T21:30:11.796Z", + "updated": "2016-12-17T21:30:11.802Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2713-XZ-compressed-source-tarball", + "os": 3, + "release": 230, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "53b43534153bb2a0363f08bae8b9d990", + "filesize": 12495628, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1711, + "fields": { + "created": "2016-12-17T21:30:11.899Z", + "updated": "2017-07-18T21:41:37.605Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2713-Windows-x86-64-MSI-installer", + "os": 1, + "release": 230, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.13/python-2.7.13.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/python-2.7.13.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "268fd335aad649df7474adb13b6cf394", + "filesize": 20082688, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1712, + "fields": { + "created": "2016-12-17T21:30:11.980Z", + "updated": "2016-12-17T21:30:11.987Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "2713-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 230, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.13/python-2.7.13-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/python-2.7.13-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "862d11e2e356966246451388ee9e4b99", + "filesize": 22457385, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1713, + "fields": { + "created": "2016-12-17T21:30:12.116Z", + "updated": "2016-12-17T21:30:12.123Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2713-Windows-x86-MSI-installer", + "os": 1, + "release": 230, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0f057ab4490e63e528eaa4a70df711d9", + "filesize": 19161088, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1714, + "fields": { + "created": "2016-12-17T21:30:12.193Z", + "updated": "2016-12-17T21:30:12.201Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2713-Windows-debug-information-files", + "os": 1, + "release": 230, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.13/python-2.7.13-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/python-2.7.13-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dc0d9cc0266ec79e434c3d93a094de90", + "filesize": 24703142, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1715, + "fields": { + "created": "2016-12-17T21:30:12.301Z", + "updated": "2016-12-17T21:30:12.308Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2713-Gzipped-source-tarball", + "os": 3, + "release": 230, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "17add4bf0ad0ec2f08e0cae6d205c700", + "filesize": 17076672, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1716, + "fields": { + "created": "2016-12-17T21:30:12.384Z", + "updated": "2016-12-17T21:30:12.394Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2713-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 230, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.13/python-2.7.13.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/python-2.7.13.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7b1da6dc1947031cb362270b0644925e", + "filesize": 25505958, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1717, + "fields": { + "created": "2016-12-17T21:30:12.462Z", + "updated": "2016-12-17T21:30:12.469Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2713-Windows-help-file", + "os": 1, + "release": 230, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.13/python2713.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.13/python2713.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "95040f65a4a6db3d17c40fbd882f7eae", + "filesize": 6224783, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1718, + "fields": { + "created": "2016-12-23T09:30:14.667Z", + "updated": "2016-12-23T09:30:14.676Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "360-Windows-x86-web-based-installer", + "os": 1, + "release": 231, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f71f4590be2cc5cdc43069594d4ea98d", + "filesize": 1286984, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1719, + "fields": { + "created": "2016-12-23T09:30:14.773Z", + "updated": "2016-12-23T09:30:14.781Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "360-Gzipped-source-tarball", + "os": 3, + "release": 231, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3f7062ccf8be76491884d0e47ac8b251", + "filesize": 22256403, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1720, + "fields": { + "created": "2016-12-23T09:30:14.850Z", + "updated": "2017-07-18T21:42:36.330Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "360-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 231, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0ec0caeea75bae5d2771cf619917c71f", + "filesize": 6925798, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1721, + "fields": { + "created": "2016-12-23T09:30:14.954Z", + "updated": "2016-12-23T09:30:14.963Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "360-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 231, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "72acb0175e7622dec7e1b160a43b8c42", + "filesize": 27442222, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1722, + "fields": { + "created": "2016-12-23T09:30:15.034Z", + "updated": "2016-12-23T09:30:15.043Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "360-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 231, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1adf2fb735c5000af32d42c39136727c", + "filesize": 6315855, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1723, + "fields": { + "created": "2016-12-23T09:30:15.177Z", + "updated": "2016-12-23T09:30:15.183Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "360-Windows-help-file", + "os": 1, + "release": 231, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python360.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python360.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6a842a15ab3b4aa316c91a9779db82ec", + "filesize": 7940890, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1724, + "fields": { + "created": "2016-12-23T09:30:15.258Z", + "updated": "2017-07-18T21:42:37.150Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "360-Windows-x86-64-executable-installer", + "os": 1, + "release": 231, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "71c9d30c1110abf7f80a428970ab8ec2", + "filesize": 31505640, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1725, + "fields": { + "created": "2016-12-23T09:30:15.358Z", + "updated": "2017-07-18T21:42:37.726Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "360-Windows-x86-64-web-based-installer", + "os": 1, + "release": 231, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "25b8b6c93a098dfade3b014630f9508e", + "filesize": 1312376, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1726, + "fields": { + "created": "2016-12-23T09:30:15.440Z", + "updated": "2016-12-23T09:30:15.447Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "360-Windows-x86-executable-installer", + "os": 1, + "release": 231, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.0/python-3.6.0.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/python-3.6.0.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "38d9b036b25725f6acb553d4aece4db4", + "filesize": 30566536, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1727, + "fields": { + "created": "2016-12-23T09:30:15.521Z", + "updated": "2016-12-23T09:30:15.529Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "360-XZ-compressed-source-tarball", + "os": 3, + "release": 231, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "82b143ebbf4514d7e05876bed7a6b1f5", + "filesize": 16805836, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1739, + "fields": { + "created": "2017-01-03T02:17:48.801Z", + "updated": "2017-01-03T02:17:48.808Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "353-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 232, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python-3.5.3rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python-3.5.3rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0e1e27d5b56348202e364a09299d3fe5", + "filesize": 24751140, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1740, + "fields": { + "created": "2017-01-03T02:17:48.898Z", + "updated": "2017-07-18T21:42:35.261Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "353-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 232, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python-3.5.3rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python-3.5.3rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c00a2b36ba12b4f6f5fdc2e87f0be253", + "filesize": 30325184, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1741, + "fields": { + "created": "2017-01-03T02:17:48.981Z", + "updated": "2017-07-18T21:42:34.658Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "353-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 232, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python-3.5.3rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python-3.5.3rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b5f22550e4037c0b3f7a1aee1fabea1c", + "filesize": 6913433, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1742, + "fields": { + "created": "2017-01-03T02:17:49.061Z", + "updated": "2017-01-03T02:17:49.069Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "353-rc1-Gzipped-source-tarball", + "os": 3, + "release": 232, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.3/Python-3.5.3rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/Python-3.5.3rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ddf165b3156e6e3deea71a3e3ee293d1", + "filesize": 20655623, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1743, + "fields": { + "created": "2017-01-03T02:17:49.145Z", + "updated": "2017-01-03T02:17:49.153Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "353-rc1-Windows-help-file", + "os": 1, + "release": 232, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python353rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python353rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "24876c1881753b1bd727fddfbcd36886", + "filesize": 7819033, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1744, + "fields": { + "created": "2017-01-03T02:17:49.225Z", + "updated": "2017-01-03T02:17:49.232Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "353-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 232, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python-3.5.3rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python-3.5.3rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f9c4b872e22d1ba266a1e2b8b702b416", + "filesize": 949016, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1745, + "fields": { + "created": "2017-01-03T02:17:49.306Z", + "updated": "2017-01-03T02:17:49.316Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "353-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 232, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.3/Python-3.5.3rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/Python-3.5.3rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1d53fc82cd0b06b34eed1b84ce296847", + "filesize": 15309192, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1746, + "fields": { + "created": "2017-01-03T02:17:49.389Z", + "updated": "2017-01-03T02:17:49.396Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "353-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 232, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python-3.5.3rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python-3.5.3rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d976da2359961811e43cfaef94fedeee", + "filesize": 29410184, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1747, + "fields": { + "created": "2017-01-03T02:17:49.473Z", + "updated": "2017-01-03T02:17:49.480Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "353-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 232, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python-3.5.3rc1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python-3.5.3rc1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5e9be3abb85606439e119d463b352258", + "filesize": 26385450, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1748, + "fields": { + "created": "2017-01-03T02:17:49.556Z", + "updated": "2017-01-03T02:17:49.565Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "353-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 232, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python-3.5.3rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python-3.5.3rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "57697c6d604852f5d25f3f40b2aec9f9", + "filesize": 6088015, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1749, + "fields": { + "created": "2017-01-03T02:17:49.645Z", + "updated": "2017-07-18T21:42:35.817Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "353-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 232, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python-3.5.3rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python-3.5.3rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c823e644b2e2152729ad3c8698e44011", + "filesize": 974392, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1750, + "fields": { + "created": "2017-01-03T02:18:43.317Z", + "updated": "2017-01-03T02:18:43.324Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "346-rc1-Gzipped-source-tarball", + "os": 3, + "release": 233, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.6/Python-3.4.6rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.6/Python-3.4.6rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "175e4a8c2733cb42c9e45846acf45cf9", + "filesize": 19644075, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1751, + "fields": { + "created": "2017-01-03T02:18:43.395Z", + "updated": "2017-01-03T02:18:43.402Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "346-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 233, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.6/Python-3.4.6rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.6/Python-3.4.6rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "07a41b5754735a887926b63bd0802b62", + "filesize": 14514040, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1752, + "fields": { + "created": "2017-01-17T08:38:04.937Z", + "updated": "2017-01-17T08:38:04.948Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "346-XZ-compressed-source-tarball", + "os": 3, + "release": 235, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.6/Python-3.4.6.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.6/Python-3.4.6.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3e42a7d46c850f76fe8d47ab306bd744", + "filesize": 14473592, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1753, + "fields": { + "created": "2017-01-17T08:38:05.251Z", + "updated": "2017-01-17T08:38:05.261Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "346-Gzipped-source-tarball", + "os": 3, + "release": 235, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.6/Python-3.4.6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.6/Python-3.4.6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "74a7cbe1bd9652013ae6087ef346b9da", + "filesize": 19631408, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1754, + "fields": { + "created": "2017-01-17T08:38:07.043Z", + "updated": "2017-01-17T08:38:07.053Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "353-XZ-compressed-source-tarball", + "os": 3, + "release": 234, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "57d1f8bfbabf4f2500273fb0706e6f21", + "filesize": 15213396, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1755, + "fields": { + "created": "2017-01-17T08:38:07.230Z", + "updated": "2017-01-17T08:38:07.238Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "353-Windows-x86-web-based-installer", + "os": 1, + "release": 234, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python-3.5.3-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python-3.5.3-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "80c2aff5d76767a5a566da01d72744b7", + "filesize": 948992, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1756, + "fields": { + "created": "2017-01-17T08:38:07.592Z", + "updated": "2017-01-17T08:38:07.599Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "353-Gzipped-source-tarball", + "os": 3, + "release": 234, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6192f0e45f02575590760e68c621a488", + "filesize": 20656090, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1757, + "fields": { + "created": "2017-01-17T08:38:07.856Z", + "updated": "2017-01-17T08:38:07.862Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "353-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 234, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python-3.5.3-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python-3.5.3-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6f9ee2ad1fceb1a7c66c9ec565e57102", + "filesize": 24751146, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1758, + "fields": { + "created": "2017-01-17T08:38:08.119Z", + "updated": "2017-01-17T08:38:08.129Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "353-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 234, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python-3.5.3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python-3.5.3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7dbd6043bd041ed3db738ad90b6d697f", + "filesize": 6087892, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1759, + "fields": { + "created": "2017-01-17T08:38:08.306Z", + "updated": "2017-07-18T21:42:34.061Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "353-Windows-x86-64-web-based-installer", + "os": 1, + "release": 234, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python-3.5.3-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python-3.5.3-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b6be1ce6e69ac7dcdfb3316c91bebd95", + "filesize": 974352, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1760, + "fields": { + "created": "2017-01-17T08:38:08.497Z", + "updated": "2017-01-17T08:38:08.508Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "353-Windows-x86-executable-installer", + "os": 1, + "release": 234, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python-3.5.3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python-3.5.3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2f5c4eed044a49f507ac64ad6f6abf80", + "filesize": 29347880, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1761, + "fields": { + "created": "2017-01-17T08:38:08.685Z", + "updated": "2017-01-17T08:38:08.692Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "353-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 234, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python-3.5.3-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python-3.5.3-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4994f588ebad17c4bf12148729b430d5", + "filesize": 26385455, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1762, + "fields": { + "created": "2017-01-17T08:38:08.872Z", + "updated": "2017-01-17T08:38:08.880Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "353-Windows-help-file", + "os": 1, + "release": 234, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python353.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python353.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "91600322a55cff692dd7fbcb2fb0d841", + "filesize": 7794982, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1763, + "fields": { + "created": "2017-01-17T08:38:09.114Z", + "updated": "2017-07-18T21:42:33.518Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "353-Windows-x86-64-executable-installer", + "os": 1, + "release": 234, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python-3.5.3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python-3.5.3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "333d536b5f76f95a6118fb2ecd623351", + "filesize": 30261960, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1764, + "fields": { + "created": "2017-01-17T08:38:09.294Z", + "updated": "2017-07-18T21:42:32.922Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "353-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 234, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.3/python-3.5.3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.3/python-3.5.3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1264131c4c2f3f935f34c455bceedee1", + "filesize": 6913264, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1765, + "fields": { + "created": "2017-03-05T10:16:04.924Z", + "updated": "2017-07-18T21:42:58.936Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "361-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 236, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.1/python-3.6.1rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/python-3.6.1rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "66bf5210a966245039d72d317a98507b", + "filesize": 31388312, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1766, + "fields": { + "created": "2017-03-05T10:16:05.034Z", + "updated": "2017-07-18T21:42:59.528Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "361-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 236, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.1/python-3.6.1rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/python-3.6.1rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a09456e420e5534dd3e4f38fb40a95f4", + "filesize": 1312896, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1767, + "fields": { + "created": "2017-03-05T10:16:05.141Z", + "updated": "2017-03-05T10:16:05.147Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "361-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 236, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.1/python-3.6.1rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/python-3.6.1rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "45232ae82b95a81242ad0e60f089e217", + "filesize": 30435600, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1768, + "fields": { + "created": "2017-03-05T10:16:05.217Z", + "updated": "2017-03-05T10:16:05.224Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "361-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 236, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.1/python-3.6.1rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/python-3.6.1rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "568a2c8c599b4ec18c9a659f30f5deba", + "filesize": 27511860, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1769, + "fields": { + "created": "2017-03-05T10:16:05.316Z", + "updated": "2017-03-05T10:16:05.326Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "361-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 236, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.1/python-3.6.1rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/python-3.6.1rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "278245977c08d5ffa7ea8ca79cc760c9", + "filesize": 1287448, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1770, + "fields": { + "created": "2017-03-05T10:16:05.398Z", + "updated": "2017-07-18T21:42:58.358Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "361-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 236, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.1/python-3.6.1rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/python-3.6.1rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5dcc5cc449d7438b68eebc6c0ecbed1b", + "filesize": 6926522, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1771, + "fields": { + "created": "2017-03-05T10:16:05.474Z", + "updated": "2017-03-05T10:16:05.480Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "361-rc1-Gzipped-source-tarball", + "os": 3, + "release": 236, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.1/Python-3.6.1rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/Python-3.6.1rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f2e5670eba78c1471b72de98276bf56f", + "filesize": 22537629, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1772, + "fields": { + "created": "2017-03-05T10:16:05.573Z", + "updated": "2017-03-05T10:16:05.579Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "361-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 236, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.1/Python-3.6.1rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/Python-3.6.1rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5919c290d3727d81c3472e6c46fd78b6", + "filesize": 16877216, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1773, + "fields": { + "created": "2017-03-05T10:16:05.676Z", + "updated": "2017-03-05T10:16:05.685Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "361-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 236, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.1/python-3.6.1rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/python-3.6.1rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "78b34cb32ebbc02bba43d7469367bf0d", + "filesize": 6304871, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1774, + "fields": { + "created": "2017-03-05T10:16:05.761Z", + "updated": "2017-03-05T10:16:05.771Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "361-rc1-Windows-help-file", + "os": 1, + "release": 236, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.1/python361rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/python361rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a12497dc74aa6bd882845049dabfc808", + "filesize": 7986933, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1775, + "fields": { + "created": "2017-03-22T02:17:46.430Z", + "updated": "2017-03-22T02:17:46.440Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "361-Windows-x86-executable-installer", + "os": 1, + "release": 237, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.1/python-3.6.1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/python-3.6.1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3773db079c173bd6d8a631896c72a88f", + "filesize": 30453192, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1776, + "fields": { + "created": "2017-03-22T02:17:46.491Z", + "updated": "2017-03-22T02:17:46.500Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "361-Windows-help-file", + "os": 1, + "release": 237, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.1/python361.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/python361.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "69082441d723060fb333dcda8815105e", + "filesize": 7986690, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1777, + "fields": { + "created": "2017-03-22T02:17:46.547Z", + "updated": "2017-07-18T21:42:57.651Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "361-Windows-x86-64-web-based-installer", + "os": 1, + "release": 237, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.1/python-3.6.1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/python-3.6.1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a055a1a0e938e74c712a1c495261ae6c", + "filesize": 1312520, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1778, + "fields": { + "created": "2017-03-22T02:17:46.605Z", + "updated": "2017-07-18T21:42:57.040Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "361-Windows-x86-64-executable-installer", + "os": 1, + "release": 237, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.1/python-3.6.1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/python-3.6.1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ad69fdacde90f2ce8286c279b11ca188", + "filesize": 31392272, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1779, + "fields": { + "created": "2017-03-22T02:17:46.659Z", + "updated": "2017-03-22T02:17:46.668Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "361-XZ-compressed-source-tarball", + "os": 3, + "release": 237, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "692b4fc3a2ba0d54d1495d4ead5b0b5c", + "filesize": 16872064, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1780, + "fields": { + "created": "2017-03-22T02:17:46.715Z", + "updated": "2017-03-22T02:17:46.722Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "361-Gzipped-source-tarball", + "os": 3, + "release": 237, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2d0fc9f3a5940707590e07f03ecb08b9", + "filesize": 22540566, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1781, + "fields": { + "created": "2017-03-22T02:17:46.779Z", + "updated": "2017-03-22T02:17:46.789Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "361-Windows-x86-web-based-installer", + "os": 1, + "release": 237, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.1/python-3.6.1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/python-3.6.1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f58f019335f39e0b45a0ae68027888d7", + "filesize": 1287064, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1782, + "fields": { + "created": "2017-03-22T02:17:46.845Z", + "updated": "2017-03-22T02:17:46.851Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "361-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 237, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.1/python-3.6.1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/python-3.6.1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6dd08e7027d2a1b3a2c02cfacbe611ef", + "filesize": 27511848, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1783, + "fields": { + "created": "2017-03-22T02:17:46.909Z", + "updated": "2017-07-18T21:42:56.477Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "361-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 237, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.1/python-3.6.1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/python-3.6.1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "708496ebbe9a730d19d5d288afd216f1", + "filesize": 6926999, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1784, + "fields": { + "created": "2017-03-22T02:17:46.957Z", + "updated": "2017-03-22T02:17:46.964Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "361-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 237, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.1/python-3.6.1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.1/python-3.6.1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8dff09a1b19b7a7dcb915765328484cf", + "filesize": 6320763, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1785, + "fields": { + "created": "2017-06-18T01:37:46.433Z", + "updated": "2017-07-18T21:43:02.877Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "362-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 238, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eed6ffc3bf3140797ad70c8efaca4f56", + "filesize": 1312824, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1786, + "fields": { + "created": "2017-06-18T01:37:46.516Z", + "updated": "2017-07-18T21:43:01.764Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "362-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 238, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "19b2e19aa9fc041b9c8537c04ddad0ce", + "filesize": 7041335, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1787, + "fields": { + "created": "2017-06-18T01:37:46.566Z", + "updated": "2017-06-18T01:37:46.573Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "362-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 238, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.2/Python-3.6.2rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/Python-3.6.2rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6aea0d9e780c3e9167624511b2d6f715", + "filesize": 16909384, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1788, + "fields": { + "created": "2017-06-18T01:37:46.618Z", + "updated": "2017-06-18T01:37:46.625Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "362-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 238, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d3c641f6ed8061ee28b648b43c683756", + "filesize": 27552814, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1789, + "fields": { + "created": "2017-06-18T01:37:46.670Z", + "updated": "2017-07-18T21:43:02.338Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "362-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 238, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "04c19309f40d58842549b5f15752f94c", + "filesize": 31425536, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1790, + "fields": { + "created": "2017-06-18T01:37:46.722Z", + "updated": "2017-06-18T01:37:46.729Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "362-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 238, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a35daba6f1a7aab7b1bd2f6ed564aa5e", + "filesize": 1287416, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1791, + "fields": { + "created": "2017-06-18T01:37:46.774Z", + "updated": "2017-06-18T01:37:46.783Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "362-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 238, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0d86526564b66115db2ed839d81b1848", + "filesize": 6326633, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1792, + "fields": { + "created": "2017-06-18T01:37:46.829Z", + "updated": "2017-06-18T01:37:46.837Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "362-rc1-Windows-help-file", + "os": 1, + "release": 238, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python362rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python362rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ab66c4e7720bf084c46f33b7a574879f", + "filesize": 8008443, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1793, + "fields": { + "created": "2017-06-18T01:37:46.883Z", + "updated": "2017-06-18T01:37:46.889Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "362-rc1-Gzipped-source-tarball", + "os": 3, + "release": 238, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.2/Python-3.6.2rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/Python-3.6.2rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d04b737d6cc5e1f8761065b24a3e5713", + "filesize": 22580230, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1794, + "fields": { + "created": "2017-06-18T01:37:46.938Z", + "updated": "2017-06-18T01:37:46.945Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "362-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 238, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "191a963f9fc193688c717ac670a1f8f5", + "filesize": 30506376, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1795, + "fields": { + "created": "2017-07-08T03:52:19.093Z", + "updated": "2017-07-08T03:52:19.104Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "362-rc2-Windows-x86-web-based-installer", + "os": 1, + "release": 239, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e7b616017d66b982ce0989aef54f91a5", + "filesize": 1287424, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1796, + "fields": { + "created": "2017-07-08T03:52:19.257Z", + "updated": "2017-07-08T03:52:19.267Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "362-rc2-Windows-x86-executable-installer", + "os": 1, + "release": 239, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c64e7c09d801ccc2e19a7ead942048be", + "filesize": 30496448, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1797, + "fields": { + "created": "2017-07-08T03:52:19.404Z", + "updated": "2017-07-08T03:52:19.411Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "362-rc2-Gzipped-source-tarball", + "os": 3, + "release": 239, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.2/Python-3.6.2rc2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/Python-3.6.2rc2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fff3b6823fbbcfa3df367a8714a56fae", + "filesize": 22587214, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1798, + "fields": { + "created": "2017-07-08T03:52:19.505Z", + "updated": "2017-07-18T21:43:03.393Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "362-rc2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 239, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0811925abb4584d7adb9e8be912199bc", + "filesize": 7046800, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1799, + "fields": { + "created": "2017-07-08T03:52:19.582Z", + "updated": "2017-07-08T03:52:19.589Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "362-rc2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 239, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eb2b02281e64cf2ba68725688e1fd87a", + "filesize": 6317694, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1800, + "fields": { + "created": "2017-07-08T03:52:19.684Z", + "updated": "2017-07-18T21:43:04.325Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "362-rc2-Windows-x86-64-executable-installer", + "os": 1, + "release": 239, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "65cf85c77ac10739a190ee9047a8973a", + "filesize": 31431176, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1801, + "fields": { + "created": "2017-07-08T03:52:19.786Z", + "updated": "2017-07-18T21:43:04.827Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "362-rc2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 239, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d459e3c3f7c6f63dea1de90c50975ee3", + "filesize": 1312872, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1802, + "fields": { + "created": "2017-07-08T03:52:19.869Z", + "updated": "2017-07-08T03:52:19.875Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "362-rc2-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 239, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc2-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2rc2-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "11bbb6fc6d8b7ab7e0ecdf73415520a0", + "filesize": 27565109, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1803, + "fields": { + "created": "2017-07-08T03:52:20.005Z", + "updated": "2017-07-08T03:52:20.012Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "362-rc2-XZ-compressed-source-tarball", + "os": 3, + "release": 239, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.2/Python-3.6.2rc2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/Python-3.6.2rc2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9863675fe12e9d1721977f58713745db", + "filesize": 16914248, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1804, + "fields": { + "created": "2017-07-08T03:52:20.082Z", + "updated": "2017-07-08T03:52:20.090Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "362-rc2-Windows-help-file", + "os": 1, + "release": 239, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python362rc2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python362rc2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cf275101056c8df669ab4cf7bc4619b6", + "filesize": 8009909, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1805, + "fields": { + "created": "2017-07-17T04:11:23.591Z", + "updated": "2017-07-17T04:11:23.601Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "362-Windows-help-file", + "os": 1, + "release": 240, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python362.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python362.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e520a5c1c3e3f02f68e3db23f74a7a90", + "filesize": 8010498, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1806, + "fields": { + "created": "2017-07-17T04:11:23.647Z", + "updated": "2017-07-18T21:43:01.231Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "362-Windows-x86-64-web-based-installer", + "os": 1, + "release": 240, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "58ffad3d92a590a463908dfedbc68c18", + "filesize": 1312496, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1807, + "fields": { + "created": "2017-07-17T04:11:23.718Z", + "updated": "2017-07-18T21:43:00.675Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "362-Windows-x86-64-executable-installer", + "os": 1, + "release": 240, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4377e7d4e6877c248446f7cd6a1430cf", + "filesize": 31434856, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1808, + "fields": { + "created": "2017-07-17T04:11:23.779Z", + "updated": "2017-07-18T21:43:00.087Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "362-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 240, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0fdfe9f79e0991815d6fc1712871c17f", + "filesize": 7047535, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1809, + "fields": { + "created": "2017-07-17T04:11:23.843Z", + "updated": "2017-07-17T04:11:23.854Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "362-XZ-compressed-source-tarball", + "os": 3, + "release": 240, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2c68846471994897278364fc18730dd9", + "filesize": 16907204, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1810, + "fields": { + "created": "2017-07-17T04:11:23.943Z", + "updated": "2017-07-17T04:11:23.959Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "362-Windows-x86-web-based-installer", + "os": 1, + "release": 240, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ccb7d66e3465eaf40ade05b76715b56c", + "filesize": 1287040, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1811, + "fields": { + "created": "2017-07-17T04:11:24.042Z", + "updated": "2017-07-17T04:11:24.048Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "362-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 240, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2ca4768fdbadf6e670e97857bfab83e8", + "filesize": 6332409, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1812, + "fields": { + "created": "2017-07-17T04:11:24.098Z", + "updated": "2017-07-17T04:11:24.105Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "362-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 240, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "86e6193fd56b1e757fc8a5a2bb6c52ba", + "filesize": 27561006, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1813, + "fields": { + "created": "2017-07-17T04:11:24.194Z", + "updated": "2017-07-17T04:11:24.201Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "362-Gzipped-source-tarball", + "os": 3, + "release": 240, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e1a36bfffdd1d3a780b1825daf16e56c", + "filesize": 22580749, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1814, + "fields": { + "created": "2017-07-17T04:11:24.306Z", + "updated": "2017-07-17T04:11:24.312Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "362-Windows-x86-executable-installer", + "os": 1, + "release": 240, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.2/python-3.6.2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.2/python-3.6.2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8d8e1711ef9a4b3d3d0ce21e4155c0f5", + "filesize": 30507592, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1815, + "fields": { + "created": "2017-07-25T08:35:37.389Z", + "updated": "2017-07-25T08:35:37.399Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "347-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 241, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.7/Python-3.4.7rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.7/Python-3.4.7rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1d4f113c1abc7d85eb5095e02baa2ea5", + "filesize": 14536540, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1816, + "fields": { + "created": "2017-07-25T08:35:37.444Z", + "updated": "2017-07-25T08:35:37.451Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "347-rc1-Gzipped-source-tarball", + "os": 3, + "release": 241, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.7/Python-3.4.7rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.7/Python-3.4.7rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2c171f13487e502eb2c791d40a9fc23c", + "filesize": 19644550, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1817, + "fields": { + "created": "2017-07-25T08:35:46.582Z", + "updated": "2017-07-25T08:35:46.590Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "354-rc1-Windows-help-file", + "os": 1, + "release": 242, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python354rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python354rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "74168c21390c6ea69181510cf78fde79", + "filesize": 7531495, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1818, + "fields": { + "created": "2017-07-25T08:35:46.632Z", + "updated": "2017-07-25T08:35:46.641Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "354-rc1-Gzipped-source-tarball", + "os": 3, + "release": 242, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.4/Python-3.5.4rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/Python-3.5.4rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "19fc1fa04f1e765cc0deb72de88cc739", + "filesize": 20751209, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1819, + "fields": { + "created": "2017-07-25T08:35:46.690Z", + "updated": "2017-07-25T08:35:46.697Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "354-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 242, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python-3.5.4rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python-3.5.4rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f082766b6695a980abf0e45226073ecb", + "filesize": 949040, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1820, + "fields": { + "created": "2017-07-25T08:35:46.749Z", + "updated": "2017-07-25T08:35:46.756Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "354-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 242, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python-3.5.4rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python-3.5.4rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8299638fbc3c23d7ca2104698fc985c6", + "filesize": 29870512, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1821, + "fields": { + "created": "2017-07-25T08:35:46.840Z", + "updated": "2017-07-25T08:35:46.849Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "354-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 242, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python-3.5.4rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python-3.5.4rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fb8bbadfc13125e56fbc9c98efa2ab25", + "filesize": 6104286, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1822, + "fields": { + "created": "2017-07-25T08:35:46.979Z", + "updated": "2017-07-25T08:35:46.990Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "354-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 242, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python-3.5.4rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python-3.5.4rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0b73e345afbad3fe7ad39889110e407b", + "filesize": 28955672, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1823, + "fields": { + "created": "2017-07-25T08:35:47.107Z", + "updated": "2017-07-25T08:35:47.113Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "354-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 242, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python-3.5.4rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python-3.5.4rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f47b442d4123efda64bfc3e26bdf9717", + "filesize": 24902706, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1824, + "fields": { + "created": "2017-07-25T08:35:47.202Z", + "updated": "2017-07-25T08:35:47.210Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "354-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 242, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.4/Python-3.5.4rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/Python-3.5.4rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8d1fd76bf4e48adfdeb0d072b16bbaac", + "filesize": 15368932, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1825, + "fields": { + "created": "2017-07-25T08:35:47.256Z", + "updated": "2017-07-25T08:35:47.262Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "354-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 242, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python-3.5.4rc1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python-3.5.4rc1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c28fccde04319df7c62941c1a5b884b2", + "filesize": 26594338, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1826, + "fields": { + "created": "2017-07-25T08:35:47.317Z", + "updated": "2017-07-25T08:35:47.324Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "354-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 242, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python-3.5.4rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python-3.5.4rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0d7c8310c571f8e5a7a379fbe0f0379d", + "filesize": 6934350, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1827, + "fields": { + "created": "2017-07-25T08:35:47.366Z", + "updated": "2017-07-25T08:35:47.376Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "354-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 242, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python-3.5.4rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python-3.5.4rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d37d0c92b4c6d308359f1edbdba4eed1", + "filesize": 974376, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1828, + "fields": { + "created": "2017-08-08T10:58:37.745Z", + "updated": "2017-08-08T10:58:37.757Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "354-Windows-x86-64-web-based-installer", + "os": 1, + "release": 243, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python-3.5.4-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python-3.5.4-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bb2df5d7b7fb7666201ef2cfaad044b3", + "filesize": 974328, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1829, + "fields": { + "created": "2017-08-08T10:58:37.934Z", + "updated": "2017-08-08T10:58:37.944Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "354-Windows-help-file", + "os": 1, + "release": 243, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python354.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python354.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b9f45923c41b30a683130fdc71f85a99", + "filesize": 7532322, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1830, + "fields": { + "created": "2017-08-08T10:58:38.028Z", + "updated": "2017-08-08T10:58:38.040Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "354-XZ-compressed-source-tarball", + "os": 3, + "release": 243, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fb2780baa260b4e51cbea814f111f303", + "filesize": 15332320, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1831, + "fields": { + "created": "2017-08-08T10:58:38.120Z", + "updated": "2017-08-08T10:58:38.126Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "354-Windows-x86-64-executable-installer", + "os": 1, + "release": 243, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python-3.5.4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python-3.5.4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4276742a4a75a8d07260f13fe956eec4", + "filesize": 29849120, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1832, + "fields": { + "created": "2017-08-08T10:58:38.182Z", + "updated": "2017-08-08T10:58:38.190Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "354-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 243, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python-3.5.4-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python-3.5.4-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "96bf5d47777e8352209f743c06bed555", + "filesize": 24874014, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1833, + "fields": { + "created": "2017-08-08T10:58:38.271Z", + "updated": "2017-08-08T10:58:38.278Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "354-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 243, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python-3.5.4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python-3.5.4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3ce7b067ddd9a91bb221351d9370ebe9", + "filesize": 6104188, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1834, + "fields": { + "created": "2017-08-08T10:58:38.325Z", + "updated": "2017-08-08T10:58:38.332Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "354-Gzipped-source-tarball", + "os": 3, + "release": 243, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2ed4802b7a2a7e40d2e797272bf388ec", + "filesize": 20733411, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1835, + "fields": { + "created": "2017-08-08T10:58:38.418Z", + "updated": "2017-08-08T10:58:38.425Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "354-Windows-x86-executable-installer", + "os": 1, + "release": 243, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python-3.5.4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python-3.5.4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9693575358f41f452d03fd33714f223f", + "filesize": 28932168, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1836, + "fields": { + "created": "2017-08-08T10:58:38.858Z", + "updated": "2017-08-08T10:58:38.872Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "354-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 243, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python-3.5.4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python-3.5.4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1b56c67f3c849446794a15189f425f53", + "filesize": 6934338, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1837, + "fields": { + "created": "2017-08-08T10:58:38.938Z", + "updated": "2017-08-08T10:58:38.948Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "354-Windows-x86-web-based-installer", + "os": 1, + "release": 243, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python-3.5.4-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python-3.5.4-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fd91f7c78fe3a9ad3f270672cecae5d2", + "filesize": 949008, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1838, + "fields": { + "created": "2017-08-08T10:58:39.032Z", + "updated": "2017-08-08T10:58:39.039Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "354-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 243, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.5.4/python-3.5.4-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.4/python-3.5.4-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "18bab8161b162add0a9116d50031b347", + "filesize": 26565678, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1839, + "fields": { + "created": "2017-08-09T07:30:38.427Z", + "updated": "2017-08-09T07:30:38.438Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "347-Gzipped-source-tarball", + "os": 3, + "release": 244, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.7/Python-3.4.7.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.7/Python-3.4.7.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "47bc789829ca7fc06eaa46588a261624", + "filesize": 19652913, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1840, + "fields": { + "created": "2017-08-09T07:30:38.488Z", + "updated": "2017-08-09T07:30:38.497Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "347-XZ-compressed-source-tarball", + "os": 3, + "release": 244, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.7/Python-3.4.7.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.7/Python-3.4.7.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fba7c150dd2366f9523fa13b88736dea", + "filesize": 14511368, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1841, + "fields": { + "created": "2017-08-27T03:38:10.410Z", + "updated": "2017-08-27T03:38:10.420Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "2714-rc1-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 245, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.14/python-2.7.14rc1-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/python-2.7.14rc1-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "441409edb8cd4e7b8c749f366129967d", + "filesize": 24468537, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1842, + "fields": { + "created": "2017-08-27T03:38:10.524Z", + "updated": "2017-08-27T03:38:10.536Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2714-rc1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 245, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.14/python-2.7.14rc1.amd64.msi", + "gpg_signature_file": "", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c0c918543e3025c5ceba79f815409659", + "filesize": 20172800, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1843, + "fields": { + "created": "2017-08-27T03:38:10.624Z", + "updated": "2017-08-27T03:38:10.633Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2714-rc1-Gzipped-source-tarball", + "os": 3, + "release": 245, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.14/Python-2.7.14rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/Python-2.7.14rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "51dc2952393a1f00f8bfb02dca5f9ea8", + "filesize": 17002056, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1844, + "fields": { + "created": "2017-08-27T03:38:10.722Z", + "updated": "2017-08-27T03:38:10.729Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2714-rc1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 245, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.14/python-2.7.14rc1.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/python-2.7.14rc1.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f662a442bb668cf76c0e2ad262cb9e26", + "filesize": 25620646, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1845, + "fields": { + "created": "2017-08-27T03:38:10.826Z", + "updated": "2017-08-27T03:38:10.832Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2714-rc1-Windows-help-file", + "os": 1, + "release": 245, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.14/python2714rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/python2714rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "925bc8b74c8770b4367791a6fa528206", + "filesize": 6250688, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1846, + "fields": { + "created": "2017-08-27T03:38:10.893Z", + "updated": "2017-08-27T03:38:10.905Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2714-rc1-Windows-x86-MSI-installer", + "os": 1, + "release": 245, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.14/python-2.7.14rc1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/python-2.7.14rc1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "548cf636b618f925f484b1e465dfec97", + "filesize": 19230720, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1847, + "fields": { + "created": "2017-08-27T03:38:10.988Z", + "updated": "2017-08-27T03:38:10.994Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2714-rc1-Windows-debug-information-files", + "os": 1, + "release": 245, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.14/python-2.7.14rc1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/python-2.7.14rc1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7d040c6eb748e410efe40a0528f83c7a", + "filesize": 24834214, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1848, + "fields": { + "created": "2017-08-27T03:38:11.076Z", + "updated": "2017-08-27T03:38:11.082Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2714-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 245, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.14/Python-2.7.14rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/Python-2.7.14rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ddda0952a8a79056f537f38d0cf917f9", + "filesize": 12451332, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1849, + "fields": { + "created": "2017-08-27T03:38:11.164Z", + "updated": "2017-08-27T03:38:11.170Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "2714-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 245, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.14/python-2.7.14rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/python-2.7.14rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "06c40f67bf807dc5014addd05b37641a", + "filesize": 22608940, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1850, + "fields": { + "created": "2017-09-06T22:51:28.781Z", + "updated": "2017-09-06T22:51:28.790Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "337-rc1-Gzipped-source-tarball", + "os": 3, + "release": 246, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.7/Python-3.3.7rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.7/Python-3.3.7rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e1f276f4a5c6b50764246edee8c90d52", + "filesize": 16878647, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1851, + "fields": { + "created": "2017-09-06T22:51:28.838Z", + "updated": "2017-09-06T22:51:28.845Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "337-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 246, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.7/Python-3.3.7rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.7/Python-3.3.7rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d6e7a5960b052aa4135c278e33ec046c", + "filesize": 12164188, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1852, + "fields": { + "created": "2017-09-16T21:53:36.456Z", + "updated": "2017-09-16T21:53:36.464Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2714-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 247, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.14/python-2.7.14.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/python-2.7.14.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cf73b28cb8b76ed2374f0b2c710d202a", + "filesize": 25620646, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1853, + "fields": { + "created": "2017-09-16T21:53:36.554Z", + "updated": "2017-09-16T21:53:36.564Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2714-Windows-x86-64-MSI-installer", + "os": 1, + "release": 247, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.14/python-2.7.14.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/python-2.7.14.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "370014d73c3059f610c27365def62058", + "filesize": 20168704, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1854, + "fields": { + "created": "2017-09-16T21:53:36.650Z", + "updated": "2017-09-16T21:53:36.657Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "2714-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 247, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.14/python-2.7.14-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/python-2.7.14-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2c959c6ba4ffed23bd102c4e92095fa9", + "filesize": 22604859, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1855, + "fields": { + "created": "2017-09-16T21:53:36.740Z", + "updated": "2017-09-16T21:53:36.747Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 32-bit i386/PPC installer", + "slug": "2714-Mac-OS-X-32-bit-i386PPC-installer", + "os": 2, + "release": 247, + "description": "for Mac OS X 10.5 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.14/python-2.7.14-macosx10.5.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/python-2.7.14-macosx10.5.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "67cf2aed974cd04fe96ddac29758b637", + "filesize": 24468530, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1856, + "fields": { + "created": "2017-09-16T21:53:36.835Z", + "updated": "2017-09-16T21:53:36.842Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2714-XZ-compressed-source-tarball", + "os": 3, + "release": 247, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1f6db41ad91d9eb0a6f0c769b8613c5b", + "filesize": 12576112, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1857, + "fields": { + "created": "2017-09-16T21:53:36.930Z", + "updated": "2017-09-16T21:53:36.939Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2714-Windows-x86-MSI-installer", + "os": 1, + "release": 247, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.14/python-2.7.14.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/python-2.7.14.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fff688dc4968ec80bbb0eedf45de82db", + "filesize": 19238912, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1858, + "fields": { + "created": "2017-09-16T21:53:37.057Z", + "updated": "2017-09-16T21:53:37.063Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2714-Gzipped-source-tarball", + "os": 3, + "release": 247, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cee2e4b33ad3750da77b2e85f2f8b724", + "filesize": 17176758, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1859, + "fields": { + "created": "2017-09-16T21:53:37.113Z", + "updated": "2017-09-16T21:53:37.124Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2714-Windows-help-file", + "os": 1, + "release": 247, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.14/python2714.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/python2714.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0f742a733778565ab7ace9aea53c1709", + "filesize": 6251855, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1860, + "fields": { + "created": "2017-09-16T21:53:37.180Z", + "updated": "2017-09-16T21:53:37.192Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2714-Windows-debug-information-files", + "os": 1, + "release": 247, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.14/python-2.7.14-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.14/python-2.7.14-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "85775bb18b460be79a25c0952b8121f9", + "filesize": 24834214, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1861, + "fields": { + "created": "2017-09-19T08:51:16.608Z", + "updated": "2017-09-19T08:51:16.618Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "337-XZ-compressed-source-tarball", + "os": 3, + "release": 248, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.7/Python-3.3.7.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.7/Python-3.3.7.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "84e2f12f044ca53b577f6224c53f82ac", + "filesize": 12160392, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1862, + "fields": { + "created": "2017-09-19T08:51:16.669Z", + "updated": "2017-09-19T08:51:16.676Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "337-Gzipped-source-tarball", + "os": 3, + "release": 248, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.3.7/Python-3.3.7.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.3.7/Python-3.3.7.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c54f93b012320871e6cbd0902ecb5769", + "filesize": 16878757, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1863, + "fields": { + "created": "2017-09-19T18:02:59.773Z", + "updated": "2017-09-19T18:02:59.783Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "363-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 249, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.3/python-3.6.3rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/python-3.6.3rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d8f725afe86bd4d32ce8c19278c6346c", + "filesize": 1312856, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1864, + "fields": { + "created": "2017-09-19T18:02:59.901Z", + "updated": "2017-09-19T18:02:59.911Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "363-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 249, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.3/python-3.6.3rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/python-3.6.3rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "337014bf4b11971f9e7edabcc3403a3f", + "filesize": 6387918, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1865, + "fields": { + "created": "2017-09-19T18:02:59.978Z", + "updated": "2017-09-19T18:02:59.988Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "363-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 249, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.3/python-3.6.3rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/python-3.6.3rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3fe3b7f8ae21370d3f363feb5442d5ba", + "filesize": 7146352, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1866, + "fields": { + "created": "2017-09-19T18:03:00.082Z", + "updated": "2017-09-19T18:03:00.090Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "363-rc1-Windows-help-file", + "os": 1, + "release": 249, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.3/python363rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/python363rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d411ca39f6193589f1f44c60ffbd862d", + "filesize": 8020770, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1867, + "fields": { + "created": "2017-09-19T18:03:00.136Z", + "updated": "2017-09-19T18:03:00.148Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "363-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 249, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.3/Python-3.6.3rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/Python-3.6.3rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "70b5e2986f0e3cca5334205108b2793e", + "filesize": 16970160, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1868, + "fields": { + "created": "2017-09-19T18:03:00.241Z", + "updated": "2017-09-19T18:03:00.248Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "363-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 249, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.3/python-3.6.3rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/python-3.6.3rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eef44f9aaa3f723954cbff2a3ee3bf70", + "filesize": 1287456, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1869, + "fields": { + "created": "2017-09-19T18:03:00.320Z", + "updated": "2017-09-19T18:03:00.329Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "363-rc1-Gzipped-source-tarball", + "os": 3, + "release": 249, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.3/Python-3.6.3rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/Python-3.6.3rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1b8c52cd948d2143ce4b1ea5123b7f2d", + "filesize": 22674172, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1870, + "fields": { + "created": "2017-09-19T18:03:00.419Z", + "updated": "2017-09-19T18:03:00.427Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "363-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 249, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.3/python-3.6.3rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/python-3.6.3rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f9ee5040c299452a28a7fb81e71d008c", + "filesize": 30586592, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1871, + "fields": { + "created": "2017-09-19T18:03:00.524Z", + "updated": "2017-09-19T18:03:00.532Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "363-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 249, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.3/python-3.6.3rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/python-3.6.3rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "25bfc253ecbe0dbd27dfe39c45fe7a5c", + "filesize": 27696162, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1872, + "fields": { + "created": "2017-09-19T18:03:00.593Z", + "updated": "2017-09-19T18:03:00.601Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "363-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 249, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.3/python-3.6.3rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/python-3.6.3rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5a3ff092062a0fd33b79122594b46859", + "filesize": 31616976, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1876, + "fields": { + "created": "2017-09-19T21:43:00.561Z", + "updated": "2017-09-19T21:43:00.572Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "370-a1-Windows-x86-64-executable-installer", + "os": 1, + "release": 250, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3a37fa9539393b5d84e45c3062e1b6a6", + "filesize": 31954664, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1877, + "fields": { + "created": "2017-09-19T21:43:00.631Z", + "updated": "2017-09-19T21:43:00.638Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "370-a1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 250, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6f8c5f77a75e69f2afc1a75478435bf3", + "filesize": 1315048, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1878, + "fields": { + "created": "2017-09-19T21:43:00.731Z", + "updated": "2017-09-19T21:43:00.739Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "370-a1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 250, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "62d849319bf424a4a3cd46c48c9892f9", + "filesize": 27827227, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1879, + "fields": { + "created": "2017-09-19T21:43:00.790Z", + "updated": "2017-09-19T21:43:00.799Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "370-a1-Windows-x86-executable-installer", + "os": 1, + "release": 250, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9bedbbfec870fcafa060a2d08a6d5bf4", + "filesize": 31283760, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1880, + "fields": { + "created": "2017-09-19T21:43:00.868Z", + "updated": "2017-09-19T21:43:00.877Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "370-a1-Windows-x86-web-based-installer", + "os": 1, + "release": 250, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "32dcafc7c4a507047ba2f684aff130a9", + "filesize": 1288296, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1881, + "fields": { + "created": "2017-09-19T21:43:00.976Z", + "updated": "2017-09-19T21:43:00.987Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "370-a1-Gzipped-source-tarball", + "os": 3, + "release": 250, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0a1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0a1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f16dda6e0f78e17b2afa87bf5504bfa7", + "filesize": 21614110, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1882, + "fields": { + "created": "2017-09-19T21:43:01.077Z", + "updated": "2017-09-19T21:43:01.085Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "370-a1-XZ-compressed-source-tarball", + "os": 3, + "release": 250, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0a1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0a1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ab4a7f93f9a788868f8f429a461f966e", + "filesize": 16253516, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1883, + "fields": { + "created": "2017-09-19T21:43:01.145Z", + "updated": "2017-09-19T21:43:01.153Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "370-a1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 250, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "09e47034bfc6f1ebba495eaf9a0fc504", + "filesize": 6696431, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1884, + "fields": { + "created": "2017-09-19T21:43:01.242Z", + "updated": "2017-09-19T21:43:01.251Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "370-a1-Windows-help-file", + "os": 1, + "release": 250, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python370a1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python370a1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "154adcbeddecec152e44abb2b6882a92", + "filesize": 8097235, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1885, + "fields": { + "created": "2017-09-19T21:43:01.347Z", + "updated": "2017-09-19T21:43:01.356Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "370-a1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 250, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ea82fc2e2f5138290a3e8e4e7e764bad", + "filesize": 6143829, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1886, + "fields": { + "created": "2017-10-03T19:26:10.835Z", + "updated": "2017-10-03T19:26:10.847Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "363-Windows-x86-64-executable-installer", + "os": 1, + "release": 251, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.3/python-3.6.3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/python-3.6.3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "89044fb577636803bf49f36371dca09c", + "filesize": 31619840, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1887, + "fields": { + "created": "2017-10-03T19:26:10.902Z", + "updated": "2017-10-03T19:26:10.909Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "363-Windows-x86-64-web-based-installer", + "os": 1, + "release": 251, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.3/python-3.6.3-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/python-3.6.3-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b6d61642327f25a5ebd1a7f11a6d3707", + "filesize": 1312480, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1888, + "fields": { + "created": "2017-10-03T19:26:11.020Z", + "updated": "2017-10-03T19:26:11.027Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "363-Gzipped-source-tarball", + "os": 3, + "release": 251, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e9180c69ed9a878a4a8a3ab221e32fa9", + "filesize": 22673115, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1889, + "fields": { + "created": "2017-10-03T19:26:11.074Z", + "updated": "2017-10-03T19:26:11.080Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "363-XZ-compressed-source-tarball", + "os": 3, + "release": 251, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b9c2c36c33fb89bda1fefd37ad5af9be", + "filesize": 16974296, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1890, + "fields": { + "created": "2017-10-03T19:26:11.172Z", + "updated": "2017-10-03T19:26:11.185Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "363-Windows-x86-executable-installer", + "os": 1, + "release": 251, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.3/python-3.6.3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/python-3.6.3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3811c6d3203358e0c0c6b6677ae980d3", + "filesize": 30584520, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1891, + "fields": { + "created": "2017-10-03T19:26:11.230Z", + "updated": "2017-10-03T19:26:11.236Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "363-Windows-help-file", + "os": 1, + "release": 251, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.3/python363.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/python363.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a82270d7193f9fb8554687e7ca342df1", + "filesize": 8020197, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1892, + "fields": { + "created": "2017-10-03T19:26:11.277Z", + "updated": "2017-10-03T19:26:11.284Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "363-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 251, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.3/python-3.6.3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/python-3.6.3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cf1c75ad7ccf9dec57ba7269198fd56b", + "filesize": 6388018, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1893, + "fields": { + "created": "2017-10-03T19:26:11.324Z", + "updated": "2017-10-03T19:26:11.331Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "363-Windows-x86-web-based-installer", + "os": 1, + "release": 251, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.3/python-3.6.3-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/python-3.6.3-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "39c2879cecf252d4c935e4f8c3087aa2", + "filesize": 1287056, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1894, + "fields": { + "created": "2017-10-03T19:26:11.389Z", + "updated": "2017-10-03T19:26:11.398Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "363-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 251, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.3/python-3.6.3-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/python-3.6.3-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ce31f17c952c657244a5cd0cccae34ad", + "filesize": 27696231, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1895, + "fields": { + "created": "2017-10-03T19:26:11.443Z", + "updated": "2017-10-03T19:26:11.450Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "363-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 251, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.3/python-3.6.3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.3/python-3.6.3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b1daa2a41589d7504117991104b96fe5", + "filesize": 7145844, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1899, + "fields": { + "created": "2017-10-17T18:40:41.513Z", + "updated": "2017-10-17T18:40:41.523Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "370-a2-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 252, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a2-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a2-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f0f47aed0c9ef3bb0870d31932fff11d", + "filesize": 27868252, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1900, + "fields": { + "created": "2017-10-17T18:40:41.580Z", + "updated": "2017-10-17T18:40:41.586Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "370-a2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 252, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3d83c8cada81876fee5c5c0ccf2242d4", + "filesize": 1315040, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1901, + "fields": { + "created": "2017-10-17T18:40:41.640Z", + "updated": "2017-10-17T18:40:41.647Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "370-a2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 252, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8833ddbae6ffca7ebda746f67e6e93d5", + "filesize": 6709779, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1902, + "fields": { + "created": "2017-10-17T18:40:41.743Z", + "updated": "2017-10-17T18:40:41.753Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "370-a2-Windows-help-file", + "os": 1, + "release": 252, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python370a2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python370a2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6730da5df562e426ba5dc71d729e114b", + "filesize": 8128045, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1903, + "fields": { + "created": "2017-10-17T18:40:41.913Z", + "updated": "2017-10-17T18:40:41.920Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "370-a2-Windows-x86-executable-installer", + "os": 1, + "release": 252, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "39db022a42c23f4d9878f0139025fe5b", + "filesize": 31329968, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1904, + "fields": { + "created": "2017-10-17T18:40:42.111Z", + "updated": "2017-10-17T18:40:42.118Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "370-a2-Windows-x86-web-based-installer", + "os": 1, + "release": 252, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "05010b72ae5acff25c00f2300ac2bc90", + "filesize": 1288312, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1905, + "fields": { + "created": "2017-10-17T18:40:42.207Z", + "updated": "2017-10-17T18:40:42.214Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "370-a2-XZ-compressed-source-tarball", + "os": 3, + "release": 252, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0a2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0a2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "670c9e719d1b483c236e3973373abec5", + "filesize": 16277732, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1906, + "fields": { + "created": "2017-10-17T18:40:42.311Z", + "updated": "2017-10-17T18:40:42.321Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "370-a2-Gzipped-source-tarball", + "os": 3, + "release": 252, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0a2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0a2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a5b3bb04b526dc646e716afd500b7b56", + "filesize": 21641959, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1907, + "fields": { + "created": "2017-10-17T18:40:42.366Z", + "updated": "2017-10-17T18:40:42.373Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "370-a2-Windows-x86-64-executable-installer", + "os": 1, + "release": 252, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4087053925c9c918575bcb8cbe7eb2bb", + "filesize": 32008248, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1908, + "fields": { + "created": "2017-10-17T18:40:42.466Z", + "updated": "2017-10-17T18:40:42.473Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "370-a2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 252, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d1a290bdc0b31906e8750e7bdf90fb1d", + "filesize": 6151853, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1909, + "fields": { + "created": "2017-12-06T01:20:34.997Z", + "updated": "2017-12-06T01:20:35.007Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "370-a3-Windows-help-file", + "os": 1, + "release": 254, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python370a3.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python370a3.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "31c201582f15a371789847be286842fd", + "filesize": 8177463, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1910, + "fields": { + "created": "2017-12-06T01:20:35.060Z", + "updated": "2017-12-06T01:20:35.068Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "370-a3-Windows-x86-64-web-based-installer", + "os": 1, + "release": 254, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a3-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a3-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9be96d4e92ecb61fdd66fe41c31fe59c", + "filesize": 1323528, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1911, + "fields": { + "created": "2017-12-06T01:20:35.131Z", + "updated": "2017-12-06T01:20:35.140Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "370-a3-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 254, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a3-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a3-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b60cc0db8c56e229e1420ae99a0da397", + "filesize": 28040289, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1912, + "fields": { + "created": "2017-12-06T01:20:35.195Z", + "updated": "2017-12-06T01:20:35.205Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "370-a3-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 254, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "47e294fcd150c89009a8b481b4445dce", + "filesize": 6192199, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1913, + "fields": { + "created": "2017-12-06T01:20:35.296Z", + "updated": "2017-12-06T01:20:35.303Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "370-a3-Windows-x86-executable-installer", + "os": 1, + "release": 254, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a5c3f976c94bf7cf24028a28e28093e7", + "filesize": 31467088, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1914, + "fields": { + "created": "2017-12-06T01:20:35.356Z", + "updated": "2017-12-06T01:20:35.363Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "370-a3-XZ-compressed-source-tarball", + "os": 3, + "release": 254, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0a3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0a3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0d73fc046d19871fdaf3845dabb641eb", + "filesize": 16327800, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1915, + "fields": { + "created": "2017-12-06T01:20:35.419Z", + "updated": "2017-12-06T01:20:35.433Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "370-a3-Windows-x86-64-executable-installer", + "os": 1, + "release": 254, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fcc230ed17f0c410c015ef5ab014ac29", + "filesize": 32145344, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1916, + "fields": { + "created": "2017-12-06T01:20:35.489Z", + "updated": "2017-12-06T01:20:35.496Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "370-a3-Windows-x86-web-based-installer", + "os": 1, + "release": 254, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a3-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a3-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cdd4530989acb378f8a63bfe8f0a0b74", + "filesize": 1296152, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1917, + "fields": { + "created": "2017-12-06T01:20:35.549Z", + "updated": "2017-12-06T01:20:35.557Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "370-a3-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 254, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1710426e0a257fe813529b9f8266db56", + "filesize": 6745818, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1918, + "fields": { + "created": "2017-12-06T01:20:35.633Z", + "updated": "2017-12-06T01:20:35.640Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "370-a3-Gzipped-source-tarball", + "os": 3, + "release": 254, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0a3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0a3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9bc05846b2ca88cf849349b471b8e826", + "filesize": 21711210, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1919, + "fields": { + "created": "2017-12-06T01:20:44.837Z", + "updated": "2017-12-06T01:20:44.847Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "364-rc1-Windows-help-file", + "os": 1, + "release": 253, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.4/python364rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/python364rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "353b14d860cb4d6a158c21fdd4eeb3c1", + "filesize": 8043778, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1920, + "fields": { + "created": "2017-12-06T01:20:44.911Z", + "updated": "2017-12-06T01:20:44.918Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "364-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 253, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.4/python-3.6.4rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/python-3.6.4rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "23cee496f375ac27f58e9342fb775c65", + "filesize": 1320224, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1921, + "fields": { + "created": "2017-12-06T01:20:44.984Z", + "updated": "2017-12-06T01:20:44.990Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "364-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 253, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.4/Python-3.6.4rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/Python-3.6.4rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f04d0711a0bf23d4e21088e575edf3d6", + "filesize": 17006764, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1922, + "fields": { + "created": "2017-12-06T01:20:45.047Z", + "updated": "2017-12-06T01:20:45.053Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "364-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 253, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.4/python-3.6.4rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/python-3.6.4rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ee3220f9deab515952623ce3dcfb058c", + "filesize": 7162737, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1923, + "fields": { + "created": "2017-12-06T01:20:45.109Z", + "updated": "2017-12-06T01:20:45.118Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "364-rc1-Gzipped-source-tarball", + "os": 3, + "release": 253, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.4/Python-3.6.4rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/Python-3.6.4rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bd16f116d637fa56219a48b5b2660197", + "filesize": 22714448, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1924, + "fields": { + "created": "2017-12-06T01:20:45.172Z", + "updated": "2017-12-06T01:20:45.181Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "364-rc1-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 253, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.4/python-3.6.4rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/python-3.6.4rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3576bffb842d0642e821626f9d1155ba", + "filesize": 27782230, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1925, + "fields": { + "created": "2017-12-06T01:20:45.234Z", + "updated": "2017-12-06T01:20:45.241Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "364-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 253, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.4/python-3.6.4rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/python-3.6.4rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1a158cc36dde7e75af059cc9e047c9af", + "filesize": 6400768, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1926, + "fields": { + "created": "2017-12-06T01:20:45.283Z", + "updated": "2017-12-06T01:20:45.291Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "364-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 253, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.4/python-3.6.4rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/python-3.6.4rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "74745ac513008dd8cc8bde6352692a94", + "filesize": 30654200, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1927, + "fields": { + "created": "2017-12-06T01:20:45.378Z", + "updated": "2017-12-06T01:20:45.385Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "364-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 253, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.4/python-3.6.4rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/python-3.6.4rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "96c1cbbfe93749c652350a0426e32920", + "filesize": 1294184, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1928, + "fields": { + "created": "2017-12-06T01:20:45.446Z", + "updated": "2017-12-06T01:20:45.453Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "364-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 253, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.4/python-3.6.4rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/python-3.6.4rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2c8b93970e271a660959c3b70007171a", + "filesize": 31686088, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1929, + "fields": { + "created": "2017-12-19T07:33:45.411Z", + "updated": "2017-12-19T07:33:45.420Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "364-Windows-x86-web-based-installer", + "os": 1, + "release": 255, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.4/python-3.6.4-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/python-3.6.4-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6c8ff748c554559a385c986453df28ef", + "filesize": 1294088, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1930, + "fields": { + "created": "2017-12-19T07:33:45.476Z", + "updated": "2017-12-19T07:33:45.486Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "364-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 255, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.4/python-3.6.4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/python-3.6.4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d2fb546fd4b189146dbefeba85e7266b", + "filesize": 7162335, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1931, + "fields": { + "created": "2017-12-19T07:33:45.537Z", + "updated": "2017-12-19T07:33:45.547Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "364-XZ-compressed-source-tarball", + "os": 3, + "release": 255, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1325134dd525b4a2c3272a1a0214dd54", + "filesize": 16992824, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1932, + "fields": { + "created": "2017-12-19T07:33:45.604Z", + "updated": "2017-12-19T07:33:45.611Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "364-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 255, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.4/python-3.6.4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/python-3.6.4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "15802be75a6246070d85b87b3f43f83f", + "filesize": 6400788, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1933, + "fields": { + "created": "2017-12-19T07:33:45.667Z", + "updated": "2017-12-19T07:33:45.675Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "364-Gzipped-source-tarball", + "os": 3, + "release": 255, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9de6494314ea199e3633211696735f65", + "filesize": 22710891, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1934, + "fields": { + "created": "2017-12-19T07:33:45.732Z", + "updated": "2017-12-19T07:33:45.745Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "364-Windows-help-file", + "os": 1, + "release": 255, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.4/python364.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/python364.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "17cc49512c3a2b876f2ed8022e0afe92", + "filesize": 8041937, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1935, + "fields": { + "created": "2017-12-19T07:33:45.790Z", + "updated": "2017-12-19T07:33:45.797Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "364-Windows-x86-64-executable-installer", + "os": 1, + "release": 255, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.4/python-3.6.4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/python-3.6.4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bee5746dc6ece6ab49573a9f54b5d0a1", + "filesize": 31684744, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1936, + "fields": { + "created": "2017-12-19T07:33:45.853Z", + "updated": "2017-12-19T07:33:45.863Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "364-Windows-x86-64-web-based-installer", + "os": 1, + "release": 255, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.4/python-3.6.4-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/python-3.6.4-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "21525b3d132ce15cae6ba96d74961b5a", + "filesize": 1320128, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1937, + "fields": { + "created": "2017-12-19T07:33:45.929Z", + "updated": "2017-12-19T07:33:45.936Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "364-Windows-x86-executable-installer", + "os": 1, + "release": 255, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.4/python-3.6.4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/python-3.6.4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "67e1a9bb336a5eca0efcd481c9f262a4", + "filesize": 30653888, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1938, + "fields": { + "created": "2017-12-19T07:33:45.984Z", + "updated": "2017-12-19T07:33:45.991Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "364-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 255, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.4/python-3.6.4-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.4/python-3.6.4-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9fba50521dffa9238ce85ad640abaa92", + "filesize": 27778156, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1939, + "fields": { + "created": "2018-01-09T15:12:50.724Z", + "updated": "2018-01-09T15:12:50.734Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "370-a4-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 256, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "90ac964a850bc9bd8cc77ffd33404c3f", + "filesize": 6762507, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1940, + "fields": { + "created": "2018-01-09T15:12:50.794Z", + "updated": "2018-01-09T15:12:50.802Z", + "creator": null, + "last_modified_by": null, + "name": "Mac OS X 64-bit/32-bit installer", + "slug": "370-a4-Mac-OS-X-64-bit32-bit-installer", + "os": 2, + "release": 256, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a4-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a4-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d874682b8323abadbd784eb70c186934", + "filesize": 28154990, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1941, + "fields": { + "created": "2018-01-09T15:12:50.856Z", + "updated": "2018-01-09T15:12:50.867Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "370-a4-Gzipped-source-tarball", + "os": 3, + "release": 256, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0a4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0a4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6d1fa014eaf2cb0dd16314f641425290", + "filesize": 21786785, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1942, + "fields": { + "created": "2018-01-09T15:12:50.926Z", + "updated": "2018-01-09T15:12:50.936Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "370-a4-Windows-x86-web-based-installer", + "os": 1, + "release": 256, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a4-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a4-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "de288e851c56f66c3d0f16695bd5c4bf", + "filesize": 1295128, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1943, + "fields": { + "created": "2018-01-09T15:12:50.992Z", + "updated": "2018-01-09T15:12:50.999Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "370-a4-Windows-x86-64-web-based-installer", + "os": 1, + "release": 256, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a4-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a4-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "46616402934b99b8eac6532841a67e98", + "filesize": 1322544, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1944, + "fields": { + "created": "2018-01-09T15:12:51.059Z", + "updated": "2018-01-09T15:12:51.072Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "370-a4-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 256, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d7157b5c5f7aeb14fca5a3e21b7f2747", + "filesize": 6204083, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1945, + "fields": { + "created": "2018-01-09T15:12:51.126Z", + "updated": "2018-01-09T15:12:51.134Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "370-a4-Windows-help-file", + "os": 1, + "release": 256, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python370a4.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python370a4.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a1a228016cd29c32dc6771e7083cf29f", + "filesize": 8227329, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1946, + "fields": { + "created": "2018-01-09T15:12:51.190Z", + "updated": "2018-01-09T15:12:51.200Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "370-a4-Windows-x86-64-executable-installer", + "os": 1, + "release": 256, + "description": "for AMD64/EM64T/x64, not Itanium processors", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "48f3d53bb98e75b689bd04d064db9abe", + "filesize": 32254696, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1947, + "fields": { + "created": "2018-01-09T15:12:51.272Z", + "updated": "2018-01-09T15:12:51.279Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "370-a4-XZ-compressed-source-tarball", + "os": 3, + "release": 256, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0a4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0a4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ec491a4aff3e5faf030d3a7422513960", + "filesize": 16386044, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1948, + "fields": { + "created": "2018-01-09T15:12:51.336Z", + "updated": "2018-01-09T15:12:51.345Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "370-a4-Windows-x86-executable-installer", + "os": 1, + "release": 256, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0a4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "01c5d801d2a98874d8450f1ce661ff62", + "filesize": 31582016, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1949, + "fields": { + "created": "2018-01-23T14:33:04.236Z", + "updated": "2018-01-23T14:33:04.245Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "348-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 257, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.8/Python-3.4.8rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.8/Python-3.4.8rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0009bc445ce9e8917fa1e418ac7d5332", + "filesize": 14502236, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1950, + "fields": { + "created": "2018-01-23T14:33:04.300Z", + "updated": "2018-01-23T14:33:04.311Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "348-rc1-Gzipped-source-tarball", + "os": 3, + "release": 257, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.8/Python-3.4.8rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.8/Python-3.4.8rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "89852b54f9c456bc03e2614965b7e0d7", + "filesize": 19694450, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1951, + "fields": { + "created": "2018-01-23T14:33:09.441Z", + "updated": "2018-01-23T14:33:09.452Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "355-rc1-Gzipped-source-tarball", + "os": 3, + "release": 258, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.5/Python-3.5.5rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.5/Python-3.5.5rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "180ceac5774509b263bbdfddabfb4f74", + "filesize": 20773445, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1952, + "fields": { + "created": "2018-01-23T14:33:09.507Z", + "updated": "2018-01-23T14:33:09.517Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "355-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 258, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.5/Python-3.5.5rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.5/Python-3.5.5rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "65f647b3c338a75799a74a2433b51f5c", + "filesize": 15367944, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1960, + "fields": { + "created": "2018-01-31T19:00:48.575Z", + "updated": "2018-01-31T19:00:48.585Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "370-b1-macOS-64-bit32-bit-installer", + "os": 2, + "release": 259, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2c824401d754b164e3bd7a08e7bfdcd0", + "filesize": 28773474, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1961, + "fields": { + "created": "2018-01-31T19:00:48.646Z", + "updated": "2018-01-31T19:00:48.654Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "370-b1-Windows-x86-64-executable-installer", + "os": 1, + "release": 259, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5525c247c1e4b7ff7987dde6d99c680c", + "filesize": 26005496, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1962, + "fields": { + "created": "2018-01-31T19:00:48.714Z", + "updated": "2018-01-31T19:00:48.724Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "370-b1-XZ-compressed-source-tarball", + "os": 3, + "release": 259, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0d973587e62fbdfbb710de4a05489ae1", + "filesize": 16478848, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1963, + "fields": { + "created": "2018-01-31T19:00:48.784Z", + "updated": "2018-01-31T19:00:48.792Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "370-b1-Gzipped-source-tarball", + "os": 3, + "release": 259, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b55f1edab8b23dc011c95d4857cf3356", + "filesize": 21932393, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1964, + "fields": { + "created": "2018-01-31T19:00:48.866Z", + "updated": "2018-01-31T19:00:48.877Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "370-b1-Windows-help-file", + "os": 1, + "release": 259, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python370b1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python370b1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8598d7fb0cc0940fc52275e8fdd05476", + "filesize": 8262381, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1965, + "fields": { + "created": "2018-01-31T19:00:48.933Z", + "updated": "2018-01-31T19:00:48.940Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "370-b1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 259, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8790ddedad4e1292a8f2d6cb64c671d5", + "filesize": 1321448, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1966, + "fields": { + "created": "2018-01-31T19:00:49.002Z", + "updated": "2018-01-31T19:00:49.011Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "370-b1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 259, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f69caaa0a0e91f1cce3fa3db2ef341ea", + "filesize": 6220867, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1967, + "fields": { + "created": "2018-01-31T19:00:49.097Z", + "updated": "2018-01-31T19:00:49.107Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "370-b1-macOS-64-bit-installer", + "os": 2, + "release": 259, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "43730a0a67dc4a458063f21e6a267484", + "filesize": 27274339, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1968, + "fields": { + "created": "2018-01-31T19:00:49.167Z", + "updated": "2018-01-31T19:00:49.174Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "370-b1-Windows-x86-web-based-installer", + "os": 1, + "release": 259, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d66dc9eec52cd695a3f02cd3b7fcaae9", + "filesize": 1294040, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1969, + "fields": { + "created": "2018-01-31T19:00:49.247Z", + "updated": "2018-01-31T19:00:49.257Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "370-b1-Windows-x86-executable-installer", + "os": 1, + "release": 259, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "39e28b1fb88873f9b6a533ab0b8bd18b", + "filesize": 25337736, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1970, + "fields": { + "created": "2018-01-31T19:00:49.309Z", + "updated": "2018-01-31T19:00:49.316Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "370-b1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 259, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "788d2bc636fa9c00c1195419ee2f9ae8", + "filesize": 6780246, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1971, + "fields": { + "created": "2018-02-05T00:34:08.760Z", + "updated": "2018-02-05T00:34:08.771Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "355-XZ-compressed-source-tarball", + "os": 3, + "release": 260, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.5/Python-3.5.5.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.5/Python-3.5.5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f3763edf9824d5d3a15f5f646083b6e0", + "filesize": 15351440, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1972, + "fields": { + "created": "2018-02-05T00:34:08.825Z", + "updated": "2018-02-05T00:34:08.838Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "355-Gzipped-source-tarball", + "os": 3, + "release": 260, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.5/Python-3.5.5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.5/Python-3.5.5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7c825b747d25c11e669e99b912398585", + "filesize": 20766931, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1973, + "fields": { + "created": "2018-02-05T00:34:12.790Z", + "updated": "2018-02-05T00:34:12.797Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "348-XZ-compressed-source-tarball", + "os": 3, + "release": 261, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.8/Python-3.4.8.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.8/Python-3.4.8.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "15c44931f2274bfe928d53e0b675a4d8", + "filesize": 14576444, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1974, + "fields": { + "created": "2018-02-05T00:34:12.855Z", + "updated": "2018-02-05T00:34:12.864Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "348-Gzipped-source-tarball", + "os": 3, + "release": 261, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.8/Python-3.4.8.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.8/Python-3.4.8.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "28777863616060065112cfb73ee7bbb5", + "filesize": 19663810, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1975, + "fields": { + "created": "2018-02-28T05:48:10.515Z", + "updated": "2018-02-28T05:48:10.528Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "370-b2-Windows-x86-web-based-installer", + "os": 1, + "release": 262, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c088bc5ab438ca27c47e26ead1f242b0", + "filesize": 1294040, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1976, + "fields": { + "created": "2018-02-28T05:48:10.583Z", + "updated": "2018-02-28T05:48:10.594Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "370-b2-macOS-64-bit32-bit-installer", + "os": 2, + "release": 262, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b2-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b2-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7f75cd8de7564a53202870e7fd265d60", + "filesize": 28851369, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1977, + "fields": { + "created": "2018-02-28T05:48:10.648Z", + "updated": "2018-02-28T05:48:10.669Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "370-b2-Gzipped-source-tarball", + "os": 3, + "release": 262, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1d49b3460cc1ac80ade91114eae53c61", + "filesize": 21975828, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1978, + "fields": { + "created": "2018-02-28T05:48:10.837Z", + "updated": "2018-02-28T05:48:10.845Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "370-b2-Windows-x86-64-executable-installer", + "os": 1, + "release": 262, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "16d8d0039349b99f975239ea50a6ff82", + "filesize": 26277440, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1979, + "fields": { + "created": "2018-02-28T05:48:10.897Z", + "updated": "2018-02-28T05:48:10.906Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "370-b2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 262, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b1678c0ee7e73a4a554354a0c23ba971", + "filesize": 1322584, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1980, + "fields": { + "created": "2018-02-28T05:48:10.965Z", + "updated": "2018-02-28T05:48:10.973Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "370-b2-macOS-64-bit-installer", + "os": 2, + "release": 262, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b2-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b2-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "05a52dc27b7ba9054044710534cd2753", + "filesize": 27348133, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1981, + "fields": { + "created": "2018-02-28T05:48:11.029Z", + "updated": "2018-02-28T05:48:11.039Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "370-b2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 262, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a63b3d6057146d667d6e717d35395584", + "filesize": 6903863, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1982, + "fields": { + "created": "2018-02-28T05:48:11.130Z", + "updated": "2018-02-28T05:48:11.137Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "370-b2-Windows-help-file", + "os": 1, + "release": 262, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python370b2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python370b2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1da9c2b962431d97b81aee462b4bfacb", + "filesize": 8319575, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1983, + "fields": { + "created": "2018-02-28T05:48:11.206Z", + "updated": "2018-02-28T05:48:11.214Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "370-b2-Windows-x86-executable-installer", + "os": 1, + "release": 262, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f813b7dd4819159cf6bc4a4eae6d026e", + "filesize": 25542296, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1984, + "fields": { + "created": "2018-02-28T05:48:11.286Z", + "updated": "2018-02-28T05:48:11.294Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "370-b2-XZ-compressed-source-tarball", + "os": 3, + "release": 262, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b743d8ab1ceffa0b2d94dd8538bd70b4", + "filesize": 16526088, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1985, + "fields": { + "created": "2018-02-28T05:48:11.347Z", + "updated": "2018-02-28T05:48:11.357Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "370-b2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 262, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6421c15e15c6fa0f3c44a8e8596f2e0e", + "filesize": 6370158, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1986, + "fields": { + "created": "2018-03-14T04:07:08.911Z", + "updated": "2018-03-14T04:07:08.925Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "365-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 263, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python-3.6.5rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python-3.6.5rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0e63d7c344c861fa13a3aec6910faca7", + "filesize": 6603838, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1987, + "fields": { + "created": "2018-03-14T04:07:08.993Z", + "updated": "2018-03-14T04:07:09.003Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "365-rc1-macOS-64-bit-installer", + "os": 2, + "release": 263, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python-3.6.5rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python-3.6.5rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e6f814f6dbc0cb2d2f6da5a7cbbcbfb0", + "filesize": 26741934, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1988, + "fields": { + "created": "2018-03-14T04:07:09.052Z", + "updated": "2018-03-14T04:07:09.060Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "365-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 263, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python-3.6.5rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python-3.6.5rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7d254133e1a34b52efe089bae5437de1", + "filesize": 31897072, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1989, + "fields": { + "created": "2018-03-14T04:07:09.103Z", + "updated": "2018-03-14T04:07:09.110Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "365-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 263, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python-3.6.5rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python-3.6.5rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d4ba777051fd5e462d8c6be3c3898754", + "filesize": 1326992, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1990, + "fields": { + "created": "2018-03-14T04:07:09.201Z", + "updated": "2018-03-14T04:07:09.208Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "365-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 263, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.5/Python-3.6.5rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/Python-3.6.5rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4c896ef2089a0f3bf95328f9e8ad4cc7", + "filesize": 17016364, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1991, + "fields": { + "created": "2018-03-14T04:07:09.257Z", + "updated": "2018-03-14T04:07:09.264Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "365-rc1-Windows-help-file", + "os": 1, + "release": 263, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python365rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python365rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3b5acfc3b127caaf00af2fca8608fcd8", + "filesize": 8064398, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1992, + "fields": { + "created": "2018-03-14T04:07:09.321Z", + "updated": "2018-03-14T04:07:09.330Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "365-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 263, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python-3.6.5rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python-3.6.5rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b418c1533f7aabac8d2ba984a967e9d3", + "filesize": 1298344, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1993, + "fields": { + "created": "2018-03-14T04:07:09.384Z", + "updated": "2018-03-14T04:07:09.394Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "365-rc1-macOS-64-bit32-bit-installer", + "os": 2, + "release": 263, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python-3.6.5rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python-3.6.5rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5651b669bc14f28e435514e5ba7749ae", + "filesize": 27847853, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1994, + "fields": { + "created": "2018-03-14T04:07:09.449Z", + "updated": "2018-03-14T04:07:09.461Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "365-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 263, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python-3.6.5rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python-3.6.5rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "03441043845ff273bc8748b897cd1d8c", + "filesize": 30847112, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 1995, + "fields": { + "created": "2018-03-14T04:07:09.513Z", + "updated": "2018-03-14T04:07:09.520Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "365-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 263, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python-3.6.5rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python-3.6.5rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "887df5dde6ef632b82014f38d86a780a", + "filesize": 7363538, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1996, + "fields": { + "created": "2018-03-14T04:07:09.573Z", + "updated": "2018-03-14T04:07:09.580Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "365-rc1-Gzipped-source-tarball", + "os": 3, + "release": 263, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.5/Python-3.6.5rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/Python-3.6.5rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "817816b8f2f11e894e97ea17575187e3", + "filesize": 22740755, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1997, + "fields": { + "created": "2018-03-28T19:16:36.598Z", + "updated": "2018-06-26T23:05:29.615Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "365-macOS-64-bit-installer", + "os": 2, + "release": 264, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python-3.6.5-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python-3.6.5-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "37d891988b6aeedd7f03a70171a8420d", + "filesize": 26987706, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1998, + "fields": { + "created": "2018-03-28T19:16:36.670Z", + "updated": "2018-03-28T19:16:36.682Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "365-Windows-x86-64-web-based-installer", + "os": 1, + "release": 264, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python-3.6.5-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python-3.6.5-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "640736a3894022d30f7babff77391d6b", + "filesize": 1320112, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 1999, + "fields": { + "created": "2018-03-28T19:16:36.738Z", + "updated": "2018-06-26T23:05:29.612Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "365-macOS-64-bit32-bit-installer", + "os": 2, + "release": 264, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python-3.6.5-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python-3.6.5-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bf319337bc68b52fc7d227dca5b6f2f6", + "filesize": 28093627, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2000, + "fields": { + "created": "2018-03-28T19:16:36.805Z", + "updated": "2018-03-28T19:16:36.812Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "365-Windows-help-file", + "os": 1, + "release": 264, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python365.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python365.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "be70202d483c0b7291a666ec66539784", + "filesize": 8065193, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2001, + "fields": { + "created": "2018-03-28T19:16:36.869Z", + "updated": "2018-03-28T19:16:36.880Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "365-XZ-compressed-source-tarball", + "os": 3, + "release": 264, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9f49654a4d6f733ff3284ab9d227e9fd", + "filesize": 17049912, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2002, + "fields": { + "created": "2018-03-28T19:16:36.933Z", + "updated": "2018-03-28T19:16:36.940Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "365-Windows-x86-64-executable-installer", + "os": 1, + "release": 264, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python-3.6.5-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python-3.6.5-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9e96c934f5d16399f860812b4ac7002b", + "filesize": 31776112, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2003, + "fields": { + "created": "2018-03-28T19:16:37.009Z", + "updated": "2018-03-28T19:16:37.016Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "365-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 264, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python-3.6.5-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python-3.6.5-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b0b099a4fa479fb37880c15f2b2f4f34", + "filesize": 6429369, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2004, + "fields": { + "created": "2018-03-28T19:16:37.061Z", + "updated": "2018-03-28T19:16:37.068Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "365-Windows-x86-executable-installer", + "os": 1, + "release": 264, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python-3.6.5.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python-3.6.5.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2bb6ad2ecca6088171ef923bca483f02", + "filesize": 30735232, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2005, + "fields": { + "created": "2018-03-28T19:16:37.120Z", + "updated": "2018-03-28T19:16:37.132Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "365-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 264, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python-3.6.5-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python-3.6.5-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "04cc4f6f6a14ba74f6ae1a8b685ec471", + "filesize": 7190516, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2006, + "fields": { + "created": "2018-03-28T19:16:37.235Z", + "updated": "2018-03-28T19:16:37.243Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "365-Windows-x86-web-based-installer", + "os": 1, + "release": 264, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.5/python-3.6.5-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/python-3.6.5-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "596667cb91a9fb20e6f4f153f3a213a5", + "filesize": 1294096, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2007, + "fields": { + "created": "2018-03-28T19:16:37.300Z", + "updated": "2018-03-28T19:16:37.307Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "365-Gzipped-source-tarball", + "os": 3, + "release": 264, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ab25d24b1f8cc4990ade979f6dc37883", + "filesize": 22994617, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2012, + "fields": { + "created": "2018-03-30T01:37:54.635Z", + "updated": "2018-03-30T01:37:54.646Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "370-b3-Gzipped-source-tarball", + "os": 3, + "release": 265, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9250b20ac03ea65c0d09733bbd6a76d9", + "filesize": 22254354, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2013, + "fields": { + "created": "2018-03-30T01:37:54.696Z", + "updated": "2018-03-30T01:37:54.703Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "370-b3-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 265, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "16e59f1977be7273552c290fd3f5eaba", + "filesize": 6369714, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2014, + "fields": { + "created": "2018-03-30T01:37:54.766Z", + "updated": "2018-03-30T01:37:54.772Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "370-b3-Windows-help-file", + "os": 1, + "release": 265, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python370b3.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python370b3.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "711473920b14a2b90d9859759479fd6a", + "filesize": 8360385, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2015, + "fields": { + "created": "2018-03-30T01:37:54.827Z", + "updated": "2018-03-30T01:37:54.834Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "370-b3-macOS-64-bit32-bit-installer", + "os": 2, + "release": 265, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b3-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b3-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a29894b76465ff83dbef766710af63ba", + "filesize": 34221245, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2016, + "fields": { + "created": "2018-03-30T01:37:54.883Z", + "updated": "2018-03-30T01:37:54.890Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "370-b3-Windows-x86-64-executable-installer", + "os": 1, + "release": 265, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9cc4e0ac3f1e5d6a92c483c00033c78b", + "filesize": 26379816, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2017, + "fields": { + "created": "2018-03-30T01:37:54.946Z", + "updated": "2018-03-30T01:37:54.953Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "370-b3-macOS-64-bit-installer", + "os": 2, + "release": 265, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b3-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b3-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ccbadafdf818fc24805d6c75fccc87d1", + "filesize": 27634862, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2018, + "fields": { + "created": "2018-03-30T01:37:55.007Z", + "updated": "2018-03-30T01:37:55.014Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "370-b3-Windows-x86-64-web-based-installer", + "os": 1, + "release": 265, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b3-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b3-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ce0a613516186490249faa8f1a505088", + "filesize": 1328744, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2019, + "fields": { + "created": "2018-03-30T01:37:55.072Z", + "updated": "2018-03-30T01:37:55.078Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "370-b3-Windows-x86-executable-installer", + "os": 1, + "release": 265, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "026ae4fb4a930806b272ec100630bc85", + "filesize": 25631840, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2020, + "fields": { + "created": "2018-03-30T01:37:55.131Z", + "updated": "2018-03-30T01:37:55.138Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "370-b3-Windows-x86-web-based-installer", + "os": 1, + "release": 265, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b3-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b3-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a5d560419e1e63d4e885ca1e37224f9e", + "filesize": 1298504, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2021, + "fields": { + "created": "2018-03-30T01:37:55.190Z", + "updated": "2018-03-30T01:37:55.197Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "370-b3-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 265, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ddf4f01f1eb167d0e8f0716c6f0931d6", + "filesize": 6919831, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2022, + "fields": { + "created": "2018-03-30T01:37:55.245Z", + "updated": "2018-03-30T01:37:55.254Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "370-b3-XZ-compressed-source-tarball", + "os": 3, + "release": 265, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1a9dca37ccfddea7b9f9ee65789e7036", + "filesize": 16575572, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2040, + "fields": { + "created": "2018-04-15T03:46:33.144Z", + "updated": "2018-04-15T03:46:33.151Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2715-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 266, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.15/Python-2.7.15rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/Python-2.7.15rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "39d919d15d311bcecbab6296e3c13806", + "filesize": 12640368, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2041, + "fields": { + "created": "2018-04-15T03:46:33.204Z", + "updated": "2018-04-15T03:46:33.212Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2715-rc1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 266, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.15/python-2.7.15rc1.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/python-2.7.15rc1.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a5504a80abcaf0de28a9a613d9cf1e63", + "filesize": 25858214, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2042, + "fields": { + "created": "2018-04-15T03:46:33.263Z", + "updated": "2018-04-15T03:46:33.273Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "2715-rc1-macOS-64-bit32-bit-installer", + "os": 2, + "release": 266, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.15/python-2.7.15rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/python-2.7.15rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f3c7d298bc0d29770a8a5b7017f2afab", + "filesize": 25197769, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2043, + "fields": { + "created": "2018-04-15T03:46:33.330Z", + "updated": "2018-04-15T03:46:33.339Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2715-rc1-Gzipped-source-tarball", + "os": 3, + "release": 266, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.15/Python-2.7.15rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/Python-2.7.15rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d0f0984594efe1ff70c39880da87e14b", + "filesize": 17496421, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2044, + "fields": { + "created": "2018-04-15T03:46:33.383Z", + "updated": "2018-04-15T03:46:33.393Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2715-rc1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 266, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.15/python-2.7.15rc1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/python-2.7.15rc1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "21c1e617cff23b43c289423dd10690b6", + "filesize": 20234240, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2045, + "fields": { + "created": "2018-04-15T03:46:33.444Z", + "updated": "2018-04-15T03:46:33.451Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "2715-rc1-macOS-64-bit-installer", + "os": 2, + "release": 266, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.15/python-2.7.15rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/python-2.7.15rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c8e1c919a6484613064fcdb7f681245b", + "filesize": 23768239, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2046, + "fields": { + "created": "2018-04-15T03:46:33.510Z", + "updated": "2018-04-15T03:46:33.517Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2715-rc1-Windows-x86-MSI-installer", + "os": 1, + "release": 266, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.15/python-2.7.15rc1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/python-2.7.15rc1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fbf2045a48e55dd8730ac3dec34ee156", + "filesize": 19300352, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2047, + "fields": { + "created": "2018-04-15T03:46:33.567Z", + "updated": "2018-04-15T03:46:33.574Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2715-rc1-Windows-debug-information-files", + "os": 1, + "release": 266, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.15/python-2.7.15rc1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/python-2.7.15rc1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "78c81702963d9d97735dd21ccfa8c0ff", + "filesize": 25079974, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2048, + "fields": { + "created": "2018-04-15T03:46:33.627Z", + "updated": "2018-04-15T03:46:33.634Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2715-rc1-Windows-help-file", + "os": 1, + "release": 266, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.15/python2715rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/python2715rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1875aada9e3b438ff4a31978038dab91", + "filesize": 6250728, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2049, + "fields": { + "created": "2018-05-01T03:40:02.221Z", + "updated": "2018-05-01T03:40:02.231Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "2715-macOS-64-bit-installer", + "os": 2, + "release": 267, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.15/python-2.7.15-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/python-2.7.15-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "223b71346316c3ec7a8dc8bff5476d84", + "filesize": 23768240, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2050, + "fields": { + "created": "2018-05-01T03:40:02.291Z", + "updated": "2018-05-01T03:40:02.301Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2715-Windows-x86-64-MSI-installer", + "os": 1, + "release": 267, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.15/python-2.7.15.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/python-2.7.15.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0ffa44a86522f9a37b916b361eebc552", + "filesize": 20246528, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2051, + "fields": { + "created": "2018-05-01T03:40:02.343Z", + "updated": "2018-05-01T03:40:02.351Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2715-Windows-help-file", + "os": 1, + "release": 267, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.15/python2715.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/python2715.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "297315472777f28368b052be734ba2ee", + "filesize": 6252777, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2052, + "fields": { + "created": "2018-05-01T03:40:02.408Z", + "updated": "2018-05-01T03:40:02.417Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2715-XZ-compressed-source-tarball", + "os": 3, + "release": 267, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a80ae3cc478460b922242f43a1b4094d", + "filesize": 12642436, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2053, + "fields": { + "created": "2018-05-01T03:40:02.481Z", + "updated": "2018-05-01T03:40:02.491Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2715-Gzipped-source-tarball", + "os": 3, + "release": 267, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "045fb3440219a1f6923fefdabde63342", + "filesize": 17496336, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2054, + "fields": { + "created": "2018-05-01T03:40:02.534Z", + "updated": "2018-05-01T03:40:02.543Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2715-Windows-debug-information-files", + "os": 1, + "release": 267, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.15/python-2.7.15-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/python-2.7.15-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4c61ef61d4c51d615cbe751480be01f8", + "filesize": 25079974, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2055, + "fields": { + "created": "2018-05-01T03:40:02.594Z", + "updated": "2018-05-01T03:40:02.600Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "2715-macOS-64-bit32-bit-installer", + "os": 2, + "release": 267, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.15/python-2.7.15-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/python-2.7.15-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9ac8c85150147f679f213addd1e7d96e", + "filesize": 25193631, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2056, + "fields": { + "created": "2018-05-01T03:40:02.656Z", + "updated": "2018-05-01T03:40:02.664Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2715-Windows-x86-MSI-installer", + "os": 1, + "release": 267, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.15/python-2.7.15.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/python-2.7.15.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "023e49c9fba54914ebc05c4662a93ffe", + "filesize": 19304448, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2057, + "fields": { + "created": "2018-05-01T03:40:02.720Z", + "updated": "2018-05-01T03:40:02.729Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2715-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 267, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.15/python-2.7.15.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.15/python-2.7.15.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "680bf74bad3700e6b756a84a56720949", + "filesize": 25858214, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2058, + "fields": { + "created": "2018-05-02T23:55:46.050Z", + "updated": "2018-05-02T23:55:46.061Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "370-b4-Windows-x86-executable-installer", + "os": 1, + "release": 268, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6803af03ed8cd889432e3fc3b252ee32", + "filesize": 25730096, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2059, + "fields": { + "created": "2018-05-02T23:55:46.117Z", + "updated": "2018-05-02T23:55:46.128Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "370-b4-Windows-help-file", + "os": 1, + "release": 268, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python370b4.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python370b4.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "372fbdd3c693ef0f229da097b1f5d341", + "filesize": 8350993, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2060, + "fields": { + "created": "2018-05-02T23:55:46.222Z", + "updated": "2018-05-02T23:55:46.236Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "370-b4-Gzipped-source-tarball", + "os": 3, + "release": 268, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e6acaacef2bb920d1a25f3e4f732e1f2", + "filesize": 22166468, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2061, + "fields": { + "created": "2018-05-02T23:55:46.293Z", + "updated": "2018-05-02T23:55:46.305Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "370-b4-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 268, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "59e4c9bf316634e117c43d29a40e54f6", + "filesize": 6424356, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2062, + "fields": { + "created": "2018-05-02T23:55:46.370Z", + "updated": "2018-05-02T23:55:46.380Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "370-b4-XZ-compressed-source-tarball", + "os": 3, + "release": 268, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a9860cd8eeafcf7e36c789fe70857df5", + "filesize": 16645652, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2063, + "fields": { + "created": "2018-05-02T23:55:46.429Z", + "updated": "2018-05-02T23:55:46.438Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "370-b4-macOS-64-bit-installer", + "os": 2, + "release": 268, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b4-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b4-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fcdb551264e98d9a82b2093a5149220e", + "filesize": 27552969, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2064, + "fields": { + "created": "2018-05-02T23:55:46.500Z", + "updated": "2018-05-02T23:55:46.507Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "370-b4-Windows-x86-web-based-installer", + "os": 1, + "release": 268, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b4-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b4-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0c56037a00bb807e44df1aa64ce364da", + "filesize": 1298544, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2065, + "fields": { + "created": "2018-05-02T23:55:46.564Z", + "updated": "2018-05-02T23:55:46.571Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "370-b4-macOS-64-bit32-bit-installer", + "os": 2, + "release": 268, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b4-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b4-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "23923aa5d1ca99b081845a3ce98a60ea", + "filesize": 34143428, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2066, + "fields": { + "created": "2018-05-02T23:55:46.629Z", + "updated": "2018-05-02T23:55:46.636Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "370-b4-Windows-x86-64-executable-installer", + "os": 1, + "release": 268, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "106810c62138bda8489a9096ceb694c6", + "filesize": 26501184, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2067, + "fields": { + "created": "2018-05-02T23:55:46.693Z", + "updated": "2018-05-02T23:55:46.703Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "370-b4-Windows-x86-64-web-based-installer", + "os": 1, + "release": 268, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b4-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b4-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b8cd439d3c3ec30b97251a787566198a", + "filesize": 1328744, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2068, + "fields": { + "created": "2018-05-02T23:55:46.763Z", + "updated": "2018-05-02T23:55:46.771Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "370-b4-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 268, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "975c084795a6e84aecc66c3cf358a55c", + "filesize": 6982786, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2088, + "fields": { + "created": "2018-05-31T04:19:18.473Z", + "updated": "2018-05-31T04:19:18.482Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "370-b5-Windows-x86-64-web-based-installer", + "os": 1, + "release": 269, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b5-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b5-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d577cec94f7c6afa487f2554b37716ff", + "filesize": 1328720, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2089, + "fields": { + "created": "2018-05-31T04:19:18.540Z", + "updated": "2018-05-31T04:19:18.547Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "370-b5-macOS-64-bit-installer", + "os": 2, + "release": 269, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b5-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b5-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0bf84242e696548a835af1acc19d12e7", + "filesize": 27561135, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2090, + "fields": { + "created": "2018-05-31T04:19:18.654Z", + "updated": "2018-05-31T04:19:18.664Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "370-b5-Windows-help-file", + "os": 1, + "release": 269, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python370b5.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python370b5.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "319353270a44c70319609376e4e08645", + "filesize": 8447135, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2091, + "fields": { + "created": "2018-05-31T04:19:18.716Z", + "updated": "2018-05-31T04:19:18.724Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "370-b5-Windows-x86-64-executable-installer", + "os": 1, + "release": 269, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b5-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b5-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b41fb6b24d49c5461d44dcfe7a0e8339", + "filesize": 26146160, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2092, + "fields": { + "created": "2018-05-31T04:19:18.784Z", + "updated": "2018-05-31T04:19:18.791Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "370-b5-Gzipped-source-tarball", + "os": 3, + "release": 269, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a5fbf2a2d583af45568dfa6da1b89120", + "filesize": 22673452, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2093, + "fields": { + "created": "2018-05-31T04:19:18.935Z", + "updated": "2018-05-31T04:19:18.942Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "370-b5-Windows-x86-web-based-installer", + "os": 1, + "release": 269, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b5-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b5-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "67f5ac319150dc700c0ae474b4198ee8", + "filesize": 1298528, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2094, + "fields": { + "created": "2018-05-31T04:19:19.002Z", + "updated": "2018-05-31T04:19:19.010Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "370-b5-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 269, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b5-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b5-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "79c8502cd861b7a779e91b3a71100171", + "filesize": 6373167, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2095, + "fields": { + "created": "2018-05-31T04:19:19.058Z", + "updated": "2018-05-31T04:19:19.065Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "370-b5-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 269, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b5-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b5-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "43ed5ce64d9355f09d04c20ab5d5ec1c", + "filesize": 6945843, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2096, + "fields": { + "created": "2018-05-31T04:19:19.154Z", + "updated": "2018-05-31T04:19:19.160Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "370-b5-XZ-compressed-source-tarball", + "os": 3, + "release": 269, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b5.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0b5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aed4058e10cf7dbff67510f00f99ff45", + "filesize": 16903068, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2097, + "fields": { + "created": "2018-05-31T04:19:19.215Z", + "updated": "2018-05-31T04:19:19.222Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "370-b5-Windows-x86-executable-installer", + "os": 1, + "release": 269, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b5.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b5.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d995e64ff33460349cc5eaa525752b4c", + "filesize": 25373232, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2098, + "fields": { + "created": "2018-05-31T04:19:19.281Z", + "updated": "2018-05-31T04:19:19.288Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "370-b5-macOS-64-bit32-bit-installer", + "os": 2, + "release": 269, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b5-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0b5-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "81ece09b8a8756326793898be4cff721", + "filesize": 34167981, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2099, + "fields": { + "created": "2018-06-12T20:14:54.492Z", + "updated": "2018-06-12T20:14:54.500Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "366-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 271, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python-3.6.6rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python-3.6.6rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "81cf5bc1ffef5e8add829a5205a1963c", + "filesize": 30880064, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2100, + "fields": { + "created": "2018-06-12T20:14:54.555Z", + "updated": "2018-06-12T20:14:54.562Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "366-rc1-macOS-64-bit-installer", + "os": 2, + "release": 271, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python-3.6.6rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python-3.6.6rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2e5c13274256f014ce34f308749f7a3d", + "filesize": 26954935, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2101, + "fields": { + "created": "2018-06-12T20:14:54.614Z", + "updated": "2018-06-12T20:14:54.623Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "366-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 271, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.6/Python-3.6.6rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/Python-3.6.6rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d030795bfd781b081b0d9f7f46f075e3", + "filesize": 17145456, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2102, + "fields": { + "created": "2018-06-12T20:14:54.678Z", + "updated": "2018-06-12T20:14:54.684Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "366-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 271, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python-3.6.6rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python-3.6.6rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5b399d15f430a6e63135d24ad3ae4130", + "filesize": 1294224, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2103, + "fields": { + "created": "2018-06-12T20:14:54.733Z", + "updated": "2018-06-12T20:14:54.740Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "366-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 271, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python-3.6.6rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python-3.6.6rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "21a6c5759c602753b171e52d24a9a821", + "filesize": 31927480, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2104, + "fields": { + "created": "2018-06-12T20:14:54.800Z", + "updated": "2018-06-12T20:14:54.808Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "366-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 271, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python-3.6.6rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python-3.6.6rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cfe6ee9275c38795da31743db5c57153", + "filesize": 7185468, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2105, + "fields": { + "created": "2018-06-12T20:14:54.859Z", + "updated": "2018-06-12T20:14:54.866Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "366-rc1-macOS-64-bit32-bit-installer", + "os": 2, + "release": 271, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python-3.6.6rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python-3.6.6rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dbf8a4d9b83f676df6bebc3551dfe87c", + "filesize": 28060883, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2106, + "fields": { + "created": "2018-06-12T20:14:54.925Z", + "updated": "2018-06-12T20:14:54.932Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "366-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 271, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python-3.6.6rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python-3.6.6rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1421e1455bc865a87b5ba5ecca52e7d4", + "filesize": 1320240, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2107, + "fields": { + "created": "2018-06-12T20:14:54.994Z", + "updated": "2018-06-12T20:14:55.003Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "366-rc1-Gzipped-source-tarball", + "os": 3, + "release": 271, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.6/Python-3.6.6rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/Python-3.6.6rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6a9a8e4dc807126ea429e3814bbcb8ae", + "filesize": 22935299, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2108, + "fields": { + "created": "2018-06-12T20:14:55.058Z", + "updated": "2018-06-12T20:14:55.065Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "366-rc1-Windows-help-file", + "os": 1, + "release": 271, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python366rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python366rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f5a2b220fb12a947169d8ad32bd9877b", + "filesize": 8138842, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2109, + "fields": { + "created": "2018-06-12T20:14:55.121Z", + "updated": "2018-06-12T20:14:55.129Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "366-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 271, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python-3.6.6rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python-3.6.6rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ac7ff0ce8de336a0b475251447a4eb8c", + "filesize": 6401280, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2110, + "fields": { + "created": "2018-06-12T20:15:07.850Z", + "updated": "2018-06-12T20:15:07.857Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "370-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 270, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "51379841e99329250301caa0a51225aa", + "filesize": 6945613, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2111, + "fields": { + "created": "2018-06-12T20:15:07.909Z", + "updated": "2018-06-12T20:15:07.916Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "370-rc1-Windows-help-file", + "os": 1, + "release": 270, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python370rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python370rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eb72c51a5160fd01ae53ff260885ab86", + "filesize": 8481128, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2112, + "fields": { + "created": "2018-06-12T20:15:07.975Z", + "updated": "2018-06-12T20:15:07.982Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "370-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 270, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5f6947e1699f531848b1154e93141033", + "filesize": 25435656, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2113, + "fields": { + "created": "2018-06-12T20:15:08.074Z", + "updated": "2018-06-12T20:15:08.083Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "370-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 270, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7a9f4b7d84ff0550677dd8adf605fe1c", + "filesize": 26191712, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2114, + "fields": { + "created": "2018-06-12T20:15:08.139Z", + "updated": "2018-06-12T20:15:08.146Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "370-rc1-Gzipped-source-tarball", + "os": 3, + "release": 270, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "97c461bb339888f16d524cece9d27021", + "filesize": 22705833, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2115, + "fields": { + "created": "2018-06-12T20:15:08.194Z", + "updated": "2018-06-12T20:15:08.201Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "370-rc1-macOS-64-bit-installer", + "os": 2, + "release": 270, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7e39c15f830bdedd8d960ff65da92d44", + "filesize": 27602099, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2116, + "fields": { + "created": "2018-06-12T20:15:08.255Z", + "updated": "2018-06-12T20:15:08.262Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "370-rc1-macOS-64-bit32-bit-installer", + "os": 2, + "release": 270, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0ce2399f27adc0fa9e49b04d0664c2fc", + "filesize": 34225340, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2117, + "fields": { + "created": "2018-06-12T20:15:08.320Z", + "updated": "2018-06-12T20:15:08.327Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "370-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 270, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "de8b44e3c94d0144768e923b6ab87c53", + "filesize": 16922324, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2118, + "fields": { + "created": "2018-06-12T20:15:08.383Z", + "updated": "2018-06-12T20:15:08.390Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "370-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 270, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b8c344fc180ad393d729c22f8329e879", + "filesize": 6396175, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2119, + "fields": { + "created": "2018-06-12T20:15:08.452Z", + "updated": "2018-06-12T20:15:08.459Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "370-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 270, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c1024c825f3610321c93352560888cff", + "filesize": 1298896, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2120, + "fields": { + "created": "2018-06-12T20:15:08.547Z", + "updated": "2018-06-12T20:15:08.557Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "370-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 270, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "90a0d62e6a9a19f39c9fb72844c2746d", + "filesize": 1327800, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2121, + "fields": { + "created": "2018-06-27T23:03:58.178Z", + "updated": "2018-06-27T23:03:58.187Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "366-Windows-x86-executable-installer", + "os": 1, + "release": 272, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python-3.6.6.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python-3.6.6.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "467161f1e894254096f9a69e2db3302c", + "filesize": 30878752, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2122, + "fields": { + "created": "2018-06-27T23:03:58.242Z", + "updated": "2018-06-27T23:03:58.250Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "366-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 272, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python-3.6.6-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python-3.6.6-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7148ec14edfdc13f42e06a14d617c921", + "filesize": 7186734, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2123, + "fields": { + "created": "2018-06-27T23:03:58.307Z", + "updated": "2018-06-27T23:03:58.314Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "366-XZ-compressed-source-tarball", + "os": 3, + "release": 272, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c3f30a0aff425dda77d19e02f420d6ba", + "filesize": 17156744, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2124, + "fields": { + "created": "2018-06-27T23:03:58.364Z", + "updated": "2018-06-27T23:03:58.371Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "366-Gzipped-source-tarball", + "os": 3, + "release": 272, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9a080a86e1a8d85e45eee4b1cd0a18a2", + "filesize": 22930752, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2125, + "fields": { + "created": "2018-06-27T23:03:58.424Z", + "updated": "2018-06-27T23:03:58.433Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "366-Windows-x86-64-executable-installer", + "os": 1, + "release": 272, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python-3.6.6-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python-3.6.6-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "767db14ed07b245e24e10785f9d28e29", + "filesize": 31930528, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2126, + "fields": { + "created": "2018-06-27T23:03:58.487Z", + "updated": "2018-06-27T23:03:58.493Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "366-Windows-x86-web-based-installer", + "os": 1, + "release": 272, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python-3.6.6-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python-3.6.6-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a940f770b4bc617ab4a308ff1e27abd6", + "filesize": 1293456, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2127, + "fields": { + "created": "2018-06-27T23:03:58.551Z", + "updated": "2018-06-27T23:03:58.557Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "366-macOS-64-bit32-bit-installer", + "os": 2, + "release": 272, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python-3.6.6-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python-3.6.6-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c58267cab96f6d291d332a2b163edd33", + "filesize": 28060853, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2128, + "fields": { + "created": "2018-06-27T23:03:58.610Z", + "updated": "2018-06-27T23:03:58.618Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "366-macOS-64-bit-installer", + "os": 2, + "release": 272, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python-3.6.6-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python-3.6.6-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3ad13cc51c488182ed21a50050a38ba7", + "filesize": 26954940, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2129, + "fields": { + "created": "2018-06-27T23:03:58.670Z", + "updated": "2018-06-27T23:03:58.680Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "366-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 272, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python-3.6.6-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python-3.6.6-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b4c424de065bad238c71359f3cd71ef2", + "filesize": 6401894, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2130, + "fields": { + "created": "2018-06-27T23:03:58.731Z", + "updated": "2018-06-27T23:03:58.740Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "366-Windows-help-file", + "os": 1, + "release": 272, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python366.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python366.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e01b52e24494611121b4a866932b4123", + "filesize": 8139973, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2131, + "fields": { + "created": "2018-06-27T23:03:58.786Z", + "updated": "2018-06-27T23:03:58.793Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "366-Windows-x86-64-web-based-installer", + "os": 1, + "release": 272, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.6/python-3.6.6-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.6/python-3.6.6-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f30be4659721a0ef68e29cae099fed6f", + "filesize": 1319992, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2132, + "fields": { + "created": "2018-06-27T23:04:10.390Z", + "updated": "2018-06-27T23:04:10.397Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "370-Windows-x86-web-based-installer", + "os": 1, + "release": 273, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "779c4085464eb3ee5b1a4fffd0eabca4", + "filesize": 1298280, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2133, + "fields": { + "created": "2018-06-27T23:04:10.446Z", + "updated": "2018-06-27T23:04:10.453Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "370-XZ-compressed-source-tarball", + "os": 3, + "release": 273, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eb8c2a6b1447d50813c02714af4681f3", + "filesize": 16922100, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2134, + "fields": { + "created": "2018-06-27T23:04:10.502Z", + "updated": "2018-06-27T23:04:10.508Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "370-Windows-x86-64-executable-installer", + "os": 1, + "release": 273, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "531c3fc821ce0a4107b6d2c6a129be3e", + "filesize": 26262280, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2135, + "fields": { + "created": "2018-06-27T23:04:10.627Z", + "updated": "2018-06-27T23:04:10.634Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "370-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 273, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ed9a1c028c1e99f5323b9c20723d7d6f", + "filesize": 6395982, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2136, + "fields": { + "created": "2018-06-27T23:04:10.682Z", + "updated": "2018-06-27T23:04:10.689Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "370-macOS-64-bit-installer", + "os": 2, + "release": 273, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ae0717a02efea3b0eb34aadc680dc498", + "filesize": 27651276, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2137, + "fields": { + "created": "2018-06-27T23:04:10.740Z", + "updated": "2018-06-27T23:04:10.747Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "370-Windows-x86-executable-installer", + "os": 1, + "release": 273, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ebb6444c284c1447e902e87381afeff0", + "filesize": 25506832, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2138, + "fields": { + "created": "2018-06-27T23:04:10.796Z", + "updated": "2018-06-27T23:04:10.802Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "370-macOS-64-bit32-bit-installer", + "os": 2, + "release": 273, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ca3eb84092d0ff6d02e42f63a734338e", + "filesize": 34274481, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2139, + "fields": { + "created": "2018-06-27T23:04:10.854Z", + "updated": "2018-06-27T23:04:10.861Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "370-Gzipped-source-tarball", + "os": 3, + "release": 273, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "41b6595deb4147a1ed517a7d9a580271", + "filesize": 22745726, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2140, + "fields": { + "created": "2018-06-27T23:04:10.916Z", + "updated": "2018-06-27T23:04:10.923Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "370-Windows-help-file", + "os": 1, + "release": 273, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python370.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python370.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "46562af86c2049dd0cc7680348180dca", + "filesize": 8547689, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2141, + "fields": { + "created": "2018-06-27T23:04:11.012Z", + "updated": "2018-06-27T23:04:11.018Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "370-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 273, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cb8b4f0d979a36258f73ed541def10a5", + "filesize": 6946082, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2142, + "fields": { + "created": "2018-06-27T23:04:11.065Z", + "updated": "2018-06-27T23:04:11.071Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "370-Windows-x86-64-web-based-installer", + "os": 1, + "release": 273, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.0/python-3.7.0-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.0/python-3.7.0-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3cfdaf4c8d3b0475aaec12ba402d04d2", + "filesize": 1327160, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2143, + "fields": { + "created": "2018-07-20T02:19:45.286Z", + "updated": "2018-07-20T02:19:45.296Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "349-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 274, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.9/Python-3.4.9rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.9/Python-3.4.9rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2fa6dd4e8f9409a6b9ac73e8dfd2b7ac", + "filesize": 14531548, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2144, + "fields": { + "created": "2018-07-20T02:19:45.339Z", + "updated": "2018-07-20T02:19:45.346Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "349-rc1-Gzipped-source-tarball", + "os": 3, + "release": 274, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.9/Python-3.4.9rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.9/Python-3.4.9rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2e9a7fbacedc1f97927a13bb87c18240", + "filesize": 19674352, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2145, + "fields": { + "created": "2018-07-20T02:19:46.395Z", + "updated": "2018-07-20T02:19:46.408Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "356-rc1-Gzipped-source-tarball", + "os": 3, + "release": 275, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.6/Python-3.5.6rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.6/Python-3.5.6rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "66d1ab013fa6669593f77dcb0ea93003", + "filesize": 20743541, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2146, + "fields": { + "created": "2018-07-20T02:19:46.486Z", + "updated": "2018-07-20T02:19:46.496Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "356-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 275, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.6/Python-3.5.6rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.6/Python-3.5.6rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fa32b121ed16a1bbde0af1f488242381", + "filesize": 15355528, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2147, + "fields": { + "created": "2018-08-02T13:33:30.030Z", + "updated": "2018-08-02T13:33:30.039Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "349-XZ-compressed-source-tarball", + "os": 3, + "release": 276, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.9/Python-3.4.9.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.9/Python-3.4.9.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4ce46f8196bf629a889e68173234d955", + "filesize": 14541804, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2148, + "fields": { + "created": "2018-08-02T13:33:30.108Z", + "updated": "2018-08-02T13:33:30.118Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "349-Gzipped-source-tarball", + "os": 3, + "release": 276, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.9/Python-3.4.9.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.9/Python-3.4.9.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c706902881ef95e27e59f13fabbcdcac", + "filesize": 19684105, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2149, + "fields": { + "created": "2018-08-02T13:33:30.580Z", + "updated": "2018-08-02T13:33:30.590Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "356-XZ-compressed-source-tarball", + "os": 3, + "release": 277, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.6/Python-3.5.6.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.6/Python-3.5.6.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f5a99f765e765336a3ebbb2a24ca2be3", + "filesize": 15412832, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2150, + "fields": { + "created": "2018-08-02T13:33:30.686Z", + "updated": "2018-08-02T13:33:30.694Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "356-Gzipped-source-tarball", + "os": 3, + "release": 277, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.6/Python-3.5.6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.6/Python-3.5.6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "99a7e803633a627b264a42ce976d8c19", + "filesize": 20763023, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2151, + "fields": { + "created": "2018-09-27T00:19:52.618Z", + "updated": "2018-09-27T00:19:52.631Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "367-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 278, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "727f9e6b0255d637490cee2595ed88e8", + "filesize": 31985608, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2152, + "fields": { + "created": "2018-09-27T00:19:52.712Z", + "updated": "2018-09-27T00:19:52.722Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "367-rc1-Windows-help-file", + "os": 1, + "release": 278, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python367rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python367rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "21d0bc55ddf2d5a679406ae41a078091", + "filesize": 8150682, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2153, + "fields": { + "created": "2018-09-27T00:19:52.856Z", + "updated": "2018-09-27T00:19:52.867Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "367-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 278, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "864eeab82fc51e80b606db514367690a", + "filesize": 30937456, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2154, + "fields": { + "created": "2018-09-27T00:19:52.938Z", + "updated": "2018-09-27T00:19:52.947Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "367-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 278, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0e29d39fa144d773732dc62eba6daf9f", + "filesize": 7185183, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2155, + "fields": { + "created": "2018-09-27T00:19:53.006Z", + "updated": "2018-09-27T00:19:53.014Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "367-rc1-Gzipped-source-tarball", + "os": 3, + "release": 278, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.7/Python-3.6.7rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/Python-3.6.7rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "209ffe808b78549342712af21a1cae6d", + "filesize": 22964749, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2156, + "fields": { + "created": "2018-09-27T00:19:53.074Z", + "updated": "2018-09-27T00:19:53.090Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "367-rc1-macOS-64-bit-installer", + "os": 2, + "release": 278, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6a47c8fdbeb3c1e1825d1647117c6ed2", + "filesize": 27045054, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2157, + "fields": { + "created": "2018-09-27T00:19:53.140Z", + "updated": "2018-09-27T00:19:53.150Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "367-rc1-macOS-64-bit32-bit-installer", + "os": 2, + "release": 278, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "92344a1500c7098d36ff0c6461ceed97", + "filesize": 28150968, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2158, + "fields": { + "created": "2018-09-27T00:19:53.289Z", + "updated": "2018-09-27T00:19:53.299Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "367-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 278, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.7/Python-3.6.7rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/Python-3.6.7rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5f5ae4359f30c3fa15063b982e5af4eb", + "filesize": 17176816, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2159, + "fields": { + "created": "2018-09-27T00:19:53.420Z", + "updated": "2018-09-27T00:19:53.427Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "367-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 278, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fce06edd99016e163d7b2f1a447583b7", + "filesize": 6403233, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2160, + "fields": { + "created": "2018-09-27T00:19:53.488Z", + "updated": "2018-09-27T00:19:53.498Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "367-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 278, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6022ec4a52a6534edb6c00fcd428681e", + "filesize": 1294200, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2161, + "fields": { + "created": "2018-09-27T00:19:53.565Z", + "updated": "2018-09-27T00:19:53.573Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "367-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 278, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "44162df92dd918f2528cdc150a6a1077", + "filesize": 1320272, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2173, + "fields": { + "created": "2018-10-13T20:56:18.805Z", + "updated": "2018-10-13T20:56:18.813Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "367-rc2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 280, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4400a61d6f33e13390569011f4b2e307", + "filesize": 6404285, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2174, + "fields": { + "created": "2018-10-13T20:56:18.894Z", + "updated": "2018-10-13T20:56:18.903Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "367-rc2-Windows-x86-executable-installer", + "os": 1, + "release": 280, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f12164fee7d060dd0de4878a79638fa6", + "filesize": 30965824, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2175, + "fields": { + "created": "2018-10-13T20:56:18.971Z", + "updated": "2018-10-13T20:56:18.983Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "367-rc2-macOS-64-bit32-bit-installer", + "os": 2, + "release": 280, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc2-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc2-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bb94f58c53903c15d81b211c2a179306", + "filesize": 28155190, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2176, + "fields": { + "created": "2018-10-13T20:56:19.050Z", + "updated": "2018-10-13T20:56:19.062Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "367-rc2-XZ-compressed-source-tarball", + "os": 3, + "release": 280, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.7/Python-3.6.7rc2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/Python-3.6.7rc2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f9bcfab3fa32537567d8d25212856cd1", + "filesize": 17178404, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2177, + "fields": { + "created": "2018-10-13T20:56:19.118Z", + "updated": "2018-10-13T20:56:19.125Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "367-rc2-macOS-64-bit-installer", + "os": 2, + "release": 280, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc2-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc2-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f06c9c29cb0c34aac09ced40100699ef", + "filesize": 27049273, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2178, + "fields": { + "created": "2018-10-13T20:56:19.183Z", + "updated": "2018-10-13T20:56:19.191Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "367-rc2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 280, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "59d6f31f155ec772349450503aed4527", + "filesize": 1320248, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2179, + "fields": { + "created": "2018-10-13T20:56:19.245Z", + "updated": "2018-10-13T20:56:19.252Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "367-rc2-Windows-help-file", + "os": 1, + "release": 280, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python367rc2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python367rc2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7c2690beb04e8e3cf994a0bb850ec0ea", + "filesize": 8175396, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2180, + "fields": { + "created": "2018-10-13T20:56:19.302Z", + "updated": "2018-10-13T20:56:19.309Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "367-rc2-Windows-x86-64-executable-installer", + "os": 1, + "release": 280, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "01ffd4d01b1a8ae7df7408e41467fe24", + "filesize": 32017528, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2181, + "fields": { + "created": "2018-10-13T20:56:19.402Z", + "updated": "2018-10-13T20:56:19.409Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "367-rc2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 280, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "34474ec0a848f5bfbd09fdfc98ecefef", + "filesize": 7187759, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2182, + "fields": { + "created": "2018-10-13T20:56:19.469Z", + "updated": "2018-10-13T20:56:19.477Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "367-rc2-Gzipped-source-tarball", + "os": 3, + "release": 280, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.7/Python-3.6.7rc2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/Python-3.6.7rc2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "af5b380d249ecf8ea6ce7af54780c4c3", + "filesize": 22969389, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2183, + "fields": { + "created": "2018-10-13T20:56:19.538Z", + "updated": "2018-10-13T20:56:19.545Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "367-rc2-Windows-x86-web-based-installer", + "os": 1, + "release": 280, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7rc2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "18f092f15b41f10a9f27ab1ebb1c94a9", + "filesize": 1294200, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2184, + "fields": { + "created": "2018-10-13T21:03:09.133Z", + "updated": "2018-10-13T21:03:09.146Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "371-rc2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 281, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "04a461eb9ba01001bdab6bb381bb7265", + "filesize": 6937555, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2185, + "fields": { + "created": "2018-10-13T21:03:09.218Z", + "updated": "2018-10-13T21:03:09.232Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "371-rc2-Windows-help-file", + "os": 1, + "release": 281, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python371rc2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python371rc2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a1b25e65de6b5f9f811670169b69e116", + "filesize": 8536074, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2186, + "fields": { + "created": "2018-10-13T21:03:09.380Z", + "updated": "2018-10-13T21:03:09.390Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "371-rc2-Windows-x86-64-executable-installer", + "os": 1, + "release": 281, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "15305e25f8aaabb40d750c1c18806cd7", + "filesize": 26297880, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2187, + "fields": { + "created": "2018-10-13T21:03:09.461Z", + "updated": "2018-10-13T21:03:09.472Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "371-rc2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 281, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "47766a2cdcaa792f132daa8003bd0f43", + "filesize": 1328144, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2188, + "fields": { + "created": "2018-10-13T21:03:09.528Z", + "updated": "2018-10-13T21:03:09.535Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "371-rc2-Windows-x86-executable-installer", + "os": 1, + "release": 281, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c816763403c54072a2a840ae21209d01", + "filesize": 25550664, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2189, + "fields": { + "created": "2018-10-13T21:03:09.596Z", + "updated": "2018-10-13T21:03:09.607Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "371-rc2-macOS-64-bit-installer", + "os": 2, + "release": 281, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc2-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc2-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "53724096a741a8d5e1966b290613a16d", + "filesize": 27725108, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2190, + "fields": { + "created": "2018-10-13T21:03:09.672Z", + "updated": "2018-10-13T21:03:09.681Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "371-rc2-Windows-x86-web-based-installer", + "os": 1, + "release": 281, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b336915d0880792eda00480a49cc592d", + "filesize": 1299088, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2191, + "fields": { + "created": "2018-10-13T21:03:09.920Z", + "updated": "2018-10-13T21:03:09.930Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "371-rc2-macOS-64-bit32-bit-installer", + "os": 2, + "release": 281, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc2-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc2-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bb18636b9b34fd5431565844de64df46", + "filesize": 34360620, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2192, + "fields": { + "created": "2018-10-13T21:03:09.988Z", + "updated": "2018-10-13T21:03:09.995Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "371-rc2-Gzipped-source-tarball", + "os": 3, + "release": 281, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c1a8efb9de931b84629baf68fd828a74", + "filesize": 22805187, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2193, + "fields": { + "created": "2018-10-13T21:03:10.080Z", + "updated": "2018-10-13T21:03:10.089Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "371-rc2-XZ-compressed-source-tarball", + "os": 3, + "release": 281, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "352db477565d72ba4c0eac5237f6f1ab", + "filesize": 16974832, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2194, + "fields": { + "created": "2018-10-13T21:03:10.153Z", + "updated": "2018-10-13T21:03:10.160Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "371-rc2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 281, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7be2c630bd0ce4f34fde8ec8ffa6d547", + "filesize": 6399840, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2195, + "fields": { + "created": "2018-10-20T16:02:58.194Z", + "updated": "2018-10-20T16:02:58.205Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "367-Windows-x86-web-based-installer", + "os": 1, + "release": 282, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "da81cf570ee74b59d36f2bb555701cfd", + "filesize": 1293456, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2196, + "fields": { + "created": "2018-10-20T16:02:58.284Z", + "updated": "2018-10-20T16:02:58.296Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "367-XZ-compressed-source-tarball", + "os": 3, + "release": 282, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bb1e10f5cedf21fcf52d2c7e5b963c96", + "filesize": 17178476, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2197, + "fields": { + "created": "2018-10-20T16:02:58.518Z", + "updated": "2018-10-20T16:02:58.524Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "367-Windows-x86-64-executable-installer", + "os": 1, + "release": 282, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "38cc47776173a45ffec675fc129a46c5", + "filesize": 32009096, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2198, + "fields": { + "created": "2018-10-20T16:02:58.760Z", + "updated": "2018-10-20T16:02:58.769Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "367-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 282, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a993744c9daa6d159712c8a35374ca9c", + "filesize": 6403839, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2199, + "fields": { + "created": "2018-10-20T16:02:58.999Z", + "updated": "2018-10-20T16:02:59.009Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "367-macOS-64-bit-installer", + "os": 2, + "release": 282, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fee934e3251999a1d353e47ce77be84a", + "filesize": 27045163, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2200, + "fields": { + "created": "2018-10-20T16:02:59.082Z", + "updated": "2018-10-20T16:02:59.089Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "367-Windows-x86-executable-installer", + "os": 1, + "release": 282, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "354023f36de665554bafa21ab10eb27b", + "filesize": 30963032, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2201, + "fields": { + "created": "2018-10-20T16:02:59.152Z", + "updated": "2018-10-20T16:02:59.161Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "367-macOS-64-bit32-bit-installer", + "os": 2, + "release": 282, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "68885dffc1d13c5d24699daa0b83315f", + "filesize": 28155195, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2202, + "fields": { + "created": "2018-10-20T16:02:59.227Z", + "updated": "2018-10-20T16:02:59.233Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "367-Gzipped-source-tarball", + "os": 3, + "release": 282, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c83551d83bf015134b4b2249213f3f85", + "filesize": 22969142, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2203, + "fields": { + "created": "2018-10-20T16:02:59.466Z", + "updated": "2018-10-20T16:02:59.474Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "367-Windows-help-file", + "os": 1, + "release": 282, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python367.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python367.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a7caea654e28c8a86ceb017b33b3bf53", + "filesize": 8173765, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2204, + "fields": { + "created": "2018-10-20T16:02:59.560Z", + "updated": "2018-10-20T16:02:59.567Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "367-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 282, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7617e04b9dafc564f680e37c2f2398b8", + "filesize": 7188094, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2205, + "fields": { + "created": "2018-10-20T16:02:59.772Z", + "updated": "2018-10-20T16:02:59.779Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "367-Windows-x86-64-web-based-installer", + "os": 1, + "release": 282, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.7/python-3.6.7-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.7/python-3.6.7-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6f6b84a5f3c32edd43bffc7c0d65221b", + "filesize": 1320008, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2206, + "fields": { + "created": "2018-10-20T16:03:05.606Z", + "updated": "2018-10-20T16:03:05.616Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "371-Windows-x86-executable-installer", + "os": 1, + "release": 283, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "da24541f28e4cc133c53f0638459993c", + "filesize": 25537464, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2207, + "fields": { + "created": "2018-10-20T16:03:05.688Z", + "updated": "2018-10-20T16:03:05.695Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "371-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 283, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "74f919be8add2749e73d2d91eb6d1da5", + "filesize": 6879900, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2208, + "fields": { + "created": "2018-10-20T16:03:05.931Z", + "updated": "2018-10-20T16:03:05.947Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "371-XZ-compressed-source-tarball", + "os": 3, + "release": 283, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0a57e9022c07fad3dadb2eef58568edb", + "filesize": 16960060, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2209, + "fields": { + "created": "2018-10-20T16:03:06.014Z", + "updated": "2018-10-20T16:03:06.021Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "371-Gzipped-source-tarball", + "os": 3, + "release": 283, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "99f78ecbfc766ea449c4d9e7eda19e83", + "filesize": 22802018, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2210, + "fields": { + "created": "2018-10-20T16:03:06.242Z", + "updated": "2018-10-20T16:03:06.248Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "371-Windows-x86-64-executable-installer", + "os": 1, + "release": 283, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4c9fd65b437ad393532e57f15ce832bc", + "filesize": 26260496, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2211, + "fields": { + "created": "2018-10-20T16:03:06.475Z", + "updated": "2018-10-20T16:03:06.484Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "371-Windows-x86-web-based-installer", + "os": 1, + "release": 283, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "20b163041935862876433708819c97db", + "filesize": 1297224, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2212, + "fields": { + "created": "2018-10-20T16:03:06.709Z", + "updated": "2018-10-20T16:03:06.718Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "371-macOS-64-bit32-bit-installer", + "os": 2, + "release": 283, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ac6630338b53b9e5b9dbb1bc2390a21e", + "filesize": 34360623, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2213, + "fields": { + "created": "2018-10-20T16:03:06.943Z", + "updated": "2018-10-20T16:03:06.956Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "371-macOS-64-bit-installer", + "os": 2, + "release": 283, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b69d52f22e73e1fe37322337eb199a53", + "filesize": 27725111, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2214, + "fields": { + "created": "2018-10-20T16:03:07.051Z", + "updated": "2018-10-20T16:03:07.068Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "371-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 283, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aa4188ea480a64a3ea87e72e09f4c097", + "filesize": 6377805, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2215, + "fields": { + "created": "2018-10-20T16:03:08.045Z", + "updated": "2018-10-20T16:03:08.052Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "371-Windows-help-file", + "os": 1, + "release": 283, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python371.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python371.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b5ca69aa44aa46cdb8cf2b527d699740", + "filesize": 8534435, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2216, + "fields": { + "created": "2018-10-20T16:03:08.316Z", + "updated": "2018-10-20T16:03:08.323Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "371-Windows-x86-64-web-based-installer", + "os": 1, + "release": 283, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6d866305db7e3d523ae0eb252ebd9407", + "filesize": 1333960, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2217, + "fields": { + "created": "2018-12-12T01:53:44.661Z", + "updated": "2018-12-12T01:53:44.671Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "368-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 285, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python-3.6.8rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python-3.6.8rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "811d870f227142a19e347cdd37fc6a0b", + "filesize": 29375872, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2218, + "fields": { + "created": "2018-12-12T01:53:44.746Z", + "updated": "2018-12-12T01:53:44.755Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "368-rc1-macOS-64-bit32-bit-installer", + "os": 2, + "release": 285, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python-3.6.8rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python-3.6.8rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1d56a1caa1afd6e6ab525b2faecb5740", + "filesize": 33361189, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2219, + "fields": { + "created": "2018-12-12T01:53:44.812Z", + "updated": "2018-12-12T01:53:44.823Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "368-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 285, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.8/Python-3.6.8rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/Python-3.6.8rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ba218ed84fa590434a8d8565f32f2c29", + "filesize": 17202356, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2220, + "fields": { + "created": "2018-12-12T01:53:44.892Z", + "updated": "2018-12-12T01:53:44.902Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "368-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 285, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python-3.6.8rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python-3.6.8rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ed21608ff5a5b60eb933bd6b24d59279", + "filesize": 28319000, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2221, + "fields": { + "created": "2018-12-12T01:53:44.973Z", + "updated": "2018-12-12T01:53:44.982Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "368-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 285, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python-3.6.8rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python-3.6.8rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2b669a13361d04f4acf1113bf25d3f98", + "filesize": 7194081, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2222, + "fields": { + "created": "2018-12-12T01:53:45.035Z", + "updated": "2018-12-12T01:53:45.045Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "368-rc1-Gzipped-source-tarball", + "os": 3, + "release": 285, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.8/Python-3.6.8rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/Python-3.6.8rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "34cd018f6d4ee3e51071bd32e9a17146", + "filesize": 23010349, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2223, + "fields": { + "created": "2018-12-12T01:53:45.103Z", + "updated": "2018-12-12T01:53:45.116Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "368-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 285, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python-3.6.8rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python-3.6.8rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "782b3df069a6ec6f92d09938c5d2a379", + "filesize": 1294152, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2224, + "fields": { + "created": "2018-12-12T01:53:45.169Z", + "updated": "2018-12-12T01:53:45.176Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "368-rc1-macOS-64-bit-installer", + "os": 2, + "release": 285, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python-3.6.8rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python-3.6.8rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "36cbff8077ff886619f7a17099c71dd5", + "filesize": 27135272, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2225, + "fields": { + "created": "2018-12-12T01:53:45.228Z", + "updated": "2018-12-12T01:53:45.235Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "368-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 285, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python-3.6.8rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python-3.6.8rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "00352454af164d53db8a066764252bc1", + "filesize": 1320248, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2226, + "fields": { + "created": "2018-12-12T01:53:45.289Z", + "updated": "2018-12-12T01:53:45.296Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "368-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 285, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python-3.6.8rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python-3.6.8rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1be51e4730d1d44488ed9442fcc5603c", + "filesize": 6408260, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2227, + "fields": { + "created": "2018-12-12T01:53:45.361Z", + "updated": "2018-12-12T01:53:45.371Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "368-rc1-Windows-help-file", + "os": 1, + "release": 285, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python368rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python368rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "50efdbca7d8c868e922864103f0ef5a3", + "filesize": 5515130, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2228, + "fields": { + "created": "2018-12-12T01:53:56.479Z", + "updated": "2018-12-12T01:53:56.486Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "372-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 284, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6f35716c278303ca20dfd41b16668672", + "filesize": 6597332, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2229, + "fields": { + "created": "2018-12-12T01:53:56.541Z", + "updated": "2018-12-12T01:53:56.548Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "372-rc1-macOS-64-bit-installer", + "os": 2, + "release": 284, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "01c4836bfdd225ebf008c83a9f906edf", + "filesize": 27827496, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2230, + "fields": { + "created": "2018-12-12T01:53:56.615Z", + "updated": "2018-12-12T01:53:56.623Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "372-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 284, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4f5557e14cad445c40ed7a5939fb8e81", + "filesize": 7090767, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2231, + "fields": { + "created": "2018-12-12T01:53:56.685Z", + "updated": "2018-12-12T01:53:56.692Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "372-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 284, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cd0ee71635bf64055f9b1cbebd745f12", + "filesize": 1363536, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2232, + "fields": { + "created": "2018-12-12T01:53:56.797Z", + "updated": "2018-12-12T01:53:56.807Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "372-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 284, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.2/Python-3.7.2rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/Python-3.7.2rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7d1230c615a4fdd87fbaef3a0fb8ba68", + "filesize": 17042752, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2233, + "fields": { + "created": "2018-12-12T01:53:56.890Z", + "updated": "2018-12-12T01:53:56.906Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "372-rc1-Windows-help-file", + "os": 1, + "release": 284, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python372rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python372rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "751e70d634d27a26310347ef4da33fd0", + "filesize": 5766102, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2234, + "fields": { + "created": "2018-12-12T01:53:56.982Z", + "updated": "2018-12-12T01:53:56.993Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "372-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 284, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bcf644bd4a8f597d97289f80bbe13d37", + "filesize": 1325832, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2235, + "fields": { + "created": "2018-12-12T01:53:57.066Z", + "updated": "2018-12-12T01:53:57.078Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "372-rc1-macOS-64-bit32-bit-installer", + "os": 2, + "release": 284, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fec58f37c12225de3add9248b7fe18e1", + "filesize": 34503973, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2236, + "fields": { + "created": "2018-12-12T01:53:57.153Z", + "updated": "2018-12-12T01:53:57.167Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "372-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 284, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "53e054fbbec5bfea8f4c244a316e8ebe", + "filesize": 23034000, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2237, + "fields": { + "created": "2018-12-12T01:53:57.271Z", + "updated": "2018-12-12T01:53:57.282Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "372-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 284, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python-3.7.2rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b9f5c413c183b2d937730290200d12b5", + "filesize": 23811912, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2238, + "fields": { + "created": "2018-12-12T01:53:57.354Z", + "updated": "2018-12-12T01:53:57.364Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "372-rc1-Gzipped-source-tarball", + "os": 3, + "release": 284, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.2/Python-3.7.2rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/Python-3.7.2rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2e4b64758ca74118563586d415364980", + "filesize": 22897698, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2239, + "fields": { + "created": "2018-12-24T10:17:15.558Z", + "updated": "2018-12-24T10:17:15.568Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "368-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 286, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python-3.6.8-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python-3.6.8-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "73df7cb2f1500ff36d7dbeeac3968711", + "filesize": 7276004, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2240, + "fields": { + "created": "2018-12-24T10:17:15.620Z", + "updated": "2018-12-24T10:17:15.631Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "368-Gzipped-source-tarball", + "os": 3, + "release": 286, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "48f393a04c2e66c77bfc114e589ec630", + "filesize": 23010188, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2241, + "fields": { + "created": "2018-12-24T10:17:15.718Z", + "updated": "2018-12-24T10:17:15.730Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "368-Windows-x86-executable-installer", + "os": 1, + "release": 286, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python-3.6.8.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python-3.6.8.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9c7b1ebdd3a8df0eebfda2f107f1742c", + "filesize": 30807656, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2242, + "fields": { + "created": "2018-12-24T10:17:15.787Z", + "updated": "2018-12-24T10:17:15.798Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "368-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 286, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python-3.6.8-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python-3.6.8-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "60470b4cceba52094121d43cd3f6ce3a", + "filesize": 6560373, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2243, + "fields": { + "created": "2018-12-24T10:17:15.850Z", + "updated": "2018-12-24T10:17:15.859Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "368-Windows-help-file", + "os": 1, + "release": 286, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python368.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python368.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0b04278f5bdb8ee85ae5ae66af0430b2", + "filesize": 7868305, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2244, + "fields": { + "created": "2018-12-24T10:17:15.914Z", + "updated": "2018-12-24T10:17:15.923Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "368-Windows-x86-64-executable-installer", + "os": 1, + "release": 286, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python-3.6.8-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python-3.6.8-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "72f37686b7ab240ef70fdb931bdf3cb5", + "filesize": 31830944, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2245, + "fields": { + "created": "2018-12-24T10:17:15.976Z", + "updated": "2018-12-24T10:17:15.986Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "368-Windows-x86-64-web-based-installer", + "os": 1, + "release": 286, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python-3.6.8-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python-3.6.8-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "39dde5f535c16d642e84fc7a69f43e05", + "filesize": 1331744, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2246, + "fields": { + "created": "2018-12-24T10:17:16.035Z", + "updated": "2018-12-24T10:17:16.045Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "368-XZ-compressed-source-tarball", + "os": 3, + "release": 286, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "51aac91bdf8be95ec0a62d174890821a", + "filesize": 17212420, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2247, + "fields": { + "created": "2018-12-24T10:17:16.095Z", + "updated": "2018-12-24T10:17:16.103Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "368-macOS-64-bit32-bit-installer", + "os": 2, + "release": 286, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python-3.6.8-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python-3.6.8-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eb1a23d762946329c2aa3448d256d421", + "filesize": 33258809, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2248, + "fields": { + "created": "2018-12-24T10:17:16.152Z", + "updated": "2018-12-24T10:17:16.160Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "368-macOS-64-bit-installer", + "os": 2, + "release": 286, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python-3.6.8-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python-3.6.8-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "786c4d9183c754f58751d52f509bc971", + "filesize": 27073838, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2249, + "fields": { + "created": "2018-12-24T10:17:16.210Z", + "updated": "2018-12-24T10:17:16.217Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "368-Windows-x86-web-based-installer", + "os": 1, + "release": 286, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.6.8/python-3.6.8-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.8/python-3.6.8-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "80de96338691698e10a935ecd0bdaacb", + "filesize": 1296064, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2261, + "fields": { + "created": "2019-01-09T03:59:00.828Z", + "updated": "2019-01-09T03:59:00.839Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "372-macOS-64-bit-installer", + "os": 2, + "release": 287, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python-3.7.2-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0fc95e9f6d6b4881f3b499da338a9a80", + "filesize": 27766090, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2262, + "fields": { + "created": "2019-01-09T03:59:00.902Z", + "updated": "2019-01-09T03:59:00.912Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "372-Windows-help-file", + "os": 1, + "release": 287, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python372.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python372.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "941b7d6279c0d4060a927a65dcab88c4", + "filesize": 8092167, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2263, + "fields": { + "created": "2019-01-09T03:59:00.971Z", + "updated": "2019-01-09T03:59:00.984Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "372-Windows-x86-64-web-based-installer", + "os": 1, + "release": 287, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python-3.7.2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8de2335249d84fe1eeb61ec25858bd82", + "filesize": 1362888, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2264, + "fields": { + "created": "2019-01-09T03:59:01.048Z", + "updated": "2019-01-09T03:59:01.057Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "372-macOS-64-bit32-bit-installer", + "os": 2, + "release": 287, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python-3.7.2-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d8ff07973bc9c009de80c269fd7efcca", + "filesize": 34405674, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2265, + "fields": { + "created": "2019-01-09T03:59:01.110Z", + "updated": "2019-01-09T03:59:01.117Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "372-XZ-compressed-source-tarball", + "os": 3, + "release": 287, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "df6ec36011808205beda239c72f947cb", + "filesize": 17042320, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2266, + "fields": { + "created": "2019-01-09T03:59:01.212Z", + "updated": "2019-01-09T03:59:01.223Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "372-Windows-x86-64-executable-installer", + "os": 1, + "release": 287, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python-3.7.2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ff258093f0b3953c886192dec9f52763", + "filesize": 26140976, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2267, + "fields": { + "created": "2019-01-09T03:59:01.292Z", + "updated": "2019-01-09T03:59:01.299Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "372-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 287, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2.post1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python-3.7.2.post1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "26881045297dc1883a1d61baffeecaf0", + "filesize": 6533256, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2268, + "fields": { + "created": "2019-01-09T03:59:01.352Z", + "updated": "2019-01-09T03:59:01.362Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "372-Gzipped-source-tarball", + "os": 3, + "release": 287, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "02a75015f7cd845e27b85192bb0ca4cb", + "filesize": 22897802, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2269, + "fields": { + "created": "2019-01-09T03:59:01.421Z", + "updated": "2019-01-09T03:59:01.432Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "372-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 287, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2.post1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python-3.7.2.post1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f81568590bef56e5997e63b434664d58", + "filesize": 7025085, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2270, + "fields": { + "created": "2019-01-09T03:59:01.489Z", + "updated": "2019-01-09T03:59:01.497Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "372-Windows-x86-web-based-installer", + "os": 1, + "release": 287, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python-3.7.2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1e6c626514b72e21008f8cd53f945f10", + "filesize": 1324648, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2271, + "fields": { + "created": "2019-01-09T03:59:01.552Z", + "updated": "2019-01-09T03:59:01.559Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "372-Windows-x86-executable-installer", + "os": 1, + "release": 287, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.2/python-3.7.2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "38156b62c0cbcb03bfddeb86e66c3a0f", + "filesize": 25365744, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2277, + "fields": { + "created": "2019-02-04T07:52:06.285Z", + "updated": "2019-02-04T07:52:06.293Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "380-a1-Windows-x86-64-executable-installer", + "os": 1, + "release": 288, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aee4dfc986b1f67664f2926e47e60c27", + "filesize": 26280688, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2278, + "fields": { + "created": "2019-02-04T07:52:06.342Z", + "updated": "2019-02-04T07:52:06.349Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "380-a1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 288, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b2049ae6952ff8e846d014971ae6e0a6", + "filesize": 7097563, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2279, + "fields": { + "created": "2019-02-04T07:52:06.403Z", + "updated": "2019-02-04T07:52:06.410Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "380-a1-Windows-help-file", + "os": 1, + "release": 288, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python380a1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python380a1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "994aeb4a7eaad8018771eed3e815ed71", + "filesize": 8102753, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2280, + "fields": { + "created": "2019-02-04T07:52:06.462Z", + "updated": "2019-02-04T07:52:06.470Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "380-a1-XZ-compressed-source-tarball", + "os": 3, + "release": 288, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0a1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0a1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f8759b15bc2ce7868f95034d4370e8b0", + "filesize": 17170472, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2281, + "fields": { + "created": "2019-02-04T07:52:06.526Z", + "updated": "2019-02-04T07:52:06.534Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "380-a1-Gzipped-source-tarball", + "os": 3, + "release": 288, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0a1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0a1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5ed2aa07ad2884e1f2729791f7d7505e", + "filesize": 23182535, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2282, + "fields": { + "created": "2019-02-04T07:52:06.617Z", + "updated": "2019-02-04T07:52:06.625Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "380-a1-Windows-x86-web-based-installer", + "os": 1, + "release": 288, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0177372e573e985ef132e39a4589f74b", + "filesize": 1324608, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2283, + "fields": { + "created": "2019-02-04T07:52:06.678Z", + "updated": "2019-02-04T07:52:06.685Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "380-a1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 288, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "be434ac3032709446c263b586af6e574", + "filesize": 6619392, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2284, + "fields": { + "created": "2019-02-04T07:52:06.747Z", + "updated": "2019-02-04T07:52:06.755Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "380-a1-macOS-64-bit-installer", + "os": 2, + "release": 288, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "245fd2829b8425f42ef113d1d7cce2b9", + "filesize": 28065062, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2285, + "fields": { + "created": "2019-02-04T07:52:06.816Z", + "updated": "2019-02-04T07:52:06.824Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "380-a1-Windows-x86-executable-installer", + "os": 1, + "release": 288, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8d111f6a70d491cc87f8ed99c2827fd0", + "filesize": 25522920, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2286, + "fields": { + "created": "2019-02-04T07:52:06.888Z", + "updated": "2019-02-04T07:52:06.897Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "380-a1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 288, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "39d4dbf21743823d45e6abdc09936354", + "filesize": 1362912, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2307, + "fields": { + "created": "2019-02-25T19:48:55.138Z", + "updated": "2019-02-25T19:48:55.149Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "380-a2-XZ-compressed-source-tarball", + "os": 3, + "release": 290, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0a2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0a2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7f151b7b56c93b137f55f12c1ba30526", + "filesize": 17201560, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2308, + "fields": { + "created": "2019-02-25T19:48:55.210Z", + "updated": "2019-02-25T19:48:55.217Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "380-a2-macOS-64-bit-installer", + "os": 2, + "release": 290, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a2-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a2-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "32c40dba370fa6fc6c2029ca913e50e0", + "filesize": 28122412, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2309, + "fields": { + "created": "2019-02-25T19:48:55.341Z", + "updated": "2019-02-25T19:48:55.350Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "380-a2-Windows-x86-web-based-installer", + "os": 1, + "release": 290, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ea30bc039f60cc7cb846af226214a200", + "filesize": 1324584, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2310, + "fields": { + "created": "2019-02-25T19:48:55.590Z", + "updated": "2019-02-25T19:48:55.607Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "380-a2-Windows-x86-64-executable-installer", + "os": 1, + "release": 290, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "821835b9afd5a0b6da430a715e7fdc8e", + "filesize": 26351040, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2311, + "fields": { + "created": "2019-02-25T19:48:56.166Z", + "updated": "2019-02-25T19:48:56.178Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "380-a2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 290, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "81a1837c940759197b5f321df88ebd50", + "filesize": 1362912, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2312, + "fields": { + "created": "2019-02-25T19:48:56.399Z", + "updated": "2019-02-25T19:48:56.408Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "380-a2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 290, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6d1daa215e6ebc5d90c586149255b6e6", + "filesize": 7106677, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2313, + "fields": { + "created": "2019-02-25T19:48:56.636Z", + "updated": "2019-02-25T19:48:56.649Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "380-a2-Windows-x86-executable-installer", + "os": 1, + "release": 290, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c29cbabd12f6ab4ed1f57029c302d7c0", + "filesize": 25597160, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2314, + "fields": { + "created": "2019-02-25T19:48:56.807Z", + "updated": "2019-02-25T19:48:56.818Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "380-a2-Windows-help-file", + "os": 1, + "release": 290, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python380a2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python380a2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3d95e5d01773d4968c3b36dce9bbfe75", + "filesize": 8149177, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2315, + "fields": { + "created": "2019-02-25T19:48:56.931Z", + "updated": "2019-02-25T19:48:56.939Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "380-a2-Gzipped-source-tarball", + "os": 3, + "release": 290, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0a2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0a2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5da7d318ce05fdfa4e5b43f844bfa468", + "filesize": 23223186, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2316, + "fields": { + "created": "2019-02-25T19:48:57.098Z", + "updated": "2019-02-25T19:48:57.110Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "380-a2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 290, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "63a25b63bb51b3a73745f4ed520e846e", + "filesize": 6627153, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2328, + "fields": { + "created": "2019-02-25T22:34:31.591Z", + "updated": "2019-02-25T22:34:31.598Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "371-rc1-macOS-64-bit32-bit-installer", + "os": 2, + "release": 279, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4b72fc57f0b82410c91bfd15a20250d1", + "filesize": 34352311, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2329, + "fields": { + "created": "2019-02-25T22:34:31.683Z", + "updated": "2019-02-25T22:34:31.692Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "371-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 279, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e2122d4ca7e8834cc3a9c63e447407cb", + "filesize": 25540392, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2330, + "fields": { + "created": "2019-02-25T22:34:31.820Z", + "updated": "2019-02-25T22:34:31.828Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "371-rc1-macOS-64-bit-installer", + "os": 2, + "release": 279, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "faf380ce6aaad6d4e5653bced0e729d8", + "filesize": 27716791, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2331, + "fields": { + "created": "2019-02-25T22:34:31.907Z", + "updated": "2019-02-25T22:34:31.916Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "371-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 279, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b8892b03f1b4fb183947de9f86899bd4", + "filesize": 26288016, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2332, + "fields": { + "created": "2019-02-25T22:34:31.991Z", + "updated": "2019-02-25T22:34:32.017Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "371-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 279, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1a90367925d71f511d17b222c55597de", + "filesize": 1328128, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2333, + "fields": { + "created": "2019-02-25T22:34:32.116Z", + "updated": "2019-02-25T22:34:32.130Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "371-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 279, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5395a59784820ac5419596f8c6628024", + "filesize": 1299088, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2334, + "fields": { + "created": "2019-02-25T22:34:32.236Z", + "updated": "2019-02-25T22:34:32.245Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "371-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 279, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4bb576586319959c85c9d36a25d05a82", + "filesize": 6938990, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2335, + "fields": { + "created": "2019-02-25T22:34:32.322Z", + "updated": "2019-02-25T22:34:32.331Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "371-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 279, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "91012b2063a5f143bc2d805bdbf5613b", + "filesize": 16968876, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2336, + "fields": { + "created": "2019-02-25T22:34:32.623Z", + "updated": "2019-02-25T22:34:32.634Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "371-rc1-Gzipped-source-tarball", + "os": 3, + "release": 279, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b99cf438ebe665ed9afc6e56c187acb2", + "filesize": 22800318, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2337, + "fields": { + "created": "2019-02-25T22:34:32.718Z", + "updated": "2019-02-25T22:34:32.732Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "371-rc1-Windows-help-file", + "os": 1, + "release": 279, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python371rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python371rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eabd80b848319d324a78764679f505e0", + "filesize": 8529144, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2338, + "fields": { + "created": "2019-02-25T22:34:32.814Z", + "updated": "2019-02-25T22:34:32.826Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "371-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 279, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.1/python-3.7.1rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0dec7ed63626c2f93bac023379e82bf5", + "filesize": 6400583, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2339, + "fields": { + "created": "2019-03-02T01:48:53.233Z", + "updated": "2019-03-02T01:48:53.244Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2716-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 289, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.16/Python-2.7.16rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/Python-2.7.16rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "121570cc0017c026341d171a524a8f58", + "filesize": 12752000, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2340, + "fields": { + "created": "2019-03-02T01:48:53.312Z", + "updated": "2019-03-02T01:48:53.320Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2716-rc1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 289, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.16/python-2.7.16rc1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/python-2.7.16rc1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4c163b962ff061893da42ef9797dae02", + "filesize": 20353024, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2341, + "fields": { + "created": "2019-03-02T01:48:53.384Z", + "updated": "2019-03-02T01:48:53.397Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2716-rc1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 289, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.16/python-2.7.16rc1.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/python-2.7.16rc1.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8c5741cdf5549abb9426f732f63c7d88", + "filesize": 25890982, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2342, + "fields": { + "created": "2019-03-02T01:48:53.463Z", + "updated": "2019-03-02T01:48:53.472Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "2716-rc1-macOS-64-bit-installer", + "os": 2, + "release": 289, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.16/python-2.7.16rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/python-2.7.16rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1aca74550589270852f0eec5ac80131f", + "filesize": 23743787, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2343, + "fields": { + "created": "2019-03-02T01:48:53.539Z", + "updated": "2019-03-02T01:48:53.545Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "2716-rc1-macOS-64-bit32-bit-installer", + "os": 2, + "release": 289, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.16/python-2.7.16rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/python-2.7.16rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "24cb850df4ffd3a21b41c188155d10df", + "filesize": 30256451, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2344, + "fields": { + "created": "2019-03-02T01:48:53.607Z", + "updated": "2019-03-02T01:48:53.617Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2716-rc1-Windows-help-file", + "os": 1, + "release": 289, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.16/python2716rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/python2716rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1172858f8950518545e8ec97ff19fa21", + "filesize": 6263947, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2345, + "fields": { + "created": "2019-03-02T01:48:53.689Z", + "updated": "2019-03-02T01:48:53.694Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2716-rc1-Windows-x86-MSI-installer", + "os": 1, + "release": 289, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.16/python-2.7.16rc1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/python-2.7.16rc1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e48585321c4728fdcdb0dc450cc68b92", + "filesize": 19415040, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2346, + "fields": { + "created": "2019-03-02T01:48:53.781Z", + "updated": "2019-03-02T01:48:53.794Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2716-rc1-Gzipped-source-tarball", + "os": 3, + "release": 289, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.16/Python-2.7.16rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/Python-2.7.16rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2b58add07c6ffe8c68457971898e1039", + "filesize": 17431588, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2347, + "fields": { + "created": "2019-03-02T01:48:53.867Z", + "updated": "2019-03-02T01:48:53.877Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2716-rc1-Windows-debug-information-files", + "os": 1, + "release": 289, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.16/python-2.7.16rc1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/python-2.7.16rc1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d7410ce44169e476f353b1362ead4bbe", + "filesize": 25088166, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2357, + "fields": { + "created": "2019-03-04T08:18:08.988Z", + "updated": "2019-03-04T08:18:09.030Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3410-rc1-Gzipped-source-tarball", + "os": 3, + "release": 292, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.10/Python-3.4.10rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.10/Python-3.4.10rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1c0254784a25397864a429ef6ed3f423", + "filesize": 19664958, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2358, + "fields": { + "created": "2019-03-04T08:18:09.115Z", + "updated": "2019-03-04T08:18:09.139Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3410-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 292, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.10/Python-3.4.10rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.10/Python-3.4.10rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "181c1af9f69f0e7756832977b17011d4", + "filesize": 14506132, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2359, + "fields": { + "created": "2019-03-04T08:18:13.495Z", + "updated": "2019-03-04T08:18:13.512Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "357-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 293, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.7/Python-3.5.7rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.7/Python-3.5.7rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f7230554200e778d6f4d9cd51e8fad02", + "filesize": 15362600, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2360, + "fields": { + "created": "2019-03-04T08:18:13.602Z", + "updated": "2019-03-04T08:18:13.618Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "357-rc1-Gzipped-source-tarball", + "os": 3, + "release": 293, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.7/Python-3.5.7rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.7/Python-3.5.7rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "92f77200d5f69c851e22253b15aeafc0", + "filesize": 20741163, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2379, + "fields": { + "created": "2019-03-09T19:17:31.426Z", + "updated": "2019-03-09T19:17:31.451Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "2716-macOS-64-bit-installer", + "os": 2, + "release": 291, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.16/python-2.7.16-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/python-2.7.16-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a3af70c13c654276d66c3c1cb1772dc7", + "filesize": 23743901, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2380, + "fields": { + "created": "2019-03-09T19:17:31.541Z", + "updated": "2019-03-09T19:17:31.558Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2716-Windows-x86-64-MSI-installer", + "os": 1, + "release": 291, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.16/python-2.7.16.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/python-2.7.16.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2fe86194bb4027be75b29852027f1a79", + "filesize": 20361216, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2381, + "fields": { + "created": "2019-03-09T19:17:31.633Z", + "updated": "2019-03-09T19:17:31.640Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2716-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 291, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.16/python-2.7.16.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/python-2.7.16.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4292c4db30c27fedbbee8544967b6452", + "filesize": 25899174, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2382, + "fields": { + "created": "2019-03-09T19:17:31.710Z", + "updated": "2019-03-09T19:17:31.718Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "2716-macOS-64-bit32-bit-installer", + "os": 2, + "release": 291, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.16/python-2.7.16-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/python-2.7.16-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "70b0f58eba7b78b174056369b076c085", + "filesize": 30252432, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2383, + "fields": { + "created": "2019-03-09T19:17:31.788Z", + "updated": "2019-03-09T19:17:31.805Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2716-Windows-help-file", + "os": 1, + "release": 291, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.16/python2716.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/python2716.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3bbf29b6712b231d2dff9211fc7b21e2", + "filesize": 6263118, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2384, + "fields": { + "created": "2019-03-09T19:17:31.889Z", + "updated": "2019-03-09T19:17:31.896Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2716-Windows-x86-MSI-installer", + "os": 1, + "release": 291, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.16/python-2.7.16.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/python-2.7.16.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "912428345b7e0428544ec4edcdf70286", + "filesize": 19419136, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2385, + "fields": { + "created": "2019-03-09T19:17:31.964Z", + "updated": "2019-03-09T19:17:31.969Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2716-XZ-compressed-source-tarball", + "os": 3, + "release": 291, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.16/Python-2.7.16.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/Python-2.7.16.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "30157d85a2c0479c09ea2cbe61f2aaf5", + "filesize": 12752104, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2386, + "fields": { + "created": "2019-03-09T19:17:32.044Z", + "updated": "2019-03-09T19:17:32.073Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2716-Windows-debug-information-files", + "os": 1, + "release": 291, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.16/python-2.7.16-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/python-2.7.16-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f94690edbbf58b10bfd718badc08b1f8", + "filesize": 25088166, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2387, + "fields": { + "created": "2019-03-09T19:17:32.178Z", + "updated": "2019-03-09T19:17:32.191Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2716-Gzipped-source-tarball", + "os": 3, + "release": 291, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.16/Python-2.7.16.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.16/Python-2.7.16.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f1a2ace631068444831d01485466ece0", + "filesize": 17431748, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2392, + "fields": { + "created": "2019-03-12T23:20:33.412Z", + "updated": "2019-03-12T23:20:33.420Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "373-rc1-Windows-help-file", + "os": 1, + "release": 294, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python373rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python373rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6ef5165c8f1cba7bf56ac1363f727813", + "filesize": 8087634, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2393, + "fields": { + "created": "2019-03-12T23:20:33.499Z", + "updated": "2019-03-12T23:20:33.532Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "373-rc1-macOS-64-bit-installer", + "os": 2, + "release": 294, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python-3.7.3rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python-3.7.3rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fff6ecd2943e63d32fc3e011b2e32a90", + "filesize": 27843988, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2394, + "fields": { + "created": "2019-03-12T23:20:33.615Z", + "updated": "2019-03-12T23:20:33.628Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "373-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 294, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python-3.7.3rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python-3.7.3rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f3010d74f73082729c95cf1067c1f473", + "filesize": 1363024, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2395, + "fields": { + "created": "2019-03-12T23:20:33.715Z", + "updated": "2019-03-12T23:20:33.731Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "373-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 294, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.3/Python-3.7.3rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/Python-3.7.3rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0f829f6257e32e6fa807f26bc7db4018", + "filesize": 17106464, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2396, + "fields": { + "created": "2019-03-12T23:20:33.815Z", + "updated": "2019-03-12T23:20:33.863Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "373-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 294, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python-3.7.3rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python-3.7.3rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f800a5cb3d154885650067c94a838a66", + "filesize": 6526592, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2397, + "fields": { + "created": "2019-03-12T23:20:33.949Z", + "updated": "2019-03-12T23:20:33.958Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "373-rc1-macOS-64-bit32-bit-installer", + "os": 2, + "release": 294, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python-3.7.3rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python-3.7.3rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6882a8b0ecf0be3e28202b1c98d18d13", + "filesize": 34479523, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2398, + "fields": { + "created": "2019-03-12T23:20:34.037Z", + "updated": "2019-03-12T23:20:34.056Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "373-rc1-Gzipped-source-tarball", + "os": 3, + "release": 294, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.3/Python-3.7.3rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/Python-3.7.3rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "52d3ac4eae7663073a2914cb60d6ec59", + "filesize": 22973877, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2399, + "fields": { + "created": "2019-03-12T23:20:34.132Z", + "updated": "2019-03-12T23:20:34.137Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "373-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 294, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python-3.7.3rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python-3.7.3rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "44cd223a30cd39de5ce9958f71af5b9c", + "filesize": 7019029, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2400, + "fields": { + "created": "2019-03-12T23:20:34.210Z", + "updated": "2019-03-12T23:20:34.223Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "373-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 294, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python-3.7.3rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python-3.7.3rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "85542faf758734f25af323d5528feee1", + "filesize": 25419648, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2401, + "fields": { + "created": "2019-03-12T23:20:34.307Z", + "updated": "2019-03-12T23:20:34.323Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "373-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 294, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python-3.7.3rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python-3.7.3rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6bf8a86a83f069e0bd066ce99c3016f1", + "filesize": 1325256, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2402, + "fields": { + "created": "2019-03-12T23:20:34.400Z", + "updated": "2019-03-12T23:20:34.408Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "373-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 294, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python-3.7.3rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python-3.7.3rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f52a9dad92a6ef66b4fe9c46e612216e", + "filesize": 26188120, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2403, + "fields": { + "created": "2019-03-18T20:23:32.211Z", + "updated": "2019-03-18T20:23:32.221Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3410-XZ-compressed-source-tarball", + "os": 3, + "release": 296, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.10/Python-3.4.10.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.10/Python-3.4.10.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f88a98bce17a03c43a6a5f8a66ab2e62", + "filesize": 14559088, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2404, + "fields": { + "created": "2019-03-18T20:23:32.300Z", + "updated": "2019-03-18T20:23:32.310Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3410-Gzipped-source-tarball", + "os": 3, + "release": 296, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.4.10/Python-3.4.10.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.4.10/Python-3.4.10.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2452f4d809ae9d88011ccafe12c4b6d3", + "filesize": 19684498, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2405, + "fields": { + "created": "2019-03-18T20:23:36.950Z", + "updated": "2019-03-18T20:23:36.960Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "357-Gzipped-source-tarball", + "os": 3, + "release": 295, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.7/Python-3.5.7.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.7/Python-3.5.7.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "92f4c16c55429bf986f5ab45fe3a6659", + "filesize": 20753760, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2406, + "fields": { + "created": "2019-03-18T20:23:37.427Z", + "updated": "2019-03-18T20:23:37.441Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "357-XZ-compressed-source-tarball", + "os": 3, + "release": 295, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.7/Python-3.5.7.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.7/Python-3.5.7.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b1b4949786732494f4d6675c184aa765", + "filesize": 15324736, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2409, + "fields": { + "created": "2019-03-25T23:19:26.206Z", + "updated": "2019-03-25T23:19:26.215Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "373-Windows-help-file", + "os": 1, + "release": 298, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python373.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python373.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7740b11d249bca16364f4a45b40c5676", + "filesize": 8090273, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2410, + "fields": { + "created": "2019-03-25T23:19:26.285Z", + "updated": "2019-03-25T23:19:26.295Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "373-macOS-64-bit32-bit-installer", + "os": 2, + "release": 298, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python-3.7.3-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python-3.7.3-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5a95572715e0d600de28d6232c656954", + "filesize": 34479513, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2411, + "fields": { + "created": "2019-03-25T23:19:26.365Z", + "updated": "2019-03-25T23:19:26.379Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "373-XZ-compressed-source-tarball", + "os": 3, + "release": 298, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "93df27aec0cd18d6d42173e601ffbbfd", + "filesize": 17108364, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2412, + "fields": { + "created": "2019-03-25T23:19:26.457Z", + "updated": "2019-03-25T23:19:26.467Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "373-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 298, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python-3.7.3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python-3.7.3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "70df01e7b0c1b7042aabb5a3c1e2fbd5", + "filesize": 6526486, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2413, + "fields": { + "created": "2019-03-25T23:19:26.538Z", + "updated": "2019-03-25T23:19:26.551Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "373-macOS-64-bit-installer", + "os": 2, + "release": 298, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python-3.7.3-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python-3.7.3-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4ca0e30f48be690bfe80111daee9509a", + "filesize": 27839889, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2414, + "fields": { + "created": "2019-03-25T23:19:26.600Z", + "updated": "2019-03-25T23:19:26.610Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "373-Gzipped-source-tarball", + "os": 3, + "release": 298, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2ee10f25e3d1b14215d56c3882486fcf", + "filesize": 22973527, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2415, + "fields": { + "created": "2019-03-25T23:19:26.678Z", + "updated": "2019-03-25T23:19:26.688Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "373-Windows-x86-web-based-installer", + "os": 1, + "release": 298, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python-3.7.3-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python-3.7.3-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d3944e218a45d982f0abcd93b151273a", + "filesize": 1324632, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2416, + "fields": { + "created": "2019-03-25T23:19:26.771Z", + "updated": "2019-03-25T23:19:26.785Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "373-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 298, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python-3.7.3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python-3.7.3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "854ac011983b4c799379a3baa3a040ec", + "filesize": 7018568, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2417, + "fields": { + "created": "2019-03-25T23:19:26.861Z", + "updated": "2019-03-25T23:19:26.871Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "373-Windows-x86-64-executable-installer", + "os": 1, + "release": 298, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python-3.7.3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python-3.7.3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a2b79563476e9aa47f11899a53349383", + "filesize": 26190920, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2418, + "fields": { + "created": "2019-03-25T23:19:26.944Z", + "updated": "2019-03-25T23:19:26.956Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "373-Windows-x86-64-web-based-installer", + "os": 1, + "release": 298, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python-3.7.3-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python-3.7.3-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "047d19d2569c963b8253a9b2e52395ef", + "filesize": 1362888, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2419, + "fields": { + "created": "2019-03-25T23:19:27.029Z", + "updated": "2019-03-25T23:19:27.037Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "373-Windows-x86-executable-installer", + "os": 1, + "release": 298, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.3/python-3.7.3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.3/python-3.7.3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ebf1644cdc1eeeebacc92afa949cfc01", + "filesize": 25424128, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2420, + "fields": { + "created": "2019-03-26T08:55:57.955Z", + "updated": "2019-03-26T08:55:57.965Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "380-a3-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 297, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "79d83c19fa76a4c1bb36910cddd62be1", + "filesize": 6653220, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2421, + "fields": { + "created": "2019-03-26T08:55:58.027Z", + "updated": "2019-03-26T08:55:58.035Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "380-a3-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 297, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2d3e5a77a89dac4b0ac2d7c4ef2ed0b8", + "filesize": 7133858, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2422, + "fields": { + "created": "2019-03-26T08:55:58.109Z", + "updated": "2019-03-26T08:55:58.122Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "380-a3-XZ-compressed-source-tarball", + "os": 3, + "release": 297, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0a3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0a3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e1dd4aec73b4e44981cdbea4068d97b8", + "filesize": 17267880, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2423, + "fields": { + "created": "2019-03-26T08:55:58.194Z", + "updated": "2019-03-26T08:55:58.203Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "380-a3-Windows-x86-executable-installer", + "os": 1, + "release": 297, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7d4515c98ae5628136adaa0815b067ed", + "filesize": 25677856, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2424, + "fields": { + "created": "2019-03-26T08:55:58.264Z", + "updated": "2019-03-26T08:55:58.272Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "380-a3-Windows-x86-64-web-based-installer", + "os": 1, + "release": 297, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a3-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a3-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9c482ed2452a53c3920311b051882153", + "filesize": 1362896, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2425, + "fields": { + "created": "2019-03-26T08:55:58.342Z", + "updated": "2019-03-26T08:55:58.351Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "380-a3-macOS-64-bit-installer", + "os": 2, + "release": 297, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a3-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a3-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a9623dd7b30fbd3e32498cf40254169d", + "filesize": 28224913, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2426, + "fields": { + "created": "2019-03-26T08:55:58.415Z", + "updated": "2019-03-26T08:55:58.421Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "380-a3-Windows-help-file", + "os": 1, + "release": 297, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python380a3.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python380a3.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "85b4af702e806058cf6fbc934a5e76ca", + "filesize": 8159951, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2427, + "fields": { + "created": "2019-03-26T08:55:58.489Z", + "updated": "2019-03-26T08:55:58.496Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "380-a3-Windows-x86-64-executable-installer", + "os": 1, + "release": 297, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9ab27beafe7cd4a4132e2eeeac8ed940", + "filesize": 26433848, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2428, + "fields": { + "created": "2019-03-26T08:55:58.561Z", + "updated": "2019-03-26T08:55:58.571Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "380-a3-Gzipped-source-tarball", + "os": 3, + "release": 297, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0a3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0a3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dabdedba5e221fcfe9f1420330650f67", + "filesize": 23307857, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2429, + "fields": { + "created": "2019-03-26T08:55:58.638Z", + "updated": "2019-03-26T08:55:58.646Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "380-a3-Windows-x86-web-based-installer", + "os": 1, + "release": 297, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a3-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a3-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0bc1ac77bc7b23d218531ab723a9d6d4", + "filesize": 1324608, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2430, + "fields": { + "created": "2019-05-07T14:43:28.337Z", + "updated": "2019-05-07T14:43:28.345Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "380-a4-macOS-64-bit-installer", + "os": 2, + "release": 299, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a4-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a4-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "18de9a54d9eea9d5270846170037fd42", + "filesize": 28238085, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2431, + "fields": { + "created": "2019-05-07T14:43:28.410Z", + "updated": "2019-05-07T14:43:28.416Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "380-a4-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 299, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1a5d5b23b7d86b8bd704f08e88d7d506", + "filesize": 7175758, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2432, + "fields": { + "created": "2019-05-07T14:43:28.476Z", + "updated": "2019-05-07T14:43:28.489Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "380-a4-Windows-x86-64-web-based-installer", + "os": 1, + "release": 299, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a4-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a4-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9b67927c6b8f97014b80079a86e97a9c", + "filesize": 1363144, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2433, + "fields": { + "created": "2019-05-07T14:43:28.565Z", + "updated": "2019-05-07T14:43:28.575Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "380-a4-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 299, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d38a772de5616c674ee5c62f1890985c", + "filesize": 6696870, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2434, + "fields": { + "created": "2019-05-07T14:43:28.646Z", + "updated": "2019-05-07T14:43:28.662Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "380-a4-Windows-x86-executable-installer", + "os": 1, + "release": 299, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6e6142f266a41ce7f892a3b329eed9ff", + "filesize": 25783856, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2435, + "fields": { + "created": "2019-05-07T14:43:28.725Z", + "updated": "2019-05-07T14:43:28.734Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "380-a4-XZ-compressed-source-tarball", + "os": 3, + "release": 299, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0a4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0a4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5d0d5fd6b02a53023c8788c826650d75", + "filesize": 17321012, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2436, + "fields": { + "created": "2019-05-07T14:43:28.799Z", + "updated": "2019-05-07T14:43:28.810Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "380-a4-Windows-x86-web-based-installer", + "os": 1, + "release": 299, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a4-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a4-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f8c313972d4f85c747bd2a2e54d7704d", + "filesize": 1324896, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2437, + "fields": { + "created": "2019-05-07T14:43:28.871Z", + "updated": "2019-05-07T14:43:28.876Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "380-a4-Windows-help-file", + "os": 1, + "release": 299, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python380a4.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python380a4.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "70cb3abe78f9be8fe94f0355d9839fd3", + "filesize": 8206499, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2438, + "fields": { + "created": "2019-05-07T14:43:28.937Z", + "updated": "2019-05-07T14:43:28.946Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "380-a4-Gzipped-source-tarball", + "os": 3, + "release": 299, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0a4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0a4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9557201d6c83681020134a88d9690253", + "filesize": 23367956, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2439, + "fields": { + "created": "2019-05-07T14:43:29.012Z", + "updated": "2019-05-07T14:43:29.021Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "380-a4-Windows-x86-64-executable-installer", + "os": 1, + "release": 299, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0a4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c1170567a317b9d320a470f751fd4a80", + "filesize": 26544792, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2440, + "fields": { + "created": "2019-06-04T20:39:09.961Z", + "updated": "2019-06-04T20:39:09.973Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "380-b1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 300, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "45a678ff4dfe66c2f8efa026a5951d57", + "filesize": 1363184, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2441, + "fields": { + "created": "2019-06-04T20:39:10.048Z", + "updated": "2019-06-04T20:39:10.061Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "380-b1-Windows-help-file", + "os": 1, + "release": 300, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python380b1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python380b1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7af6a88167779c0bdb769367360b703e", + "filesize": 8338785, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2442, + "fields": { + "created": "2019-06-04T20:39:10.131Z", + "updated": "2019-06-04T20:39:10.136Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "380-b1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 300, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bab84a9d5ebd6c6915f5f84b567dd9bd", + "filesize": 6936172, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2443, + "fields": { + "created": "2019-06-04T20:39:10.214Z", + "updated": "2019-06-04T20:39:10.233Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "380-b1-Windows-x86-executable-installer", + "os": 1, + "release": 300, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "670d149c68aa36438f484f82a7832ed1", + "filesize": 26156352, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2444, + "fields": { + "created": "2019-06-04T20:39:10.316Z", + "updated": "2019-06-04T20:39:10.325Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "380-b1-XZ-compressed-source-tarball", + "os": 3, + "release": 300, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0b1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0b1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0540e00104a96e0e2f8cbcc8488e9895", + "filesize": 17601532, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2445, + "fields": { + "created": "2019-06-04T20:39:10.396Z", + "updated": "2019-06-04T20:39:10.410Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "380-b1-Windows-x86-64-executable-installer", + "os": 1, + "release": 300, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cded61ef6def13e17291dd7af8286322", + "filesize": 27155472, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2446, + "fields": { + "created": "2019-06-04T20:39:10.496Z", + "updated": "2019-06-04T20:39:10.505Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "380-b1-Windows-x86-web-based-installer", + "os": 1, + "release": 300, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "22cae5681e67257324218be48e85b92d", + "filesize": 1324880, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2447, + "fields": { + "created": "2019-06-04T20:39:10.574Z", + "updated": "2019-06-04T20:39:10.581Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "380-b1-macOS-64-bit-installer", + "os": 2, + "release": 300, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "773621ed6782685824fe90d06f126611", + "filesize": 28484798, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2448, + "fields": { + "created": "2019-06-04T20:39:10.662Z", + "updated": "2019-06-04T20:39:10.669Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "380-b1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 300, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6f209dd58054ff0ed60b3f33c6045b37", + "filesize": 7673842, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2449, + "fields": { + "created": "2019-06-04T20:39:10.739Z", + "updated": "2019-06-04T20:39:10.754Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "380-b1-Gzipped-source-tarball", + "os": 3, + "release": 300, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0b1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0b1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aff74abe251159e87b8f8c146840c350", + "filesize": 23690287, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2450, + "fields": { + "created": "2019-06-19T03:16:44.837Z", + "updated": "2019-06-19T03:16:44.846Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "374-rc1-macOS-64-bit-installer", + "os": 2, + "release": 301, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ffb05dafa9104b624df95b61a19f6033", + "filesize": 28081540, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2451, + "fields": { + "created": "2019-06-19T03:16:44.986Z", + "updated": "2019-06-19T03:16:44.992Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "374-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 301, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.4/Python-3.7.4rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/Python-3.7.4rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9154a412a900413fc55bfef7decb47a3", + "filesize": 17145660, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2452, + "fields": { + "created": "2019-06-19T03:16:45.135Z", + "updated": "2019-06-19T03:16:45.147Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "374-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 301, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "55551c8714fe2d374dfae944a463df1e", + "filesize": 25630424, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2453, + "fields": { + "created": "2019-06-19T03:16:45.285Z", + "updated": "2019-06-19T03:16:45.291Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "374-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 301, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fcfb20f1b7c1e5a5260f562d4824f473", + "filesize": 7466510, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2454, + "fields": { + "created": "2019-06-19T03:16:45.446Z", + "updated": "2019-06-19T03:16:45.460Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "374-rc1-Windows-help-file", + "os": 1, + "release": 301, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python374rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python374rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e086341dd89138151db0f595c82ce735", + "filesize": 8133630, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2455, + "fields": { + "created": "2019-06-19T03:16:45.615Z", + "updated": "2019-06-19T03:16:45.626Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "374-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 301, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d9ef504d4bf2c174a7d57025f3530872", + "filesize": 1363008, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2456, + "fields": { + "created": "2019-06-19T03:16:45.765Z", + "updated": "2019-06-19T03:16:45.773Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "374-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 301, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7308e8f08ddba7c3cd814aedfccb67d9", + "filesize": 1325256, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2457, + "fields": { + "created": "2019-06-19T03:16:45.906Z", + "updated": "2019-06-19T03:16:45.915Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "374-rc1-macOS-64-bit32-bit-installer", + "os": 2, + "release": 301, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "96615d71b69bab48998a36aee50eed79", + "filesize": 34899343, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2458, + "fields": { + "created": "2019-06-19T03:16:46.061Z", + "updated": "2019-06-19T03:16:46.071Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "374-rc1-Gzipped-source-tarball", + "os": 3, + "release": 301, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.4/Python-3.7.4rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/Python-3.7.4rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4dcfff4a6d42aec1801d4ef2ff81879e", + "filesize": 23018321, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2459, + "fields": { + "created": "2019-06-19T03:16:46.212Z", + "updated": "2019-06-19T03:16:46.219Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "374-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 301, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d9c18c989c474c7629121c9d59cc429e", + "filesize": 6711238, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2460, + "fields": { + "created": "2019-06-19T03:16:46.350Z", + "updated": "2019-06-19T03:16:46.356Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "374-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 301, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2ca42cdd3533290be290b7b0fa5bc3f5", + "filesize": 26648568, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2461, + "fields": { + "created": "2019-06-19T03:16:53.452Z", + "updated": "2019-06-19T03:16:53.462Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "369-rc1-Gzipped-source-tarball", + "os": 3, + "release": 302, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.9/Python-3.6.9rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.9/Python-3.6.9rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bfb667f8843b815807970b193e93dfb3", + "filesize": 23022923, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2462, + "fields": { + "created": "2019-06-19T03:16:53.607Z", + "updated": "2019-06-19T03:16:53.617Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "369-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 302, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.9/Python-3.6.9rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.9/Python-3.6.9rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5f4b8a205bf2ecd7772542eebe3f6c1a", + "filesize": 17210592, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2463, + "fields": { + "created": "2019-07-02T21:32:12.549Z", + "updated": "2019-07-02T21:32:12.571Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "369-Gzipped-source-tarball", + "os": 3, + "release": 304, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ff7cdaef4846c89c1ec0d7b709bbd54d", + "filesize": 23016893, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2464, + "fields": { + "created": "2019-07-02T21:32:12.666Z", + "updated": "2019-07-02T21:32:12.676Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "369-XZ-compressed-source-tarball", + "os": 3, + "release": 304, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e229451dcb4f2ce8b0cac174bf309e0a", + "filesize": 17212164, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2480, + "fields": { + "created": "2019-07-02T23:16:27.258Z", + "updated": "2019-07-02T23:16:27.270Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "374-rc2-Windows-x86-web-based-installer", + "os": 1, + "release": 303, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "47c3ce08f6d67ac99a98848f9428f701", + "filesize": 1325240, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2481, + "fields": { + "created": "2019-07-02T23:16:27.342Z", + "updated": "2019-07-02T23:16:27.356Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "374-rc2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 303, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b87bb12b8b74e960affe8634f9c30818", + "filesize": 7506270, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2482, + "fields": { + "created": "2019-07-02T23:16:27.450Z", + "updated": "2019-07-02T23:16:27.463Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "374-rc2-Windows-x86-executable-installer", + "os": 1, + "release": 303, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1d37745c5141468e4459ccf5b668bbc5", + "filesize": 25667992, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2483, + "fields": { + "created": "2019-07-02T23:16:27.545Z", + "updated": "2019-07-02T23:16:27.555Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "374-rc2-XZ-compressed-source-tarball", + "os": 3, + "release": 303, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.4/Python-3.7.4rc2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/Python-3.7.4rc2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "041c4b0fc02fde539750d3abacbe0b55", + "filesize": 17142248, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2484, + "fields": { + "created": "2019-07-02T23:16:27.634Z", + "updated": "2019-07-02T23:16:27.645Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "374-rc2-Windows-x86-64-executable-installer", + "os": 1, + "release": 303, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d8086b92d6d834176ced083b04393c25", + "filesize": 26686488, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2485, + "fields": { + "created": "2019-07-02T23:16:27.735Z", + "updated": "2019-07-02T23:16:27.742Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "374-rc2-macOS-64-bit32-bit-installer", + "os": 2, + "release": 303, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc2-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc2-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "24dc8a9b63ef07c72ee6e6d3c92cd03e", + "filesize": 34901728, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2486, + "fields": { + "created": "2019-07-02T23:16:27.825Z", + "updated": "2019-07-02T23:16:27.833Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "374-rc2-Gzipped-source-tarball", + "os": 3, + "release": 303, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.4/Python-3.7.4rc2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/Python-3.7.4rc2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "01f8b4ae74aabb278486221260effb53", + "filesize": 23018067, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2487, + "fields": { + "created": "2019-07-02T23:16:27.898Z", + "updated": "2019-07-02T23:16:27.909Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "374-rc2-Windows-help-file", + "os": 1, + "release": 303, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python374rc2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python374rc2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ecbaf171452e7f75dbe3509ae1be91a3", + "filesize": 8134106, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2488, + "fields": { + "created": "2019-07-02T23:16:27.992Z", + "updated": "2019-07-02T23:16:28.001Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "374-rc2-macOS-64-bit-installer", + "os": 2, + "release": 303, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc2-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc2-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fb824b76f16d0843fcfb7a6618192c92", + "filesize": 28084436, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2489, + "fields": { + "created": "2019-07-02T23:16:28.077Z", + "updated": "2019-07-02T23:16:28.083Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "374-rc2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 303, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5488857b879692b9a33a3fdf763b675d", + "filesize": 1363000, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2490, + "fields": { + "created": "2019-07-02T23:16:28.168Z", + "updated": "2019-07-02T23:16:28.178Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "374-rc2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 303, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4rc2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ee80b2302cbc8fd5cae290ce1fc47c73", + "filesize": 6743172, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2491, + "fields": { + "created": "2019-07-04T21:49:02.668Z", + "updated": "2019-07-04T21:49:02.694Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "380-b2-Gzipped-source-tarball", + "os": 3, + "release": 305, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0b2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0b2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5921bc797ecb65fb73a6c6f760408cc4", + "filesize": 23735411, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2492, + "fields": { + "created": "2019-07-04T21:49:02.770Z", + "updated": "2019-07-04T21:49:02.779Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "380-b2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 305, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "059c6931d4dc663045e9f64b2fce7eeb", + "filesize": 7935697, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2493, + "fields": { + "created": "2019-07-04T21:49:02.868Z", + "updated": "2019-07-04T21:49:02.884Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "380-b2-Windows-x86-executable-installer", + "os": 1, + "release": 305, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aaeb2342ed79fa2966d9ef1ffc3178a7", + "filesize": 26175800, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2494, + "fields": { + "created": "2019-07-04T21:49:02.968Z", + "updated": "2019-07-04T21:49:02.982Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "380-b2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 305, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fcf4c144227ebeadbf12e0c3d6cc729d", + "filesize": 7190767, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2495, + "fields": { + "created": "2019-07-04T21:49:03.042Z", + "updated": "2019-07-04T21:49:03.052Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "380-b2-Windows-x86-web-based-installer", + "os": 1, + "release": 305, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aa3627a949b28f03afa2c0df9ff5f9dd", + "filesize": 1324768, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2496, + "fields": { + "created": "2019-07-04T21:49:03.120Z", + "updated": "2019-07-04T21:49:03.128Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "380-b2-Windows-x86-64-executable-installer", + "os": 1, + "release": 305, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7feb4bfac2eba20c755b3f552fc86267", + "filesize": 27178336, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2497, + "fields": { + "created": "2019-07-04T21:49:03.190Z", + "updated": "2019-07-04T21:49:03.202Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "380-b2-Windows-help-file", + "os": 1, + "release": 305, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python380b2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python380b2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f079d8065a2f0d3bfe04035e9ebc8401", + "filesize": 8360025, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2498, + "fields": { + "created": "2019-07-04T21:49:03.286Z", + "updated": "2019-07-04T21:49:03.299Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "380-b2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 305, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "019f677d012d960c1d3900e48b8c3c4f", + "filesize": 1363240, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2499, + "fields": { + "created": "2019-07-04T21:49:03.379Z", + "updated": "2019-07-04T21:49:03.395Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "380-b2-macOS-64-bit-installer", + "os": 2, + "release": 305, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b2-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b2-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5d7b48ad646bf8c130edb4a6bbc9b860", + "filesize": 28754925, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2500, + "fields": { + "created": "2019-07-04T21:49:03.478Z", + "updated": "2019-07-04T21:49:03.490Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "380-b2-XZ-compressed-source-tarball", + "os": 3, + "release": 305, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0b2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0b2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "45f82dd4e05b4cb40406123dc7bf5f14", + "filesize": 17638912, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2501, + "fields": { + "created": "2019-07-08T21:37:42.370Z", + "updated": "2019-07-08T21:37:42.382Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "374-Windows-x86-64-executable-installer", + "os": 1, + "release": 306, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a702b4b0ad76debdb3043a583e563400", + "filesize": 26680368, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2502, + "fields": { + "created": "2019-07-08T21:37:42.454Z", + "updated": "2019-07-08T21:37:42.462Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "374-macOS-64-bit-installer", + "os": 2, + "release": 306, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5dd605c38217a45773bf5e4a936b241f", + "filesize": 28082845, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2503, + "fields": { + "created": "2019-07-08T21:37:42.505Z", + "updated": "2019-07-08T21:37:42.515Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "374-XZ-compressed-source-tarball", + "os": 3, + "release": 306, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d33e4aae66097051c2eca45ee3604803", + "filesize": 17131432, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2504, + "fields": { + "created": "2019-07-08T21:37:42.598Z", + "updated": "2019-07-08T21:37:42.621Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "374-macOS-64-bit32-bit-installer", + "os": 2, + "release": 306, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6428b4fa7583daff1a442cba8cee08e6", + "filesize": 34898416, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2505, + "fields": { + "created": "2019-07-08T21:37:42.719Z", + "updated": "2019-07-08T21:37:42.724Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "374-Gzipped-source-tarball", + "os": 3, + "release": 306, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "68111671e5b2db4aef7b9ab01bf0f9be", + "filesize": 23017663, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2506, + "fields": { + "created": "2019-07-08T21:37:42.777Z", + "updated": "2019-07-08T21:37:42.795Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "374-Windows-x86-64-web-based-installer", + "os": 1, + "release": 306, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "28cb1c608bbd73ae8e53a3bd351b4bd2", + "filesize": 1362904, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2507, + "fields": { + "created": "2019-07-08T21:37:42.852Z", + "updated": "2019-07-08T21:37:42.860Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "374-Windows-x86-executable-installer", + "os": 1, + "release": 306, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "33cc602942a54446a3d6451476394789", + "filesize": 25663848, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2508, + "fields": { + "created": "2019-07-08T21:37:42.949Z", + "updated": "2019-07-08T21:37:42.954Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "374-Windows-help-file", + "os": 1, + "release": 306, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python374.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python374.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d63999573a2c06b2ac56cade6b4f7cd2", + "filesize": 8131761, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2509, + "fields": { + "created": "2019-07-08T21:37:43.032Z", + "updated": "2019-07-08T21:37:43.045Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "374-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 306, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9fab3b81f8841879fda94133574139d8", + "filesize": 6741626, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2510, + "fields": { + "created": "2019-07-08T21:37:43.130Z", + "updated": "2019-07-08T21:37:43.137Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "374-Windows-x86-web-based-installer", + "os": 1, + "release": 306, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1b670cfa5d317df82c30983ea371d87c", + "filesize": 1324608, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2511, + "fields": { + "created": "2019-07-08T21:37:43.216Z", + "updated": "2019-07-08T21:37:43.225Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "374-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 306, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.4/python-3.7.4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.4/python-3.7.4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9b00c8cf6d9ec0b9abe83184a40729a2", + "filesize": 7504391, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2512, + "fields": { + "created": "2019-07-29T20:38:32.046Z", + "updated": "2019-07-29T20:38:32.059Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "380-b3-Windows-x86-64-executable-installer", + "os": 1, + "release": 307, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c1a4bd283e250a51c9002561ee7472a7", + "filesize": 27405616, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2513, + "fields": { + "created": "2019-07-29T20:38:32.164Z", + "updated": "2019-07-29T20:38:32.207Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "380-b3-Windows-x86-64-web-based-installer", + "os": 1, + "release": 307, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b3-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b3-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "789c98e5e29b8a2bbfe4401d799f3434", + "filesize": 1363232, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2514, + "fields": { + "created": "2019-07-29T20:38:32.288Z", + "updated": "2019-07-29T20:38:32.309Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "380-b3-Windows-x86-executable-installer", + "os": 1, + "release": 307, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "28e1e20356a0ce1b7c34fc604c12f048", + "filesize": 26315224, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2515, + "fields": { + "created": "2019-07-29T20:38:32.435Z", + "updated": "2019-07-29T20:38:32.449Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "380-b3-Windows-x86-web-based-installer", + "os": 1, + "release": 307, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b3-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b3-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d613a6f6790cd1b9722ea5fc2dd2060f", + "filesize": 1324736, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2516, + "fields": { + "created": "2019-07-29T20:38:32.536Z", + "updated": "2019-07-29T20:38:32.547Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "380-b3-Gzipped-source-tarball", + "os": 3, + "release": 307, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0b3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0b3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "198611e0f36897e981a0de8601f1b063", + "filesize": 23868827, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2517, + "fields": { + "created": "2019-07-29T20:38:32.645Z", + "updated": "2019-07-29T20:38:32.669Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "380-b3-XZ-compressed-source-tarball", + "os": 3, + "release": 307, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0b3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0b3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "19ce8bcfe90feb19e0883d37ca93ff04", + "filesize": 17768608, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2518, + "fields": { + "created": "2019-07-29T20:38:32.761Z", + "updated": "2019-07-29T20:38:32.768Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "380-b3-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 307, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ffeddf54a66a6dc1c7099fba709d0671", + "filesize": 8072054, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2519, + "fields": { + "created": "2019-07-29T20:38:32.871Z", + "updated": "2019-07-29T20:38:32.883Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "380-b3-macOS-64-bit-installer", + "os": 2, + "release": 307, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b3-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b3-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4ddea5aefdfa939a1781b0fe5e66c3cc", + "filesize": 28897151, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2520, + "fields": { + "created": "2019-07-29T20:38:32.977Z", + "updated": "2019-07-29T20:38:32.984Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "380-b3-Windows-help-file", + "os": 1, + "release": 307, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python380b3.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python380b3.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "79a9eb8767e8f224936767ef8b1600d2", + "filesize": 8427107, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2521, + "fields": { + "created": "2019-07-29T20:38:33.075Z", + "updated": "2019-07-29T20:38:33.093Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "380-b3-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 307, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "92ea635b66d2f039db740efbb435184a", + "filesize": 7209732, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2522, + "fields": { + "created": "2019-08-30T08:39:43.785Z", + "updated": "2019-08-30T08:39:43.794Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "380-b4-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 308, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "769a9bee8242d4013c14717a344eba56", + "filesize": 7209681, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2523, + "fields": { + "created": "2019-08-30T08:39:43.876Z", + "updated": "2019-08-30T08:39:43.884Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "380-b4-Windows-x86-web-based-installer", + "os": 1, + "release": 308, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b4-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b4-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2c28bc2922e3b49100dd25b950eae890", + "filesize": 1324752, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2524, + "fields": { + "created": "2019-08-30T08:39:43.955Z", + "updated": "2019-08-30T08:39:43.965Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "380-b4-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 308, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5bd58519df932afb7e0d0dc67c14dc0b", + "filesize": 8084946, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2525, + "fields": { + "created": "2019-08-30T08:39:44.030Z", + "updated": "2019-08-30T08:39:44.035Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "380-b4-Windows-help-file", + "os": 1, + "release": 308, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python380b4.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python380b4.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2b2b0f6bec48708dbe6f4e11aa757d4b", + "filesize": 8433821, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2526, + "fields": { + "created": "2019-08-30T08:39:44.106Z", + "updated": "2019-08-30T08:39:44.130Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "380-b4-macOS-64-bit-installer", + "os": 2, + "release": 308, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b4-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b4-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "232c1ea4b069aa46d8392339183ff7b7", + "filesize": 28944802, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2527, + "fields": { + "created": "2019-08-30T08:39:44.233Z", + "updated": "2019-08-30T08:39:44.242Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "380-b4-Windows-x86-64-web-based-installer", + "os": 1, + "release": 308, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b4-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b4-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8b5a383fae3d9eae221d50fd46897cba", + "filesize": 1363240, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2528, + "fields": { + "created": "2019-08-30T08:39:44.324Z", + "updated": "2019-08-30T08:39:44.338Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "380-b4-Windows-x86-executable-installer", + "os": 1, + "release": 308, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9317e2376bb1eb2275aabcc4ba6f9acd", + "filesize": 26347968, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2529, + "fields": { + "created": "2019-08-30T08:39:44.410Z", + "updated": "2019-08-30T08:39:44.419Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "380-b4-XZ-compressed-source-tarball", + "os": 3, + "release": 308, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0b4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0b4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "096e2d9ae106a6f166c59e6068cd4735", + "filesize": 17788672, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2530, + "fields": { + "created": "2019-08-30T08:39:44.491Z", + "updated": "2019-08-30T08:39:44.505Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "380-b4-Gzipped-source-tarball", + "os": 3, + "release": 308, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0b4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0b4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b8f4f897df967014ddb42033b90c3058", + "filesize": 23901375, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2531, + "fields": { + "created": "2019-08-30T08:39:44.573Z", + "updated": "2019-08-30T08:39:44.579Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "380-b4-Windows-x86-64-executable-installer", + "os": 1, + "release": 308, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0b4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a0101cb5ec30e669dc790e202856da91", + "filesize": 27451976, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2532, + "fields": { + "created": "2019-09-09T14:37:57.322Z", + "updated": "2019-09-09T14:37:57.335Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "358-rc1-Gzipped-source-tarball", + "os": 3, + "release": 309, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.8/Python-3.5.8rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.8/Python-3.5.8rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b250d4dde08ae1dda300d26fb1faa3ad", + "filesize": 20789152, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2533, + "fields": { + "created": "2019-09-09T14:37:57.413Z", + "updated": "2019-09-09T14:37:57.423Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "358-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 309, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.8/Python-3.5.8rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.8/Python-3.5.8rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "50f9c24fd40ddd3c4b2ac450bb2ed37c", + "filesize": 15374400, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2537, + "fields": { + "created": "2019-10-01T19:08:05.258Z", + "updated": "2019-10-01T19:08:05.281Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "380-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 310, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "450c62e368d6b27882c33494817479f3", + "filesize": 1363904, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2538, + "fields": { + "created": "2019-10-01T19:08:05.363Z", + "updated": "2019-10-01T19:08:05.373Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "380-rc1-Gzipped-source-tarball", + "os": 3, + "release": 310, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3e1be2f9a8a73dae196d04f23c90d749", + "filesize": 23945154, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2539, + "fields": { + "created": "2019-10-01T19:08:05.460Z", + "updated": "2019-10-01T19:08:05.484Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "380-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 310, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1be113668100b937bf0f7171806bf221", + "filesize": 8079786, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2540, + "fields": { + "created": "2019-10-01T19:08:05.562Z", + "updated": "2019-10-01T19:08:05.575Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "380-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 310, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ed7a7fa4d96577d9aa6948f125374426", + "filesize": 27496600, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2541, + "fields": { + "created": "2019-10-01T19:08:05.656Z", + "updated": "2019-10-01T19:08:05.671Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "380-rc1-Windows-help-file", + "os": 1, + "release": 310, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python380rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python380rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d2fb2407f3f2b77de1198c0cd98159b3", + "filesize": 8455530, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2542, + "fields": { + "created": "2019-10-01T19:08:05.760Z", + "updated": "2019-10-01T19:08:05.780Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "380-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 310, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "edf19210b01ff2d77169ccb1d77e244c", + "filesize": 17812764, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2543, + "fields": { + "created": "2019-10-01T19:08:05.868Z", + "updated": "2019-10-01T19:08:05.880Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "380-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 310, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "419db1a38595b1ab3730e3b6f764a901", + "filesize": 1325896, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2544, + "fields": { + "created": "2019-10-01T19:08:05.972Z", + "updated": "2019-10-01T19:08:05.996Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "380-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 310, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bd2fa3653c21a03f47a582a9be561126", + "filesize": 26399904, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2545, + "fields": { + "created": "2019-10-01T19:08:06.084Z", + "updated": "2019-10-01T19:08:06.099Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "380-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 310, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f41a1888597ec844fd66b6dd8a42239a", + "filesize": 7212649, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2546, + "fields": { + "created": "2019-10-01T19:08:06.203Z", + "updated": "2019-10-01T19:08:06.231Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "380-rc1-macOS-64-bit-installer", + "os": 2, + "release": 310, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a9a1e46cf083a97ab4b7dbb91808028d", + "filesize": 28995422, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2547, + "fields": { + "created": "2019-10-02T04:16:55.245Z", + "updated": "2019-10-02T04:16:55.253Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "375-rc1-macOS-64-bit-installer", + "os": 2, + "release": 311, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python-3.7.5rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python-3.7.5rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4eb58f4ab6130e4c26d88df4bda250c4", + "filesize": 28196507, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2548, + "fields": { + "created": "2019-10-02T04:16:55.329Z", + "updated": "2019-10-02T04:16:55.337Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "375-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 311, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python-3.7.5rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python-3.7.5rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2eeed8a54170b18434e531ab0bdf02d7", + "filesize": 1363016, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2549, + "fields": { + "created": "2019-10-02T04:16:55.403Z", + "updated": "2019-10-02T04:16:55.412Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "375-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 311, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python-3.7.5rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python-3.7.5rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f7cf3104d1590aaa714baf50fc055827", + "filesize": 7500433, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2550, + "fields": { + "created": "2019-10-02T04:16:55.479Z", + "updated": "2019-10-02T04:16:55.493Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "375-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 311, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.5/Python-3.7.5rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/Python-3.7.5rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1e0f79c40c1316e4be1d69b839d93774", + "filesize": 17238100, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2551, + "fields": { + "created": "2019-10-02T04:16:55.563Z", + "updated": "2019-10-02T04:16:55.580Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "375-rc1-macOS-64-bit32-bit-installer", + "os": 2, + "release": 311, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python-3.7.5rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python-3.7.5rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8c1cd3c02663e411425b7fb323f48d2c", + "filesize": 35023052, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2552, + "fields": { + "created": "2019-10-02T04:16:55.629Z", + "updated": "2019-10-02T04:16:55.637Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "375-rc1-Gzipped-source-tarball", + "os": 3, + "release": 311, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.5/Python-3.7.5rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/Python-3.7.5rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f89580b54f77b3a0049f63526e817f65", + "filesize": 23128023, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2553, + "fields": { + "created": "2019-10-02T04:16:55.715Z", + "updated": "2019-10-02T04:16:55.742Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "375-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 311, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python-3.7.5rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python-3.7.5rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3fce0f741f69fac391756da24cbe3a6a", + "filesize": 1325288, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2554, + "fields": { + "created": "2019-10-02T04:16:55.818Z", + "updated": "2019-10-02T04:16:55.831Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "375-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 311, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python-3.7.5rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python-3.7.5rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3ebe962695f40e24529c5db350cee18f", + "filesize": 6745077, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2555, + "fields": { + "created": "2019-10-02T04:16:55.913Z", + "updated": "2019-10-02T04:16:55.920Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "375-rc1-Windows-help-file", + "os": 1, + "release": 311, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python375rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python375rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "89a9936ebc70a454915152321c900a47", + "filesize": 8139888, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2556, + "fields": { + "created": "2019-10-02T04:16:55.996Z", + "updated": "2019-10-02T04:16:56.006Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "375-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 311, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python-3.7.5rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python-3.7.5rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0815f10825fa65c2efee83fdf6138572", + "filesize": 26776400, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2557, + "fields": { + "created": "2019-10-02T04:16:56.086Z", + "updated": "2019-10-02T04:16:56.097Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "375-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 311, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python-3.7.5rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python-3.7.5rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0d21c62b75de23b72d4a99799e99602f", + "filesize": 25763688, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2580, + "fields": { + "created": "2019-10-09T01:18:31.195Z", + "updated": "2019-10-09T01:18:31.206Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2717-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 344, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.17/Python-2.7.17rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/Python-2.7.17rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "87bacf25acd9e114c5fdd1c97ade2933", + "filesize": 12854476, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2581, + "fields": { + "created": "2019-10-09T01:18:31.281Z", + "updated": "2019-10-09T01:18:31.289Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "2717-rc1-macOS-64-bit32-bit-installer", + "os": 2, + "release": 344, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.17/python-2.7.17rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/python-2.7.17rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8c0bad13d79110117df304d43d22bd47", + "filesize": 30439422, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2582, + "fields": { + "created": "2019-10-09T01:18:31.354Z", + "updated": "2019-10-09T01:18:31.373Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2717-rc1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 344, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.17/python-2.7.17rc1.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/python-2.7.17rc1.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fefb74560bfbb1c10d50c78f29575714", + "filesize": 26005670, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2583, + "fields": { + "created": "2019-10-09T01:18:31.453Z", + "updated": "2019-10-09T01:18:31.460Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2717-rc1-Gzipped-source-tarball", + "os": 3, + "release": 344, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.17/Python-2.7.17rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/Python-2.7.17rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2a5d61fca4006729e9ec5a739312f092", + "filesize": 17539373, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2584, + "fields": { + "created": "2019-10-09T01:18:31.561Z", + "updated": "2019-10-09T01:18:31.575Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2717-rc1-Windows-help-file", + "os": 1, + "release": 344, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.17/python2717rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/python2717rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "16a13d855b1c163c0c49d0cc4873423a", + "filesize": 6265329, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2585, + "fields": { + "created": "2019-10-09T01:18:31.669Z", + "updated": "2019-10-09T01:18:31.686Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "2717-rc1-macOS-64-bit-installer", + "os": 2, + "release": 344, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.17/python-2.7.17rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/python-2.7.17rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c2d7bd0764f64c7e840d3dab7052e23b", + "filesize": 23886620, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2586, + "fields": { + "created": "2019-10-09T01:18:31.749Z", + "updated": "2019-10-09T01:18:31.761Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2717-rc1-Windows-x86-MSI-installer", + "os": 1, + "release": 344, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.17/python-2.7.17rc1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/python-2.7.17rc1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a725483bf69ffca9431869a9910528b4", + "filesize": 19570688, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2587, + "fields": { + "created": "2019-10-09T01:18:31.838Z", + "updated": "2019-10-09T01:18:31.846Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2717-rc1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 344, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.17/python-2.7.17rc1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/python-2.7.17rc1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bfb09ad672204c1c0814576c23dbde3a", + "filesize": 20533248, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2588, + "fields": { + "created": "2019-10-09T01:18:31.921Z", + "updated": "2019-10-09T01:18:31.932Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2717-rc1-Windows-debug-information-files", + "os": 1, + "release": 344, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.17/python-2.7.17rc1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/python-2.7.17rc1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cbaee202e118a907bfc0cc3586c1c14c", + "filesize": 25178278, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2589, + "fields": { + "created": "2019-10-12T11:56:56.526Z", + "updated": "2019-10-12T11:56:56.535Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "358-rc2-XZ-compressed-source-tarball", + "os": 3, + "release": 345, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.8/Python-3.5.8rc2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.8/Python-3.5.8rc2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "344118ab8231420346edb7b1b93e25a6", + "filesize": 15339452, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2590, + "fields": { + "created": "2019-10-12T11:56:56.605Z", + "updated": "2019-10-12T11:56:56.619Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "358-rc2-Gzipped-source-tarball", + "os": 3, + "release": 345, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.8/Python-3.5.8rc2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.8/Python-3.5.8rc2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fd5e9e60e2cecff2bcef5d73064c8041", + "filesize": 20793525, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2591, + "fields": { + "created": "2019-10-14T20:06:15.976Z", + "updated": "2019-10-14T20:06:15.983Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "380-Gzipped-source-tarball", + "os": 3, + "release": 346, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e18a9d1a0a6d858b9787e03fc6fdaa20", + "filesize": 23949883, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2592, + "fields": { + "created": "2019-10-14T20:06:16.055Z", + "updated": "2019-10-14T20:06:16.065Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "380-Windows-x86-64-executable-installer", + "os": 1, + "release": 346, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "29ea87f24c32f5e924b7d63f8a08ee8d", + "filesize": 27505064, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2593, + "fields": { + "created": "2019-10-14T20:06:16.165Z", + "updated": "2019-10-14T20:06:16.176Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "380-Windows-x86-web-based-installer", + "os": 1, + "release": 346, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "50d484ff0b08722b3cf51f9305f49fdc", + "filesize": 1325368, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2594, + "fields": { + "created": "2019-10-14T20:06:16.254Z", + "updated": "2019-10-14T20:06:16.260Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "380-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 346, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2ec3abf05f3f1046e0dbd1ca5c74ce88", + "filesize": 7213298, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2595, + "fields": { + "created": "2019-10-14T20:06:16.338Z", + "updated": "2019-10-14T20:06:16.345Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "380-Windows-help-file", + "os": 1, + "release": 346, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python380.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python380.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1c33359821033ddb3353c8e5b6e7e003", + "filesize": 8457529, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2596, + "fields": { + "created": "2019-10-14T20:06:16.421Z", + "updated": "2019-10-14T20:06:16.431Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "380-macOS-64-bit-installer", + "os": 2, + "release": 346, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f5f9ae9f416170c6355cab7256bb75b5", + "filesize": 29005746, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2597, + "fields": { + "created": "2019-10-14T20:06:16.506Z", + "updated": "2019-10-14T20:06:16.519Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "380-Windows-x86-64-web-based-installer", + "os": 1, + "release": 346, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f93f7ba8cd48066c59827752e531924b", + "filesize": 1363336, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2598, + "fields": { + "created": "2019-10-14T20:06:16.596Z", + "updated": "2019-10-14T20:06:16.610Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "380-Windows-x86-executable-installer", + "os": 1, + "release": 346, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "412a649d36626d33b8ca5593cf18318c", + "filesize": 26406312, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2599, + "fields": { + "created": "2019-10-14T20:06:16.688Z", + "updated": "2019-10-14T20:06:16.698Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "380-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 346, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.0/python-3.8.0-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/python-3.8.0-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "99cca948512b53fb165084787143ef19", + "filesize": 8084795, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2600, + "fields": { + "created": "2019-10-14T20:06:16.774Z", + "updated": "2019-10-14T20:06:16.782Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "380-XZ-compressed-source-tarball", + "os": 3, + "release": 346, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dbac8df9d8b9edc678d0f4cacdb7dbb0", + "filesize": 17829824, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2601, + "fields": { + "created": "2019-10-15T19:20:02.740Z", + "updated": "2019-10-15T19:20:02.752Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "375-Windows-help-file", + "os": 1, + "release": 347, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python375.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python375.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "608cafa250f8baa11a69bbfcb842c0e0", + "filesize": 8141193, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2602, + "fields": { + "created": "2019-10-15T19:20:02.829Z", + "updated": "2019-10-15T19:20:02.839Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "375-XZ-compressed-source-tarball", + "os": 3, + "release": 347, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "08ed8030b1183107c48f2092e79a87e2", + "filesize": 17236432, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2603, + "fields": { + "created": "2019-10-15T19:20:02.911Z", + "updated": "2019-10-15T19:20:02.919Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "375-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 347, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python-3.7.5-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python-3.7.5-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "436b0f803d2a0b393590030b1cd59853", + "filesize": 7500597, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2604, + "fields": { + "created": "2019-10-15T19:20:02.996Z", + "updated": "2019-10-15T19:20:03.006Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "375-Windows-x86-64-executable-installer", + "os": 1, + "release": 347, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python-3.7.5-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python-3.7.5-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "697f7a884e80ccaa9dff3a77e979b0f8", + "filesize": 26777448, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2605, + "fields": { + "created": "2019-10-15T19:20:03.076Z", + "updated": "2019-10-15T19:20:52.693Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "375-macOS-64-bit32-bit-installer", + "os": 2, + "release": 347, + "description": "{Deprecated) for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python-3.7.5-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python-3.7.5-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cd503606638c8e6948a591a9229446e4", + "filesize": 35020778, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2606, + "fields": { + "created": "2019-10-15T19:20:03.173Z", + "updated": "2019-10-15T19:20:03.227Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "375-Windows-x86-64-web-based-installer", + "os": 1, + "release": 347, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python-3.7.5-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python-3.7.5-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b8b6e5ce8c27c20bfd28f1366ddf8a2f", + "filesize": 1363032, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2607, + "fields": { + "created": "2019-10-15T19:20:03.285Z", + "updated": "2019-10-15T19:20:03.296Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "375-Windows-x86-web-based-installer", + "os": 1, + "release": 347, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python-3.7.5-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python-3.7.5-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ea946f4b76ce63d366d6ed0e32c11370", + "filesize": 1324872, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2608, + "fields": { + "created": "2019-10-15T19:20:03.364Z", + "updated": "2019-10-15T19:20:03.374Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "375-Gzipped-source-tarball", + "os": 3, + "release": 347, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1cd071f78ff6d9c7524c95303a3057aa", + "filesize": 23126230, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2609, + "fields": { + "created": "2019-10-15T19:20:03.468Z", + "updated": "2019-10-15T19:25:51.841Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "375-macOS-64-bit-installer", + "os": 2, + "release": 347, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python-3.7.5-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python-3.7.5-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "20d9540e88c6aaba1d2bc1ad5d069359", + "filesize": 28198752, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2610, + "fields": { + "created": "2019-10-15T19:20:03.557Z", + "updated": "2019-10-15T19:20:03.562Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "375-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 347, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python-3.7.5-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python-3.7.5-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "726877d1a1f5a7dc68f6a4fa48964cd1", + "filesize": 6745126, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2611, + "fields": { + "created": "2019-10-15T19:20:03.638Z", + "updated": "2019-10-15T19:20:03.644Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "375-Windows-x86-executable-installer", + "os": 1, + "release": 347, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.5/python-3.7.5.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.5/python-3.7.5.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cfe9a828af6111d5951b74093d70ee89", + "filesize": 25766192, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2612, + "fields": { + "created": "2019-10-19T22:33:18.859Z", + "updated": "2019-10-19T22:33:18.866Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2717-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 348, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.17/python-2.7.17.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/python-2.7.17.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "117d7f001bd9a026866907269d2224b5", + "filesize": 26005670, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2613, + "fields": { + "created": "2019-10-19T22:33:18.942Z", + "updated": "2019-10-19T22:33:18.960Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "2717-macOS-64-bit-installer", + "os": 2, + "release": 348, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.17/python-2.7.17-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/python-2.7.17-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "02a7ae49b389aa0967380b7db361b46e", + "filesize": 23885926, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2614, + "fields": { + "created": "2019-10-19T22:33:19.025Z", + "updated": "2019-10-19T22:33:19.036Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2717-Windows-help-file", + "os": 1, + "release": 348, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.17/python2717.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/python2717.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b14e17bd1ecf5803ba539750c4fb9550", + "filesize": 6265114, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2615, + "fields": { + "created": "2019-10-19T22:33:19.123Z", + "updated": "2019-10-19T22:33:19.137Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "2717-macOS-64-bit32-bit-installer", + "os": 2, + "release": 348, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.17/python-2.7.17-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/python-2.7.17-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b19552ee752f62dd07292345aaf740f9", + "filesize": 30434554, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2616, + "fields": { + "created": "2019-10-19T22:33:19.221Z", + "updated": "2019-10-19T22:33:19.234Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2717-Windows-x86-MSI-installer", + "os": 1, + "release": 348, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.17/python-2.7.17.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/python-2.7.17.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4cc27e99ad41cd3e0f2a50d9b6a34f79", + "filesize": 19570688, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2617, + "fields": { + "created": "2019-10-19T22:33:19.314Z", + "updated": "2019-10-19T22:33:19.320Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2717-XZ-compressed-source-tarball", + "os": 3, + "release": 348, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.17/Python-2.7.17.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/Python-2.7.17.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b3b6d2c92f42a60667814358ab9f0cfd", + "filesize": 12855568, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2618, + "fields": { + "created": "2019-10-19T22:33:19.392Z", + "updated": "2019-10-19T22:33:19.400Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2717-Windows-x86-64-MSI-installer", + "os": 1, + "release": 348, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.17/python-2.7.17.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/python-2.7.17.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "55040ce1c1ab34c32e71efe9533656b8", + "filesize": 20541440, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2619, + "fields": { + "created": "2019-10-19T22:33:19.480Z", + "updated": "2019-10-19T22:33:19.494Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2717-Gzipped-source-tarball", + "os": 3, + "release": 348, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.17/Python-2.7.17.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/Python-2.7.17.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "27a7919fa8d1364bae766949aaa91a5b", + "filesize": 17535962, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2620, + "fields": { + "created": "2019-10-19T22:33:19.562Z", + "updated": "2019-10-19T22:33:19.568Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2717-Windows-debug-information-files", + "os": 1, + "release": 348, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.17/python-2.7.17-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.17/python-2.7.17-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eed87f356264a9977d7684903aa99402", + "filesize": 25178278, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2621, + "fields": { + "created": "2019-10-29T17:49:20.875Z", + "updated": "2019-10-29T17:49:20.884Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "358-Gzipped-source-tarball", + "os": 3, + "release": 349, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.8/Python-3.5.8.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.8/Python-3.5.8.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c52ac1fc37e5daebb08069ea0e27d293", + "filesize": 20748680, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2622, + "fields": { + "created": "2019-10-29T17:49:20.969Z", + "updated": "2019-10-29T17:49:20.976Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "358-XZ-compressed-source-tarball", + "os": 3, + "release": 349, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.8/Python-3.5.8.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.8/Python-3.5.8.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4464517ed6044bca4fc78ea9ed086c36", + "filesize": 15382140, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2623, + "fields": { + "created": "2019-11-02T00:51:24.323Z", + "updated": "2019-11-02T00:51:24.333Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "359-Gzipped-source-tarball", + "os": 3, + "release": 350, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.9/Python-3.5.9.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.9/Python-3.5.9.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5a58675043bde569d235f41dadeada42", + "filesize": 20793801, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2624, + "fields": { + "created": "2019-11-02T00:51:24.415Z", + "updated": "2019-11-02T00:51:24.422Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "359-XZ-compressed-source-tarball", + "os": 3, + "release": 350, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.9/Python-3.5.9.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.9/Python-3.5.9.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ef7f82485e83c7f8f8bcb920a9c2457b", + "filesize": 15388876, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2656, + "fields": { + "created": "2019-11-20T00:48:25.515Z", + "updated": "2019-11-20T00:48:25.528Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "390-a1-Windows-x86-web-based-installer", + "os": 1, + "release": 383, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2265f00d0a9fc2448a80c4baa5fc43ef", + "filesize": 1325424, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2657, + "fields": { + "created": "2019-11-20T00:48:25.603Z", + "updated": "2019-11-20T00:48:25.624Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "390-a1-Gzipped-source-tarball", + "os": 3, + "release": 383, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a75fb1ad4371195de74430f2e8d6492c", + "filesize": 24129230, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2658, + "fields": { + "created": "2019-11-20T00:48:25.705Z", + "updated": "2019-11-20T00:48:25.723Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "390-a1-Windows-x86-64-executable-installer", + "os": 1, + "release": 383, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "faddbef6a2ecaecfa83755b2ddcf5a8f", + "filesize": 27678904, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2659, + "fields": { + "created": "2019-11-20T00:48:25.798Z", + "updated": "2019-11-20T00:48:25.807Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "390-a1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 383, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "996aeb680beca765d049719c2f1843ae", + "filesize": 1363928, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2660, + "fields": { + "created": "2019-11-20T00:48:25.888Z", + "updated": "2019-11-20T00:48:25.901Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "390-a1-macOS-64-bit-installer", + "os": 2, + "release": 383, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ac49f3b05d87f4d0900fc0a60da6ed1c", + "filesize": 28228071, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2661, + "fields": { + "created": "2019-11-20T00:48:25.971Z", + "updated": "2019-11-20T00:48:25.978Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "390-a1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 383, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "abfdbed5a8475acfe32612550e7cb233", + "filesize": 7264289, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2662, + "fields": { + "created": "2019-11-20T00:48:26.055Z", + "updated": "2019-11-20T00:48:26.068Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "390-a1-Windows-help-file", + "os": 1, + "release": 383, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python390a1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python390a1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2d7431bd23edb7b1b154b8ca6b684f6d", + "filesize": 8549401, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2663, + "fields": { + "created": "2019-11-20T00:48:26.135Z", + "updated": "2019-11-20T00:48:26.143Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "390-a1-Windows-x86-executable-installer", + "os": 1, + "release": 383, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "198099ef5fc6cd203cde95baf724eaad", + "filesize": 26597464, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2664, + "fields": { + "created": "2019-11-20T00:48:26.214Z", + "updated": "2019-11-20T00:48:26.221Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "390-a1-XZ-compressed-source-tarball", + "os": 3, + "release": 383, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "43d57843ad4e4a7627c04930d109e6f9", + "filesize": 17977808, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2665, + "fields": { + "created": "2019-11-20T00:48:26.294Z", + "updated": "2019-11-20T00:48:26.302Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "390-a1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 383, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5f59c69bbe50a754b989f827a83c0690", + "filesize": 8120848, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2666, + "fields": { + "created": "2019-12-10T09:13:33.461Z", + "updated": "2019-12-10T09:13:33.476Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "381-rc1-Gzipped-source-tarball", + "os": 3, + "release": 384, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.1/Python-3.8.1rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/Python-3.8.1rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e5083ec52899fb78fe0300d628a0a777", + "filesize": 23975081, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2667, + "fields": { + "created": "2019-12-10T09:13:33.558Z", + "updated": "2019-12-10T09:13:33.565Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "381-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 384, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.1/python-3.8.1rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/python-3.8.1rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b2968d2b223844b9aa99034494752144", + "filesize": 7141772, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2668, + "fields": { + "created": "2019-12-10T09:13:33.646Z", + "updated": "2019-12-10T09:13:33.668Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "381-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 384, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.1/python-3.8.1rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/python-3.8.1rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dd61345cb4d3d7f570b20c8408cf68be", + "filesize": 1325880, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2669, + "fields": { + "created": "2019-12-10T09:13:33.743Z", + "updated": "2019-12-10T09:13:33.756Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "381-rc1-macOS-64-bit-installer", + "os": 2, + "release": 384, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.1/python-3.8.1rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/python-3.8.1rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4e01919918531a67dc5237e1e3b43eaa", + "filesize": 29047249, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2670, + "fields": { + "created": "2019-12-10T09:13:33.868Z", + "updated": "2019-12-10T09:13:33.881Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "381-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 384, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.1/python-3.8.1rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/python-3.8.1rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3e755b250c351a6b216d13ca2dc38158", + "filesize": 26445056, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2671, + "fields": { + "created": "2019-12-10T09:13:33.961Z", + "updated": "2019-12-10T09:13:33.967Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "381-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 384, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.1/python-3.8.1rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/python-3.8.1rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d93fb329cc21eb571b0486a4f3ba9ef2", + "filesize": 1363880, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2672, + "fields": { + "created": "2019-12-10T09:13:34.046Z", + "updated": "2019-12-10T09:13:34.061Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "381-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 384, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.1/python-3.8.1rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/python-3.8.1rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e2bb2e56804701d7c3736d5726292db2", + "filesize": 27538752, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2673, + "fields": { + "created": "2019-12-10T09:13:34.140Z", + "updated": "2019-12-10T09:13:34.153Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "381-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 384, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.1/python-3.8.1rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/python-3.8.1rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "78a4437c30cdc4d234dac8d7f38664d4", + "filesize": 8011120, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2674, + "fields": { + "created": "2019-12-10T09:13:34.231Z", + "updated": "2019-12-10T09:13:34.243Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "381-rc1-Windows-help-file", + "os": 1, + "release": 384, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.1/python381rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/python381rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0693a164ba91eb332f5d45421c4d1994", + "filesize": 8482926, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2675, + "fields": { + "created": "2019-12-10T09:13:34.326Z", + "updated": "2019-12-10T09:13:34.340Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "381-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 384, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.1/Python-3.8.1rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/Python-3.8.1rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5176ecefb5b93b5650ae061eaf1497bd", + "filesize": 17845752, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2676, + "fields": { + "created": "2019-12-11T22:43:53.690Z", + "updated": "2019-12-11T22:43:53.709Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3610-rc1-Gzipped-source-tarball", + "os": 3, + "release": 386, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.10/Python-3.6.10rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.10/Python-3.6.10rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aca7c8f5fb656262ca9bcceafa5492e0", + "filesize": 23020711, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2677, + "fields": { + "created": "2019-12-11T22:43:53.785Z", + "updated": "2019-12-11T22:43:53.794Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3610-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 386, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.10/Python-3.6.10rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.10/Python-3.6.10rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c563a3c1bfc8c227094d5a0212477540", + "filesize": 17207644, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2689, + "fields": { + "created": "2019-12-11T23:16:03.822Z", + "updated": "2019-12-11T23:16:03.830Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "376-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 385, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python-3.7.6rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python-3.7.6rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "88866ee96a54e71a1ddb571d2b1b8a11", + "filesize": 26799632, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2690, + "fields": { + "created": "2019-12-11T23:16:03.920Z", + "updated": "2019-12-11T23:16:03.931Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "376-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 385, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python-3.7.6rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python-3.7.6rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2a01742880ff0ed3f35cfa832d52fa1f", + "filesize": 1363056, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2691, + "fields": { + "created": "2019-12-11T23:16:04.009Z", + "updated": "2019-12-11T23:16:04.023Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "376-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 385, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python-3.7.6rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python-3.7.6rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "56a1b104b41d09c1e18bb11c37aa7f0e", + "filesize": 25788968, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2692, + "fields": { + "created": "2019-12-11T23:16:04.112Z", + "updated": "2019-12-11T23:16:04.118Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "376-rc1-macOS-64-bit32-bit-installer", + "os": 2, + "release": 385, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python-3.7.6rc1-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python-3.7.6rc1-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7c6ed230cb05c1e3d15980d265101a6e", + "filesize": 35054941, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2693, + "fields": { + "created": "2019-12-11T23:16:04.206Z", + "updated": "2019-12-11T23:16:04.213Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "376-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 385, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python-3.7.6rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python-3.7.6rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d109c4001eeaaa35c729e43c9c879b22", + "filesize": 1325272, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2694, + "fields": { + "created": "2019-12-11T23:16:04.295Z", + "updated": "2019-12-11T23:16:04.304Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "376-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 385, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python-3.7.6rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python-3.7.6rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "07085f47026b593189c4262828dd2e1e", + "filesize": 7503671, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2695, + "fields": { + "created": "2019-12-11T23:16:04.386Z", + "updated": "2019-12-11T23:16:04.400Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "376-rc1-Gzipped-source-tarball", + "os": 3, + "release": 385, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.6/Python-3.7.6rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/Python-3.7.6rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5ddf9d70aff27fefab7ad8de050cdebc", + "filesize": 23148815, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2696, + "fields": { + "created": "2019-12-11T23:16:04.494Z", + "updated": "2019-12-11T23:16:04.501Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "376-rc1-macOS-64-bit-installer", + "os": 2, + "release": 385, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python-3.7.6rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python-3.7.6rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e6cc507b8fbb0bcecce22ca5beb9ede1", + "filesize": 28232174, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2697, + "fields": { + "created": "2019-12-11T23:16:04.575Z", + "updated": "2019-12-11T23:16:04.581Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "376-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 385, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.6/Python-3.7.6rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/Python-3.7.6rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0da939e027461a72fd592ced87c96285", + "filesize": 17255288, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2698, + "fields": { + "created": "2019-12-11T23:16:04.672Z", + "updated": "2019-12-11T23:16:04.687Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "376-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 385, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python-3.7.6rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python-3.7.6rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fa19731a735092b07548e271d6ffa69d", + "filesize": 6747284, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2699, + "fields": { + "created": "2019-12-11T23:16:04.771Z", + "updated": "2019-12-11T23:16:04.778Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "376-rc1-Windows-help-file", + "os": 1, + "release": 385, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python376rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python376rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1fc74118ba8d8061317e0884dde412a7", + "filesize": 8152930, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2700, + "fields": { + "created": "2019-12-19T00:33:27.110Z", + "updated": "2019-12-19T00:33:27.118Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3610-Gzipped-source-tarball", + "os": 3, + "release": 389, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.10/Python-3.6.10.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.10/Python-3.6.10.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "df5f494ef9fbb03a0264d1e9d406aada", + "filesize": 23019480, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2701, + "fields": { + "created": "2019-12-19T00:33:27.189Z", + "updated": "2019-12-19T00:33:27.195Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3610-XZ-compressed-source-tarball", + "os": 3, + "release": 389, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.10/Python-3.6.10.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.10/Python-3.6.10.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "986078f11b39074be22a199e56491d98", + "filesize": 17212220, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2702, + "fields": { + "created": "2019-12-19T06:34:11.757Z", + "updated": "2019-12-19T06:34:11.766Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "376-Windows-x86-executable-installer", + "os": 1, + "release": 390, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python-3.7.6.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python-3.7.6.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9e73a1b27bb894f87fdce430ef88b3d5", + "filesize": 25792544, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2703, + "fields": { + "created": "2019-12-19T06:34:11.833Z", + "updated": "2019-12-19T06:34:11.844Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "376-XZ-compressed-source-tarball", + "os": 3, + "release": 390, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c08fbee72ad5c2c95b0f4e44bf6fd72c", + "filesize": 17246360, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2704, + "fields": { + "created": "2019-12-19T06:34:11.891Z", + "updated": "2019-12-19T06:34:11.899Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit/32-bit installer", + "slug": "376-macOS-64-bit32-bit-installer", + "os": 2, + "release": 390, + "description": "for Mac OS X 10.6 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python-3.7.6-macosx10.6.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python-3.7.6-macosx10.6.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0dfc4cdd9404cf0f5274d063eca4ea71", + "filesize": 35057307, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2705, + "fields": { + "created": "2019-12-19T06:34:11.977Z", + "updated": "2019-12-19T06:34:11.988Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "376-Windows-x86-64-executable-installer", + "os": 1, + "release": 390, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python-3.7.6-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python-3.7.6-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cc31a9a497a4ec8a5190edecc5cdd303", + "filesize": 26802312, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2706, + "fields": { + "created": "2019-12-19T06:34:12.065Z", + "updated": "2019-12-19T06:34:12.078Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "376-Gzipped-source-tarball", + "os": 3, + "release": 390, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3ef90f064506dd85b4b4ab87a7a83d44", + "filesize": 23148187, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2707, + "fields": { + "created": "2019-12-19T06:34:12.146Z", + "updated": "2019-12-19T06:34:12.154Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "376-Windows-help-file", + "os": 1, + "release": 390, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python376.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python376.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8b915434050b29f9124eb93e3e97605b", + "filesize": 8158109, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2708, + "fields": { + "created": "2019-12-19T06:34:12.237Z", + "updated": "2019-12-19T06:34:12.251Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "376-Windows-x86-64-web-based-installer", + "os": 1, + "release": 390, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python-3.7.6-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python-3.7.6-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f9c11893329743d77801a7f49612ed87", + "filesize": 1363000, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2709, + "fields": { + "created": "2019-12-19T06:34:12.298Z", + "updated": "2019-12-19T06:34:12.312Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "376-Windows-x86-web-based-installer", + "os": 1, + "release": 390, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python-3.7.6-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python-3.7.6-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c7f474381b7a8b90b6f07116d4d725f0", + "filesize": 1324840, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2710, + "fields": { + "created": "2019-12-19T06:34:12.389Z", + "updated": "2019-12-19T06:34:12.399Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "376-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 390, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python-3.7.6-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python-3.7.6-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5f84f4f62a28d3003679dc693328f8fd", + "filesize": 7503251, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2711, + "fields": { + "created": "2019-12-19T06:34:12.474Z", + "updated": "2019-12-19T06:34:12.486Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "376-macOS-64-bit-installer", + "os": 2, + "release": 390, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python-3.7.6-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python-3.7.6-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "57915a926caa15f03ddd638ce714dd3b", + "filesize": 28235421, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2712, + "fields": { + "created": "2019-12-19T06:34:12.556Z", + "updated": "2019-12-19T06:34:12.572Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "376-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 390, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.6/python-3.7.6-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.6/python-3.7.6-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "accb8a137871ec632f581943c39cb566", + "filesize": 6747070, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2713, + "fields": { + "created": "2019-12-19T08:17:55.786Z", + "updated": "2019-12-19T08:17:55.794Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "381-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 388, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.1/python-3.8.1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/python-3.8.1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "980d5745a7e525be5abf4b443a00f734", + "filesize": 7143308, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2714, + "fields": { + "created": "2019-12-19T08:17:55.861Z", + "updated": "2019-12-19T08:17:55.870Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "381-Gzipped-source-tarball", + "os": 3, + "release": 388, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f215fa2f55a78de739c1787ec56b2bcd", + "filesize": 23978360, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2715, + "fields": { + "created": "2019-12-19T08:17:55.940Z", + "updated": "2019-12-19T08:17:55.950Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "381-Windows-help-file", + "os": 1, + "release": 388, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.1/python381.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/python381.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f6bbf64cc36f1de38fbf61f625ea6cf2", + "filesize": 8480993, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2716, + "fields": { + "created": "2019-12-19T08:17:56.005Z", + "updated": "2019-12-19T08:17:56.011Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "381-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 388, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.1/python-3.8.1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/python-3.8.1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4d091857a2153d9406bb5c522b211061", + "filesize": 8013540, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2717, + "fields": { + "created": "2019-12-19T08:17:56.084Z", + "updated": "2019-12-19T08:17:56.094Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "381-macOS-64-bit-installer", + "os": 2, + "release": 388, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.1/python-3.8.1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/python-3.8.1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d1b09665312b6b1f4e11b03b6a4510a3", + "filesize": 29051411, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2718, + "fields": { + "created": "2019-12-19T08:17:56.172Z", + "updated": "2019-12-19T08:17:56.181Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "381-Windows-x86-64-web-based-installer", + "os": 1, + "release": 388, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.1/python-3.8.1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/python-3.8.1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "662961733cc947839a73302789df6145", + "filesize": 1363800, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2719, + "fields": { + "created": "2019-12-19T08:17:56.263Z", + "updated": "2019-12-19T08:17:56.274Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "381-Windows-x86-web-based-installer", + "os": 1, + "release": 388, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.1/python-3.8.1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/python-3.8.1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d21706bdac544e7a968e32bbb0520f51", + "filesize": 1325432, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2720, + "fields": { + "created": "2019-12-19T08:17:56.351Z", + "updated": "2019-12-19T08:17:56.357Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "381-Windows-x86-64-executable-installer", + "os": 1, + "release": 388, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.1/python-3.8.1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/python-3.8.1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3e4c42f5ff8fcdbe6a828c912b7afdb1", + "filesize": 27543360, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2721, + "fields": { + "created": "2019-12-19T08:17:56.431Z", + "updated": "2019-12-19T08:17:56.439Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "381-XZ-compressed-source-tarball", + "os": 3, + "release": 388, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b3fb85fd479c0bf950c626ef80cacb57", + "filesize": 17828408, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2722, + "fields": { + "created": "2019-12-19T08:17:56.516Z", + "updated": "2019-12-19T08:17:56.522Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "381-Windows-x86-executable-installer", + "os": 1, + "release": 388, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.1/python-3.8.1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.1/python-3.8.1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2d4c7de97d6fcd8231fc3decbf8abf79", + "filesize": 26446128, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2733, + "fields": { + "created": "2020-01-25T13:54:16.191Z", + "updated": "2020-01-25T13:54:16.204Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "390-a2-Windows-x86-64-executable-installer", + "os": 1, + "release": 387, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "17706a5056724e37216c3016d16ca565", + "filesize": 27707832, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2734, + "fields": { + "created": "2020-01-25T13:54:16.284Z", + "updated": "2020-01-25T13:54:16.303Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "390-a2-XZ-compressed-source-tarball", + "os": 3, + "release": 387, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a8255498c6aba4f1644b6c410636736d", + "filesize": 17988748, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2735, + "fields": { + "created": "2020-01-25T13:54:16.377Z", + "updated": "2020-01-25T13:54:16.386Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "390-a2-Gzipped-source-tarball", + "os": 3, + "release": 387, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e4928f085cdb51c0aad0e510e9d550ee", + "filesize": 24154656, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2736, + "fields": { + "created": "2020-01-25T13:54:16.459Z", + "updated": "2020-01-25T13:54:16.476Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "390-a2-Windows-help-file", + "os": 1, + "release": 387, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python390a2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python390a2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "656668b0ad19f0a6910552d524933939", + "filesize": 8557139, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2737, + "fields": { + "created": "2020-01-25T13:54:16.568Z", + "updated": "2020-01-25T13:54:16.583Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "390-a2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 387, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3990c96da000808f94f27dfe12331f00", + "filesize": 1363912, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2738, + "fields": { + "created": "2020-01-25T13:54:16.648Z", + "updated": "2020-01-25T13:54:16.656Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "390-a2-Windows-x86-executable-installer", + "os": 1, + "release": 387, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8d558ea0c180b95bf8860865344334c4", + "filesize": 26615352, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2739, + "fields": { + "created": "2020-01-25T13:54:16.728Z", + "updated": "2020-01-25T13:54:16.742Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "390-a2-macOS-64-bit-installer", + "os": 2, + "release": 387, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a2-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a2-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cdb20c30430908ce566ea5f5df474273", + "filesize": 28254318, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2740, + "fields": { + "created": "2020-01-25T13:54:16.818Z", + "updated": "2020-01-25T13:54:16.828Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "390-a2-Windows-x86-web-based-installer", + "os": 1, + "release": 387, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f1efe215000fa33a5fe54b9799421451", + "filesize": 1325448, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2741, + "fields": { + "created": "2020-01-25T13:54:16.898Z", + "updated": "2020-01-25T13:54:16.905Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "390-a2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 387, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "154f12037d25f66a72251ce52b827947", + "filesize": 7201410, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2742, + "fields": { + "created": "2020-01-25T13:54:16.975Z", + "updated": "2020-01-25T13:54:16.982Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "390-a2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 387, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1705595f8b4bd79b8c46c2cf580140ac", + "filesize": 8056668, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2743, + "fields": { + "created": "2020-01-25T13:54:20.643Z", + "updated": "2020-01-25T13:54:20.651Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "390-a3-Gzipped-source-tarball", + "os": 3, + "release": 391, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8d15777d0b23f14d368e76acc378e933", + "filesize": 24184522, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2744, + "fields": { + "created": "2020-01-25T13:54:20.723Z", + "updated": "2020-01-25T13:54:20.730Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "390-a3-XZ-compressed-source-tarball", + "os": 3, + "release": 391, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8ea79726b42dfd5b9485350fcc82e0bb", + "filesize": 18005556, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2745, + "fields": { + "created": "2020-01-25T13:54:20.803Z", + "updated": "2020-01-25T13:54:20.809Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "390-a3-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 391, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0db09e93ca8c1f530ace2de4a7793c74", + "filesize": 7200590, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2746, + "fields": { + "created": "2020-01-25T13:54:20.881Z", + "updated": "2020-01-25T13:54:20.890Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "390-a3-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 391, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "427a45ac072a908b02d8c4ad86f2b481", + "filesize": 8058271, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2747, + "fields": { + "created": "2020-01-25T13:54:20.952Z", + "updated": "2020-01-25T13:54:20.965Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "390-a3-macOS-64-bit-installer", + "os": 2, + "release": 391, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a3-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a3-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "13df981186619120fb2b00ed055511ac", + "filesize": 28298632, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2748, + "fields": { + "created": "2020-01-25T13:54:21.041Z", + "updated": "2020-01-25T13:54:21.052Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "390-a3-Windows-x86-executable-installer", + "os": 1, + "release": 391, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4bcd049c0dceca8dac950110a7d06327", + "filesize": 26652104, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2749, + "fields": { + "created": "2020-01-25T13:54:21.120Z", + "updated": "2020-01-25T13:54:21.126Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "390-a3-Windows-help-file", + "os": 1, + "release": 391, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python390a3.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python390a3.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "149df69348e9fcddb06e855c301cd408", + "filesize": 8582179, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2750, + "fields": { + "created": "2020-01-25T13:54:21.195Z", + "updated": "2020-01-25T13:54:21.202Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "390-a3-Windows-x86-64-executable-installer", + "os": 1, + "release": 391, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f1b8712b2b254c2dca45accb622fafb7", + "filesize": 27741240, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2751, + "fields": { + "created": "2020-01-25T13:54:21.269Z", + "updated": "2020-01-25T13:54:21.274Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "390-a3-Windows-x86-64-web-based-installer", + "os": 1, + "release": 391, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a3-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a3-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "266696062016b23a1f6b6881a8db3325", + "filesize": 1363928, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2752, + "fields": { + "created": "2020-01-25T13:54:21.322Z", + "updated": "2020-01-25T13:54:21.330Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "390-a3-Windows-x86-web-based-installer", + "os": 1, + "release": 391, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a3-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a3-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f47d3d72adc399e0d2c6cd2159d19931", + "filesize": 1325408, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2769, + "fields": { + "created": "2020-02-17T22:50:02.363Z", + "updated": "2020-02-17T22:50:02.373Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "382-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 424, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ca620a90c0a6c78b7bb9e767b99666b8", + "filesize": 1325864, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2770, + "fields": { + "created": "2020-02-17T22:50:02.442Z", + "updated": "2020-02-17T22:50:02.460Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "382-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 424, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ed22f68aa1afb97c0fc4d611d70d6ba4", + "filesize": 8014979, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2771, + "fields": { + "created": "2020-02-17T22:50:02.542Z", + "updated": "2020-02-17T22:50:02.555Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "382-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 424, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "458e9bef868a48ed0d9e8d3531e6c7c7", + "filesize": 26454880, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2772, + "fields": { + "created": "2020-02-17T22:50:02.619Z", + "updated": "2020-02-17T22:50:02.628Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "382-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 424, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.2/Python-3.8.2rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/Python-3.8.2rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6cf690de94c8d6244dab418a2613232c", + "filesize": 17833776, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2773, + "fields": { + "created": "2020-02-17T22:50:02.699Z", + "updated": "2020-02-17T22:50:02.707Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "382-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 424, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "db0308e2010f539cf566bd2d846ab764", + "filesize": 27550504, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2774, + "fields": { + "created": "2020-02-17T22:50:02.777Z", + "updated": "2020-02-17T22:50:02.785Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "382-rc1-Gzipped-source-tarball", + "os": 3, + "release": 424, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.2/Python-3.8.2rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/Python-3.8.2rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0a3754324f59f5ef2f8e81eabb262c3a", + "filesize": 23987205, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2775, + "fields": { + "created": "2020-02-17T22:50:02.852Z", + "updated": "2020-02-17T22:50:02.864Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "382-rc1-Windows-help-file", + "os": 1, + "release": 424, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python382rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python382rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "501688fe8f5a883eda3cdacd3bafa44a", + "filesize": 8484210, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2776, + "fields": { + "created": "2020-02-17T22:50:02.939Z", + "updated": "2020-02-17T22:50:02.951Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "382-rc1-macOS-64-bit-installer", + "os": 2, + "release": 424, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a44aabbddffe5da88d43bf08782d3303", + "filesize": 29067021, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2777, + "fields": { + "created": "2020-02-17T22:50:03.024Z", + "updated": "2020-02-17T22:50:03.032Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "382-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 424, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f6e61ee71c09df94c37b0ddf99a7a2dc", + "filesize": 1363872, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2778, + "fields": { + "created": "2020-02-17T22:50:03.106Z", + "updated": "2020-02-17T22:50:03.114Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "382-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 424, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9ae97349704a8c24affc42ceb2efafcf", + "filesize": 7144831, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2781, + "fields": { + "created": "2020-02-18T09:48:41.532Z", + "updated": "2020-02-18T09:48:41.548Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "382-rc2-macOS-64-bit-installer", + "os": 2, + "release": 425, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc2-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc2-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ffbb986b21d1a5f027de240aa678ce0d", + "filesize": 29077512, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2782, + "fields": { + "created": "2020-02-18T09:48:41.624Z", + "updated": "2020-02-18T09:48:41.637Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "382-rc2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 425, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3952faf55d4bcaeb49f68e20465f71c0", + "filesize": 1363848, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2783, + "fields": { + "created": "2020-02-18T09:48:41.706Z", + "updated": "2020-02-18T09:48:41.718Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "382-rc2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 425, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fbd4a68e5edc55da20eb04aa71fec328", + "filesize": 7146468, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2784, + "fields": { + "created": "2020-02-18T09:48:41.789Z", + "updated": "2020-02-18T09:48:41.797Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "382-rc2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 425, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "09fd46d403ff6340a3d45e23243de761", + "filesize": 8014637, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2785, + "fields": { + "created": "2020-02-18T09:48:41.885Z", + "updated": "2020-02-18T09:48:41.913Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "382-rc2-Windows-help-file", + "os": 1, + "release": 425, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python382rc2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python382rc2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3e3548916ff556a84008a7bfac673310", + "filesize": 8492764, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2786, + "fields": { + "created": "2020-02-18T09:48:42.004Z", + "updated": "2020-02-18T09:48:42.018Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "382-rc2-XZ-compressed-source-tarball", + "os": 3, + "release": 425, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.2/Python-3.8.2rc2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/Python-3.8.2rc2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4ea346e0102c660492af6d037029dce7", + "filesize": 17850992, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2787, + "fields": { + "created": "2020-02-18T09:48:42.096Z", + "updated": "2020-02-18T09:48:42.101Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "382-rc2-Windows-x86-web-based-installer", + "os": 1, + "release": 425, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "19580239928d26bb5d21efd0863f0890", + "filesize": 1325888, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2788, + "fields": { + "created": "2020-02-18T09:48:42.171Z", + "updated": "2020-02-18T09:48:42.180Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "382-rc2-Gzipped-source-tarball", + "os": 3, + "release": 425, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.2/Python-3.8.2rc2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/Python-3.8.2rc2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d6ddcc06fb9cf2c576a3d6409d65e54e", + "filesize": 23996866, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2789, + "fields": { + "created": "2020-02-18T09:48:42.254Z", + "updated": "2020-02-18T09:48:42.265Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "382-rc2-Windows-x86-executable-installer", + "os": 1, + "release": 425, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a6b681c0074a310b18410422efa57e65", + "filesize": 26469488, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2790, + "fields": { + "created": "2020-02-18T09:48:42.343Z", + "updated": "2020-02-18T09:48:42.351Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "382-rc2-Windows-x86-64-executable-installer", + "os": 1, + "release": 425, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2rc2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "808bd9c5da79155f389b11fc52fc1f30", + "filesize": 27571560, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2794, + "fields": { + "created": "2020-02-26T00:18:55.114Z", + "updated": "2020-02-26T00:18:55.123Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "382-XZ-compressed-source-tarball", + "os": 3, + "release": 426, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e9d6ebc92183a177b8e8a58cad5b8d67", + "filesize": 17869888, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2795, + "fields": { + "created": "2020-02-26T00:18:55.203Z", + "updated": "2020-02-26T00:18:55.211Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "382-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 426, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1b1f0f0c5ee8601f160cfad5b560e3a7", + "filesize": 7147713, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2796, + "fields": { + "created": "2020-02-26T00:18:55.278Z", + "updated": "2020-02-26T00:18:55.287Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "382-Windows-help-file", + "os": 1, + "release": 426, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python382.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python382.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7506675dcbb9a1569b54e600ae66c9fb", + "filesize": 8507261, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2797, + "fields": { + "created": "2020-02-26T00:18:55.356Z", + "updated": "2020-02-26T00:18:55.363Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "382-Gzipped-source-tarball", + "os": 3, + "release": 426, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f9f3768f757e34b342dbc06b41cbc844", + "filesize": 24007411, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2798, + "fields": { + "created": "2020-02-26T00:18:55.433Z", + "updated": "2020-02-26T00:18:55.444Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "382-macOS-64-bit-installer", + "os": 2, + "release": 426, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f12203128b5c639dc08e5a43a2812cc7", + "filesize": 30023420, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2799, + "fields": { + "created": "2020-02-26T00:18:55.512Z", + "updated": "2020-02-26T00:18:55.522Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "382-Windows-x86-64-executable-installer", + "os": 1, + "release": 426, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b5df1cbb2bc152cd70c3da9151cb510b", + "filesize": 27586384, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2800, + "fields": { + "created": "2020-02-26T00:18:55.591Z", + "updated": "2020-02-26T00:18:55.601Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "382-Windows-x86-64-web-based-installer", + "os": 1, + "release": 426, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2586cdad1a363d1a8abb5fc102b2d418", + "filesize": 1363760, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2801, + "fields": { + "created": "2020-02-26T00:18:55.668Z", + "updated": "2020-02-26T00:18:55.678Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "382-Windows-x86-executable-installer", + "os": 1, + "release": 426, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6f0ba59c7dbeba7bb0ee21682fe39748", + "filesize": 26481424, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2802, + "fields": { + "created": "2020-02-26T00:18:55.748Z", + "updated": "2020-02-26T00:18:55.754Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "382-Windows-x86-web-based-installer", + "os": 1, + "release": 426, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "04d97979534f4bd33752c183fc4ce680", + "filesize": 1325416, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2803, + "fields": { + "created": "2020-02-26T00:18:55.820Z", + "updated": "2020-02-26T00:18:55.828Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "382-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 426, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.2/python-3.8.2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.2/python-3.8.2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1a98565285491c0ea65450e78afe6f8d", + "filesize": 8017771, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2804, + "fields": { + "created": "2020-02-26T00:27:53.090Z", + "updated": "2020-02-26T00:27:53.106Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "390-a4-Windows-help-file", + "os": 1, + "release": 427, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python390a4.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python390a4.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6cb344ba4785a81dd7b845adee8565b0", + "filesize": 8625813, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2805, + "fields": { + "created": "2020-02-26T00:27:53.194Z", + "updated": "2020-02-26T00:27:53.229Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "390-a4-XZ-compressed-source-tarball", + "os": 3, + "release": 427, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "88513446b6c0be34d00becd0e8b6a9a4", + "filesize": 18032300, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2806, + "fields": { + "created": "2020-02-26T00:27:53.324Z", + "updated": "2020-02-26T00:27:53.333Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "390-a4-Gzipped-source-tarball", + "os": 3, + "release": 427, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b19c6fcc7ba2923c089721ab10eca989", + "filesize": 24214180, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2807, + "fields": { + "created": "2020-02-26T00:27:53.411Z", + "updated": "2020-02-26T00:27:53.419Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "390-a4-Windows-x86-executable-installer", + "os": 1, + "release": 427, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b280939f64f5b2268858b03b351e5445", + "filesize": 26711840, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2808, + "fields": { + "created": "2020-02-26T00:27:53.506Z", + "updated": "2020-02-26T00:27:53.515Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "390-a4-Windows-x86-web-based-installer", + "os": 1, + "release": 427, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a4-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a4-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ce464014a7201c5e9e74d9fffbb7ed1e", + "filesize": 1325376, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2809, + "fields": { + "created": "2020-02-26T00:27:53.602Z", + "updated": "2020-02-26T00:27:53.608Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "390-a4-Windows-x86-64-web-based-installer", + "os": 1, + "release": 427, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a4-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a4-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cc69270bd9edc31090b1432ec45cfe89", + "filesize": 1363904, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2810, + "fields": { + "created": "2020-02-26T00:27:53.691Z", + "updated": "2020-02-26T00:27:53.705Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "390-a4-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 427, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b1cddc35fd3dfd1668ae1a5a862bcf94", + "filesize": 7201925, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2811, + "fields": { + "created": "2020-02-26T00:27:53.784Z", + "updated": "2020-02-26T00:27:53.791Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "390-a4-Windows-x86-64-executable-installer", + "os": 1, + "release": 427, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8d93a6344593f95b1e0412e42f64cd12", + "filesize": 27792072, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2812, + "fields": { + "created": "2020-02-26T00:27:53.855Z", + "updated": "2020-02-26T00:27:53.861Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "390-a4-macOS-64-bit-installer", + "os": 2, + "release": 427, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a4-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a4-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e01bbc2d80ddce3a8f0f70d75d50e6a6", + "filesize": 29281755, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2813, + "fields": { + "created": "2020-02-26T00:27:53.945Z", + "updated": "2020-02-26T00:27:53.952Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "390-a4-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 427, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8dc92037f04499087d99a1ffeae269f5", + "filesize": 8059687, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2817, + "fields": { + "created": "2020-03-04T17:33:00.487Z", + "updated": "2020-03-04T17:33:00.523Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "377-rc1-macOS-64-bit-installer", + "os": 2, + "release": 428, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.7/python-3.7.7rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/python-3.7.7rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "967335ffb86c0c3f05ffb757bfbe407b", + "filesize": 29165861, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2818, + "fields": { + "created": "2020-03-04T17:33:00.665Z", + "updated": "2020-03-04T17:33:00.673Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "377-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 428, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.7/python-3.7.7rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/python-3.7.7rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b42683ea476f33fa1fe0389233498a3c", + "filesize": 1348952, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2819, + "fields": { + "created": "2020-03-04T17:33:00.753Z", + "updated": "2020-03-04T17:33:00.761Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "377-rc1-Windows-help-file", + "os": 1, + "release": 428, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.7/python377rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/python377rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d0aaf75987074c8169545681ab81529d", + "filesize": 8186142, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2820, + "fields": { + "created": "2020-03-04T17:33:00.839Z", + "updated": "2020-03-04T17:33:00.849Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "377-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 428, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.7/python-3.7.7rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/python-3.7.7rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "854c519014dc2b6e32d38c8b985ba441", + "filesize": 26798304, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2821, + "fields": { + "created": "2020-03-04T17:33:00.928Z", + "updated": "2020-03-04T17:33:00.948Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "377-rc1-Gzipped-source-tarball", + "os": 3, + "release": 428, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.7/Python-3.7.7rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/Python-3.7.7rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9fc893b17672bb221b87cff7354be1a5", + "filesize": 23169808, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2822, + "fields": { + "created": "2020-03-04T17:33:01.033Z", + "updated": "2020-03-04T17:33:01.046Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "377-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 428, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.7/python-3.7.7rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/python-3.7.7rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "04d0ee171a94209c398d1bb0b5bf1be7", + "filesize": 1320464, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2823, + "fields": { + "created": "2020-03-04T17:33:01.122Z", + "updated": "2020-03-04T17:33:01.137Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "377-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 428, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.7/python-3.7.7rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/python-3.7.7rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9589d956ace10d0086375f2f63702819", + "filesize": 6615216, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2824, + "fields": { + "created": "2020-03-04T17:33:01.228Z", + "updated": "2020-03-04T17:33:01.246Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "377-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 428, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.7/python-3.7.7rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/python-3.7.7rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5d98aab7d580bb3c884b490a7c5abb7c", + "filesize": 25749496, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2825, + "fields": { + "created": "2020-03-04T17:33:01.347Z", + "updated": "2020-03-04T17:33:01.356Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "377-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 428, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.7/python-3.7.7rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/python-3.7.7rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ae3b2d59bcd7c97eeefe541d3745b7f6", + "filesize": 7444807, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2826, + "fields": { + "created": "2020-03-04T17:33:01.455Z", + "updated": "2020-03-04T17:33:01.469Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "377-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 428, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.7/Python-3.7.7rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/Python-3.7.7rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "60ccef34e9e11589bd002eb1c2c8effd", + "filesize": 17271200, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2827, + "fields": { + "created": "2020-03-10T14:41:05.823Z", + "updated": "2020-03-10T14:41:05.832Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "377-Windows-x86-web-based-installer", + "os": 1, + "release": 429, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.7/python-3.7.7-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/python-3.7.7-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8b326250252f15e199879701f5e53c76", + "filesize": 1319912, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2828, + "fields": { + "created": "2020-03-10T14:41:05.910Z", + "updated": "2020-03-10T14:41:05.943Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "377-Windows-x86-executable-installer", + "os": 1, + "release": 429, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.7/python-3.7.7.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/python-3.7.7.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e9db9cf43b4f2472d75a055380871045", + "filesize": 25747128, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2829, + "fields": { + "created": "2020-03-10T14:41:06.015Z", + "updated": "2020-03-10T14:41:06.023Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "377-macOS-64-bit-installer", + "os": 2, + "release": 429, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.7/python-3.7.7-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/python-3.7.7-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "47b06433e242c8eb848e035965a860ac", + "filesize": 29163525, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2830, + "fields": { + "created": "2020-03-10T14:41:06.102Z", + "updated": "2020-03-10T14:41:06.111Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "377-XZ-compressed-source-tarball", + "os": 3, + "release": 429, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "172c650156f7bea68ce31b2fd01fa766", + "filesize": 17268888, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2831, + "fields": { + "created": "2020-03-10T14:41:06.184Z", + "updated": "2020-03-10T14:41:06.198Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "377-Windows-x86-64-executable-installer", + "os": 1, + "release": 429, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.7/python-3.7.7-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/python-3.7.7-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e0c910087459df78d827eb1554489663", + "filesize": 26797616, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2832, + "fields": { + "created": "2020-03-10T14:41:06.271Z", + "updated": "2020-03-10T14:41:06.279Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "377-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 429, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.7/python-3.7.7-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/python-3.7.7-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "29672b400490ea21995c6dbae4c4e1c8", + "filesize": 6614968, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2833, + "fields": { + "created": "2020-03-10T14:41:06.355Z", + "updated": "2020-03-10T14:41:06.366Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "377-Windows-help-file", + "os": 1, + "release": 429, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.7/python377.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/python377.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "89bb2ea8c5838bd2612de600bd301d32", + "filesize": 8183265, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2834, + "fields": { + "created": "2020-03-10T14:41:06.443Z", + "updated": "2020-03-10T14:41:06.451Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "377-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 429, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.7/python-3.7.7-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/python-3.7.7-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6aa3b1c327561bda256f2deebf038dc9", + "filesize": 7444654, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2835, + "fields": { + "created": "2020-03-10T14:41:06.523Z", + "updated": "2020-03-10T14:41:06.534Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "377-Windows-x86-64-web-based-installer", + "os": 1, + "release": 429, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.7/python-3.7.7-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/python-3.7.7-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d1d09dad50247738d8ac2479e4cde4af", + "filesize": 1348896, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2836, + "fields": { + "created": "2020-03-10T14:41:06.602Z", + "updated": "2020-03-10T14:41:06.611Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "377-Gzipped-source-tarball", + "os": 3, + "release": 429, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d348d978a5387512fbc7d7d52dd3a5ef", + "filesize": 23161893, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2837, + "fields": { + "created": "2020-03-23T23:17:48.178Z", + "updated": "2020-03-23T23:17:48.192Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "390-a5-XZ-compressed-source-tarball", + "os": 3, + "release": 430, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a5.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c97c78252aeb3695b9582561dfe79bb8", + "filesize": 18039660, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2838, + "fields": { + "created": "2020-03-23T23:17:48.295Z", + "updated": "2020-03-23T23:17:48.333Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "390-a5-Windows-x86-web-based-installer", + "os": 1, + "release": 430, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a5-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a5-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "51665fa5e1e053a68e35d7f1ac275417", + "filesize": 1325616, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2839, + "fields": { + "created": "2020-03-23T23:17:48.435Z", + "updated": "2020-03-23T23:17:48.455Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "390-a5-macOS-64-bit-installer", + "os": 2, + "release": 430, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a5-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a5-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b8cfdea5eb8608b26474ae29770baba7", + "filesize": 29383189, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2840, + "fields": { + "created": "2020-03-23T23:17:48.543Z", + "updated": "2020-03-23T23:17:48.553Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "390-a5-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 430, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a5-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a5-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2e3f7d3d6110d1715bf4fcb1c58652bc", + "filesize": 7378480, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2841, + "fields": { + "created": "2020-03-23T23:17:48.637Z", + "updated": "2020-03-23T23:17:48.652Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "390-a5-Gzipped-source-tarball", + "os": 3, + "release": 430, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1e3e53f7c3a6690abbb659c3038ac332", + "filesize": 24269121, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2842, + "fields": { + "created": "2020-03-23T23:17:48.731Z", + "updated": "2020-03-23T23:17:48.740Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "390-a5-Windows-x86-64-web-based-installer", + "os": 1, + "release": 430, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a5-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a5-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8960b03d1c6075dfffd3bf45ad023ad6", + "filesize": 1364128, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2843, + "fields": { + "created": "2020-03-23T23:17:48.798Z", + "updated": "2020-03-23T23:17:48.803Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "390-a5-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 430, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a5-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a5-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "618b6bc6e072eb7b2ecef5935721490c", + "filesize": 8207142, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2844, + "fields": { + "created": "2020-03-23T23:17:48.858Z", + "updated": "2020-03-23T23:17:48.867Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "390-a5-Windows-x86-64-executable-installer", + "os": 1, + "release": 430, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a5-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a5-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "679af81e8dfe7df9c1babe1cfbb227a1", + "filesize": 27987272, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2845, + "fields": { + "created": "2020-03-23T23:17:48.976Z", + "updated": "2020-03-23T23:17:48.984Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "390-a5-Windows-help-file", + "os": 1, + "release": 430, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python390a5.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python390a5.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6dfd23c20117a7566b187aa2e5643b3b", + "filesize": 8670249, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2846, + "fields": { + "created": "2020-03-23T23:17:49.073Z", + "updated": "2020-03-23T23:17:49.082Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "390-a5-Windows-x86-executable-installer", + "os": 1, + "release": 430, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a5.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a5.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0241c238ef998194a907313118d334f4", + "filesize": 26929968, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2849, + "fields": { + "created": "2020-04-06T14:28:04.178Z", + "updated": "2020-04-06T14:28:04.189Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2718-rc1-Gzipped-source-tarball", + "os": 3, + "release": 431, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.18/Python-2.7.18rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.18/Python-2.7.18rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ac18d8acdd27ff8b35b267e254231a25", + "filesize": 17538275, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2850, + "fields": { + "created": "2020-04-06T14:28:04.277Z", + "updated": "2020-04-06T14:28:04.294Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2718-rc1-Windows-debug-information-files", + "os": 1, + "release": 431, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.18/python-2.7.18rc1-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.18/python-2.7.18rc1-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "68b52ebf11aaf78ac89a08833f934081", + "filesize": 25178278, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2851, + "fields": { + "created": "2020-04-06T14:28:04.377Z", + "updated": "2020-04-06T14:28:04.403Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "2718-rc1-macOS-64-bit-installer", + "os": 2, + "release": 431, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.18/python-2.7.18rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.18/python-2.7.18rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "018e93c5c0b5e7177941fa470c8b3e86", + "filesize": 24844596, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2852, + "fields": { + "created": "2020-04-06T14:28:04.502Z", + "updated": "2020-04-06T14:28:04.519Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2718-rc1-Windows-x86-64-MSI-installer", + "os": 1, + "release": 431, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.18/python-2.7.18rc1.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.18/python-2.7.18rc1.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b6c4b82bfd74b39c7b51e8e8d4cf0442", + "filesize": 20541440, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2853, + "fields": { + "created": "2020-04-06T14:28:04.608Z", + "updated": "2020-04-06T14:28:04.631Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2718-rc1-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 431, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.18/python-2.7.18rc1.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.18/python-2.7.18rc1.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ee9b77a08f2833cfdd2c5b903c65351d", + "filesize": 26005670, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2854, + "fields": { + "created": "2020-04-06T14:28:04.718Z", + "updated": "2020-04-06T14:28:04.731Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2718-rc1-Windows-x86-MSI-installer", + "os": 1, + "release": 431, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.18/python-2.7.18rc1.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.18/python-2.7.18rc1.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7c2583e40ed35c06d3391a4b24a2d818", + "filesize": 19574784, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2855, + "fields": { + "created": "2020-04-06T14:28:04.787Z", + "updated": "2020-04-06T14:28:04.799Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2718-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 431, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.18/Python-2.7.18rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.18/Python-2.7.18rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2be75db8a6ac315e5080f569cd0ac215", + "filesize": 12853164, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2856, + "fields": { + "created": "2020-04-06T14:28:04.886Z", + "updated": "2020-04-06T14:28:04.894Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2718-rc1-Windows-help-file", + "os": 1, + "release": 431, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.18/python2718rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.18/python2718rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c5bf49a2564cb4a3ef533ac4de1989af", + "filesize": 6267025, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2857, + "fields": { + "created": "2020-04-20T14:20:02.565Z", + "updated": "2020-04-20T14:20:02.599Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "2718-Windows-help-file", + "os": 1, + "release": 432, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.18/python2718.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.18/python2718.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b3b753dffe1c7930243c1c40ec3a72b1", + "filesize": 6322188, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2858, + "fields": { + "created": "2020-04-20T14:20:02.731Z", + "updated": "2020-04-20T14:20:02.743Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files", + "slug": "2718-Windows-debug-information-files", + "os": 1, + "release": 432, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.18/python-2.7.18-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.18/python-2.7.18-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "20b111ccfe8d06d2fe8c77679a86113d", + "filesize": 25178278, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2859, + "fields": { + "created": "2020-04-20T14:20:02.868Z", + "updated": "2020-04-20T14:20:02.880Z", + "creator": null, + "last_modified_by": null, + "name": "Windows debug information files for 64-bit binaries", + "slug": "2718-Windows-debug-information-files-for-64-b", + "os": 1, + "release": 432, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64-pdb.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64-pdb.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bb0897ea20fda343e5179d413d4a4a7c", + "filesize": 26005670, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2860, + "fields": { + "created": "2020-04-20T14:20:03.026Z", + "updated": "2020-04-20T14:20:03.049Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "2718-macOS-64-bit-installer", + "os": 2, + "release": 432, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.18/python-2.7.18-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.18/python-2.7.18-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ce98eeb7bdf806685adc265ec1444463", + "filesize": 24889285, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2861, + "fields": { + "created": "2020-04-20T14:20:03.103Z", + "updated": "2020-04-20T14:20:03.119Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 MSI installer", + "slug": "2718-Windows-x86-MSI-installer", + "os": 1, + "release": 432, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.18/python-2.7.18.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.18/python-2.7.18.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "db6ad9195b3086c6b4cefb9493d738d2", + "filesize": 19632128, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2862, + "fields": { + "created": "2020-04-20T14:20:03.246Z", + "updated": "2020-04-20T14:20:03.276Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "2718-XZ-compressed-source-tarball", + "os": 3, + "release": 432, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fd6cc8ec0a78c44036f825e739f36e5a", + "filesize": 12854736, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2863, + "fields": { + "created": "2020-04-20T14:20:03.402Z", + "updated": "2020-04-20T14:20:03.410Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "2718-Gzipped-source-tarball", + "os": 3, + "release": 432, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "38c84292658ed4456157195f1c9bcbe1", + "filesize": 17539408, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2864, + "fields": { + "created": "2020-04-20T14:20:03.560Z", + "updated": "2020-04-20T14:20:03.566Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 MSI installer", + "slug": "2718-Windows-x86-64-MSI-installer", + "os": 1, + "release": 432, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64.msi", + "gpg_signature_file": "https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64.msi.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a425c758d38f8e28b56f4724b499239a", + "filesize": 20598784, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2865, + "fields": { + "created": "2020-04-28T14:46:13.169Z", + "updated": "2020-04-28T14:46:13.202Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "390-a6-Windows-x86-64-web-based-installer", + "os": 1, + "release": 433, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a6-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a6-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8652b1f7522972f04ec38f3bfa938341", + "filesize": 1364120, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2866, + "fields": { + "created": "2020-04-28T14:46:13.280Z", + "updated": "2020-04-28T14:46:13.297Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "390-a6-macOS-64-bit-installer", + "os": 2, + "release": 433, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a6-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a6-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b8c250a9da032892be257405dd4cb703", + "filesize": 29598507, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2867, + "fields": { + "created": "2020-04-28T14:46:13.380Z", + "updated": "2020-04-28T14:46:13.387Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "390-a6-Windows-help-file", + "os": 1, + "release": 433, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python390a6.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python390a6.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9139f19f1c54e4e0c47192ba826d4b67", + "filesize": 8735047, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2868, + "fields": { + "created": "2020-04-28T14:46:13.472Z", + "updated": "2020-04-28T14:46:13.514Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "390-a6-Windows-x86-64-executable-installer", + "os": 1, + "release": 433, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a6-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a6-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cb64b6a226410657bfa7d25a0cd0b311", + "filesize": 28187208, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2869, + "fields": { + "created": "2020-04-28T14:46:13.599Z", + "updated": "2020-04-28T14:46:13.609Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "390-a6-Gzipped-source-tarball", + "os": 3, + "release": 433, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "24b42e49de0fa90d77527d48cfe440ad", + "filesize": 24457620, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2870, + "fields": { + "created": "2020-04-28T14:46:13.711Z", + "updated": "2020-04-28T14:46:13.803Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "390-a6-Windows-x86-web-based-installer", + "os": 1, + "release": 433, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a6-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a6-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7719192c8351a76a6569f2bc79d1216b", + "filesize": 1325808, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2871, + "fields": { + "created": "2020-04-28T14:46:13.874Z", + "updated": "2020-04-28T14:46:13.881Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "390-a6-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 433, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a6-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a6-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "51d266336d94d3aa2c6c2e03fa48150f", + "filesize": 7520451, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2872, + "fields": { + "created": "2020-04-28T14:46:13.961Z", + "updated": "2020-04-28T14:46:13.971Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "390-a6-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 433, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a6-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a6-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0f3d9873584010b3bd828c221bf46bc6", + "filesize": 8318514, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2873, + "fields": { + "created": "2020-04-28T14:46:14.045Z", + "updated": "2020-04-28T14:46:14.053Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "390-a6-XZ-compressed-source-tarball", + "os": 3, + "release": 433, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a6.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0a6.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6b5d9b7fcbc7d3a79217bb1587bae16e", + "filesize": 18202376, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2874, + "fields": { + "created": "2020-04-28T14:46:14.119Z", + "updated": "2020-04-28T14:46:14.127Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "390-a6-Windows-x86-executable-installer", + "os": 1, + "release": 433, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a6.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0a6.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b5d7ea15620fae14cfb7e65f5156fb5b", + "filesize": 27132344, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2875, + "fields": { + "created": "2020-04-29T22:41:07.822Z", + "updated": "2020-04-29T22:52:48.010Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "383-rc1-macOS-64-bit-installer", + "os": 2, + "release": 434, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.3/python-3.8.3rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/python-3.8.3rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fe18361ebdcf2a738679b189ac83e51d", + "filesize": 30114709, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2876, + "fields": { + "created": "2020-04-29T22:41:07.911Z", + "updated": "2020-04-29T22:41:07.922Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "383-rc1-Gzipped-source-tarball", + "os": 3, + "release": 434, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.3/Python-3.8.3rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/Python-3.8.3rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4388c20bb59248a52adcaec7ce4a581c", + "filesize": 24063850, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2877, + "fields": { + "created": "2020-04-29T22:41:07.989Z", + "updated": "2020-04-29T22:41:07.996Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "383-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 434, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.3/python-3.8.3rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/python-3.8.3rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "17069c3a06cd44663d23d95d820f65e1", + "filesize": 27812576, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2878, + "fields": { + "created": "2020-04-29T22:41:08.062Z", + "updated": "2020-04-29T22:41:08.068Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "383-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 434, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.3/python-3.8.3rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/python-3.8.3rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b86b739d84c2d4eba2ceaff57e074afd", + "filesize": 7330372, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2879, + "fields": { + "created": "2020-04-29T22:41:08.149Z", + "updated": "2020-04-29T22:41:08.155Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "383-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 434, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.3/python-3.8.3rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/python-3.8.3rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b674fb697db9394fcf7bd39ab17ed024", + "filesize": 26745552, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2880, + "fields": { + "created": "2020-04-29T22:41:08.276Z", + "updated": "2020-04-29T22:52:48.012Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "383-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 434, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.3/Python-3.8.3rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/Python-3.8.3rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5997ad4840d00bd6321e5102f0bae008", + "filesize": 17902996, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2881, + "fields": { + "created": "2020-04-29T22:41:08.368Z", + "updated": "2020-04-29T22:41:08.378Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "383-rc1-Windows-help-file", + "os": 1, + "release": 434, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.3/python383rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/python383rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dade3016b80bb8b5928ee227f7415fc2", + "filesize": 8572090, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2882, + "fields": { + "created": "2020-04-29T22:41:08.426Z", + "updated": "2020-04-29T22:41:08.437Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "383-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 434, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.3/python-3.8.3rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/python-3.8.3rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d4b1f174d4a769500bbd21710bba6cb0", + "filesize": 1326272, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2883, + "fields": { + "created": "2020-04-29T22:41:08.500Z", + "updated": "2020-04-29T22:41:08.512Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "383-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 434, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.3/python-3.8.3rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/python-3.8.3rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "17f75fd6cd5b554ff478d923b22a0f87", + "filesize": 8176510, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2884, + "fields": { + "created": "2020-04-29T22:41:08.596Z", + "updated": "2020-04-29T22:41:08.603Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "383-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 434, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.3/python-3.8.3rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/python-3.8.3rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "168644bb1d570bda4bac81a8d0d5ea13", + "filesize": 1364128, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2888, + "fields": { + "created": "2020-05-14T08:29:26.406Z", + "updated": "2020-05-14T08:29:26.418Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "383-Windows-x86-64-web-based-installer", + "os": 1, + "release": 435, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.3/python-3.8.3-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/python-3.8.3-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "17e989d2fecf7f9f13cf987825b695c4", + "filesize": 1364136, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2889, + "fields": { + "created": "2020-05-14T08:29:26.509Z", + "updated": "2020-05-14T08:29:26.519Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "383-XZ-compressed-source-tarball", + "os": 3, + "release": 435, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3000cf50aaa413052aef82fd2122ca78", + "filesize": 17912964, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2890, + "fields": { + "created": "2020-05-14T08:29:26.598Z", + "updated": "2020-05-14T08:29:26.609Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "383-Windows-help-file", + "os": 1, + "release": 435, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.3/python383.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/python383.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4aeeebd7cc8dd90d61e7cfdda9cb9422", + "filesize": 8568303, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2891, + "fields": { + "created": "2020-05-14T08:29:26.685Z", + "updated": "2020-05-14T08:29:26.693Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "383-macOS-64-bit-installer", + "os": 2, + "release": 435, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.3/python-3.8.3-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/python-3.8.3-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dd5e7f64e255d21f8d407f39a7a41ba9", + "filesize": 30119781, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2892, + "fields": { + "created": "2020-05-14T08:29:26.770Z", + "updated": "2020-05-14T08:29:26.778Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "383-Windows-x86-64-executable-installer", + "os": 1, + "release": 435, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.3/python-3.8.3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/python-3.8.3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fd2458fa0e9ead1dd9fbc2370a42853b", + "filesize": 27805800, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2893, + "fields": { + "created": "2020-05-14T08:29:26.852Z", + "updated": "2020-05-14T08:29:26.861Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "383-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 435, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.3/python-3.8.3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/python-3.8.3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8ee09403ec0cc2e89d43b4a4f6d1521e", + "filesize": 7330315, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2894, + "fields": { + "created": "2020-05-14T08:29:26.935Z", + "updated": "2020-05-14T08:29:26.944Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "383-Windows-x86-executable-installer", + "os": 1, + "release": 435, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.3/python-3.8.3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/python-3.8.3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "452373e2c467c14220efeb10f40c231f", + "filesize": 26744744, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2895, + "fields": { + "created": "2020-05-14T08:29:27.014Z", + "updated": "2020-05-14T08:29:27.022Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "383-Gzipped-source-tarball", + "os": 3, + "release": 435, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a7c10a2ac9d62de75a0ca5204e2e7d07", + "filesize": 24067487, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2896, + "fields": { + "created": "2020-05-14T08:29:27.103Z", + "updated": "2020-05-14T08:29:27.113Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "383-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 435, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.3/python-3.8.3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/python-3.8.3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c12ffe7f4c1b447241d5d2aedc9b5d01", + "filesize": 8175801, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2897, + "fields": { + "created": "2020-05-14T08:29:27.187Z", + "updated": "2020-05-14T08:29:27.195Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "383-Windows-x86-web-based-installer", + "os": 1, + "release": 435, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.3/python-3.8.3-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.3/python-3.8.3-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fe72582bbca3dbe07451fd05ece1d752", + "filesize": 1325800, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2901, + "fields": { + "created": "2020-05-19T09:31:46.293Z", + "updated": "2020-05-19T09:31:46.308Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "390-b1-Windows-x86-executable-installer", + "os": 1, + "release": 436, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4a1c4d7f993aa20ded3e4b8be2cc526a", + "filesize": 27231768, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2902, + "fields": { + "created": "2020-05-19T09:31:46.379Z", + "updated": "2020-05-19T09:31:46.397Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "390-b1-Windows-x86-web-based-installer", + "os": 1, + "release": 436, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "538c5c9e7eff65b22244ddc3071694c1", + "filesize": 1325800, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2903, + "fields": { + "created": "2020-05-19T09:31:46.474Z", + "updated": "2020-05-19T09:31:46.482Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "390-b1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 436, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6773f81c723389b83577c1aa27c47844", + "filesize": 8386898, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2904, + "fields": { + "created": "2020-05-19T09:31:46.580Z", + "updated": "2020-05-19T09:31:46.594Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "390-b1-Windows-help-file", + "os": 1, + "release": 436, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python390b1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python390b1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d5cb032509efa2142e950fcb67b0f403", + "filesize": 8758733, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2905, + "fields": { + "created": "2020-05-19T09:31:46.681Z", + "updated": "2020-05-19T09:31:46.690Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "390-b1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 436, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e5190043b3646c92dc3ac7aebcded11a", + "filesize": 7579121, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2906, + "fields": { + "created": "2020-05-19T09:31:46.779Z", + "updated": "2020-05-19T09:31:46.787Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "390-b1-macOS-64-bit-installer", + "os": 2, + "release": 436, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "19a6ff889c8dfa83af7eaa3235a75f59", + "filesize": 30026722, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2907, + "fields": { + "created": "2020-05-19T09:31:46.881Z", + "updated": "2020-05-19T09:31:46.898Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "390-b1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 436, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "10293de2cb51f2171a60494dab50e759", + "filesize": 1364112, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2908, + "fields": { + "created": "2020-05-19T09:31:46.973Z", + "updated": "2020-05-19T09:31:46.982Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "390-b1-XZ-compressed-source-tarball", + "os": 3, + "release": 436, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0001c61e8dc664f19249c7af05e966f8", + "filesize": 18443584, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2909, + "fields": { + "created": "2020-05-19T09:31:47.054Z", + "updated": "2020-05-19T09:31:47.062Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "390-b1-Gzipped-source-tarball", + "os": 3, + "release": 436, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ad2fff4612992c1b3058aa815d019427", + "filesize": 24901846, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2910, + "fields": { + "created": "2020-05-19T09:31:47.124Z", + "updated": "2020-05-19T09:31:47.131Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "390-b1-Windows-x86-64-executable-installer", + "os": 1, + "release": 436, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7f86d52a006ffe1b676797c16af82750", + "filesize": 28293512, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2911, + "fields": { + "created": "2020-06-09T00:34:34.448Z", + "updated": "2020-06-09T00:34:34.463Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "390-b2-macOS-64-bit-installer", + "os": 2, + "release": 437, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b2-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b2-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "04b0ccd02410d5159dc61e0042a38f00", + "filesize": 30087518, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2912, + "fields": { + "created": "2020-06-09T00:34:34.575Z", + "updated": "2020-06-09T00:34:34.586Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "390-b2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 437, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "422948a792db1a60af26719d4fde826c", + "filesize": 7566879, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2913, + "fields": { + "created": "2020-06-09T00:34:34.687Z", + "updated": "2020-06-09T00:34:34.760Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "390-b2-Windows-x86-64-executable-installer", + "os": 1, + "release": 437, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "95123336ff98ff84c1fa57a96e6b78e2", + "filesize": 28272016, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2914, + "fields": { + "created": "2020-06-09T00:34:34.847Z", + "updated": "2020-06-09T00:34:34.859Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "390-b2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 437, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1361a6fad1598261b2103750a927c73f", + "filesize": 1364128, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2915, + "fields": { + "created": "2020-06-09T00:34:34.957Z", + "updated": "2020-06-09T00:34:35.001Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "390-b2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 437, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3047b07e643a627a8eddadbea4e6616a", + "filesize": 8386639, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2916, + "fields": { + "created": "2020-06-09T00:34:35.090Z", + "updated": "2020-06-09T00:34:35.098Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "390-b2-Windows-help-file", + "os": 1, + "release": 437, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python390b2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python390b2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6f011ca693197ed8fef8a0be51587e15", + "filesize": 8730045, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2917, + "fields": { + "created": "2020-06-09T00:34:35.188Z", + "updated": "2020-06-09T00:34:35.207Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "390-b2-XZ-compressed-source-tarball", + "os": 3, + "release": 437, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9b0f2bb0884e400698f63abb5ebeabe7", + "filesize": 18489152, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2918, + "fields": { + "created": "2020-06-09T00:34:35.279Z", + "updated": "2020-06-09T00:34:35.288Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "390-b2-Windows-x86-web-based-installer", + "os": 1, + "release": 437, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b1e3f9f19758bdb3236606499da15293", + "filesize": 1328216, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2919, + "fields": { + "created": "2020-06-09T00:34:35.388Z", + "updated": "2020-06-09T00:34:35.414Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "390-b2-Windows-x86-executable-installer", + "os": 1, + "release": 437, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "58e454fdb1951b7835938778c0239efb", + "filesize": 27192896, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2920, + "fields": { + "created": "2020-06-09T00:34:35.498Z", + "updated": "2020-06-09T00:34:35.512Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "390-b2-Gzipped-source-tarball", + "os": 3, + "release": 437, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "187dc8b58256e988b6bd15de69942a00", + "filesize": 24930138, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2921, + "fields": { + "created": "2020-06-09T21:27:20.196Z", + "updated": "2020-06-09T21:27:20.205Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "390-b3-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 438, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "811f16e964aac9bb191cd5f974feb4bd", + "filesize": 8389368, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2922, + "fields": { + "created": "2020-06-09T21:27:20.276Z", + "updated": "2020-06-09T21:27:20.288Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "390-b3-Gzipped-source-tarball", + "os": 3, + "release": 438, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8afa74ec98580c2467e42d4029afb7e5", + "filesize": 24932540, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2923, + "fields": { + "created": "2020-06-09T21:27:20.358Z", + "updated": "2020-06-09T21:27:20.366Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "390-b3-Windows-x86-web-based-installer", + "os": 1, + "release": 438, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b3-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b3-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "13c315af8abed8a0e047b3582edeb475", + "filesize": 1328224, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2924, + "fields": { + "created": "2020-06-09T21:27:20.440Z", + "updated": "2020-06-09T21:27:20.452Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "390-b3-Windows-x86-64-web-based-installer", + "os": 1, + "release": 438, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b3-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b3-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d4d954b9e9dd37f9667f0bd764c52a79", + "filesize": 1364112, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2925, + "fields": { + "created": "2020-06-09T21:27:20.527Z", + "updated": "2020-06-09T21:27:20.537Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "390-b3-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 438, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f0e18f5781f782acdce28957cd55beb7", + "filesize": 7567872, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2926, + "fields": { + "created": "2020-06-09T21:27:20.618Z", + "updated": "2020-06-09T21:27:20.629Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "390-b3-macOS-64-bit-installer", + "os": 2, + "release": 438, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b3-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b3-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a3ec5e297a4c16f7891312b1dade51f5", + "filesize": 30093469, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2927, + "fields": { + "created": "2020-06-09T21:27:20.707Z", + "updated": "2020-06-09T21:27:20.713Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "390-b3-Windows-help-file", + "os": 1, + "release": 438, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python390b3.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python390b3.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "43a26a217d4db2e7cc858c4ba854cf2f", + "filesize": 8729829, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2928, + "fields": { + "created": "2020-06-09T21:27:20.785Z", + "updated": "2020-06-09T21:27:20.790Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "390-b3-Windows-x86-64-executable-installer", + "os": 1, + "release": 438, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3923d3b90d6ae0e64c0ac275b23c9c8f", + "filesize": 28275968, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2929, + "fields": { + "created": "2020-06-09T21:27:20.864Z", + "updated": "2020-06-09T21:27:20.872Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "390-b3-XZ-compressed-source-tarball", + "os": 3, + "release": 438, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "09dd89caded1661ddebec6475d945c6f", + "filesize": 18518204, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2930, + "fields": { + "created": "2020-06-09T21:27:20.951Z", + "updated": "2020-06-09T21:27:20.971Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "390-b3-Windows-x86-executable-installer", + "os": 1, + "release": 438, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ed05c9007a0b4f0d9c703bba2429d94b", + "filesize": 27189912, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2931, + "fields": { + "created": "2020-06-17T23:25:52.901Z", + "updated": "2020-06-17T23:25:52.911Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3611-rc1-Gzipped-source-tarball", + "os": 3, + "release": 439, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.11/Python-3.6.11rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.11/Python-3.6.11rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ae9b9913a7f0a7edb3c670d062563f02", + "filesize": 23025536, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2932, + "fields": { + "created": "2020-06-17T23:25:53.027Z", + "updated": "2020-06-17T23:25:53.048Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3611-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 439, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.11/Python-3.6.11rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.11/Python-3.6.11rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "719e18402a2fe47b5dcecdefa0fcd62c", + "filesize": 17214400, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2933, + "fields": { + "created": "2020-06-17T23:26:06.347Z", + "updated": "2020-06-17T23:26:06.375Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "378-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 440, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.8/python-3.7.8rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/python-3.7.8rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0968784a4dff4799af1da9416a219221", + "filesize": 25974824, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2934, + "fields": { + "created": "2020-06-17T23:26:06.464Z", + "updated": "2020-06-17T23:26:06.472Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "378-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 440, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.8/python-3.7.8rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/python-3.7.8rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4815428183bb12286eda2a23135de1a8", + "filesize": 6765321, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2935, + "fields": { + "created": "2020-06-17T23:26:06.548Z", + "updated": "2020-06-17T23:26:06.563Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "378-rc1-Gzipped-source-tarball", + "os": 3, + "release": 440, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.8/Python-3.7.8rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/Python-3.7.8rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ee80f7f69207cd7747ab35e8242090fe", + "filesize": 23278362, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2936, + "fields": { + "created": "2020-06-17T23:26:06.633Z", + "updated": "2020-06-17T23:26:06.641Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "378-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 440, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.8/python-3.7.8rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/python-3.7.8rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4a5c73047d3643e1e498508c779d5c1e", + "filesize": 1325328, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2937, + "fields": { + "created": "2020-06-17T23:26:06.724Z", + "updated": "2020-06-17T23:26:06.740Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "378-rc1-macOS-64-bit-installer", + "os": 2, + "release": 440, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.8/python-3.7.8rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/python-3.7.8rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cb81db27ad3c3a43c24b9b96b340ea7f", + "filesize": 29304374, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2938, + "fields": { + "created": "2020-06-17T23:26:06.826Z", + "updated": "2020-06-17T23:26:06.839Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "378-rc1-Windows-help-file", + "os": 1, + "release": 440, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.8/python378rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/python378rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "31a0d522d76487f2c80aa529483431b4", + "filesize": 8189260, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2939, + "fields": { + "created": "2020-06-17T23:26:06.914Z", + "updated": "2020-06-17T23:26:06.921Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "378-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 440, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.8/python-3.7.8rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/python-3.7.8rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bd94564dcf6cd88c2b90c404f9c3d8c3", + "filesize": 1363096, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2940, + "fields": { + "created": "2020-06-17T23:26:06.995Z", + "updated": "2020-06-17T23:26:07.006Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "378-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 440, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.8/python-3.7.8rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/python-3.7.8rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3d52710075d9fbcb35dab5b9df0bf7c0", + "filesize": 7536720, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2941, + "fields": { + "created": "2020-06-17T23:26:07.095Z", + "updated": "2020-06-17T23:26:07.109Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "378-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 440, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.8/python-3.7.8rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/python-3.7.8rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bcda1ba3380235d6c2b6076ff1b87466", + "filesize": 26999048, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2942, + "fields": { + "created": "2020-06-17T23:26:07.193Z", + "updated": "2020-06-17T23:26:07.199Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "378-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 440, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.8/Python-3.7.8rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/Python-3.7.8rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "20ecde3ff4a7e3e194f0e040269374e0", + "filesize": 17394996, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2943, + "fields": { + "created": "2020-06-27T12:07:06.300Z", + "updated": "2020-06-27T12:07:06.317Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3611-Gzipped-source-tarball", + "os": 3, + "release": 441, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.11/Python-3.6.11.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.11/Python-3.6.11.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "74763db01ec961ff194eea9ccc001a80", + "filesize": 23023073, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2944, + "fields": { + "created": "2020-06-27T12:07:06.404Z", + "updated": "2020-06-27T12:07:06.417Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3611-XZ-compressed-source-tarball", + "os": 3, + "release": 441, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.11/Python-3.6.11.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.11/Python-3.6.11.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8f91c770b546a4938efbdb3064796c6c", + "filesize": 17213036, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2945, + "fields": { + "created": "2020-06-28T12:40:01.590Z", + "updated": "2020-06-28T12:40:01.600Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "378-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 442, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.8/python-3.7.8-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/python-3.7.8-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5f0f83433bd57fa55182cb8ea42d43d6", + "filesize": 6765162, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2946, + "fields": { + "created": "2020-06-28T12:40:01.672Z", + "updated": "2020-06-28T12:40:01.686Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "378-Gzipped-source-tarball", + "os": 3, + "release": 442, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.8/Python-3.7.8.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/Python-3.7.8.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4d5b16e8c15be38eb0f4b8f04eb68cd0", + "filesize": 23276116, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2947, + "fields": { + "created": "2020-06-28T12:40:01.764Z", + "updated": "2020-06-28T12:40:01.773Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "378-Windows-help-file", + "os": 1, + "release": 442, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.8/python378.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/python378.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "65bb54986e5a921413e179d2211b9bfb", + "filesize": 8186659, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2948, + "fields": { + "created": "2020-06-28T12:40:01.853Z", + "updated": "2020-06-28T12:40:01.892Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "378-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 442, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.8/python-3.7.8-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/python-3.7.8-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5ae191973e00ec490cf2a93126ce4d89", + "filesize": 7536190, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2949, + "fields": { + "created": "2020-06-28T12:40:01.975Z", + "updated": "2020-06-28T12:40:01.986Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "378-macOS-64-bit-installer", + "os": 2, + "release": 442, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.8/python-3.7.8-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/python-3.7.8-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2819435f3144fd973d3dea4ae6969f6d", + "filesize": 29303677, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2950, + "fields": { + "created": "2020-06-28T12:40:02.063Z", + "updated": "2020-06-28T12:40:02.073Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "378-Windows-x86-64-web-based-installer", + "os": 1, + "release": 442, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.8/python-3.7.8-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/python-3.7.8-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b07dbb998a4a0372f6923185ebb6bf3e", + "filesize": 1363056, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2951, + "fields": { + "created": "2020-06-28T12:40:02.163Z", + "updated": "2020-06-28T12:40:02.175Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "378-Windows-x86-web-based-installer", + "os": 1, + "release": 442, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.8/python-3.7.8-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/python-3.7.8-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "642e566f4817f118abc38578f3cc4e69", + "filesize": 1324944, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2952, + "fields": { + "created": "2020-06-28T12:40:02.261Z", + "updated": "2020-06-28T12:40:02.272Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "378-Windows-x86-executable-installer", + "os": 1, + "release": 442, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.8/python-3.7.8.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/python-3.7.8.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4a9244c57f61e3ad2803e900a2f75d77", + "filesize": 25974352, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2953, + "fields": { + "created": "2020-06-28T12:40:02.353Z", + "updated": "2020-06-28T12:40:02.368Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "378-XZ-compressed-source-tarball", + "os": 3, + "release": 442, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.8/Python-3.7.8.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/Python-3.7.8.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a224ef2249a18824f48fba9812f4006f", + "filesize": 17399552, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2954, + "fields": { + "created": "2020-06-28T12:40:02.443Z", + "updated": "2020-06-28T12:40:02.451Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "378-Windows-x86-64-executable-installer", + "os": 1, + "release": 442, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.8/python-3.7.8-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.8/python-3.7.8-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "70b08ab8e75941da7f5bf2b9be58b945", + "filesize": 26993432, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2955, + "fields": { + "created": "2020-06-30T15:49:30.024Z", + "updated": "2020-06-30T15:49:30.180Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "384-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 443, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.4/python-3.8.4rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/python-3.8.4rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c98f36f8c78b4b1ba1eb0bcf693b4eca", + "filesize": 27877184, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2956, + "fields": { + "created": "2020-06-30T15:49:30.313Z", + "updated": "2020-06-30T15:49:30.322Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "384-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 443, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.4/python-3.8.4rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/python-3.8.4rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1bd4d5234503fb029031747726524382", + "filesize": 8174259, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2957, + "fields": { + "created": "2020-06-30T15:49:30.410Z", + "updated": "2020-06-30T15:49:30.470Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "384-rc1-Gzipped-source-tarball", + "os": 3, + "release": 443, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.4/Python-3.8.4rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/Python-3.8.4rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2f969b647039d5033a6b4a386805b5da", + "filesize": 24150105, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2958, + "fields": { + "created": "2020-06-30T15:49:30.595Z", + "updated": "2020-06-30T15:49:30.610Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "384-rc1-Windows-help-file", + "os": 1, + "release": 443, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.4/python384rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/python384rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c29e1837ec7be22144d1774f7b9063b8", + "filesize": 8530914, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2959, + "fields": { + "created": "2020-06-30T15:49:30.683Z", + "updated": "2020-06-30T15:49:30.693Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "384-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 443, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.4/Python-3.8.4rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/Python-3.8.4rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "176bb52bb03eb2b51059022c5f179e09", + "filesize": 18012048, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2960, + "fields": { + "created": "2020-06-30T15:49:30.804Z", + "updated": "2020-06-30T15:49:30.829Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "384-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 443, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.4/python-3.8.4rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/python-3.8.4rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "65d002fb34c2e85bc4d4daa8e73bb4eb", + "filesize": 26781528, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2961, + "fields": { + "created": "2020-06-30T15:49:30.944Z", + "updated": "2020-06-30T15:49:30.969Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "384-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 443, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.4/python-3.8.4rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/python-3.8.4rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "04dd1388715a01c08769257a0e7df6fa", + "filesize": 1328688, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2962, + "fields": { + "created": "2020-06-30T15:49:31.057Z", + "updated": "2020-06-30T15:49:31.082Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "384-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 443, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.4/python-3.8.4rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/python-3.8.4rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6955b01cff172ffff5cd3d8ebd37a6d9", + "filesize": 7306399, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2963, + "fields": { + "created": "2020-06-30T15:49:31.158Z", + "updated": "2020-06-30T15:49:31.166Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "384-rc1-macOS-64-bit-installer", + "os": 2, + "release": 443, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.4/python-3.8.4rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/python-3.8.4rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6918febde4a7e323d2c0a9c555455ed5", + "filesize": 30232779, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2964, + "fields": { + "created": "2020-06-30T15:49:31.240Z", + "updated": "2020-06-30T15:49:31.247Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "384-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 443, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.4/python-3.8.4rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/python-3.8.4rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "55d2098b6bde6585952fb67fb8ebd4fe", + "filesize": 1364112, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2965, + "fields": { + "created": "2020-07-03T17:14:10.302Z", + "updated": "2020-07-03T17:14:10.318Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "390-b4-Windows-help-file", + "os": 1, + "release": 444, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python390b4.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python390b4.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2daccbb69f7d0fb6398be70f63fe85fb", + "filesize": 8731717, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2966, + "fields": { + "created": "2020-07-03T17:14:10.390Z", + "updated": "2020-07-03T17:14:10.397Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "390-b4-Windows-x86-64-web-based-installer", + "os": 1, + "release": 444, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b4-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b4-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4dd6b84dd8068250d2018508f7708950", + "filesize": 1364464, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2967, + "fields": { + "created": "2020-07-03T17:14:10.476Z", + "updated": "2020-07-03T17:14:10.482Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "390-b4-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 444, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "09a598d0af4e9a5710f7a328484850e4", + "filesize": 7555411, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2968, + "fields": { + "created": "2020-07-03T17:14:10.553Z", + "updated": "2020-07-03T17:14:10.566Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "390-b4-Windows-x86-executable-installer", + "os": 1, + "release": 444, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "01bb9cab4d9ebb9062395c2c4bbed938", + "filesize": 27288800, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2969, + "fields": { + "created": "2020-07-03T17:14:10.655Z", + "updated": "2020-07-03T17:14:10.665Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "390-b4-XZ-compressed-source-tarball", + "os": 3, + "release": 444, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3c9f7aea301d27790c82df06ecce8850", + "filesize": 18602256, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2970, + "fields": { + "created": "2020-07-03T17:14:10.741Z", + "updated": "2020-07-03T17:14:10.748Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "390-b4-Windows-x86-64-executable-installer", + "os": 1, + "release": 444, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "22a373c859b02664816852bd9c85d042", + "filesize": 28367704, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2971, + "fields": { + "created": "2020-07-03T17:14:10.831Z", + "updated": "2020-07-03T17:14:10.845Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "390-b4-Windows-x86-web-based-installer", + "os": 1, + "release": 444, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b4-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b4-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "510e6d8814bb2d63915c0bcb1ec9a4b0", + "filesize": 1328456, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2972, + "fields": { + "created": "2020-07-03T17:14:10.918Z", + "updated": "2020-07-03T17:14:10.925Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "390-b4-macOS-64-bit-installer", + "os": 2, + "release": 444, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b4-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b4-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "365dc1d4b6390a6fa679d739b5b68c7e", + "filesize": 30186810, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2973, + "fields": { + "created": "2020-07-03T17:14:10.999Z", + "updated": "2020-07-03T17:14:11.008Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "390-b4-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 444, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "35fdd9bc10fe2d6bfb13beae52407243", + "filesize": 8383310, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2974, + "fields": { + "created": "2020-07-03T17:14:11.080Z", + "updated": "2020-07-03T17:14:11.095Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "390-b4-Gzipped-source-tarball", + "os": 3, + "release": 444, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "87fb911cbf7ac06819e016d6c04a448d", + "filesize": 25023724, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2975, + "fields": { + "created": "2020-07-13T20:44:35.413Z", + "updated": "2020-07-13T20:44:35.423Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "384-macOS-64-bit-installer", + "os": 2, + "release": 445, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.4/python-3.8.4-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/python-3.8.4-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8464bc5341d3444b2ccad001d88b752b", + "filesize": 30231094, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2976, + "fields": { + "created": "2020-07-13T20:44:35.497Z", + "updated": "2020-07-13T20:44:35.507Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "384-Windows-x86-64-web-based-installer", + "os": 1, + "release": 445, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.4/python-3.8.4-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/python-3.8.4-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7c382afb4d8faa0a82973e44caf02949", + "filesize": 1364112, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2977, + "fields": { + "created": "2020-07-13T20:44:35.586Z", + "updated": "2020-07-13T20:44:35.596Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "384-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 445, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.4/python-3.8.4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/python-3.8.4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "910c307f58282aaa88a2e9df38083ed2", + "filesize": 7305457, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2978, + "fields": { + "created": "2020-07-13T20:44:35.670Z", + "updated": "2020-07-13T20:44:35.677Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "384-Gzipped-source-tarball", + "os": 3, + "release": 445, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.4/Python-3.8.4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/Python-3.8.4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "387e63fe42c40a29e3408ce231315516", + "filesize": 24151047, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2979, + "fields": { + "created": "2020-07-13T20:44:35.748Z", + "updated": "2020-07-13T20:44:35.757Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "384-XZ-compressed-source-tarball", + "os": 3, + "release": 445, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.4/Python-3.8.4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/Python-3.8.4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e16df33cd7b58702e57e137f8f5d13e7", + "filesize": 18020412, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2980, + "fields": { + "created": "2020-07-13T20:44:37.349Z", + "updated": "2020-07-13T20:44:37.363Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "384-Windows-x86-executable-installer", + "os": 1, + "release": 445, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.4/python-3.8.4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/python-3.8.4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c3d71a80f518cfba4d038de53bca2734", + "filesize": 26781976, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 2981, + "fields": { + "created": "2020-07-13T20:44:37.447Z", + "updated": "2020-07-13T20:44:37.462Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "384-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 445, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.4/python-3.8.4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/python-3.8.4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c68f60422a0e43dabf54b84a0e92ed6a", + "filesize": 8170006, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2982, + "fields": { + "created": "2020-07-13T20:44:37.534Z", + "updated": "2020-07-13T20:44:37.544Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "384-Windows-x86-web-based-installer", + "os": 1, + "release": 445, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.4/python-3.8.4-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/python-3.8.4-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "075a93add0ac3d070b113f71442ace37", + "filesize": 1328184, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2983, + "fields": { + "created": "2020-07-13T20:44:37.624Z", + "updated": "2020-07-13T20:44:37.630Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "384-Windows-help-file", + "os": 1, + "release": 445, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.4/python384.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/python384.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bf7942cdd74f34aa4f485730a714cc47", + "filesize": 8529593, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 2984, + "fields": { + "created": "2020-07-13T20:44:37.708Z", + "updated": "2020-07-13T20:44:37.719Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "384-Windows-x86-64-executable-installer", + "os": 1, + "release": 445, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.4/python-3.8.4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.4/python-3.8.4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "12297fb08088d1002f7e93a93fd779c6", + "filesize": 27866224, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3008, + "fields": { + "created": "2020-07-20T17:15:17.508Z", + "updated": "2020-07-20T17:15:17.517Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "385-Windows-x86-64-web-based-installer", + "os": 1, + "release": 478, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.5/python-3.8.5-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.5/python-3.8.5-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eeab52a08398a009c90189248ff43dac", + "filesize": 1364128, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3009, + "fields": { + "created": "2020-07-20T17:15:17.625Z", + "updated": "2020-07-20T17:15:17.634Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "385-XZ-compressed-source-tarball", + "os": 3, + "release": 478, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "35b5a3d0254c1c59be9736373d429db7", + "filesize": 18019640, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3010, + "fields": { + "created": "2020-07-20T17:15:18.010Z", + "updated": "2020-07-20T17:15:18.020Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "385-Gzipped-source-tarball", + "os": 3, + "release": 478, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e2f52bcf531c8cc94732c0b6ff933ff0", + "filesize": 24149103, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3011, + "fields": { + "created": "2020-07-20T17:15:18.201Z", + "updated": "2020-07-20T17:15:18.215Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "385-Windows-help-file", + "os": 1, + "release": 478, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.5/python385.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.5/python385.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3079d9cf19ac09d7b3e5eb3fb05581c4", + "filesize": 8528031, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3012, + "fields": { + "created": "2020-07-20T17:15:18.316Z", + "updated": "2020-07-20T17:15:18.324Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "385-Windows-x86-executable-installer", + "os": 1, + "release": 478, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.5/python-3.8.5.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.5/python-3.8.5.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "959873b37b74c1508428596b7f9df151", + "filesize": 26777232, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3013, + "fields": { + "created": "2020-07-20T17:15:18.434Z", + "updated": "2020-07-20T17:15:18.442Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "385-Windows-x86-web-based-installer", + "os": 1, + "release": 478, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.5/python-3.8.5-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.5/python-3.8.5-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c813e6671f334a269e669d913b1f9b0d", + "filesize": 1328184, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3014, + "fields": { + "created": "2020-07-20T17:15:18.532Z", + "updated": "2020-07-20T17:15:18.539Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "385-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 478, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.5/python-3.8.5-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.5/python-3.8.5-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bc354669bffd81a4ca14f06817222e50", + "filesize": 7305731, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3015, + "fields": { + "created": "2020-07-20T17:15:18.632Z", + "updated": "2020-07-20T17:15:18.653Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "385-macOS-64-bit-installer", + "os": 2, + "release": 478, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.5/python-3.8.5-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.5/python-3.8.5-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2f8a736eeb307a27f1998cfd07f22440", + "filesize": 30238024, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3016, + "fields": { + "created": "2020-07-20T17:15:18.758Z", + "updated": "2020-07-20T17:15:18.764Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "385-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 478, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.5/python-3.8.5-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.5/python-3.8.5-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "73bd7aab047b81f83e473efb5d5652a0", + "filesize": 8168581, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3017, + "fields": { + "created": "2020-07-20T17:15:18.854Z", + "updated": "2020-07-20T17:15:18.863Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "385-Windows-x86-64-executable-installer", + "os": 1, + "release": 478, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.5/python-3.8.5-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.5/python-3.8.5-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0ba2e9ca29b719da6e0b81f7f33f08f6", + "filesize": 27864320, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3027, + "fields": { + "created": "2020-07-20T19:06:16.686Z", + "updated": "2020-07-20T19:06:16.694Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "390-b5-Windows-x86-64-web-based-installer", + "os": 1, + "release": 479, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b5-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b5-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3caa20c22a8fb4d38bd2b2f2825cc8db", + "filesize": 1364448, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3028, + "fields": { + "created": "2020-07-20T19:06:16.765Z", + "updated": "2020-07-20T19:06:16.772Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "390-b5-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 479, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b5-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b5-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b8724cf9410dcbba2eddaf0c70d98728", + "filesize": 8382217, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3029, + "fields": { + "created": "2020-07-20T19:06:16.852Z", + "updated": "2020-07-20T19:06:16.861Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "390-b5-Windows-help-file", + "os": 1, + "release": 479, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python390b5.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python390b5.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "56c416efd1e14f32625f9a1929deca8f", + "filesize": 8730975, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3030, + "fields": { + "created": "2020-07-20T19:06:16.946Z", + "updated": "2020-07-20T19:06:16.975Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "390-b5-Windows-x86-executable-installer", + "os": 1, + "release": 479, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b5.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b5.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "07e55f955639b6bda42c8907f365f854", + "filesize": 27284896, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3031, + "fields": { + "created": "2020-07-20T19:06:17.064Z", + "updated": "2020-07-20T19:06:17.079Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "390-b5-Windows-x86-web-based-installer", + "os": 1, + "release": 479, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b5-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b5-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ed87eaada9776196f35f83e0f03b12e3", + "filesize": 1328496, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3032, + "fields": { + "created": "2020-07-20T19:06:17.159Z", + "updated": "2020-07-20T19:06:17.168Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "390-b5-XZ-compressed-source-tarball", + "os": 3, + "release": 479, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b5.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1f66c49ba74307cdc70754ddbb88e7f9", + "filesize": 18588472, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3033, + "fields": { + "created": "2020-07-20T19:06:17.244Z", + "updated": "2020-07-20T19:06:17.255Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "390-b5-Gzipped-source-tarball", + "os": 3, + "release": 479, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0b5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bd8ded2aa53082f15c467063bc14096b", + "filesize": 25024809, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3034, + "fields": { + "created": "2020-07-20T19:06:17.341Z", + "updated": "2020-07-20T19:06:17.367Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "390-b5-Windows-x86-64-executable-installer", + "os": 1, + "release": 479, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b5-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b5-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3780e3bc9afdad905723edeed5fd12fc", + "filesize": 28369960, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3035, + "fields": { + "created": "2020-07-20T19:06:17.455Z", + "updated": "2020-07-20T19:06:17.472Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "390-b5-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 479, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b5-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b5-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "82f184ef6041794723a0945fc9ead994", + "filesize": 7547003, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3036, + "fields": { + "created": "2020-07-20T19:06:17.572Z", + "updated": "2020-07-20T19:06:17.579Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "390-b5-macOS-64-bit-installer", + "os": 2, + "release": 479, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b5-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0b5-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3f6f5efd8fd90d793a7e40c6be28b403", + "filesize": 29417507, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3037, + "fields": { + "created": "2020-08-11T21:25:27.570Z", + "updated": "2020-08-11T21:25:27.587Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "390-rc1-macOS-64-bit-installer", + "os": 2, + "release": 480, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0297dcb8f82ae5f27f8b4bff1613e994", + "filesize": 29640671, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3038, + "fields": { + "created": "2020-08-11T21:25:27.666Z", + "updated": "2020-08-11T21:25:27.675Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "390-rc1-Gzipped-source-tarball", + "os": 3, + "release": 480, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f98d8ac7c8b2bf3fd887d989dbb0f2b8", + "filesize": 25247669, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3039, + "fields": { + "created": "2020-08-11T21:25:27.754Z", + "updated": "2020-08-11T21:25:27.767Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "390-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 480, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "636807ae74e4314dca2f8bbbdbdf2684", + "filesize": 8384341, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3040, + "fields": { + "created": "2020-08-11T21:25:27.869Z", + "updated": "2020-08-11T21:25:27.886Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "390-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 480, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9e4daceb329431ae83f39216ef1e2e26", + "filesize": 7550372, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3041, + "fields": { + "created": "2020-08-11T21:25:27.976Z", + "updated": "2020-08-11T21:25:27.988Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "390-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 480, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ad2f7849189581dedbb7dcf163717c46", + "filesize": 26978744, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3042, + "fields": { + "created": "2020-08-11T21:25:28.088Z", + "updated": "2020-08-11T21:25:28.095Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "390-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 480, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "835f3cb29e4065b9a2dea1c7b9bfc37f", + "filesize": 18798364, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3043, + "fields": { + "created": "2020-08-11T21:25:28.175Z", + "updated": "2020-08-11T21:25:28.207Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "390-rc1-Windows-help-file", + "os": 1, + "release": 480, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python390rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python390rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4d6fd98c7cc1ce8525e5c66a0a5eb9e0", + "filesize": 8734372, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3044, + "fields": { + "created": "2020-08-11T21:25:28.293Z", + "updated": "2020-08-11T21:25:28.307Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "390-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 480, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ab79535243e9834a0ee15cfe109a77ee", + "filesize": 1328400, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3045, + "fields": { + "created": "2020-08-11T21:25:30.007Z", + "updated": "2020-08-11T21:25:30.016Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "390-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 480, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ba2192e04064e3bb846e130cc00bd7cd", + "filesize": 28072336, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3046, + "fields": { + "created": "2020-08-11T21:25:30.106Z", + "updated": "2020-08-11T21:25:30.128Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "390-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 480, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f35f63685c76fe946c53bb5a716f159a", + "filesize": 1363840, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3047, + "fields": { + "created": "2020-08-17T21:38:18.822Z", + "updated": "2020-08-17T21:38:18.832Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3612-XZ-compressed-source-tarball", + "os": 3, + "release": 481, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.12/Python-3.6.12.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.12/Python-3.6.12.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9ca8ca6f206e9ac0f0726ecb4ebb6e2c", + "filesize": 17202980, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3048, + "fields": { + "created": "2020-08-17T21:38:18.905Z", + "updated": "2020-08-17T21:38:18.919Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3612-Gzipped-source-tarball", + "os": 3, + "release": 481, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.12/Python-3.6.12.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.12/Python-3.6.12.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "00c3346f314072fcc810d4a51d06f04e", + "filesize": 23020014, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3049, + "fields": { + "created": "2020-08-17T22:10:02.224Z", + "updated": "2020-08-17T22:10:02.243Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "379-Gzipped-source-tarball", + "os": 3, + "release": 482, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bcd9f22cf531efc6f06ca6b9b2919bd4", + "filesize": 23277790, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3050, + "fields": { + "created": "2020-08-17T22:10:02.392Z", + "updated": "2020-08-17T22:10:02.401Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "379-Windows-x86-64-executable-installer", + "os": 1, + "release": 482, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.9/python-3.7.9-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.9/python-3.7.9-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7083fed513c3c9a4ea655211df9ade27", + "filesize": 26940592, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3051, + "fields": { + "created": "2020-08-17T22:10:02.530Z", + "updated": "2020-08-17T22:10:02.540Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "379-Windows-x86-web-based-installer", + "os": 1, + "release": 482, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.9/python-3.7.9-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.9/python-3.7.9-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "22f68f09e533c4940fc006e035f08aa2", + "filesize": 1319904, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3052, + "fields": { + "created": "2020-08-17T22:10:02.652Z", + "updated": "2020-08-17T22:10:02.659Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "379-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 482, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.9/python-3.7.9-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.9/python-3.7.9-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "97c6558d479dc53bf448580b66ad7c1e", + "filesize": 6659999, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3053, + "fields": { + "created": "2020-08-17T22:10:02.811Z", + "updated": "2020-08-17T22:10:02.818Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "379-Windows-help-file", + "os": 1, + "release": 482, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.9/python379.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.9/python379.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1094c8d9438ad1adc263ca57ceb3b927", + "filesize": 8186795, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3054, + "fields": { + "created": "2020-08-17T22:10:03.009Z", + "updated": "2020-08-17T22:10:03.028Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "379-macOS-64-bit-installer", + "os": 2, + "release": 482, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.9/python-3.7.9-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.9/python-3.7.9-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4b544fc0ac8c3cffdb67dede23ddb79e", + "filesize": 29305353, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3055, + "fields": { + "created": "2020-08-17T22:10:03.094Z", + "updated": "2020-08-17T22:10:03.101Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "379-Windows-x86-64-web-based-installer", + "os": 1, + "release": 482, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.9/python-3.7.9-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.9/python-3.7.9-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "da0b17ae84d6579f8df3eb24927fd825", + "filesize": 1348904, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3056, + "fields": { + "created": "2020-08-17T22:10:03.222Z", + "updated": "2020-08-17T22:10:03.228Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "379-Windows-x86-executable-installer", + "os": 1, + "release": 482, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.9/python-3.7.9.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.9/python-3.7.9.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1e6d31c98c68c723541f0821b3c15d52", + "filesize": 25875560, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3057, + "fields": { + "created": "2020-08-17T22:10:03.330Z", + "updated": "2020-08-17T22:10:03.338Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "379-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 482, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.7.9/python-3.7.9-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.9/python-3.7.9-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "60f77740b30030b22699dbd14883a4a3", + "filesize": 7502379, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3058, + "fields": { + "created": "2020-08-17T22:10:03.470Z", + "updated": "2020-08-17T22:10:03.481Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "379-XZ-compressed-source-tarball", + "os": 3, + "release": 482, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "389d3ed26b4d97c741d9e5423da1f43b", + "filesize": 17389636, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3059, + "fields": { + "created": "2020-08-22T03:22:40.177Z", + "updated": "2020-08-22T03:22:40.186Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3510-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 483, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.10/Python-3.5.10rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.10/Python-3.5.10rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0188dfb31c054fdf7291875455b879d7", + "filesize": 15375380, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3060, + "fields": { + "created": "2020-08-22T03:22:40.268Z", + "updated": "2020-08-22T03:22:40.274Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3510-rc1-Gzipped-source-tarball", + "os": 3, + "release": 483, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.10/Python-3.5.10rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.10/Python-3.5.10rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8ef128238acc5872b6100da0ab2359c1", + "filesize": 20792655, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3061, + "fields": { + "created": "2020-09-05T08:52:21.498Z", + "updated": "2020-09-05T08:52:21.508Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3510-XZ-compressed-source-tarball", + "os": 3, + "release": 484, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.10/Python-3.5.10.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.10/Python-3.5.10.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "75c9c268703654aa6f6f2ae67303dde4", + "filesize": 15385904, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3062, + "fields": { + "created": "2020-09-05T08:52:21.607Z", + "updated": "2020-09-05T08:52:21.616Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3510-Gzipped-source-tarball", + "os": 3, + "release": 484, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.5.10/Python-3.5.10.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.5.10/Python-3.5.10.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "01a2d18075243bef5ef3363f62bf3247", + "filesize": 20807565, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3063, + "fields": { + "created": "2020-09-08T21:26:54.049Z", + "updated": "2020-09-08T21:26:54.060Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "386-rc1-Windows-x86-64-executable-installer", + "os": 1, + "release": 485, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.6/python-3.8.6rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/python-3.8.6rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "35a2d2ba3f43f896744f6da6a2f0881d", + "filesize": 28076736, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3064, + "fields": { + "created": "2020-09-08T21:26:54.247Z", + "updated": "2020-09-08T21:26:54.256Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "386-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 485, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.6/Python-3.8.6rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/Python-3.8.6rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e1b1dca93aa966250d75b4deb2af663b", + "filesize": 18218180, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3065, + "fields": { + "created": "2020-09-08T21:26:54.438Z", + "updated": "2020-09-08T21:26:54.447Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "386-rc1-Windows-x86-executable-installer", + "os": 1, + "release": 485, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.6/python-3.8.6rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/python-3.8.6rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "84175f3e4c38555b770857b34b88f736", + "filesize": 26995424, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3066, + "fields": { + "created": "2020-09-08T21:26:54.622Z", + "updated": "2020-09-08T21:26:54.632Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "386-rc1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 485, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.6/python-3.8.6rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/python-3.8.6rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ad95d85622d5b6fdf371f38dc32c21bd", + "filesize": 8176414, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3067, + "fields": { + "created": "2020-09-08T21:26:54.795Z", + "updated": "2020-09-08T21:26:54.803Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "386-rc1-Gzipped-source-tarball", + "os": 3, + "release": 485, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.6/Python-3.8.6rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/Python-3.8.6rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ff57d63d0fac79e23dd15614bdeaaf5a", + "filesize": 24378191, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3068, + "fields": { + "created": "2020-09-08T21:26:57.287Z", + "updated": "2020-09-08T21:26:57.302Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "386-rc1-Windows-x86-web-based-installer", + "os": 1, + "release": 485, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.6/python-3.8.6rc1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/python-3.8.6rc1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bcb647bb46da0efcc20a381ded598528", + "filesize": 1328648, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3069, + "fields": { + "created": "2020-09-08T21:26:57.415Z", + "updated": "2020-09-08T21:26:57.425Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "386-rc1-macOS-64-bit-installer", + "os": 2, + "release": 485, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.6/python-3.8.6rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/python-3.8.6rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7d47b4ecbd2a0cbf6378fccf45dc93ea", + "filesize": 30462066, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3070, + "fields": { + "created": "2020-09-08T21:26:57.561Z", + "updated": "2020-09-08T21:26:57.573Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "386-rc1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 485, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.6/python-3.8.6rc1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/python-3.8.6rc1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "00fea54e5afb01826adae4070ec0a4ce", + "filesize": 1365856, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3071, + "fields": { + "created": "2020-09-08T21:26:57.708Z", + "updated": "2020-09-08T21:26:57.716Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "386-rc1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 485, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.6/python-3.8.6rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/python-3.8.6rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ca0922878d3100effd7a3f11287ccbf0", + "filesize": 7311613, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3072, + "fields": { + "created": "2020-09-08T21:26:57.834Z", + "updated": "2020-09-08T21:26:57.839Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "386-rc1-Windows-help-file", + "os": 1, + "release": 485, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.6/python386rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/python386rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7a240b3125464098170efd2bb448f485", + "filesize": 8533784, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3073, + "fields": { + "created": "2020-09-17T09:28:44.650Z", + "updated": "2020-09-17T09:28:44.657Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "390-rc2-Windows-help-file", + "os": 1, + "release": 486, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python390rc2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python390rc2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "05705e64e58d90636f6e72391228753c", + "filesize": 8743544, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3074, + "fields": { + "created": "2020-09-17T09:28:44.727Z", + "updated": "2020-09-17T09:28:44.745Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "390-rc2-XZ-compressed-source-tarball", + "os": 3, + "release": 486, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0rc2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0rc2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3e34e48b479f4beec2c0c80fdbde52a2", + "filesize": 18802576, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3075, + "fields": { + "created": "2020-09-17T09:28:44.833Z", + "updated": "2020-09-17T09:28:44.847Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "390-rc2-Windows-x86-executable-installer", + "os": 1, + "release": 486, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2685aa038fa2cfd8121fa32da18ef5ca", + "filesize": 26995584, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3076, + "fields": { + "created": "2020-09-17T09:28:44.910Z", + "updated": "2020-09-17T09:28:44.919Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "390-rc2-Windows-x86-web-based-installer", + "os": 1, + "release": 486, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "322fe6c122d6c1f27ab62b14086b351b", + "filesize": 1328336, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3077, + "fields": { + "created": "2020-09-17T09:28:44.997Z", + "updated": "2020-09-17T09:28:45.018Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "390-rc2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 486, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a10efb536c66e82f1e14aff9506eaf84", + "filesize": 7553822, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3078, + "fields": { + "created": "2020-09-17T09:28:45.101Z", + "updated": "2020-09-17T09:28:45.117Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "390-rc2-macOS-64-bit-installer", + "os": 2, + "release": 486, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc2-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc2-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cec408a09e67431790c749b9036aa4f9", + "filesize": 29657737, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3079, + "fields": { + "created": "2020-09-17T09:28:45.206Z", + "updated": "2020-09-17T09:28:45.218Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "390-rc2-Gzipped-source-tarball", + "os": 3, + "release": 486, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0rc2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0rc2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4b5bc3114875aad8b2ffc88a3d564ce1", + "filesize": 25254409, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3080, + "fields": { + "created": "2020-09-17T09:28:45.293Z", + "updated": "2020-09-17T09:28:45.299Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "390-rc2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 486, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c6568b657f4b7d2ac9ed83365b5f6b16", + "filesize": 1365240, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3081, + "fields": { + "created": "2020-09-17T09:28:45.366Z", + "updated": "2020-09-17T09:28:45.374Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "390-rc2-Windows-x86-64-executable-installer", + "os": 1, + "release": 486, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9f96f0e9c131609d2e7146d66ede7541", + "filesize": 28089928, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3082, + "fields": { + "created": "2020-09-17T09:28:45.448Z", + "updated": "2020-09-17T09:28:45.461Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "390-rc2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 486, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0rc2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "33ab676ef4db4f8ec6411a0a43a8f095", + "filesize": 8387325, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3083, + "fields": { + "created": "2020-09-24T10:46:19.963Z", + "updated": "2020-09-24T10:46:19.982Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "386-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 487, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.6/python-3.8.6-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/python-3.8.6-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5f95c5a93e2d8a5b077f406bc4dd96e7", + "filesize": 8177848, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3084, + "fields": { + "created": "2020-09-24T10:46:20.052Z", + "updated": "2020-09-24T10:46:20.061Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "386-Gzipped-source-tarball", + "os": 3, + "release": 487, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ea132d6f449766623eee886966c7d41f", + "filesize": 24377280, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3085, + "fields": { + "created": "2020-09-24T10:46:20.126Z", + "updated": "2020-09-24T10:46:20.143Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "386-Windows-x86-executable-installer", + "os": 1, + "release": 487, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.6/python-3.8.6.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/python-3.8.6.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "02cd63bd5b31e642fc3d5f07b3a4862a", + "filesize": 26987416, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3086, + "fields": { + "created": "2020-09-24T10:46:20.230Z", + "updated": "2020-09-24T10:46:20.250Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "386-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 487, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.6/python-3.8.6-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/python-3.8.6-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7b287a90b33c2a9be55fabc24a7febbb", + "filesize": 7312114, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3087, + "fields": { + "created": "2020-09-24T10:46:20.327Z", + "updated": "2020-09-24T10:46:20.342Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "386-Windows-help-file", + "os": 1, + "release": 487, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.6/python386.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/python386.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4403f334f6c05175cc5edf03f9cde7b4", + "filesize": 8531919, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3088, + "fields": { + "created": "2020-09-24T10:46:20.418Z", + "updated": "2020-09-24T10:46:20.441Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "386-Windows-x86-64-executable-installer", + "os": 1, + "release": 487, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.6/python-3.8.6-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/python-3.8.6-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2acba3117582c5177cdd28b91bbe9ac9", + "filesize": 28076528, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3089, + "fields": { + "created": "2020-09-24T10:46:20.527Z", + "updated": "2020-09-24T10:46:20.535Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "386-Windows-x86-64-web-based-installer", + "os": 1, + "release": 487, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.6/python-3.8.6-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/python-3.8.6-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c9d599d3880dfbc08f394e4b7526bb9b", + "filesize": 1365864, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3090, + "fields": { + "created": "2020-09-24T10:46:20.607Z", + "updated": "2020-09-24T10:46:20.621Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "386-XZ-compressed-source-tarball", + "os": 3, + "release": 487, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "69e73c49eeb1a853cefd26d18c9d069d", + "filesize": 18233864, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3091, + "fields": { + "created": "2020-09-24T10:46:20.675Z", + "updated": "2020-09-24T10:46:20.680Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "386-macOS-64-bit-installer", + "os": 2, + "release": 487, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.6/python-3.8.6-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/python-3.8.6-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "68170127a953e7f12465c1798f0965b8", + "filesize": 30464376, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3092, + "fields": { + "created": "2020-09-24T10:46:20.744Z", + "updated": "2020-09-24T10:46:20.749Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "386-Windows-x86-web-based-installer", + "os": 1, + "release": 487, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.6/python-3.8.6-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.6/python-3.8.6-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "acb0620aea46edc358dee0020078f228", + "filesize": 1328200, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3116, + "fields": { + "created": "2020-10-05T16:06:48.067Z", + "updated": "2020-10-05T16:06:48.075Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "390-Windows-x86-64-web-based-installer", + "os": 1, + "release": 520, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "733df85afb160482c5636ca09b89c4c8", + "filesize": 1364352, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3117, + "fields": { + "created": "2020-10-05T16:06:48.145Z", + "updated": "2020-10-05T16:06:48.165Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "390-XZ-compressed-source-tarball", + "os": 3, + "release": 520, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6ebfe157f6e88d9eabfbaf3fa92129f6", + "filesize": 18866140, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3118, + "fields": { + "created": "2020-10-05T16:06:48.252Z", + "updated": "2020-10-05T16:06:48.281Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "390-Windows-help-file", + "os": 1, + "release": 520, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python390.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python390.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9ea6fc676f0fa3b95af3c5b3400120d6", + "filesize": 8757017, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3119, + "fields": { + "created": "2020-10-05T16:06:48.356Z", + "updated": "2020-10-05T16:06:48.365Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "390-macOS-64-bit-installer", + "os": 2, + "release": 520, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "16ca86fa3467e75bade26b8a9703c27f", + "filesize": 31132316, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3120, + "fields": { + "created": "2020-10-05T16:06:48.447Z", + "updated": "2020-10-05T16:06:48.506Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "390-Windows-x86-64-executable-installer", + "os": 1, + "release": 520, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b61a33dc28f13b561452f3089c87eb63", + "filesize": 28158664, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3121, + "fields": { + "created": "2020-10-05T16:06:48.642Z", + "updated": "2020-10-05T16:06:48.664Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "390-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 520, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d81fc534080e10bb4172ad7ae3da5247", + "filesize": 7553872, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3122, + "fields": { + "created": "2020-10-05T16:06:48.740Z", + "updated": "2020-10-05T16:06:48.756Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "390-Gzipped-source-tarball", + "os": 3, + "release": 520, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e19e75ec81dd04de27797bf3f9d918fd", + "filesize": 26724009, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3123, + "fields": { + "created": "2020-10-05T16:06:48.834Z", + "updated": "2020-10-05T16:30:07.177Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "390-Windows-x86-executable-installer", + "os": 1, + "release": 520, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4a2812db8ab9f2e522c96c7728cfcccb", + "filesize": 27066912, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3124, + "fields": { + "created": "2020-10-05T16:06:48.927Z", + "updated": "2020-10-05T16:06:48.935Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "390-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 520, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "60d0d94337ef657c2cca1d3d9a6dd94b", + "filesize": 8387074, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3125, + "fields": { + "created": "2020-10-05T16:06:49.007Z", + "updated": "2020-10-05T16:06:49.016Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "390-Windows-x86-web-based-installer", + "os": 1, + "release": 520, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.0/python-3.9.0-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.0/python-3.9.0-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cdbfa799e6760c13d06d0c2374110aa3", + "filesize": 1327384, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3131, + "fields": { + "created": "2020-10-05T21:05:54.342Z", + "updated": "2020-10-05T21:05:54.439Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3100-a1-Windows-help-file", + "os": 1, + "release": 521, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python3100a1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python3100a1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1f039d4c1a9b0ecf375da51b1fb9bb05", + "filesize": 8769666, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3132, + "fields": { + "created": "2020-10-05T21:05:54.530Z", + "updated": "2020-10-05T21:05:54.539Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "3100-a1-Windows-x86-64-web-based-installer", + "os": 1, + "release": 521, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a1-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a1-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d282a94227f70bf01ceaebe576e45917", + "filesize": 1367368, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3133, + "fields": { + "created": "2020-10-05T21:05:54.618Z", + "updated": "2020-10-05T21:05:54.658Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "3100-a1-Windows-x86-executable-installer", + "os": 1, + "release": 521, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "03865490897099ca9f4bd3ccf1dd32a9", + "filesize": 26817544, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3134, + "fields": { + "created": "2020-10-05T21:05:54.805Z", + "updated": "2020-10-05T21:05:54.849Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "3100-a1-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 521, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e31d1627bafa899d315e57e07e01826a", + "filesize": 7507595, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3135, + "fields": { + "created": "2020-10-05T21:05:54.955Z", + "updated": "2020-10-05T21:05:54.998Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3100-a1-XZ-compressed-source-tarball", + "os": 3, + "release": 521, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dc251f90f89b628c1bad4b50f9253029", + "filesize": 18571152, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3136, + "fields": { + "created": "2020-10-05T21:05:55.137Z", + "updated": "2020-10-05T21:05:55.173Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "3100-a1-Windows-x86-64-executable-installer", + "os": 1, + "release": 521, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4e86ea8da69a8014293ebb1ef822d144", + "filesize": 27913136, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3137, + "fields": { + "created": "2020-10-05T21:05:55.290Z", + "updated": "2020-10-05T21:05:55.315Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "3100-a1-Windows-x86-web-based-installer", + "os": 1, + "release": 521, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a1-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a1-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fbef2df47c5b40777b716dd50bb8f451", + "filesize": 1330368, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3138, + "fields": { + "created": "2020-10-05T21:05:55.423Z", + "updated": "2020-10-05T21:05:55.451Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "3100-a1-macOS-64-bit-installer", + "os": 2, + "release": 521, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "02ec37bdef6ed01edbe10c50d5947164", + "filesize": 29447575, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3139, + "fields": { + "created": "2020-10-05T21:05:55.563Z", + "updated": "2020-10-05T21:05:55.584Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3100-a1-Gzipped-source-tarball", + "os": 3, + "release": 521, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fc2bda52a57d0961033d3c018319b6d8", + "filesize": 25071392, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3140, + "fields": { + "created": "2020-10-05T21:05:55.666Z", + "updated": "2020-10-05T21:05:55.674Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "3100-a1-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 521, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "14624865df790bb50b392c0d5c907f49", + "filesize": 8352097, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3141, + "fields": { + "created": "2020-11-03T17:24:28.882Z", + "updated": "2020-11-03T17:24:28.911Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3100-a2-Gzipped-source-tarball", + "os": 3, + "release": 522, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c5c89efc35f5121397679c71157b9c7f", + "filesize": 25156645, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3142, + "fields": { + "created": "2020-11-03T17:24:29.326Z", + "updated": "2020-11-03T17:24:29.387Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 embeddable zip file", + "slug": "3100-a2-Windows-x86-64-embeddable-zip-file", + "os": 1, + "release": 522, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c54651fdd9ebdfff813444ab0622a025", + "filesize": 8358004, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3143, + "fields": { + "created": "2020-11-03T17:24:29.476Z", + "updated": "2020-11-03T17:24:29.486Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 executable installer", + "slug": "3100-a2-Windows-x86-executable-installer", + "os": 1, + "release": 522, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4f12e8b064528a3a5856b1c3f6fca752", + "filesize": 26958200, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3144, + "fields": { + "created": "2020-11-03T17:24:29.562Z", + "updated": "2020-11-03T17:24:29.574Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 web-based installer", + "slug": "3100-a2-Windows-x86-web-based-installer", + "os": 1, + "release": 522, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a2-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a2-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "81bc695c61e463a3286d2066609983ff", + "filesize": 1330416, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3145, + "fields": { + "created": "2020-11-03T17:24:29.666Z", + "updated": "2020-11-03T17:24:29.702Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86 embeddable zip file", + "slug": "3100-a2-Windows-x86-embeddable-zip-file", + "os": 1, + "release": 522, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c55e2683b5e4e5c569a8510db1e46c1f", + "filesize": 7508089, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3146, + "fields": { + "created": "2020-11-03T17:24:29.769Z", + "updated": "2020-11-03T17:24:29.776Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 executable installer", + "slug": "3100-a2-Windows-x86-64-executable-installer", + "os": 1, + "release": 522, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8f0f92d6154f9924414126ef770d1c7f", + "filesize": 28082696, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3147, + "fields": { + "created": "2020-11-03T17:24:32.842Z", + "updated": "2020-11-03T17:24:32.876Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3100-a2-Windows-help-file", + "os": 1, + "release": 522, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python3100a2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python3100a2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "12ef25d95403caa3641ae0b6467c2bb1", + "filesize": 8828578, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3148, + "fields": { + "created": "2020-11-03T17:24:33.053Z", + "updated": "2020-11-03T17:24:33.180Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "3100-a2-macOS-64-bit-installer", + "os": 2, + "release": 522, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a2-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a2-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7effe89a3fb7286cc65aeff475d8ab31", + "filesize": 29586769, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3149, + "fields": { + "created": "2020-11-03T17:24:33.265Z", + "updated": "2020-11-03T17:24:33.273Z", + "creator": null, + "last_modified_by": null, + "name": "Windows x86-64 web-based installer", + "slug": "3100-a2-Windows-x86-64-web-based-installer", + "os": 1, + "release": 522, + "description": "for AMD64/EM64T/x64", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a2-amd64-webinstall.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a2-amd64-webinstall.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "93e428bb5e5db43c0627a1ca00bbcfbf", + "filesize": 1367384, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3150, + "fields": { + "created": "2020-11-03T17:24:33.366Z", + "updated": "2020-11-03T17:24:33.415Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3100-a2-XZ-compressed-source-tarball", + "os": 3, + "release": 522, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3280f4fa873ea36b2ce92db6b68d1bfe", + "filesize": 18620812, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3203, + "fields": { + "created": "2020-11-26T22:20:43.360Z", + "updated": "2020-11-26T22:20:43.366Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "391-rc1-Windows-installer-64-bit", + "os": 1, + "release": 523, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.1/python-3.9.1rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/python-3.9.1rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7444c283d8a94823beb52611c091a398", + "filesize": 28207056, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3204, + "fields": { + "created": "2020-11-26T22:20:43.436Z", + "updated": "2020-11-26T22:20:43.450Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "391-rc1-Windows-installer-32-bit", + "os": 1, + "release": 523, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.1/python-3.9.1rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/python-3.9.1rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "db66fab666fe331eae12949364b72350", + "filesize": 27125056, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3205, + "fields": { + "created": "2020-11-26T22:20:43.529Z", + "updated": "2020-11-26T22:25:17.921Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "391-rc1-macOS-64-bit-universal2-installer", + "os": 2, + "release": 523, + "description": "for OS X 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.1/python-3.9.1rc1-macosx11.0.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/python-3.9.1rc1-macosx11.0.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3ee2730afd97ebbddb6b3dc9ac619f3d", + "filesize": 37447936, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3206, + "fields": { + "created": "2020-11-26T22:20:43.603Z", + "updated": "2020-11-26T22:20:43.608Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "391-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 523, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.1/Python-3.9.1rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/Python-3.9.1rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bb5950be70e8271d09a120158e7e425d", + "filesize": 18871700, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3207, + "fields": { + "created": "2020-11-26T22:20:43.676Z", + "updated": "2020-11-26T22:20:43.683Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "391-rc1-Windows-embeddable-package-32-bit", + "os": 1, + "release": 523, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.1/python-3.9.1rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/python-3.9.1rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "798b3f9a6f04664dc5db8251a6fb18c2", + "filesize": 7571121, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3208, + "fields": { + "created": "2020-11-26T22:20:43.752Z", + "updated": "2020-11-26T22:20:43.757Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "391-rc1-Gzipped-source-tarball", + "os": 3, + "release": 523, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.1/Python-3.9.1rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/Python-3.9.1rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "44eaec341c4224e08007336987e4c0dd", + "filesize": 25369430, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3209, + "fields": { + "created": "2020-11-26T22:20:43.829Z", + "updated": "2020-11-26T22:20:43.836Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "391-rc1-Windows-embeddable-package-64-bit", + "os": 1, + "release": 523, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.1/python-3.9.1rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/python-3.9.1rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "43007f492788cc118093f7f178099912", + "filesize": 8404170, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3210, + "fields": { + "created": "2020-11-26T22:20:43.912Z", + "updated": "2020-11-26T22:20:43.918Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "391-rc1-Windows-help-file", + "os": 1, + "release": 523, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.1/python391rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/python391rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4e7db25c3cfdbd223824224b5aa6e700", + "filesize": 8785580, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3211, + "fields": { + "created": "2020-11-26T22:20:43.983Z", + "updated": "2020-11-26T22:20:43.991Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit installer", + "slug": "391-rc1-macOS-64-bit-installer", + "os": 2, + "release": 523, + "description": "for OS X 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.1/python-3.9.1rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/python-3.9.1rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8ed47729007ff3cf59e1f6c90c50a714", + "filesize": 29800847, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3230, + "fields": { + "created": "2020-12-07T23:56:41.309Z", + "updated": "2020-12-07T23:56:41.321Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "387-rc1-Gzipped-source-tarball", + "os": 3, + "release": 536, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.7/Python-3.8.7rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.7/Python-3.8.7rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "61480c222336569b4e36a49d70e864ff", + "filesize": 24464212, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3231, + "fields": { + "created": "2020-12-07T23:56:41.417Z", + "updated": "2020-12-07T23:56:41.428Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "387-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 536, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.7/Python-3.8.7rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.7/Python-3.8.7rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d2adfd6e9d299d6412a79dc2508c980f", + "filesize": 18258688, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3232, + "fields": { + "created": "2020-12-07T23:56:41.509Z", + "updated": "2020-12-07T23:56:41.520Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel installer", + "slug": "387-rc1-macOS-64-bit-Intel-installer", + "os": 2, + "release": 536, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.7/python-3.8.7rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.7/python-3.8.7rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4702a78a801d658b7e0e82fc65c20422", + "filesize": 29794921, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3233, + "fields": { + "created": "2020-12-07T23:56:41.593Z", + "updated": "2020-12-07T23:56:41.604Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "387-rc1-Windows-installer-32-bit", + "os": 1, + "release": 536, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.7/python-3.8.7rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.7/python-3.8.7rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "51487281c434cd50854b6a7bcfa6040c", + "filesize": 27065296, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3234, + "fields": { + "created": "2020-12-07T23:56:43.392Z", + "updated": "2020-12-07T23:56:43.400Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "387-rc1-Windows-help-file", + "os": 1, + "release": 536, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.7/python387rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.7/python387rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cd4def5bc7e3ab1db1c11fb2f31ba084", + "filesize": 8538088, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3235, + "fields": { + "created": "2020-12-07T23:56:43.477Z", + "updated": "2020-12-07T23:56:43.486Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "387-rc1-Windows-embeddable-package-64-bit", + "os": 1, + "release": 536, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.7/python-3.8.7rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.7/python-3.8.7rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4393236f3bc42f0c72c16fa5933df0dc", + "filesize": 8188887, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3236, + "fields": { + "created": "2020-12-07T23:56:43.581Z", + "updated": "2020-12-07T23:56:43.600Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "387-rc1-Windows-embeddable-package-32-bit", + "os": 1, + "release": 536, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.7/python-3.8.7rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.7/python-3.8.7rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9c234662868178a0b9f6a9a9de9d23bf", + "filesize": 7327241, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3237, + "fields": { + "created": "2020-12-07T23:56:43.686Z", + "updated": "2020-12-07T23:56:43.694Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "387-rc1-Windows-installer-64-bit", + "os": 1, + "release": 536, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.7/python-3.8.7rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.7/python-3.8.7rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5cbe823213ada0b47d480c6de4869393", + "filesize": 28148792, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3246, + "fields": { + "created": "2020-12-07T23:58:09.829Z", + "updated": "2020-12-07T23:58:09.839Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "391-XZ-compressed-source-tarball", + "os": 3, + "release": 537, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "61981498e75ac8f00adcb908281fadb6", + "filesize": 18897104, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3247, + "fields": { + "created": "2020-12-07T23:58:09.909Z", + "updated": "2020-12-07T23:58:09.922Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "391-Windows-installer-64-bit", + "os": 1, + "release": 537, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.1/python-3.9.1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/python-3.9.1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b3fce2ed8bc315ad2bc49eae48a94487", + "filesize": 28204528, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3248, + "fields": { + "created": "2020-12-07T23:58:09.992Z", + "updated": "2020-12-07T23:58:10.000Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "391-Gzipped-source-tarball", + "os": 3, + "release": 537, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "429ae95d24227f8fa1560684fad6fca7", + "filesize": 25372998, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3249, + "fields": { + "created": "2020-12-07T23:58:10.070Z", + "updated": "2020-12-07T23:58:10.081Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "391-Windows-installer-32-bit", + "os": 1, + "release": 537, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.1/python-3.9.1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/python-3.9.1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dde210ea04a31c27488605a9e7cd297a", + "filesize": 27126136, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3250, + "fields": { + "created": "2020-12-07T23:58:10.147Z", + "updated": "2020-12-07T23:58:10.160Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "391-Windows-embeddable-package-64-bit", + "os": 1, + "release": 537, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.1/python-3.9.1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/python-3.9.1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e70e5c22432d8f57a497cde5ec2e5ce2", + "filesize": 8402333, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3251, + "fields": { + "created": "2020-12-07T23:58:10.227Z", + "updated": "2020-12-07T23:58:10.234Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "391-Windows-embeddable-package-32-bit", + "os": 1, + "release": 537, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.1/python-3.9.1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/python-3.9.1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "96c6fa81fe8b650e68c3dd41258ae317", + "filesize": 7571141, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3252, + "fields": { + "created": "2020-12-07T23:58:10.314Z", + "updated": "2020-12-07T23:58:10.327Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel installer", + "slug": "391-macOS-64-bit-Intel-installer", + "os": 2, + "release": 537, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.1/python-3.9.1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/python-3.9.1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "74f5cc5b5783ce8fb2ca55f11f3f0699", + "filesize": 29795899, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3253, + "fields": { + "created": "2020-12-07T23:58:10.396Z", + "updated": "2020-12-07T23:58:10.403Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "391-macOS-64-bit-universal2-installer", + "os": 2, + "release": 537, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.1/python-3.9.1-macos11.0.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/python-3.9.1-macos11.0.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8b19748473609241e60aa3618bbaf3ed", + "filesize": 37451735, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3254, + "fields": { + "created": "2020-12-07T23:58:10.467Z", + "updated": "2020-12-07T23:58:10.473Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "391-Windows-help-file", + "os": 1, + "release": 537, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.1/python391.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.1/python391.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c49d9b6ef88c0831ed0e2d39bc42b316", + "filesize": 8787443, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3279, + "fields": { + "created": "2020-12-18T16:28:14.096Z", + "updated": "2020-12-18T16:28:14.105Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3100-a3-Windows-embeddable-package-64-bit", + "os": 1, + "release": 532, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d08bcdd2a8b28e312a4b695c4340a70c", + "filesize": 8409746, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3280, + "fields": { + "created": "2020-12-18T16:28:14.190Z", + "updated": "2020-12-18T16:28:14.198Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3100-a3-Windows-embeddable-package-32-bit", + "os": 1, + "release": 532, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "43c77ff67f7fffcfd25d84c1076f3a5a", + "filesize": 7565750, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3281, + "fields": { + "created": "2020-12-18T16:28:14.270Z", + "updated": "2020-12-18T16:28:14.276Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3100-a3-Windows-installer-64-bit", + "os": 1, + "release": 532, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ae722c8f4fbda955f7294b7b3b4108c1", + "filesize": 28132472, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3282, + "fields": { + "created": "2020-12-18T16:28:14.425Z", + "updated": "2020-12-18T16:28:14.813Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3100-a3-macOS-64-bit-universal2-installer", + "os": 2, + "release": 532, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a3-macos11.0.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a3-macos11.0.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e9c7fbd89f5f16984afa0e6c7a3a8b24", + "filesize": 37273346, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3283, + "fields": { + "created": "2020-12-18T16:28:14.943Z", + "updated": "2020-12-18T16:28:14.950Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3100-a3-XZ-compressed-source-tarball", + "os": 3, + "release": 532, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "693a4a5ce7a1c1149d29187b37d3850f", + "filesize": 18676916, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3284, + "fields": { + "created": "2020-12-18T16:28:15.069Z", + "updated": "2020-12-18T16:28:15.177Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3100-a3-Gzipped-source-tarball", + "os": 3, + "release": 532, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "536b390dde6c460acd28c260950ce208", + "filesize": 25236845, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3285, + "fields": { + "created": "2020-12-18T16:28:15.291Z", + "updated": "2020-12-18T16:28:15.303Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3100-a3-Windows-installer-32-bit", + "os": 1, + "release": 532, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5d91b61c28255ffd74a4c1f9d14d9237", + "filesize": 27015960, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3286, + "fields": { + "created": "2020-12-18T16:28:15.445Z", + "updated": "2020-12-18T16:28:15.532Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3100-a3-Windows-help-file", + "os": 1, + "release": 532, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python3100a3.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python3100a3.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "796b0743be9ccd2619002dc14be1ac2e", + "filesize": 8833116, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3289, + "fields": { + "created": "2020-12-21T19:14:09.238Z", + "updated": "2020-12-21T19:14:09.298Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "387-Windows-embeddable-package-32-bit", + "os": 1, + "release": 571, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.7/python-3.8.7-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.7/python-3.8.7-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "efbe9f5f3a6f166c7c9b7dbebbe2cb24", + "filesize": 7328313, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3290, + "fields": { + "created": "2020-12-21T19:14:09.405Z", + "updated": "2020-12-21T19:14:09.425Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "387-Windows-installer-64-bit", + "os": 1, + "release": 571, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.7/python-3.8.7-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.7/python-3.8.7-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "325ec7acd0e319963b505aea877a23a4", + "filesize": 28151648, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3291, + "fields": { + "created": "2020-12-21T19:14:09.540Z", + "updated": "2020-12-21T19:14:09.595Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "387-Gzipped-source-tarball", + "os": 3, + "release": 571, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.7/Python-3.8.7.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.7/Python-3.8.7.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e1f40f4fc9ccc781fcbf8d4e86c46660", + "filesize": 24468684, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3292, + "fields": { + "created": "2020-12-21T19:14:09.690Z", + "updated": "2020-12-21T19:14:09.708Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "387-Windows-help-file", + "os": 1, + "release": 571, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.7/python387.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.7/python387.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8d59fd3d833e969af23b212537a27c15", + "filesize": 8534307, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3293, + "fields": { + "created": "2020-12-21T19:14:09.804Z", + "updated": "2020-12-21T19:14:09.818Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "387-Windows-embeddable-package-64-bit", + "os": 1, + "release": 571, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.7/python-3.8.7-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.7/python-3.8.7-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "61db96411fc00aea8a06e7e25cab2df7", + "filesize": 8190247, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3294, + "fields": { + "created": "2020-12-21T19:14:09.893Z", + "updated": "2020-12-21T19:14:09.913Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel installer", + "slug": "387-macOS-64-bit-Intel-installer", + "os": 2, + "release": 571, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.7/python-3.8.7-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.7/python-3.8.7-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3f609e58e06685f27ff3306bbcae6565", + "filesize": 29801336, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3295, + "fields": { + "created": "2020-12-21T19:14:10.021Z", + "updated": "2020-12-21T19:14:10.051Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "387-XZ-compressed-source-tarball", + "os": 3, + "release": 571, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.7/Python-3.8.7.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.7/Python-3.8.7.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "60fe018fffc7f33818e6c340d29e2db9", + "filesize": 18261096, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3296, + "fields": { + "created": "2020-12-21T19:14:10.170Z", + "updated": "2020-12-21T19:14:10.207Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "387-Windows-installer-32-bit", + "os": 1, + "release": 571, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.7/python-3.8.7.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.7/python-3.8.7.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ed99dc2ec9057a60ca3591ccce29e9e4", + "filesize": 27064968, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3297, + "fields": { + "created": "2021-01-04T21:19:52.638Z", + "updated": "2021-01-04T21:19:52.678Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3100-a4-Windows-installer-64-bit", + "os": 1, + "release": 572, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f6ab1b668b1e009b796bc098c247b2c7", + "filesize": 28241808, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3298, + "fields": { + "created": "2021-01-04T21:19:52.819Z", + "updated": "2021-01-04T21:19:52.834Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3100-a4-Windows-help-file", + "os": 1, + "release": 572, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python3100a4.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python3100a4.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "894b6ec8b3d0a749d33c3e359f7a064e", + "filesize": 8916438, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3299, + "fields": { + "created": "2021-01-04T21:19:52.922Z", + "updated": "2021-01-04T21:19:52.942Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3100-a4-macOS-64-bit-universal2-installer", + "os": 2, + "release": 572, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a4-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a4-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a99aa2916523711e639f62eb652befeb", + "filesize": 37601444, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3300, + "fields": { + "created": "2021-01-04T21:19:53.049Z", + "updated": "2021-01-04T21:19:53.061Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3100-a4-Windows-embeddable-package-64-bit", + "os": 1, + "release": 572, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d23ab4222677584d52e2f89e74702d6b", + "filesize": 8432902, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3301, + "fields": { + "created": "2021-01-04T21:19:53.188Z", + "updated": "2021-01-04T21:19:53.206Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3100-a4-Windows-embeddable-package-32-bit", + "os": 1, + "release": 572, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "950552ed1dc54998443f9c32934610c1", + "filesize": 7582086, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3302, + "fields": { + "created": "2021-01-04T21:19:55.098Z", + "updated": "2021-01-04T21:19:55.110Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3100-a4-Windows-installer-32-bit", + "os": 1, + "release": 572, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "966b61600dd0a4572ae38210540f84f5", + "filesize": 27114592, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3303, + "fields": { + "created": "2021-01-04T21:19:55.229Z", + "updated": "2021-01-04T21:19:55.240Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3100-a4-XZ-compressed-source-tarball", + "os": 3, + "release": 572, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f59708a8a36365d58a82f75c374ebd5f", + "filesize": 18706760, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3304, + "fields": { + "created": "2021-01-04T21:19:55.348Z", + "updated": "2021-01-04T21:19:55.365Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3100-a4-Gzipped-source-tarball", + "os": 3, + "release": 572, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6415214089382120f6d378752411baff", + "filesize": 25281638, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3305, + "fields": { + "created": "2021-02-03T06:17:30.825Z", + "updated": "2021-02-03T06:17:30.863Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3100-a5-Windows-installer-32-bit", + "os": 1, + "release": 573, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a5.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a5.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f21d3cd555197ad7472259fb48316cfe", + "filesize": 26718048, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3306, + "fields": { + "created": "2021-02-03T06:17:30.936Z", + "updated": "2021-02-03T06:17:30.947Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3100-a5-Windows-installer-64-bit", + "os": 1, + "release": 573, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a5-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a5-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f4cc56da5d76a2014bee92c724e40ac2", + "filesize": 27844696, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3307, + "fields": { + "created": "2021-02-03T06:17:31.019Z", + "updated": "2021-02-03T06:17:31.029Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3100-a5-Windows-embeddable-package-64-bit", + "os": 1, + "release": 573, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a5-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a5-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b5c8cc58a0e143866224b2597b0711f0", + "filesize": 8449690, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3308, + "fields": { + "created": "2021-02-03T06:17:31.122Z", + "updated": "2021-02-03T06:17:31.173Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3100-a5-Windows-embeddable-package-32-bit", + "os": 1, + "release": 573, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a5-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a5-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7035bd3c22cf9269db2714707b69f776", + "filesize": 7601384, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3309, + "fields": { + "created": "2021-02-03T06:17:31.247Z", + "updated": "2021-02-03T06:17:31.260Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3100-a5-Gzipped-source-tarball", + "os": 3, + "release": 573, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "73b173be72be734ed10134b7157a9652", + "filesize": 24483944, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3310, + "fields": { + "created": "2021-02-03T06:17:31.327Z", + "updated": "2021-02-03T06:17:31.334Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3100-a5-macOS-64-bit-universal2-installer", + "os": 2, + "release": 573, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a5-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a5-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e15fbb67ac07ae3ff6634301b16ece31", + "filesize": 37871075, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3311, + "fields": { + "created": "2021-02-03T06:17:31.400Z", + "updated": "2021-02-03T06:17:31.411Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3100-a5-Windows-help-file", + "os": 1, + "release": 573, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python3100a5.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python3100a5.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7f50b818d245a946f854b423e1c491d5", + "filesize": 8915856, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3312, + "fields": { + "created": "2021-02-03T06:17:31.489Z", + "updated": "2021-02-03T06:17:31.524Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3100-a5-XZ-compressed-source-tarball", + "os": 3, + "release": 573, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a5.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8b710a655a9769c88a7149efc55c1c27", + "filesize": 18286124, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3313, + "fields": { + "created": "2021-02-16T04:40:31.532Z", + "updated": "2021-02-16T04:40:31.916Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3710-XZ-compressed-source-tarball", + "os": 3, + "release": 574, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.10/Python-3.7.10.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.10/Python-3.7.10.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9e34914bc804ab2e7d955b49c5e1e391", + "filesize": 17392580, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3314, + "fields": { + "created": "2021-02-16T04:40:32.459Z", + "updated": "2021-02-16T04:40:32.473Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3710-Gzipped-source-tarball", + "os": 3, + "release": 574, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.10/Python-3.7.10.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.10/Python-3.7.10.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0b19e34a6dabc4bf15fdcdf9e77e9856", + "filesize": 23281560, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3315, + "fields": { + "created": "2021-02-16T04:53:42.332Z", + "updated": "2021-02-16T04:53:42.341Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3613-XZ-compressed-source-tarball", + "os": 3, + "release": 575, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.13/Python-3.6.13.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.13/Python-3.6.13.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1c04330ffff21cd777dc38e2310fc452", + "filesize": 17213520, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3316, + "fields": { + "created": "2021-02-16T04:53:42.672Z", + "updated": "2021-02-16T04:53:42.787Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3613-Gzipped-source-tarball", + "os": 3, + "release": 575, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.13/Python-3.6.13.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.13/Python-3.6.13.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "92fcbf417c691d42c47a3d82f9c255fd", + "filesize": 23022935, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3317, + "fields": { + "created": "2021-02-17T12:20:11.840Z", + "updated": "2021-02-17T12:20:11.847Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "388-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 576, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.8/Python-3.8.8rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.8/Python-3.8.8rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c35b0a205233cd0c2fc3b9d3e7bc3c4a", + "filesize": 18268528, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3318, + "fields": { + "created": "2021-02-17T12:20:11.907Z", + "updated": "2021-02-17T12:20:11.917Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel installer", + "slug": "388-rc1-macOS-64-bit-Intel-installer", + "os": 2, + "release": 576, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.8/python-3.8.8rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.8/python-3.8.8rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "04c8bea380d27cd31500d4434a287051", + "filesize": 29832487, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3319, + "fields": { + "created": "2021-02-17T12:20:11.980Z", + "updated": "2021-02-17T12:20:11.989Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "388-rc1-Windows-embeddable-package-64-bit", + "os": 1, + "release": 576, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.8/python-3.8.8rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.8/python-3.8.8rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "402c39754ed9e8d68476b61e0b31d2d7", + "filesize": 8196462, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3320, + "fields": { + "created": "2021-02-17T12:20:12.056Z", + "updated": "2021-02-17T12:20:12.063Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "388-rc1-Windows-help-file", + "os": 1, + "release": 576, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.8/python388rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.8/python388rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "30e1dd96a764e25a5516f22c33ffa05e", + "filesize": 8591914, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3321, + "fields": { + "created": "2021-02-17T12:20:12.120Z", + "updated": "2021-02-17T12:20:12.126Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "388-rc1-Windows-installer-64-bit", + "os": 1, + "release": 576, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.8/python-3.8.8rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.8/python-3.8.8rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "06770faf2ffb5d64aec6b26d65e811ec", + "filesize": 28222504, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3322, + "fields": { + "created": "2021-02-17T12:20:12.260Z", + "updated": "2021-02-17T12:20:12.294Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "388-rc1-Gzipped-source-tarball", + "os": 3, + "release": 576, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.8/Python-3.8.8rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.8/Python-3.8.8rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "22a1a96f3cc95d81b81bd1900ac2cd0f", + "filesize": 24486509, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3323, + "fields": { + "created": "2021-02-17T12:20:12.371Z", + "updated": "2021-02-17T12:20:12.378Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "388-rc1-Windows-embeddable-package-32-bit", + "os": 1, + "release": 576, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.8/python-3.8.8rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.8/python-3.8.8rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9d2a61e869cd27cfabc07d1cd50a8980", + "filesize": 7333046, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3324, + "fields": { + "created": "2021-02-17T12:20:12.457Z", + "updated": "2021-02-17T12:20:12.487Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "388-rc1-Windows-installer-32-bit", + "os": 1, + "release": 576, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.8/python-3.8.8rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.8/python-3.8.8rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8375dd48c1cbb55f1db612433be15218", + "filesize": 27140496, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3325, + "fields": { + "created": "2021-02-17T12:20:19.480Z", + "updated": "2021-02-17T12:20:19.488Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "392-rc1-Windows-installer-32-bit", + "os": 1, + "release": 577, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.2/python-3.9.2rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/python-3.9.2rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e73ef4f79f024c3e15b2fd42c5d3d4dd", + "filesize": 27202232, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3326, + "fields": { + "created": "2021-02-17T12:20:19.563Z", + "updated": "2021-02-17T12:20:19.575Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "392-rc1-Windows-installer-64-bit", + "os": 1, + "release": 577, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.2/python-3.9.2rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/python-3.9.2rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f644041f688e936d5d6645d50d2d72ac", + "filesize": 28296344, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3327, + "fields": { + "created": "2021-02-17T12:20:19.639Z", + "updated": "2021-02-17T12:20:19.644Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "392-rc1-Windows-embeddable-package-64-bit", + "os": 1, + "release": 577, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.2/python-3.9.2rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/python-3.9.2rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "74c9a2fa97e7dfe275b6f72e0fbfdb94", + "filesize": 8410943, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3328, + "fields": { + "created": "2021-02-17T12:20:19.703Z", + "updated": "2021-02-17T12:20:19.708Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "392-rc1-Windows-embeddable-package-32-bit", + "os": 1, + "release": 577, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.2/python-3.9.2rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/python-3.9.2rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "56ba9e9842cea609b5b4b1290aab2def", + "filesize": 7578974, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3329, + "fields": { + "created": "2021-02-17T12:20:19.777Z", + "updated": "2021-02-17T12:20:19.783Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "392-rc1-macOS-64-bit-universal2-installer", + "os": 2, + "release": 577, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.2/python-3.9.2rc1-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/python-3.9.2rc1-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2bb13ac0c60abc1731c061498a89aaaa", + "filesize": 37619593, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3330, + "fields": { + "created": "2021-02-17T12:20:19.868Z", + "updated": "2021-02-17T12:20:19.891Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "392-rc1-Gzipped-source-tarball", + "os": 3, + "release": 577, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.2/Python-3.9.2rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/Python-3.9.2rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3e0e696adad3a8494298a95deb68365e", + "filesize": 25404818, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3331, + "fields": { + "created": "2021-02-17T12:20:19.989Z", + "updated": "2021-02-17T12:20:20.020Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel installer", + "slug": "392-rc1-macOS-64-bit-Intel-installer", + "os": 2, + "release": 577, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.2/python-3.9.2rc1-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/python-3.9.2rc1-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "65f4f8bfbb876773a783584d6aff97c1", + "filesize": 29849281, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3332, + "fields": { + "created": "2021-02-17T12:20:20.096Z", + "updated": "2021-02-17T12:20:20.101Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "392-rc1-Windows-help-file", + "os": 1, + "release": 577, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.2/python392rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/python392rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "021471b29e9071a68e5ab75097f72568", + "filesize": 8846158, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3333, + "fields": { + "created": "2021-02-17T12:20:20.177Z", + "updated": "2021-02-17T12:20:20.187Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "392-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 577, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.2/Python-3.9.2rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/Python-3.9.2rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1245eb7e755b285e7a4aa6f2c1163419", + "filesize": 18890368, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3334, + "fields": { + "created": "2021-02-19T14:51:52.018Z", + "updated": "2021-02-19T14:51:52.026Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "392-macOS-64-bit-universal2-installer", + "os": 2, + "release": 579, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.2/python-3.9.2-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/python-3.9.2-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fc8d028618c376d0444916950c73e263", + "filesize": 37618901, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3335, + "fields": { + "created": "2021-02-19T14:51:52.105Z", + "updated": "2021-02-19T14:55:01.152Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "392-Windows-installer-32-bit", + "os": 1, + "release": 579, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.2/python-3.9.2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/python-3.9.2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "81294c31bd7e2d4470658721b2887ed5", + "filesize": 27202848, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3336, + "fields": { + "created": "2021-02-19T14:51:52.187Z", + "updated": "2021-02-19T14:51:52.196Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "392-Windows-embeddable-package-32-bit", + "os": 1, + "release": 579, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.2/python-3.9.2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/python-3.9.2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cde7d9bfd87b7777d7f0ba4b0cd4506d", + "filesize": 7578904, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3337, + "fields": { + "created": "2021-02-19T14:51:52.270Z", + "updated": "2021-02-19T14:51:52.286Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "392-Gzipped-source-tarball", + "os": 3, + "release": 579, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8cf053206beeca72c7ee531817dc24c7", + "filesize": 25399571, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3338, + "fields": { + "created": "2021-02-19T14:51:52.364Z", + "updated": "2021-02-19T14:51:52.392Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "392-Windows-help-file", + "os": 1, + "release": 579, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.2/python392.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/python392.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e2308d543374e671ffe0344d3fd36062", + "filesize": 8844275, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3339, + "fields": { + "created": "2021-02-19T14:51:52.481Z", + "updated": "2021-02-19T14:51:52.502Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "392-Windows-embeddable-package-64-bit", + "os": 1, + "release": 579, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.2/python-3.9.2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/python-3.9.2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bd4903eb930cf1747be01e6b8dcdd28a", + "filesize": 8408823, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3340, + "fields": { + "created": "2021-02-19T14:51:52.583Z", + "updated": "2021-02-19T14:51:52.597Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "392-Windows-installer-64-bit", + "os": 1, + "release": 579, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.2/python-3.9.2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/python-3.9.2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "efb20aa1b648a2baddd949c142d6eb06", + "filesize": 28287512, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3341, + "fields": { + "created": "2021-02-19T14:51:52.716Z", + "updated": "2021-02-19T14:51:52.750Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel installer", + "slug": "392-macOS-64-bit-Intel-installer", + "os": 2, + "release": 579, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.2/python-3.9.2-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/python-3.9.2-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a64f8b297fa43be07a34b8af9d13d554", + "filesize": 29845662, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3342, + "fields": { + "created": "2021-02-19T14:51:52.820Z", + "updated": "2021-02-19T14:51:52.826Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "392-XZ-compressed-source-tarball", + "os": 3, + "release": 579, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f0dc9000312abeb16de4eccce9a870ab", + "filesize": 18889164, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3343, + "fields": { + "created": "2021-02-19T14:51:56.881Z", + "updated": "2021-02-19T14:51:56.898Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "388-Windows-installer-64-bit", + "os": 1, + "release": 578, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.8/python-3.8.8-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.8/python-3.8.8-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "77a54a14239b6d7d0dcbe2e3a507d2f0", + "filesize": 28217976, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3344, + "fields": { + "created": "2021-02-19T14:51:56.976Z", + "updated": "2021-02-19T14:51:56.984Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "388-XZ-compressed-source-tarball", + "os": 3, + "release": 578, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.8/Python-3.8.8.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.8/Python-3.8.8.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "23e6b769857233c1ac07b6be7442eff4", + "filesize": 18271736, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3345, + "fields": { + "created": "2021-02-19T14:51:57.055Z", + "updated": "2021-02-19T14:51:57.062Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel installer", + "slug": "388-macOS-64-bit-Intel-installer", + "os": 2, + "release": 578, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.8/python-3.8.8-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.8/python-3.8.8-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3b039200febdd1fa54a8d724dee732bc", + "filesize": 29819402, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3346, + "fields": { + "created": "2021-02-19T14:51:57.145Z", + "updated": "2021-02-19T14:51:57.155Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "388-Windows-embeddable-package-32-bit", + "os": 1, + "release": 578, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.8/python-3.8.8-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.8/python-3.8.8-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b3e271ee4fafce0ba784bd1b84c253ae", + "filesize": 7332875, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3347, + "fields": { + "created": "2021-02-19T14:51:57.244Z", + "updated": "2021-02-19T14:51:57.257Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "388-Windows-installer-32-bit", + "os": 1, + "release": 578, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.8/python-3.8.8.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.8/python-3.8.8.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "94773b062cc8da66e37ea8ba323eb56a", + "filesize": 27141264, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3348, + "fields": { + "created": "2021-02-19T14:51:57.334Z", + "updated": "2021-02-19T14:51:57.344Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "388-Gzipped-source-tarball", + "os": 3, + "release": 578, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.8/Python-3.8.8.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.8/Python-3.8.8.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d3af3b87e134c01c7f054205703adda2", + "filesize": 24483485, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3349, + "fields": { + "created": "2021-02-19T14:51:57.417Z", + "updated": "2021-02-19T14:51:57.434Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "388-Windows-help-file", + "os": 1, + "release": 578, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.8/python388.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.8/python388.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d30810feed2382840ad1fbc9fce97002", + "filesize": 8592431, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3350, + "fields": { + "created": "2021-02-19T14:51:57.524Z", + "updated": "2021-02-19T14:51:57.529Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "388-Windows-embeddable-package-64-bit", + "os": 1, + "release": 578, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.8/python-3.8.8-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.8/python-3.8.8-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2096fb5e665c6d2e746da7ff5f31d5db", + "filesize": 8193305, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3351, + "fields": { + "created": "2021-03-01T19:43:32.889Z", + "updated": "2021-03-01T19:43:32.898Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3100-a6-Gzipped-source-tarball", + "os": 3, + "release": 580, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f801471a0bcbf24f0bcace82be969c57", + "filesize": 24555687, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3352, + "fields": { + "created": "2021-03-01T19:43:32.976Z", + "updated": "2021-03-01T19:43:32.984Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3100-a6-Windows-installer-32-bit", + "os": 1, + "release": 580, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a6.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a6.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a24cb95dcd8f4a62ddf949997e8ea068", + "filesize": 26337280, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3353, + "fields": { + "created": "2021-03-01T19:43:33.106Z", + "updated": "2021-03-01T19:43:33.176Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3100-a6-macOS-64-bit-universal2-installer", + "os": 2, + "release": 580, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a6-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a6-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e82bc94a2a448f7386d42d92f24ef7d7", + "filesize": 37983189, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3354, + "fields": { + "created": "2021-03-01T19:43:33.273Z", + "updated": "2021-03-01T19:43:33.286Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3100-a6-Windows-help-file", + "os": 1, + "release": 580, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python3100a6.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python3100a6.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cba597b43015a00a8411a1d03d4aedb6", + "filesize": 8961902, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3355, + "fields": { + "created": "2021-03-01T19:43:33.352Z", + "updated": "2021-03-01T19:43:33.360Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3100-a6-Windows-embeddable-package-32-bit", + "os": 1, + "release": 580, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a6-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a6-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d65c0832d88e38aa590f8e5c4f576ca1", + "filesize": 7360188, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3356, + "fields": { + "created": "2021-03-01T19:43:33.430Z", + "updated": "2021-03-01T19:43:33.438Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3100-a6-XZ-compressed-source-tarball", + "os": 3, + "release": 580, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a6.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a6.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "948f385cba3438aaac31c5e4ae4c4657", + "filesize": 18354336, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3357, + "fields": { + "created": "2021-03-01T19:43:33.527Z", + "updated": "2021-03-01T19:43:33.534Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3100-a6-Windows-installer-64-bit", + "os": 1, + "release": 580, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a6-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a6-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "406fec44f6c47bd91885478d7b498a70", + "filesize": 27467696, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3358, + "fields": { + "created": "2021-03-01T19:43:33.606Z", + "updated": "2021-03-01T19:43:33.618Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3100-a6-Windows-embeddable-package-64-bit", + "os": 1, + "release": 580, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a6-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a6-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "97ce8b758d05db6c3c60301cf6340e00", + "filesize": 8310173, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3410, + "fields": { + "created": "2021-04-06T11:10:47.639Z", + "updated": "2021-04-06T11:10:47.660Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3100-a7-Windows-embeddable-package-64-bit", + "os": 1, + "release": 616, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a7-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a7-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2466a33faf9d3d10c380de57cf3b7488", + "filesize": 8351215, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3411, + "fields": { + "created": "2021-04-06T11:10:47.744Z", + "updated": "2021-04-06T11:10:47.765Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3100-a7-XZ-compressed-source-tarball", + "os": 3, + "release": 616, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a7.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a7.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "541c60c4eac4ef59baa4e5dcfe0fad0f", + "filesize": 18403212, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3412, + "fields": { + "created": "2021-04-06T11:10:47.838Z", + "updated": "2021-04-06T11:10:47.851Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3100-a7-Windows-help-file", + "os": 1, + "release": 616, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python3100a7.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python3100a7.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3124a8c22fcb40cadd98f7d9aafd0ee9", + "filesize": 8997080, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3413, + "fields": { + "created": "2021-04-06T11:10:47.920Z", + "updated": "2021-04-06T11:10:47.934Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3100-a7-Windows-installer-32-bit", + "os": 1, + "release": 616, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a7.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a7.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9388f6c671c58fbeab5f29a6ce18b7b8", + "filesize": 26416680, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3414, + "fields": { + "created": "2021-04-06T11:10:48.010Z", + "updated": "2021-04-06T11:10:48.015Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3100-a7-macOS-64-bit-universal2-installer", + "os": 2, + "release": 616, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a7-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a7-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1816930afc0323a527814055c873768c", + "filesize": 38058818, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3415, + "fields": { + "created": "2021-04-06T11:10:48.088Z", + "updated": "2021-04-06T11:10:48.122Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3100-a7-Windows-embeddable-package-32-bit", + "os": 1, + "release": 616, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a7-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a7-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b00998196c9a314ab59746734fa2c229", + "filesize": 7396727, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3416, + "fields": { + "created": "2021-04-06T11:10:48.238Z", + "updated": "2021-04-06T11:10:48.328Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3100-a7-Windows-installer-64-bit", + "os": 1, + "release": 616, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a7-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0a7-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bf36e4b2628c9deb3e3a0f257cae4e67", + "filesize": 27563320, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3417, + "fields": { + "created": "2021-04-06T11:10:48.460Z", + "updated": "2021-04-06T11:10:48.541Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3100-a7-Gzipped-source-tarball", + "os": 3, + "release": 616, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a7.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0a7.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ce7038a423051a7fe03fbe2f4a0f25d6", + "filesize": 24585172, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3418, + "fields": { + "created": "2021-04-06T19:40:00.482Z", + "updated": "2021-04-06T19:40:00.559Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "389-Windows-installer-64-bit", + "os": 1, + "release": 613, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.9/python-3.8.9-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.9/python-3.8.9-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f69d9c918a8ad06c71d7f0f26ccfee12", + "filesize": 28233448, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3419, + "fields": { + "created": "2021-04-06T19:40:00.700Z", + "updated": "2021-04-06T19:40:00.733Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel installer", + "slug": "389-macOS-64-bit-Intel-installer", + "os": 2, + "release": 613, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.9/python-3.8.9-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.9/python-3.8.9-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2323c476134fafa8b462530019f34394", + "filesize": 29843142, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3420, + "fields": { + "created": "2021-04-06T19:40:00.816Z", + "updated": "2021-04-06T19:40:00.822Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "389-XZ-compressed-source-tarball", + "os": 3, + "release": 613, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.9/Python-3.8.9.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.9/Python-3.8.9.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "51b5bbf2ab447e66d15af4883db1c133", + "filesize": 18271948, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3421, + "fields": { + "created": "2021-04-06T19:40:00.910Z", + "updated": "2021-04-06T19:40:00.988Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "389-Windows-installer-32-bit", + "os": 1, + "release": 613, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.9/python-3.8.9.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.9/python-3.8.9.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1b5456a52e2017eec31c320f0222d359", + "filesize": 27150976, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3422, + "fields": { + "created": "2021-04-06T19:40:01.215Z", + "updated": "2021-04-06T19:40:01.288Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "389-Windows-embeddable-package-32-bit", + "os": 1, + "release": 613, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.9/python-3.8.9-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.9/python-3.8.9-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "40830c33f775641ccfad5bf17ea3a893", + "filesize": 7335613, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3423, + "fields": { + "created": "2021-04-06T19:40:01.442Z", + "updated": "2021-04-06T19:40:01.485Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "389-Gzipped-source-tarball", + "os": 3, + "release": 613, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.9/Python-3.8.9.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.9/Python-3.8.9.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "41a5eaa15818cee7ea59e578564a2629", + "filesize": 24493475, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3424, + "fields": { + "created": "2021-04-06T19:40:01.589Z", + "updated": "2021-04-06T19:40:01.624Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "389-Windows-help-file", + "os": 1, + "release": 613, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.9/python389.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.9/python389.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "678cdc8e46b0b569ab9284be689be807", + "filesize": 8592697, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3425, + "fields": { + "created": "2021-04-06T19:40:01.775Z", + "updated": "2021-04-06T19:40:01.795Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "389-Windows-embeddable-package-64-bit", + "os": 1, + "release": 613, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.9/python-3.8.9-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.9/python-3.8.9-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cff9e470ee6b57c63c16b8a93c586b28", + "filesize": 8199294, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3426, + "fields": { + "created": "2021-04-06T19:40:07.602Z", + "updated": "2021-04-06T19:40:07.646Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "394-Windows-embeddable-package-32-bit", + "os": 1, + "release": 615, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.4/python-3.9.4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.4/python-3.9.4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b4bd8ec0891891158000c6844222014d", + "filesize": 7580762, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3427, + "fields": { + "created": "2021-04-06T19:40:07.772Z", + "updated": "2021-04-06T19:40:07.813Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "394-Windows-installer-64-bit", + "os": 1, + "release": 615, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.4/python-3.9.4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.4/python-3.9.4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ebc65aaa142b1d6de450ce241c50e61c", + "filesize": 28323440, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3428, + "fields": { + "created": "2021-04-06T19:40:07.930Z", + "updated": "2021-04-06T19:40:07.953Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "394-Gzipped-source-tarball", + "os": 3, + "release": 615, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.4/Python-3.9.4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.4/Python-3.9.4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cc8507b3799ed4d8baa7534cd8d5b35f", + "filesize": 25411523, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3429, + "fields": { + "created": "2021-04-06T19:40:08.098Z", + "updated": "2021-04-06T19:40:08.105Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "394-Windows-help-file", + "os": 1, + "release": 615, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.4/python394.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.4/python394.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aaacfe224768b5e4aa7583c12af68fb0", + "filesize": 8859759, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3430, + "fields": { + "created": "2021-04-06T19:40:08.243Z", + "updated": "2021-04-06T19:40:08.367Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "394-Windows-embeddable-package-64-bit", + "os": 1, + "release": 615, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.4/python-3.9.4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.4/python-3.9.4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5c34eb7e79cfe8a92bf56b5168a459f4", + "filesize": 8419530, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3431, + "fields": { + "created": "2021-04-06T19:40:08.558Z", + "updated": "2021-04-06T19:40:08.584Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel installer", + "slug": "394-macOS-64-bit-Intel-installer", + "os": 2, + "release": 615, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.4/python-3.9.4-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.4/python-3.9.4-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2b974bfd787f941fb8f80b5b8084e569", + "filesize": 29866341, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3432, + "fields": { + "created": "2021-04-06T19:40:08.705Z", + "updated": "2021-04-06T19:40:08.733Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "394-XZ-compressed-source-tarball", + "os": 3, + "release": 615, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.4/Python-3.9.4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.4/Python-3.9.4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2a3dba5fc75b695c45cf1806156e1a97", + "filesize": 18900304, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3433, + "fields": { + "created": "2021-04-06T19:40:08.902Z", + "updated": "2021-04-06T19:41:44.228Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "394-Windows-installer-32-bit", + "os": 1, + "release": 615, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.4/python-3.9.4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.4/python-3.9.4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b790fdaff648f757bf0f233e4d05c053", + "filesize": 27222976, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3434, + "fields": { + "created": "2021-04-06T19:40:09.292Z", + "updated": "2021-04-06T19:40:09.358Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "394-macOS-64-bit-universal2-installer", + "os": 2, + "release": 615, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.4/python-3.9.4-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.4/python-3.9.4-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9aa68872b9582c6c71151d5dd4f5ebca", + "filesize": 37648771, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3442, + "fields": { + "created": "2021-05-03T14:00:33.495Z", + "updated": "2021-05-03T14:00:33.508Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3810-XZ-compressed-source-tarball", + "os": 3, + "release": 617, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.10/Python-3.8.10.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.10/Python-3.8.10.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d9eee4b20155553830a2025e4dcaa7b3", + "filesize": 18433456, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3443, + "fields": { + "created": "2021-05-03T14:00:33.606Z", + "updated": "2021-05-03T14:13:05.164Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3810-macOS-64-bit-universal2-installer", + "os": 2, + "release": 617, + "description": "experimental, for macOS 11 Big Sur and later; recommended on Apple Silicon", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ae8a1ae082074b260381c058d0336d05", + "filesize": 37300939, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3444, + "fields": { + "created": "2021-05-03T14:00:33.718Z", + "updated": "2021-05-03T14:00:33.734Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3810-Windows-embeddable-package-32-bit", + "os": 1, + "release": 617, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.10/python-3.8.10-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.10/python-3.8.10-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "659adf421e90fba0f56a9631f79e70fb", + "filesize": 7348969, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3445, + "fields": { + "created": "2021-05-03T14:00:33.877Z", + "updated": "2021-05-03T14:00:33.885Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3810-Gzipped-source-tarball", + "os": 3, + "release": 617, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.10/Python-3.8.10.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.10/Python-3.8.10.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "83d71c304acab6c678e86e239b42fa7e", + "filesize": 24720640, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3446, + "fields": { + "created": "2021-05-03T14:00:33.962Z", + "updated": "2021-05-03T14:00:33.972Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel installer", + "slug": "3810-macOS-64-bit-Intel-installer", + "os": 2, + "release": 617, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "690ddb1be403a7efb202e93f3a994a49", + "filesize": 29896827, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3447, + "fields": { + "created": "2021-05-03T14:00:34.044Z", + "updated": "2021-05-03T14:00:34.065Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3810-Windows-installer-64-bit", + "os": 1, + "release": 617, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "62cf1a12a5276b0259e8761d4cf4fe42", + "filesize": 28296784, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3448, + "fields": { + "created": "2021-05-03T14:00:34.161Z", + "updated": "2021-05-03T14:00:34.170Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3810-Windows-embeddable-package-64-bit", + "os": 1, + "release": 617, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.10/python-3.8.10-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.10/python-3.8.10-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3acb1d7d9bde5a79f840167b166bb633", + "filesize": 8211403, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3449, + "fields": { + "created": "2021-05-03T14:00:34.251Z", + "updated": "2021-05-03T14:00:34.270Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3810-Windows-installer-32-bit", + "os": 1, + "release": 617, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.10/python-3.8.10.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.10/python-3.8.10.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b355cfc84b681ace8908ae50908e8761", + "filesize": 27204536, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3450, + "fields": { + "created": "2021-05-03T14:00:34.344Z", + "updated": "2021-05-03T14:00:34.358Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3810-Windows-help-file", + "os": 1, + "release": 617, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.8.10/python3810.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.10/python3810.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a06af1ff933a13f6901a75e59247cf95", + "filesize": 8597086, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3451, + "fields": { + "created": "2021-05-03T18:12:39.688Z", + "updated": "2021-05-03T18:12:39.702Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "395-Windows-embeddable-package-32-bit", + "os": 1, + "release": 618, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.5/python-3.9.5-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.5/python-3.9.5-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cacf28418ae39704743fa790d404e6bb", + "filesize": 7594314, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3452, + "fields": { + "created": "2021-05-03T18:12:40.139Z", + "updated": "2021-05-03T18:12:40.151Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "395-Gzipped-source-tarball", + "os": 3, + "release": 618, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "364158b3113cf8ac8db7868ce40ebc7b", + "filesize": 25627989, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3453, + "fields": { + "created": "2021-05-03T18:12:40.296Z", + "updated": "2021-05-03T18:12:40.310Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "395-Windows-help-file", + "os": 1, + "release": 618, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.5/python395.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.5/python395.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b311674bd26a602011d8baea2381df9e", + "filesize": 8867595, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3454, + "fields": { + "created": "2021-05-03T18:12:40.439Z", + "updated": "2021-05-03T18:12:40.450Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "395-Windows-embeddable-package-64-bit", + "os": 1, + "release": 618, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.5/python-3.9.5-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.5/python-3.9.5-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0b3a4a9ae9d319885eade3ac5aca7d17", + "filesize": 8427568, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3455, + "fields": { + "created": "2021-05-03T18:12:40.594Z", + "updated": "2021-05-03T18:12:40.608Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "395-XZ-compressed-source-tarball", + "os": 3, + "release": 618, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "71f7ada6bec9cdbf4538adc326120cfd", + "filesize": 19058600, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3456, + "fields": { + "created": "2021-05-03T18:12:40.973Z", + "updated": "2021-05-03T18:40:37.506Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "395-macOS-64-bit-universal2-installer", + "os": 2, + "release": 618, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.5/python-3.9.5-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.5/python-3.9.5-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "59aedbc04df8ee0547d3042270e9aa57", + "filesize": 37732597, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3457, + "fields": { + "created": "2021-05-03T18:12:41.348Z", + "updated": "2021-05-03T18:12:41.355Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel installer", + "slug": "395-macOS-64-bit-Intel-installer", + "os": 2, + "release": 618, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.5/python-3.9.5-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.5/python-3.9.5-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "870e851eef2c6712239e0b97ea5bf407", + "filesize": 29933848, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3458, + "fields": { + "created": "2021-05-03T18:12:41.484Z", + "updated": "2021-05-03T18:12:41.496Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "395-Windows-installer-64-bit", + "os": 1, + "release": 618, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.5/python-3.9.5-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.5/python-3.9.5-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "53a354a15baed952ea9519a7f4d87c3f", + "filesize": 28377264, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3459, + "fields": { + "created": "2021-05-03T18:12:41.636Z", + "updated": "2021-05-03T18:13:23.264Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "395-Windows-installer-32-bit", + "os": 1, + "release": 618, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.5/python-3.9.5.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.5/python-3.9.5.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b29b19a94bbe498808e5e12c51625dd8", + "filesize": 27281416, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3460, + "fields": { + "created": "2021-05-03T21:37:49.054Z", + "updated": "2021-05-03T23:19:02.965Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3100-b1-macOS-64-bit-universal2-installer", + "os": 2, + "release": 619, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b1-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b1-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "acb88a2f33c36b10d06ce3a65ad62be8", + "filesize": 39226355, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3461, + "fields": { + "created": "2021-05-03T21:37:49.167Z", + "updated": "2021-05-03T21:37:49.177Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3100-b1-Windows-installer-32-bit", + "os": 1, + "release": 619, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3ec21464d87f7050ce3b6b10d956b363", + "filesize": 26579328, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3462, + "fields": { + "created": "2021-05-03T21:37:49.245Z", + "updated": "2021-05-03T21:37:49.257Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3100-b1-Windows-installer-64-bit", + "os": 1, + "release": 619, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6dbedc867da5bde6f739f078b3ccd540", + "filesize": 27722592, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3463, + "fields": { + "created": "2021-05-03T21:37:49.329Z", + "updated": "2021-05-03T21:37:49.343Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3100-b1-Windows-embeddable-package-64-bit", + "os": 1, + "release": 619, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "38fdadca240558116f4a641fa8f44f1a", + "filesize": 8425605, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3464, + "fields": { + "created": "2021-05-03T21:37:49.408Z", + "updated": "2021-05-03T21:37:49.419Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3100-b1-Windows-help-file", + "os": 1, + "release": 619, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python3100b1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python3100b1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ea365f28a7d41b69a17a9146700e691d", + "filesize": 9087926, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3465, + "fields": { + "created": "2021-05-03T21:37:49.501Z", + "updated": "2021-05-03T21:37:49.513Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3100-b1-XZ-compressed-source-tarball", + "os": 3, + "release": 619, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8a1d22cc68dccffab13f5e2e0d005ef0", + "filesize": 18545252, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3466, + "fields": { + "created": "2021-05-03T21:37:49.607Z", + "updated": "2021-05-03T21:37:49.623Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3100-b1-Gzipped-source-tarball", + "os": 3, + "release": 619, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b16d029809701aad08edc56c4d3e16ff", + "filesize": 24789577, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3467, + "fields": { + "created": "2021-05-03T21:37:49.732Z", + "updated": "2021-05-03T21:37:49.763Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3100-b1-Windows-embeddable-package-32-bit", + "os": 1, + "release": 619, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e58d46b3ac886cb572de40621dd08204", + "filesize": 7460668, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3468, + "fields": { + "created": "2021-06-01T10:49:02.211Z", + "updated": "2021-06-01T10:49:02.224Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3100-b2-XZ-compressed-source-tarball", + "os": 3, + "release": 620, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f412008ffae2505e7720e48204c6e24b", + "filesize": 18651420, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3469, + "fields": { + "created": "2021-06-01T10:49:02.351Z", + "updated": "2021-06-01T10:49:02.385Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3100-b2-Windows-installer-64-bit", + "os": 1, + "release": 620, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eba17cc88d98473652e81dafab848981", + "filesize": 28173712, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3470, + "fields": { + "created": "2021-06-01T10:49:02.460Z", + "updated": "2021-06-01T10:49:02.466Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3100-b2-Gzipped-source-tarball", + "os": 3, + "release": 620, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "db8dd73f6794c950f493ff9babee5f95", + "filesize": 24907719, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3471, + "fields": { + "created": "2021-06-01T10:49:02.564Z", + "updated": "2021-06-01T10:49:02.682Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3100-b2-macOS-64-bit-universal2-installer", + "os": 2, + "release": 620, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b2-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b2-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b4f987b4722f0932c29da40316801b4c", + "filesize": 39569167, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3472, + "fields": { + "created": "2021-06-01T10:49:02.834Z", + "updated": "2021-06-01T10:49:02.880Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3100-b2-Windows-embeddable-package-64-bit", + "os": 1, + "release": 620, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f626bb0761b8a28c8dc150f04839b2a5", + "filesize": 8437800, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3473, + "fields": { + "created": "2021-06-01T10:49:03.012Z", + "updated": "2021-06-01T10:49:03.056Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3100-b2-Windows-help-file", + "os": 1, + "release": 620, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python3100b2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python3100b2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c11dbff7c5c2ab36dba820832a115f94", + "filesize": 9526046, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3474, + "fields": { + "created": "2021-06-01T10:49:03.161Z", + "updated": "2021-06-01T10:49:03.174Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3100-b2-Windows-installer-32-bit", + "os": 1, + "release": 620, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3c90635f7c226974a26e82623b57902d", + "filesize": 27038208, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3475, + "fields": { + "created": "2021-06-01T10:49:03.246Z", + "updated": "2021-06-01T10:49:03.270Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3100-b2-Windows-embeddable-package-32-bit", + "os": 1, + "release": 620, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7bc1fafd98332864c80d8cebabc6c9b7", + "filesize": 7467157, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3476, + "fields": { + "created": "2021-06-17T21:22:10.254Z", + "updated": "2021-06-17T21:22:10.321Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3100-b3-macOS-64-bit-universal2-installer", + "os": 2, + "release": 621, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b3-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b3-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "535d99735a7b3dde52c5a81bfb6bb713", + "filesize": 39608144, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3477, + "fields": { + "created": "2021-06-17T21:22:10.509Z", + "updated": "2021-06-17T21:22:10.556Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3100-b3-Windows-installer-64-bit", + "os": 1, + "release": 621, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "477c10f34a391029ee675e3f0e3c728b", + "filesize": 28211568, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3478, + "fields": { + "created": "2021-06-17T21:22:10.687Z", + "updated": "2021-06-17T21:22:10.716Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3100-b3-Windows-embeddable-package-64-bit", + "os": 1, + "release": 621, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f54b23dfda14e40c2cb23e7179f46908", + "filesize": 8457563, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3479, + "fields": { + "created": "2021-06-17T21:22:10.813Z", + "updated": "2021-06-17T21:22:10.922Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3100-b3-XZ-compressed-source-tarball", + "os": 3, + "release": 621, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "760a09c3773ad44ba48bf9bcb09c3c64", + "filesize": 18640292, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3480, + "fields": { + "created": "2021-06-17T21:22:11.024Z", + "updated": "2021-06-17T21:22:11.039Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3100-b3-Windows-installer-32-bit", + "os": 1, + "release": 621, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4e14c9f67eaed17ec52cc110854fca7a", + "filesize": 27056200, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3481, + "fields": { + "created": "2021-06-17T21:22:11.174Z", + "updated": "2021-06-17T21:22:11.242Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3100-b3-Windows-help-file", + "os": 1, + "release": 621, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python3100b3.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python3100b3.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d11cd6dfe2294576d03fc1a0c4ecb834", + "filesize": 9541464, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3482, + "fields": { + "created": "2021-06-17T21:22:11.348Z", + "updated": "2021-06-17T21:22:11.356Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3100-b3-Windows-embeddable-package-32-bit", + "os": 1, + "release": 621, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "224b7d47fdc81ca354b6bf458639bc5b", + "filesize": 7476046, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3483, + "fields": { + "created": "2021-06-17T21:22:11.467Z", + "updated": "2021-06-17T21:22:11.519Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3100-b3-Gzipped-source-tarball", + "os": 3, + "release": 621, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ad9200d73f29f407f60cdefbd009a477", + "filesize": 24923517, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3484, + "fields": { + "created": "2021-06-28T11:03:01.629Z", + "updated": "2021-06-28T11:03:01.655Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3811-XZ-compressed-source-tarball", + "os": 3, + "release": 623, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.11/Python-3.8.11.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.11/Python-3.8.11.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5840ba601128f48fee4e7c98fbdac65d", + "filesize": 18437648, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3485, + "fields": { + "created": "2021-06-28T11:03:01.748Z", + "updated": "2021-06-28T11:03:01.760Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3811-Gzipped-source-tarball", + "os": 3, + "release": 623, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.11/Python-3.8.11.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.11/Python-3.8.11.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f22ef46ebf8d15d8e495a237277bf2fa", + "filesize": 24727392, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3486, + "fields": { + "created": "2021-06-28T18:49:14.798Z", + "updated": "2021-06-28T18:49:14.905Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "396-XZ-compressed-source-tarball", + "os": 3, + "release": 622, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ecc29a7688f86e550d29dba2ee66cf80", + "filesize": 19051972, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3487, + "fields": { + "created": "2021-06-28T18:49:15.016Z", + "updated": "2021-06-28T18:49:15.026Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "396-Windows-embeddable-package-32-bit", + "os": 1, + "release": 622, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.6/python-3.9.6-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.6/python-3.9.6-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5b9693f74979e86a9d463cf73bf0c2ab", + "filesize": 7599619, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3488, + "fields": { + "created": "2021-06-28T18:49:15.158Z", + "updated": "2021-06-28T18:49:15.248Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "396-Gzipped-source-tarball", + "os": 3, + "release": 622, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "798b9d3e866e1906f6e32203c4c560fa", + "filesize": 25640094, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3489, + "fields": { + "created": "2021-06-28T18:49:15.396Z", + "updated": "2021-06-28T18:49:15.458Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "396-Windows-installer-64-bit", + "os": 1, + "release": 622, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.6/python-3.9.6-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.6/python-3.9.6-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ac25cf79f710bf31601ed067ccd07deb", + "filesize": 26037888, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3490, + "fields": { + "created": "2021-06-28T18:49:15.534Z", + "updated": "2021-06-28T18:49:15.547Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "396-Windows-embeddable-package-64-bit", + "os": 1, + "release": 622, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.6/python-3.9.6-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.6/python-3.9.6-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "89980d3e54160c10554b01f2b9f0a03b", + "filesize": 8448277, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3491, + "fields": { + "created": "2021-06-28T18:49:15.620Z", + "updated": "2021-06-28T18:49:15.629Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "396-Windows-help-file", + "os": 1, + "release": 622, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.6/python396.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.6/python396.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "91482c82390caa62accfdacbcaabf618", + "filesize": 6501645, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3492, + "fields": { + "created": "2021-06-28T18:49:15.775Z", + "updated": "2021-06-28T18:49:15.815Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel installer", + "slug": "396-macOS-64-bit-Intel-installer", + "os": 2, + "release": 622, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.6/python-3.9.6-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.6/python-3.9.6-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d714923985e0303b9e9b037e5f7af815", + "filesize": 29950653, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3493, + "fields": { + "created": "2021-06-28T18:49:15.917Z", + "updated": "2021-06-28T18:50:02.756Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "396-Windows-installer-32-bit", + "os": 1, + "release": 622, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.6/python-3.9.6.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.6/python-3.9.6.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "90987973d91d4e2cddb86c4e0a54ba7e", + "filesize": 24931328, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3494, + "fields": { + "created": "2021-06-28T18:49:16.031Z", + "updated": "2021-06-28T18:49:16.071Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "396-macOS-64-bit-universal2-installer", + "os": 2, + "release": 622, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.6/python-3.9.6-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.6/python-3.9.6-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "93a29856f5863d1b9c1a45c8823e034d", + "filesize": 38033506, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3495, + "fields": { + "created": "2021-06-28T19:01:08.684Z", + "updated": "2021-06-28T19:01:08.708Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3711-XZ-compressed-source-tarball", + "os": 3, + "release": 625, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.11/Python-3.7.11.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.11/Python-3.7.11.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b3671d35b61f5422605cedad32f3457a", + "filesize": 17393380, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3496, + "fields": { + "created": "2021-06-28T19:01:08.836Z", + "updated": "2021-06-28T19:01:08.863Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3711-Gzipped-source-tarball", + "os": 3, + "release": 625, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.11/Python-3.7.11.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.11/Python-3.7.11.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a7e66953dba909d395755b3f2e491f6e", + "filesize": 23286381, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3497, + "fields": { + "created": "2021-06-28T19:04:16.083Z", + "updated": "2021-06-28T19:04:16.185Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3614-Gzipped-source-tarball", + "os": 3, + "release": 624, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.14/Python-3.6.14.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.14/Python-3.6.14.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "54a320cffe046bbbe4321896d67bde2b", + "filesize": 23029806, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3498, + "fields": { + "created": "2021-06-28T19:04:16.334Z", + "updated": "2021-06-28T19:04:16.476Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3614-XZ-compressed-source-tarball", + "os": 3, + "release": 624, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.14/Python-3.6.14.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.14/Python-3.6.14.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3224d64986a9f10b9a52f4fd6f0a0412", + "filesize": 17218148, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3499, + "fields": { + "created": "2021-07-11T01:36:52.999Z", + "updated": "2021-07-11T01:36:53.029Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3100-b4-Windows-installer-32-bit", + "os": 1, + "release": 626, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "761ad25df417f6d10d37d715ceb27db6", + "filesize": 27030408, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3500, + "fields": { + "created": "2021-07-11T01:36:53.099Z", + "updated": "2021-07-11T01:36:53.108Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3100-b4-Windows-help-file", + "os": 1, + "release": 626, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python3100b4.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python3100b4.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "52c1d63b88e965c98881d9324b3af690", + "filesize": 9519530, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3501, + "fields": { + "created": "2021-07-11T01:36:53.177Z", + "updated": "2021-07-11T01:36:53.188Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3100-b4-Windows-embeddable-package-64-bit", + "os": 1, + "release": 626, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aaaa3d9b6f01c231c1c8b4b6768705a4", + "filesize": 8456031, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3502, + "fields": { + "created": "2021-07-11T01:36:53.257Z", + "updated": "2021-07-11T01:36:53.263Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3100-b4-XZ-compressed-source-tarball", + "os": 3, + "release": 626, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "986102c269f938ff38b47e0cbfc6583b", + "filesize": 18652712, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3503, + "fields": { + "created": "2021-07-11T01:36:53.335Z", + "updated": "2021-07-11T01:36:53.346Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3100-b4-macOS-64-bit-universal2-installer", + "os": 2, + "release": 626, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b4-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b4-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "891948ab42fb691cbb5036ea3b375d14", + "filesize": 39589650, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3504, + "fields": { + "created": "2021-07-11T01:36:53.412Z", + "updated": "2021-07-11T01:36:53.418Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3100-b4-Gzipped-source-tarball", + "os": 3, + "release": 626, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f7fe4f182b0399418ad503faf527a55f", + "filesize": 24918603, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3505, + "fields": { + "created": "2021-07-11T01:36:53.501Z", + "updated": "2021-07-11T01:36:53.522Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3100-b4-Windows-installer-64-bit", + "os": 1, + "release": 626, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1595597f8e1b9defc992cb9177741875", + "filesize": 28180728, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3506, + "fields": { + "created": "2021-07-11T01:36:53.588Z", + "updated": "2021-07-11T01:36:53.600Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3100-b4-Windows-embeddable-package-32-bit", + "os": 1, + "release": 626, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0b4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b1f54fc348fe234d4d76b36bb1df601a", + "filesize": 7474555, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3523, + "fields": { + "created": "2021-08-30T17:18:08.590Z", + "updated": "2021-08-30T17:18:08.596Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3812-Gzipped-source-tarball", + "os": 3, + "release": 628, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f7890dd43302daa5fcb7b0254b4d0f33", + "filesize": 24769402, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3524, + "fields": { + "created": "2021-08-30T17:18:08.683Z", + "updated": "2021-08-30T17:18:08.688Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3812-XZ-compressed-source-tarball", + "os": 3, + "release": 628, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9dd8f82e586b776383c82e27923f8795", + "filesize": 18443568, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3525, + "fields": { + "created": "2021-08-30T21:51:35.850Z", + "updated": "2021-08-30T21:51:35.855Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "397-XZ-compressed-source-tarball", + "os": 3, + "release": 629, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fddb060b483bc01850a3f412eea1d954", + "filesize": 19123232, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3526, + "fields": { + "created": "2021-08-30T21:51:35.916Z", + "updated": "2021-08-30T21:52:38.072Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "397-Windows-installer-32-bit", + "os": 1, + "release": 629, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.7/python-3.9.7.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.7/python-3.9.7.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0d949bdfdbd0c8c66107a980a95efd85", + "filesize": 27811736, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3527, + "fields": { + "created": "2021-08-30T21:51:35.975Z", + "updated": "2021-08-30T21:51:35.980Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "397-Windows-installer-64-bit", + "os": 1, + "release": 629, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.7/python-3.9.7-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.7/python-3.9.7-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cc3eabc1f9d6c703d1d2a4e7c041bc1d", + "filesize": 28895456, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3528, + "fields": { + "created": "2021-08-30T21:51:36.037Z", + "updated": "2021-08-30T21:51:36.043Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "397-macOS-64-bit-universal2-installer", + "os": 2, + "release": 629, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.7/python-3.9.7-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.7/python-3.9.7-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "825067610b16b03ec814630df1b65193", + "filesize": 38144099, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3529, + "fields": { + "created": "2021-08-30T21:51:36.107Z", + "updated": "2021-08-30T21:51:36.112Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "397-Gzipped-source-tarball", + "os": 3, + "release": 629, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5f463f30b1fdcb545f156583630318b3", + "filesize": 25755357, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3530, + "fields": { + "created": "2021-08-30T21:51:36.179Z", + "updated": "2021-08-30T21:51:36.184Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel installer", + "slug": "397-macOS-64-bit-Intel-installer", + "os": 2, + "release": 629, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.7/python-3.9.7-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.7/python-3.9.7-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ce8c2f885f26b09536857610644260d4", + "filesize": 30038206, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3531, + "fields": { + "created": "2021-08-30T21:51:36.239Z", + "updated": "2021-08-30T21:51:36.244Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "397-Windows-embeddable-package-32-bit", + "os": 1, + "release": 629, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.7/python-3.9.7-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.7/python-3.9.7-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6d12e3e0f942830de8466a83d30a45fb", + "filesize": 7652688, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3532, + "fields": { + "created": "2021-08-30T21:51:36.300Z", + "updated": "2021-08-30T21:51:36.307Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "397-Windows-embeddable-package-64-bit", + "os": 1, + "release": 629, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.7/python-3.9.7-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.7/python-3.9.7-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "67e19ff32b3ef62a40bccd50e33b0f53", + "filesize": 8473919, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3533, + "fields": { + "created": "2021-08-30T21:51:36.368Z", + "updated": "2021-08-30T21:51:36.377Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "397-Windows-help-file", + "os": 1, + "release": 629, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.7/python397.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.7/python397.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b92a78506ccf258d5ad0d98c341fc5d1", + "filesize": 9263789, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3534, + "fields": { + "created": "2021-09-04T21:39:31.555Z", + "updated": "2021-09-04T21:39:31.562Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3615-Gzipped-source-tarball", + "os": 3, + "release": 630, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f9e6f91c754a604f4fc6f6c7683723fb", + "filesize": 23035095, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3535, + "fields": { + "created": "2021-09-04T21:39:31.642Z", + "updated": "2021-09-04T21:39:31.661Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3615-XZ-compressed-source-tarball", + "os": 3, + "release": 630, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bc04aa6c2a1a172a35012abd668538cd", + "filesize": 17223796, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3536, + "fields": { + "created": "2021-09-04T21:48:24.669Z", + "updated": "2021-09-04T21:48:24.676Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3712-Gzipped-source-tarball", + "os": 3, + "release": 631, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6fe83678c085a7735a943cf1e4d41c14", + "filesize": 23290136, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3537, + "fields": { + "created": "2021-09-04T21:48:24.737Z", + "updated": "2021-09-04T21:48:24.742Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3712-XZ-compressed-source-tarball", + "os": 3, + "release": 631, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "352ea082224121a8b7bc4d6d06e5de39", + "filesize": 17401916, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3538, + "fields": { + "created": "2021-09-07T11:58:44.347Z", + "updated": "2021-09-07T11:58:44.354Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3100-rc1-macOS-64-bit-universal2-installer", + "os": 2, + "release": 627, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc1-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc1-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7c715c0beabf1771c64d79382973d23b", + "filesize": 39321062, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3539, + "fields": { + "created": "2021-09-07T11:58:44.413Z", + "updated": "2021-09-07T11:58:44.419Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3100-rc1-Windows-embeddable-package-32-bit", + "os": 1, + "release": 627, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "38ac71448b93817b84e5a52fdc54ac54", + "filesize": 7479472, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3540, + "fields": { + "created": "2021-09-07T11:58:44.478Z", + "updated": "2021-09-07T11:58:44.482Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3100-rc1-Windows-installer-64-bit", + "os": 1, + "release": 627, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "39135519b044757f0a3b09d63612b0da", + "filesize": 28184184, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3541, + "fields": { + "created": "2021-09-07T11:58:44.549Z", + "updated": "2021-09-07T11:58:44.554Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3100-rc1-Gzipped-source-tarball", + "os": 3, + "release": 627, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d23c2a8228705b17e8414f1660e4bb73", + "filesize": 24955561, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3542, + "fields": { + "created": "2021-09-07T11:58:44.611Z", + "updated": "2021-09-07T11:58:44.618Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3100-rc1-Windows-help-file", + "os": 1, + "release": 627, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python3100rc1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python3100rc1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "20b68ae1b71f8eae9809e3b55b0f8690", + "filesize": 9515815, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3543, + "fields": { + "created": "2021-09-07T11:58:44.681Z", + "updated": "2021-09-07T11:58:44.687Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3100-rc1-Windows-embeddable-package-64-bit", + "os": 1, + "release": 627, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2bc8e71a15b6f52442c1c47f3e3ab27e", + "filesize": 8459608, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3544, + "fields": { + "created": "2021-09-07T11:58:44.756Z", + "updated": "2021-09-07T11:58:44.761Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3100-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 627, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "edd2eb2f7f4a932ed59196cbe373e5fb", + "filesize": 18680452, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3545, + "fields": { + "created": "2021-09-07T11:58:44.834Z", + "updated": "2021-09-07T11:58:44.842Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3100-rc1-Windows-installer-32-bit", + "os": 1, + "release": 627, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6de353f2f7422aa030d4ccc788ffa75e", + "filesize": 27035896, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3546, + "fields": { + "created": "2021-09-07T22:09:02.190Z", + "updated": "2021-09-07T22:09:02.196Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3100-rc2-Windows-embeddable-package-32-bit", + "os": 1, + "release": 632, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "011d61255bf242a5e10e6cd754710148", + "filesize": 7522032, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3547, + "fields": { + "created": "2021-09-07T22:09:02.265Z", + "updated": "2021-09-07T22:09:02.272Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3100-rc2-Windows-installer-32-bit", + "os": 1, + "release": 632, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "acbd60da86d3cc001e9ccbe7366b51f9", + "filesize": 27201184, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3548, + "fields": { + "created": "2021-09-07T22:09:02.333Z", + "updated": "2021-09-07T22:09:02.351Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3100-rc2-XZ-compressed-source-tarball", + "os": 3, + "release": 632, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0rc2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0rc2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d3bfe8004516dd5b2afc649ff94be965", + "filesize": 18737220, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3549, + "fields": { + "created": "2021-09-07T22:09:02.420Z", + "updated": "2021-09-07T22:09:02.426Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3100-rc2-Gzipped-source-tarball", + "os": 3, + "release": 632, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0rc2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0rc2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "55652b94990d6bf15fe1e47ac1114519", + "filesize": 25002890, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3550, + "fields": { + "created": "2021-09-07T22:09:02.488Z", + "updated": "2021-09-07T22:09:02.497Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3100-rc2-Windows-installer-64-bit", + "os": 1, + "release": 632, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b49614e82253d9ffe3f75f35aefff7eb", + "filesize": 28325752, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3551, + "fields": { + "created": "2021-09-07T22:09:02.575Z", + "updated": "2021-09-07T22:09:02.582Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3100-rc2-macOS-64-bit-universal2-installer", + "os": 2, + "release": 632, + "description": "for macOS 10.9 and later, including macOS 11 Big Sur on Apple Silicon (experimental)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc2-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc2-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fada6b331699e922efbc1c1c0c6197f8", + "filesize": 39725608, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3552, + "fields": { + "created": "2021-09-07T22:09:02.669Z", + "updated": "2021-09-07T22:09:02.678Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3100-rc2-Windows-help-file", + "os": 1, + "release": 632, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python3100rc2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python3100rc2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7c34a6f4e89d5aa308edacb23322f666", + "filesize": 9567441, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3553, + "fields": { + "created": "2021-09-07T22:09:02.761Z", + "updated": "2021-09-07T22:09:02.768Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3100-rc2-Windows-embeddable-package-64-bit", + "os": 1, + "release": 632, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "29f66c41e13ca02bfb86a20260610f63", + "filesize": 8475522, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3556, + "fields": { + "created": "2021-10-04T19:32:24.241Z", + "updated": "2021-10-04T19:32:24.248Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3100-Windows-embeddable-package-32-bit", + "os": 1, + "release": 633, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dc9d1abc644dd78f5e48edae38c7bc6b", + "filesize": 7521592, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3557, + "fields": { + "created": "2021-10-04T19:32:24.310Z", + "updated": "2021-10-04T19:32:24.316Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3100-Gzipped-source-tarball", + "os": 3, + "release": 633, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "729e36388ae9a832b01cf9138921b383", + "filesize": 25007016, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3558, + "fields": { + "created": "2021-10-04T19:32:24.384Z", + "updated": "2021-10-04T19:32:24.391Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3100-Windows-installer-64-bit", + "os": 1, + "release": 633, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c3917c08a7fe85db7203da6dcaa99a70", + "filesize": 28315928, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3559, + "fields": { + "created": "2021-10-04T19:32:24.457Z", + "updated": "2021-11-03T02:38:02.607Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3100-macOS-64-bit-universal2-installer", + "os": 2, + "release": 633, + "description": "for macOS 10.9 and later (updated for macOS 12 Monterey)", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0post2-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0post2-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8575cc983035ea2f0414e25ce0289ab8", + "filesize": 39735213, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3560, + "fields": { + "created": "2021-10-04T19:32:24.517Z", + "updated": "2021-10-04T19:59:31.543Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3100-Windows-installer-32-bit", + "os": 1, + "release": 633, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "133aa48145032e341ad2a000cd3bff50", + "filesize": 27194856, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3561, + "fields": { + "created": "2021-10-04T19:32:24.593Z", + "updated": "2021-10-04T19:32:24.597Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3100-Windows-help-file", + "os": 1, + "release": 633, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python3100.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python3100.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9d7b80c1c23cfb2cecd63ac4fac9766e", + "filesize": 9559706, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3562, + "fields": { + "created": "2021-10-04T19:32:24.661Z", + "updated": "2021-10-04T19:32:24.666Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3100-Windows-embeddable-package-64-bit", + "os": 1, + "release": 633, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.0/python-3.10.0-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/python-3.10.0-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "340408540eeff359d5eaf93139ab90fd", + "filesize": 8474319, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3563, + "fields": { + "created": "2021-10-04T19:32:24.726Z", + "updated": "2021-10-04T19:32:24.730Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3100-XZ-compressed-source-tarball", + "os": 3, + "release": 633, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3e7035d272680f80e3ce4e8eb492d580", + "filesize": 18726176, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3564, + "fields": { + "created": "2021-10-05T17:08:50.212Z", + "updated": "2021-10-05T17:08:50.218Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3110-a1-Windows-embeddable-package-32-bit", + "os": 1, + "release": 634, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9c65afbc53083041e4b9c39f6b341ec1", + "filesize": 8909300, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3565, + "fields": { + "created": "2021-10-05T17:08:50.287Z", + "updated": "2021-10-05T17:08:50.292Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3110-a1-Windows-installer-32-bit", + "os": 1, + "release": 634, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2307c82e8efbb13b55e71835f9816aac", + "filesize": 27406160, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3566, + "fields": { + "created": "2021-10-05T17:08:50.358Z", + "updated": "2021-10-05T17:08:50.375Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3110-a1-XZ-compressed-source-tarball", + "os": 3, + "release": 634, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c163bd09fdc80116dafe97bf7c40ff3f", + "filesize": 18678136, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3567, + "fields": { + "created": "2021-10-05T17:08:50.443Z", + "updated": "2021-10-05T17:08:50.448Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3110-a1-Gzipped-source-tarball", + "os": 3, + "release": 634, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "83f9397a8a7677d5f59d38773ab4afd0", + "filesize": 24980169, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3568, + "fields": { + "created": "2021-10-05T17:08:50.522Z", + "updated": "2021-10-05T17:08:50.567Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3110-a1-Windows-installer-64-bit", + "os": 1, + "release": 634, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "65cd675ec5b78cb29b065ea04daff6ab", + "filesize": 28544904, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3569, + "fields": { + "created": "2021-10-05T17:08:50.648Z", + "updated": "2021-10-05T17:08:50.653Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3110-a1-Windows-help-file", + "os": 1, + "release": 634, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python3110a1.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python3110a1.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9507943edab24066a02da133f162c082", + "filesize": 9602312, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3570, + "fields": { + "created": "2021-10-05T17:08:50.716Z", + "updated": "2021-10-05T17:08:50.721Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3110-a1-macOS-64-bit-universal2-installer", + "os": 2, + "release": 634, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a1-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a1-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f550b51617d168674c004274bf68bcec", + "filesize": 40111324, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3571, + "fields": { + "created": "2021-10-05T17:08:50.789Z", + "updated": "2021-10-05T17:08:50.797Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3110-a1-Windows-embeddable-package-64-bit", + "os": 1, + "release": 634, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a8c5b8265380259845fdc2e8b6bf4789", + "filesize": 9878398, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3597, + "fields": { + "created": "2021-11-05T21:30:35.843Z", + "updated": "2021-11-05T21:30:35.852Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3110-a2-macOS-64-bit-universal2-installer", + "os": 2, + "release": 667, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a2-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a2-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c3c278a20e696ad082cb198ec1f08f6c", + "filesize": 40301744, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3598, + "fields": { + "created": "2021-11-05T21:30:35.922Z", + "updated": "2021-11-05T21:30:35.933Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3110-a2-Windows-embeddable-package-32-bit", + "os": 1, + "release": 667, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "626ece86b8d71e9cb87d7f328069a11d", + "filesize": 8923706, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3599, + "fields": { + "created": "2021-11-05T21:30:35.986Z", + "updated": "2021-11-05T21:30:35.995Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3110-a2-Windows-installer-64-bit", + "os": 1, + "release": 667, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2bab26e1b0f7e794c790ed7fdd40e77c", + "filesize": 28576512, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3600, + "fields": { + "created": "2021-11-05T21:30:36.067Z", + "updated": "2021-11-05T21:30:36.092Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3110-a2-Gzipped-source-tarball", + "os": 3, + "release": 667, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b56d7d3b8825d03929d68c6d0967ec7c", + "filesize": 25029716, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3601, + "fields": { + "created": "2021-11-05T21:30:36.158Z", + "updated": "2021-11-05T21:30:36.173Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3110-a2-Windows-embeddable-package-64-bit", + "os": 1, + "release": 667, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1317611afcc3637a8c544dc97b88e9ef", + "filesize": 9879079, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3602, + "fields": { + "created": "2021-11-05T21:30:36.237Z", + "updated": "2021-11-05T21:30:36.245Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3110-a2-XZ-compressed-source-tarball", + "os": 3, + "release": 667, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cd5003eaa72f439f35e79661c6cfea08", + "filesize": 18714064, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3603, + "fields": { + "created": "2021-11-05T21:30:36.322Z", + "updated": "2021-11-05T21:30:36.330Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3110-a2-Windows-help-file", + "os": 1, + "release": 667, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python3110a2.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python3110a2.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8eb5807801781fda8f090f014b150e2d", + "filesize": 9619502, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3604, + "fields": { + "created": "2021-11-05T21:30:36.397Z", + "updated": "2021-11-05T21:30:36.405Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3110-a2-Windows-installer-32-bit", + "os": 1, + "release": 667, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b04497eac8a7b4212104b0a92519d67c", + "filesize": 27446096, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3605, + "fields": { + "created": "2021-11-05T22:00:06.025Z", + "updated": "2021-11-05T22:00:06.034Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel-only installer", + "slug": "398-macOS-64-bit-Intel-only-installer", + "os": 2, + "release": 668, + "description": "for macOS 10.9 and later, deprecated", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.8/python-3.9.8-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.8/python-3.9.8-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7b836e75ebb1dbc8bdae60717fc197d1", + "filesize": 30058388, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3606, + "fields": { + "created": "2021-11-05T22:00:06.103Z", + "updated": "2021-11-05T22:00:47.922Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "398-Windows-installer-32-bit", + "os": 1, + "release": 668, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.8/python-3.9.8.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.8/python-3.9.8.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "090291d68b7bbc50a0fe53af6a104bd9", + "filesize": 27842600, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3607, + "fields": { + "created": "2021-11-05T22:00:06.200Z", + "updated": "2021-11-05T22:00:06.217Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "398-macOS-64-bit-universal2-installer", + "os": 2, + "release": 668, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.8/python-3.9.8-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.8/python-3.9.8-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ab312c51dfb44108d1936342f53803c1", + "filesize": 38167074, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3608, + "fields": { + "created": "2021-11-05T22:00:06.306Z", + "updated": "2021-11-05T22:00:06.312Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "398-Windows-embeddable-package-64-bit", + "os": 1, + "release": 668, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.8/python-3.9.8-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.8/python-3.9.8-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2cb98470ee86603d893e518613fdb76a", + "filesize": 8472039, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3609, + "fields": { + "created": "2021-11-05T22:00:06.389Z", + "updated": "2021-11-05T22:00:06.395Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "398-Windows-help-file", + "os": 1, + "release": 668, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.8/python398.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.8/python398.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "92d8ab8da1b95824bf05a340cdfd2bde", + "filesize": 9279391, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3610, + "fields": { + "created": "2021-11-05T22:00:06.472Z", + "updated": "2021-11-05T22:00:06.489Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "398-Windows-embeddable-package-32-bit", + "os": 1, + "release": 668, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.8/python-3.9.8-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.8/python-3.9.8-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "719dc57d39fb22a1289487a5f8ba1da0", + "filesize": 7661191, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3611, + "fields": { + "created": "2021-11-05T22:00:06.567Z", + "updated": "2021-11-05T22:00:06.575Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "398-Windows-installer-64-bit", + "os": 1, + "release": 668, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.8/python-3.9.8-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.8/python-3.9.8-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8147fa17b727d6ed8b3fbed8fa9b3724", + "filesize": 28908176, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3612, + "fields": { + "created": "2021-11-05T22:00:06.668Z", + "updated": "2021-11-05T22:00:06.678Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "398-XZ-compressed-source-tarball", + "os": 3, + "release": 668, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.8/Python-3.9.8.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.8/Python-3.9.8.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d4875c1832c8f757280794f6d5e9c95f", + "filesize": 19149464, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3613, + "fields": { + "created": "2021-11-05T22:00:06.754Z", + "updated": "2021-11-05T22:00:06.767Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "398-Gzipped-source-tarball", + "os": 3, + "release": 668, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.8/Python-3.9.8.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.8/Python-3.9.8.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "83419bd73655813223c2cf2afb11f83c", + "filesize": 25790162, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3614, + "fields": { + "created": "2021-11-15T21:49:08.057Z", + "updated": "2021-11-15T21:49:08.064Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "399-Windows-help-file", + "os": 1, + "release": 669, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.9/python399.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.9/python399.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "90109a4c9e7ee67f504b6a9f79201c6a", + "filesize": 9277937, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3615, + "fields": { + "created": "2021-11-15T21:49:09.141Z", + "updated": "2021-11-15T21:49:09.148Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "399-XZ-compressed-source-tarball", + "os": 3, + "release": 669, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "11d12076311563252a995201248d17e5", + "filesize": 19144372, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3616, + "fields": { + "created": "2021-11-15T21:49:09.579Z", + "updated": "2021-11-15T21:49:09.649Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "399-Windows-installer-64-bit", + "os": 1, + "release": 669, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.9/python-3.9.9-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.9/python-3.9.9-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a09ef64c9ea2e7d9a04a2cafb833aa7b", + "filesize": 28829104, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3617, + "fields": { + "created": "2021-11-15T21:49:09.723Z", + "updated": "2021-11-15T21:49:09.728Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "399-Gzipped-source-tarball", + "os": 3, + "release": 669, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a2da2a456c078db131734ff62de10ed5", + "filesize": 25787134, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3618, + "fields": { + "created": "2021-11-15T21:49:09.799Z", + "updated": "2021-11-15T21:49:09.804Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "399-macOS-64-bit-universal2-installer", + "os": 2, + "release": 669, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.9/python-3.9.9-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.9/python-3.9.9-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ff07b39be8e4a58a09aabe4d4f0efd64", + "filesize": 38168250, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3619, + "fields": { + "created": "2021-11-15T21:49:09.867Z", + "updated": "2021-11-15T21:49:45.123Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "399-Windows-installer-32-bit", + "os": 1, + "release": 669, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.9/python-3.9.9.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.9/python-3.9.9.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "41566bd99961047c8332d46bd3dd90fc", + "filesize": 27738360, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3620, + "fields": { + "created": "2021-11-15T21:49:09.935Z", + "updated": "2021-11-15T21:49:09.942Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel-only installer", + "slug": "399-macOS-64-bit-Intel-only-installer", + "os": 2, + "release": 669, + "description": "for macOS 10.9 and later, deprecated", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.9/python-3.9.9-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.9/python-3.9.9-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "558d424cd547a3a85c99bd5675b67370", + "filesize": 30060309, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3621, + "fields": { + "created": "2021-11-15T21:49:10.027Z", + "updated": "2021-11-15T21:49:10.065Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "399-Windows-embeddable-package-64-bit", + "os": 1, + "release": 669, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.9/python-3.9.9-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.9/python-3.9.9-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7129c695fff6bf19d5b2e1a4ff86a3e8", + "filesize": 8473749, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3622, + "fields": { + "created": "2021-11-15T21:49:10.127Z", + "updated": "2021-11-15T21:49:10.132Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "399-Windows-embeddable-package-32-bit", + "os": 1, + "release": 669, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.9/python-3.9.9-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.9/python-3.9.9-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a54f24cee83fe5ef2e65f707b3af4fc2", + "filesize": 7660516, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3623, + "fields": { + "created": "2021-12-06T20:46:48.647Z", + "updated": "2021-12-06T20:46:48.655Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3101-macOS-64-bit-universal2-installer", + "os": 2, + "release": 670, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.1/python-3.10.1-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.1/python-3.10.1-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d106e0f83028e9245397867148dc2323", + "filesize": 39790346, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3624, + "fields": { + "created": "2021-12-06T20:46:48.730Z", + "updated": "2021-12-06T20:51:02.440Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3101-Windows-installer-32-bit", + "os": 1, + "release": 670, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.1/python-3.10.1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.1/python-3.10.1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0b8c2ba677af4f47e534c7eee1c3cb03", + "filesize": 27047408, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3625, + "fields": { + "created": "2021-12-06T20:46:48.803Z", + "updated": "2021-12-06T20:46:48.809Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3101-Windows-embeddable-package-32-bit", + "os": 1, + "release": 670, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.1/python-3.10.1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.1/python-3.10.1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4f4d7a8f2118f62e17a4ebdf5fe0aee5", + "filesize": 7527277, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3626, + "fields": { + "created": "2021-12-06T20:46:48.863Z", + "updated": "2021-12-06T20:46:48.869Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3101-Windows-embeddable-package-64-bit", + "os": 1, + "release": 670, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.1/python-3.10.1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.1/python-3.10.1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "864dcff204ba8b257809cc3f20beb1b9", + "filesize": 8484449, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3627, + "fields": { + "created": "2021-12-06T20:46:48.941Z", + "updated": "2021-12-06T20:46:48.948Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3101-Windows-help-file", + "os": 1, + "release": 670, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.1/python3101.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.1/python3101.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "993f5820d23ba72f9aee2e501f54980a", + "filesize": 9573116, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3628, + "fields": { + "created": "2021-12-06T20:46:49.012Z", + "updated": "2021-12-06T20:46:49.018Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3101-XZ-compressed-source-tarball", + "os": 3, + "release": 670, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.1/Python-3.10.1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.1/Python-3.10.1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "789210934745a65247a3ebf5da9adb64", + "filesize": 18775460, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3629, + "fields": { + "created": "2021-12-06T20:46:49.089Z", + "updated": "2021-12-06T20:46:49.098Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3101-Windows-installer-64-bit", + "os": 1, + "release": 670, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.1/python-3.10.1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.1/python-3.10.1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0e1c3a6ee3a05b5c4cd3d43fce8311a1", + "filesize": 28179056, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3630, + "fields": { + "created": "2021-12-06T20:46:49.161Z", + "updated": "2021-12-06T20:46:49.167Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3101-Gzipped-source-tarball", + "os": 3, + "release": 670, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.1/Python-3.10.1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.1/Python-3.10.1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "91822157a97da16203877400c810d93e", + "filesize": 25061625, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3631, + "fields": { + "created": "2021-12-08T23:42:08.502Z", + "updated": "2021-12-08T23:42:08.508Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3110-a3-Windows-embeddable-package-32-bit", + "os": 1, + "release": 671, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "665ce581633d4ecd58b2dcf5759fb070", + "filesize": 9175879, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3632, + "fields": { + "created": "2021-12-08T23:42:08.571Z", + "updated": "2021-12-08T23:42:08.577Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3110-a3-XZ-compressed-source-tarball", + "os": 3, + "release": 671, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7f51bc58150d223c162241d6896204a4", + "filesize": 18775072, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3633, + "fields": { + "created": "2021-12-08T23:42:08.637Z", + "updated": "2021-12-08T23:42:08.642Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3110-a3-Windows-installer-64-bit", + "os": 1, + "release": 671, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "729453f18c6d19248429ee7bba4b46c7", + "filesize": 28543696, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3634, + "fields": { + "created": "2021-12-08T23:42:08.700Z", + "updated": "2021-12-08T23:42:08.705Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3110-a3-Gzipped-source-tarball", + "os": 3, + "release": 671, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0a00ecc45af8453f2f76f6877c76e371", + "filesize": 25092447, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3635, + "fields": { + "created": "2021-12-08T23:42:08.761Z", + "updated": "2021-12-08T23:42:08.768Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3110-a3-Windows-installer-32-bit", + "os": 1, + "release": 671, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1119f2f799e479d6c8b761d2c01475b2", + "filesize": 27411200, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3636, + "fields": { + "created": "2021-12-08T23:42:08.830Z", + "updated": "2021-12-08T23:42:08.835Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3110-a3-macOS-64-bit-universal2-installer", + "os": 2, + "release": 671, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a3-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a3-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1131f50071640f5ee9c6087490e4e87e", + "filesize": 41112740, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3637, + "fields": { + "created": "2021-12-08T23:42:08.897Z", + "updated": "2021-12-08T23:42:08.903Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3110-a3-Windows-help-file", + "os": 1, + "release": 671, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python3110a3.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python3110a3.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "47fe83c2c67145c89730ac580b7c0214", + "filesize": 9626252, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3638, + "fields": { + "created": "2021-12-08T23:42:08.965Z", + "updated": "2021-12-08T23:42:08.972Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3110-a3-Windows-embeddable-package-64-bit", + "os": 1, + "release": 671, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bda0970926c990e7a381bcc3574d456b", + "filesize": 10136404, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3649, + "fields": { + "created": "2022-01-17T14:33:34.620Z", + "updated": "2022-01-17T14:33:34.630Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3110-a4-XZ-compressed-source-tarball", + "os": 3, + "release": 673, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9de26ba99545171666206d7e19a1bacf", + "filesize": 18805548, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3650, + "fields": { + "created": "2022-01-17T14:33:34.714Z", + "updated": "2022-01-17T14:33:34.724Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3110-a4-macOS-64-bit-universal2-installer", + "os": 2, + "release": 673, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a4-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a4-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a6e2b3e12096df8014532ba1b62044d7", + "filesize": 41327317, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3651, + "fields": { + "created": "2022-01-17T14:33:34.826Z", + "updated": "2022-01-17T14:33:34.840Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3110-a4-Windows-embeddable-package-32-bit", + "os": 1, + "release": 673, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a8604d48e64209fd464cc6b1a45f4beb", + "filesize": 9275086, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3652, + "fields": { + "created": "2022-01-17T14:33:34.938Z", + "updated": "2022-01-17T14:33:34.945Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3110-a4-Windows-installer-32-bit", + "os": 1, + "release": 673, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "88323b413a9fbec08d862b316a66bac4", + "filesize": 27160592, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3653, + "fields": { + "created": "2022-01-17T14:33:35.035Z", + "updated": "2022-01-17T14:33:35.045Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3110-a4-Gzipped-source-tarball", + "os": 3, + "release": 673, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1a59168d4ccf2f4605aa19485e8b9f4d", + "filesize": 25146493, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3654, + "fields": { + "created": "2022-01-17T14:33:35.147Z", + "updated": "2022-01-17T14:33:35.153Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3110-a4-Windows-help-file", + "os": 1, + "release": 673, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python3110a4.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python3110a4.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2e14c646d255932b7f2503ec251c8b77", + "filesize": 9302448, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3655, + "fields": { + "created": "2022-01-17T14:33:35.242Z", + "updated": "2022-01-17T14:33:35.248Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3110-a4-Windows-embeddable-package-64-bit", + "os": 1, + "release": 673, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d6962b1810a68d3cccd3ae95deb21d16", + "filesize": 10236896, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3656, + "fields": { + "created": "2022-01-17T14:33:35.333Z", + "updated": "2022-01-17T14:33:35.339Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3110-a4-Windows-installer-64-bit", + "os": 1, + "release": 673, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2753eaa9c28a24b7d7b18790baecc899", + "filesize": 28309680, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3657, + "fields": { + "created": "2022-01-17T15:02:39.117Z", + "updated": "2022-01-17T15:02:39.124Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3102-Windows-help-file", + "os": 1, + "release": 672, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.2/python3102.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.2/python3102.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "342cabb615e5672e38c9906a3816d727", + "filesize": 9575352, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3658, + "fields": { + "created": "2022-01-17T15:02:39.215Z", + "updated": "2022-01-17T15:02:39.221Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3102-Windows-embeddable-package-64-bit", + "os": 1, + "release": 672, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.2/python-3.10.2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.2/python-3.10.2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f98f8d7dfa952224fca313ed8e9923d8", + "filesize": 8509629, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3659, + "fields": { + "created": "2022-01-17T15:02:39.301Z", + "updated": "2022-01-17T15:02:39.307Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3102-macOS-64-bit-universal2-installer", + "os": 2, + "release": 672, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.2/python-3.10.2-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.2/python-3.10.2-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "edced8c45edc72768f03f66cf4b4fa27", + "filesize": 39805121, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3660, + "fields": { + "created": "2022-01-17T15:02:39.389Z", + "updated": "2022-01-17T15:02:39.395Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3102-Windows-installer-64-bit", + "os": 1, + "release": 672, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.2/python-3.10.2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.2/python-3.10.2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2b4fd1ed6e736f0e65572da64c17e020", + "filesize": 28239176, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3661, + "fields": { + "created": "2022-01-17T15:02:39.470Z", + "updated": "2022-01-17T15:02:39.475Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3102-XZ-compressed-source-tarball", + "os": 3, + "release": 672, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.2/Python-3.10.2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.2/Python-3.10.2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "14e8c22458ed7779a1957b26cde01db9", + "filesize": 18780936, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3662, + "fields": { + "created": "2022-01-17T15:02:39.531Z", + "updated": "2022-01-17T15:04:00.372Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3102-Windows-installer-32-bit", + "os": 1, + "release": 672, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.2/python-3.10.2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.2/python-3.10.2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ef91f4e873280d37eb5bc26e7b18d3d1", + "filesize": 27072760, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3663, + "fields": { + "created": "2022-01-17T15:02:39.614Z", + "updated": "2022-01-17T15:02:39.624Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3102-Windows-embeddable-package-32-bit", + "os": 1, + "release": 672, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.2/python-3.10.2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.2/python-3.10.2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "44875e70945bf45f655f61bb82dba211", + "filesize": 7541211, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3664, + "fields": { + "created": "2022-01-17T15:02:39.703Z", + "updated": "2022-01-17T15:02:39.710Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3102-Gzipped-source-tarball", + "os": 3, + "release": 672, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.2/Python-3.10.2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.2/Python-3.10.2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "67c92270be6701f4a6fed57c4530139b", + "filesize": 25067363, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3665, + "fields": { + "created": "2022-01-17T16:16:43.019Z", + "updated": "2022-01-17T16:16:43.027Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3910-macOS-64-bit-universal2-installer", + "os": 2, + "release": 674, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.10/python-3.9.10-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.10/python-3.9.10-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c2393ab11a423d817501b8566ab5da9f", + "filesize": 38217233, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3666, + "fields": { + "created": "2022-01-17T16:16:43.123Z", + "updated": "2022-01-17T16:16:43.131Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3910-Windows-embeddable-package-64-bit", + "os": 1, + "release": 674, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.10/python-3.9.10-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.10/python-3.9.10-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b8e8bfba8e56edcd654d15e3bdc2e29a", + "filesize": 8509821, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3667, + "fields": { + "created": "2022-01-17T16:16:43.218Z", + "updated": "2022-01-17T16:16:43.226Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3910-Windows-help-file", + "os": 1, + "release": 674, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.10/python3910.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.10/python3910.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "784020441c1a25289483d3d8771a8215", + "filesize": 9284044, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3668, + "fields": { + "created": "2022-01-17T16:16:43.337Z", + "updated": "2022-01-17T16:16:43.347Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3910-Windows-installer-64-bit", + "os": 1, + "release": 674, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.10/python-3.9.10-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.10/python-3.9.10-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "747ac35ae667f4ec1ee3b001e9b7dbc6", + "filesize": 28909456, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3669, + "fields": { + "created": "2022-01-17T16:16:43.435Z", + "updated": "2022-01-17T16:16:43.440Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3910-XZ-compressed-source-tarball", + "os": 3, + "release": 674, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e754c4b2276750fd5b4785a1b443683a", + "filesize": 19154136, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3670, + "fields": { + "created": "2022-01-17T16:16:43.516Z", + "updated": "2022-01-17T16:16:43.523Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3910-Windows-embeddable-package-32-bit", + "os": 1, + "release": 674, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.10/python-3.9.10-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.10/python-3.9.10-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c1d2af96d9f3564f57f35cfc3c1006eb", + "filesize": 7671509, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3671, + "fields": { + "created": "2022-01-17T16:16:43.601Z", + "updated": "2022-01-17T16:16:43.607Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3910-Gzipped-source-tarball", + "os": 3, + "release": 674, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1440acb71471e2394befdb30b1a958d1", + "filesize": 25800844, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3672, + "fields": { + "created": "2022-01-17T16:16:43.686Z", + "updated": "2022-01-17T16:16:43.691Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel-only installer", + "slug": "3910-macOS-64-bit-Intel-only-installer", + "os": 2, + "release": 674, + "description": "for macOS 10.9 and later, deprecated", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.10/python-3.9.10-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.10/python-3.9.10-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2714cb9e6241cf7e2f9022714a55d27a", + "filesize": 30395760, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3673, + "fields": { + "created": "2022-01-17T16:16:43.761Z", + "updated": "2022-01-17T16:16:43.765Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3910-Windows-installer-32-bit", + "os": 1, + "release": 674, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.10/python-3.9.10.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.10/python-3.9.10.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "457d648dc8a71b6bc32da30a7805c55b", + "filesize": 27767040, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3674, + "fields": { + "created": "2022-02-03T23:11:03.761Z", + "updated": "2022-02-03T23:11:03.769Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3110-a5-XZ-compressed-source-tarball", + "os": 3, + "release": 675, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a5.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6bc7aafdec900b4b00ab6b5b64619dd4", + "filesize": 18829884, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3675, + "fields": { + "created": "2022-02-03T23:11:03.872Z", + "updated": "2022-02-03T23:11:03.884Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3110-a5-Windows-embeddable-package-32-bit", + "os": 1, + "release": 675, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a5-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a5-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5d2afc393e65fef40d1fd46fd2152f93", + "filesize": 9357733, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3676, + "fields": { + "created": "2022-02-03T23:11:03.996Z", + "updated": "2022-02-03T23:11:04.009Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3110-a5-Gzipped-source-tarball", + "os": 3, + "release": 675, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7388a916fc293d2527b3cc8ebc6db884", + "filesize": 25184120, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3677, + "fields": { + "created": "2022-02-03T23:11:04.129Z", + "updated": "2022-02-03T23:11:04.140Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3110-a5-macOS-64-bit-universal2-installer", + "os": 2, + "release": 675, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a5-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a5-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9599668c98ab97fe2e20f7341d6e4485", + "filesize": 41359480, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3678, + "fields": { + "created": "2022-02-03T23:11:04.227Z", + "updated": "2022-02-03T23:11:04.233Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3110-a5-Windows-installer-32-bit", + "os": 1, + "release": 675, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a5.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a5.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b5ff1a323cfa5a1678c8cc79c96368ee", + "filesize": 27212504, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3679, + "fields": { + "created": "2022-02-03T23:11:04.310Z", + "updated": "2022-02-03T23:11:04.317Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3110-a5-Windows-embeddable-package-64-bit", + "os": 1, + "release": 675, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a5-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a5-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4bab5fdb9eb83f8b5423d790bd3556ca", + "filesize": 10317830, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3680, + "fields": { + "created": "2022-02-03T23:11:04.397Z", + "updated": "2022-02-03T23:11:04.403Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3110-a5-Windows-help-file", + "os": 1, + "release": 675, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python3110a5.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python3110a5.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "de35e25557e4cf1b92b3e9ecfcaf52b4", + "filesize": 9311850, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3681, + "fields": { + "created": "2022-02-03T23:11:04.511Z", + "updated": "2022-02-03T23:11:04.516Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (ARM64)", + "slug": "3110-a5-Windows-installer-ARM64", + "os": 1, + "release": 675, + "description": "Experimental", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a5-arm64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a5-arm64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7b5ea8bba181842b6174a3470a2edabe", + "filesize": 23976864, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3682, + "fields": { + "created": "2022-02-03T23:11:04.598Z", + "updated": "2022-02-03T23:11:04.607Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3110-a5-Windows-installer-64-bit", + "os": 1, + "release": 675, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a5-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a5-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "44f553743fdd521c78a79cbdb78e8613", + "filesize": 28371800, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3683, + "fields": { + "created": "2022-03-07T18:20:08.125Z", + "updated": "2022-03-07T18:20:08.135Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3110-a6-Windows-installer-32-bit", + "os": 1, + "release": 676, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a6.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a6.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f6904a8de4438e369432eabb77f7b146", + "filesize": 27241240, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3684, + "fields": { + "created": "2022-03-07T18:20:08.243Z", + "updated": "2022-03-07T18:20:08.250Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3110-a6-XZ-compressed-source-tarball", + "os": 3, + "release": 676, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a6.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a6.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2844fdb463beaf32a53ac6b35c5f1ec3", + "filesize": 18754036, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3685, + "fields": { + "created": "2022-03-07T18:20:08.333Z", + "updated": "2022-03-07T18:20:08.340Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3110-a6-Windows-help-file", + "os": 1, + "release": 676, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python3110a6.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python3110a6.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6937cc18553d73097733e18aee811274", + "filesize": 9302904, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3686, + "fields": { + "created": "2022-03-07T18:20:08.438Z", + "updated": "2022-03-07T18:20:08.445Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3110-a6-Windows-embeddable-package-64-bit", + "os": 1, + "release": 676, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a6-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a6-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b35902559be645230c757fcb83e50473", + "filesize": 10478811, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3687, + "fields": { + "created": "2022-03-07T18:20:08.547Z", + "updated": "2022-03-07T18:20:08.555Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3110-a6-Windows-embeddable-package-32-bit", + "os": 1, + "release": 676, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a6-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a6-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e78b4970266f7a80e439f5769282591d", + "filesize": 9523713, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3688, + "fields": { + "created": "2022-03-07T18:20:08.640Z", + "updated": "2022-03-07T18:20:08.650Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (ARM64)", + "slug": "3110-a6-Windows-installer-ARM64", + "os": 1, + "release": 676, + "description": "Experimental", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a6-arm64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a6-arm64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "acfb85fd8132b582cb4e59b9351f3bb4", + "filesize": 27102032, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3689, + "fields": { + "created": "2022-03-07T18:20:08.739Z", + "updated": "2022-03-07T18:20:08.747Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3110-a6-Windows-installer-64-bit", + "os": 1, + "release": 676, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a6-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a6-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a3a644be87a436da5aa55c2573261238", + "filesize": 28392464, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3690, + "fields": { + "created": "2022-03-07T18:20:08.862Z", + "updated": "2022-03-07T18:20:08.871Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3110-a6-Gzipped-source-tarball", + "os": 3, + "release": 676, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c2631a7adac3e2f64131d0a541f0943f", + "filesize": 25151449, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3691, + "fields": { + "created": "2022-03-07T18:20:08.949Z", + "updated": "2022-03-07T18:20:08.955Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3110-a6-macOS-64-bit-universal2-installer", + "os": 2, + "release": 676, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a6-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a6-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8b25b32613e2ccf8b96da9ea0b21769e", + "filesize": 41072621, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3696, + "fields": { + "created": "2022-03-16T14:09:01.993Z", + "updated": "2022-03-16T14:09:01.999Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3813-Gzipped-source-tarball", + "os": 3, + "release": 678, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.13/Python-3.8.13.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.13/Python-3.8.13.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3c49180c6b43df3519849b7e390af0b9", + "filesize": 25334331, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3697, + "fields": { + "created": "2022-03-16T14:09:02.121Z", + "updated": "2022-03-16T14:09:02.134Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3813-XZ-compressed-source-tarball", + "os": 3, + "release": 678, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.13/Python-3.8.13.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.13/Python-3.8.13.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c4b7100dcaace9d33ab1fda9a3a038d6", + "filesize": 19023016, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3700, + "fields": { + "created": "2022-03-16T14:31:49.870Z", + "updated": "2022-03-16T14:33:44.409Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3103-Windows-installer-32-bit", + "os": 1, + "release": 680, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.3/python-3.10.3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.3/python-3.10.3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6a336cb2aca62dd05805316ab3aaf2b5", + "filesize": 27312664, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3701, + "fields": { + "created": "2022-03-16T14:31:49.953Z", + "updated": "2022-03-16T14:31:49.959Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3103-Windows-embeddable-package-64-bit", + "os": 1, + "release": 680, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.3/python-3.10.3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.3/python-3.10.3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "413bcc68b01054ae6af39b6ab97f4fb4", + "filesize": 8521615, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3702, + "fields": { + "created": "2022-03-16T14:31:50.037Z", + "updated": "2022-03-16T14:31:50.046Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3103-Windows-help-file", + "os": 1, + "release": 680, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.3/python3103.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.3/python3103.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d0689ad87c834c01fe99bcc98dbbd2ff", + "filesize": 9205156, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3703, + "fields": { + "created": "2022-03-16T14:31:50.132Z", + "updated": "2022-03-16T14:31:50.138Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3103-Windows-installer-64-bit", + "os": 1, + "release": 680, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.3/python-3.10.3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.3/python-3.10.3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9ea305690dbfd424a632b6a659347c1e", + "filesize": 28467368, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3704, + "fields": { + "created": "2022-03-16T14:31:50.220Z", + "updated": "2022-03-16T14:31:50.227Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3103-XZ-compressed-source-tarball", + "os": 3, + "release": 680, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.3/Python-3.10.3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.3/Python-3.10.3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "21e0b70d70fdd4756aafc4caa55cc17e", + "filesize": 19343528, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3705, + "fields": { + "created": "2022-03-16T14:31:50.314Z", + "updated": "2022-03-16T14:31:50.319Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3103-Windows-embeddable-package-32-bit", + "os": 1, + "release": 680, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.3/python-3.10.3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.3/python-3.10.3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "15ab9ad0dcd9e647e0dd94bb987930a1", + "filesize": 7562802, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3706, + "fields": { + "created": "2022-03-16T14:31:50.413Z", + "updated": "2022-03-16T14:31:50.422Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3103-Gzipped-source-tarball", + "os": 3, + "release": 680, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.3/Python-3.10.3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.3/Python-3.10.3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f276ffcd05bccafe46da023d0a5bb04a", + "filesize": 25608532, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3707, + "fields": { + "created": "2022-03-16T14:31:50.506Z", + "updated": "2022-03-16T14:31:50.512Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3103-macOS-64-bit-universal2-installer", + "os": 2, + "release": 680, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.3/python-3.10.3-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.3/python-3.10.3-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d05c3699c5a9d292042320f327a50b8d", + "filesize": 40374673, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3708, + "fields": { + "created": "2022-03-16T15:16:52.290Z", + "updated": "2022-03-16T15:16:52.295Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3713-Gzipped-source-tarball", + "os": 3, + "release": 677, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.13/Python-3.7.13.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.13/Python-3.7.13.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e0d3321026d4a5f3a3890b5d821ad762", + "filesize": 23914533, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3709, + "fields": { + "created": "2022-03-16T15:16:52.392Z", + "updated": "2022-03-16T15:16:52.398Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3713-XZ-compressed-source-tarball", + "os": 3, + "release": 677, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.13/Python-3.7.13.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.13/Python-3.7.13.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "10822726f75fd7efe05a94fbd6ac2258", + "filesize": 18027980, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3710, + "fields": { + "created": "2022-03-16T15:24:33.372Z", + "updated": "2022-03-16T15:25:15.359Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3911-Windows-installer-32-bit", + "os": 1, + "release": 679, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.11/python-3.9.11.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.11/python-3.9.11.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4210652b14a030517046cdf111c09c1e", + "filesize": 28022600, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3711, + "fields": { + "created": "2022-03-16T15:24:33.458Z", + "updated": "2022-03-16T15:24:33.464Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel-only installer", + "slug": "3911-macOS-64-bit-Intel-only-installer", + "os": 2, + "release": 679, + "description": "for macOS 10.9 and later, deprecated", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.11/python-3.9.11-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.11/python-3.9.11-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "99e519a1e8387f692da6c5a0e6177243", + "filesize": 30953829, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3712, + "fields": { + "created": "2022-03-16T15:24:33.537Z", + "updated": "2022-03-16T15:24:33.543Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3911-Windows-installer-64-bit", + "os": 1, + "release": 679, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.11/python-3.9.11-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.11/python-3.9.11-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fef52176a572efd48b7148f006b25801", + "filesize": 29155480, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3713, + "fields": { + "created": "2022-03-16T15:24:33.611Z", + "updated": "2022-03-16T15:24:33.615Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3911-XZ-compressed-source-tarball", + "os": 3, + "release": 679, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.11/Python-3.9.11.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.11/Python-3.9.11.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3c8dde3ebd6da005e969b83b5f0c1886", + "filesize": 19724780, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3714, + "fields": { + "created": "2022-03-16T15:24:33.694Z", + "updated": "2022-03-16T15:24:33.698Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3911-macOS-64-bit-universal2-installer", + "os": 2, + "release": 679, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.11/python-3.9.11-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.11/python-3.9.11-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "655c5ca728aafc5f64f74b94397593ad", + "filesize": 38783142, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3715, + "fields": { + "created": "2022-03-16T15:24:33.788Z", + "updated": "2022-03-16T15:24:33.792Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3911-Windows-embeddable-package-32-bit", + "os": 1, + "release": 679, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.11/python-3.9.11-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.11/python-3.9.11-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "b5c293e11564f11cb23f9c4e4e97cbf8", + "filesize": 7695014, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3716, + "fields": { + "created": "2022-03-16T15:24:33.882Z", + "updated": "2022-03-16T15:24:33.892Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3911-Gzipped-source-tarball", + "os": 3, + "release": 679, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.11/Python-3.9.11.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.11/Python-3.9.11.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "daca49063ced330eb933a0fb437dee50", + "filesize": 26337763, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3717, + "fields": { + "created": "2022-03-16T15:24:33.988Z", + "updated": "2022-03-16T15:24:33.992Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3911-Windows-help-file", + "os": 1, + "release": 679, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.11/python3911.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.11/python3911.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "dbc3c10a40ebccc1d0b47616a2d4503f", + "filesize": 8931310, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3718, + "fields": { + "created": "2022-03-16T15:24:34.058Z", + "updated": "2022-03-16T15:24:34.062Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3911-Windows-embeddable-package-64-bit", + "os": 1, + "release": 679, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.11/python-3.9.11-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.11/python-3.9.11-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9bc1e9dd44c1c1c68838e5b4ce9f2248", + "filesize": 8528857, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3743, + "fields": { + "created": "2022-03-24T00:24:37.298Z", + "updated": "2022-03-24T00:24:37.309Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel-only installer", + "slug": "3912-macOS-64-bit-Intel-only-installer", + "os": 2, + "release": 713, + "description": "for macOS 10.9 and later, deprecated", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.12/python-3.9.12-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.12/python-3.9.12-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d9a46473d41474b05b02ab4d42d6e2f1", + "filesize": 30962328, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3744, + "fields": { + "created": "2022-03-24T00:24:37.395Z", + "updated": "2022-03-24T00:24:37.402Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3912-Windows-embeddable-package-32-bit", + "os": 1, + "release": 713, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.12/python-3.9.12-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.12/python-3.9.12-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "94955cca54dd7d21bedc4d10ab9d2d81", + "filesize": 7695012, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3745, + "fields": { + "created": "2022-03-24T00:24:37.475Z", + "updated": "2022-03-24T00:24:37.481Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3912-Windows-embeddable-package-64-bit", + "os": 1, + "release": 713, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.12/python-3.9.12-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.12/python-3.9.12-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5b16e3ca71cc29ab71a6e4b92a2f3f13", + "filesize": 8533270, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3746, + "fields": { + "created": "2022-03-24T00:24:37.553Z", + "updated": "2022-03-24T00:24:37.561Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3912-Windows-help-file", + "os": 1, + "release": 713, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.12/python3912.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.12/python3912.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a7cd250b2b561049e2e814c1668cb44d", + "filesize": 8940482, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3747, + "fields": { + "created": "2022-03-24T00:24:37.639Z", + "updated": "2022-03-24T00:24:37.647Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3912-macOS-64-bit-universal2-installer", + "os": 2, + "release": 713, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.12/python-3.9.12-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.12/python-3.9.12-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e0144bd213485290adc05b57e09436eb", + "filesize": 38791860, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3748, + "fields": { + "created": "2022-03-24T00:24:37.723Z", + "updated": "2022-03-24T00:24:37.727Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3912-XZ-compressed-source-tarball", + "os": 3, + "release": 713, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.12/Python-3.9.12.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.12/Python-3.9.12.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4b5fda03e3fbfceca833c997d501bcca", + "filesize": 19740524, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3749, + "fields": { + "created": "2022-03-24T00:24:37.807Z", + "updated": "2022-03-24T00:24:37.811Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3912-Windows-installer-64-bit", + "os": 1, + "release": 713, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.12/python-3.9.12-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.12/python-3.9.12-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cc816f1323d591087b70df5fc977feae", + "filesize": 29169456, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3750, + "fields": { + "created": "2022-03-24T00:24:37.889Z", + "updated": "2022-03-24T00:24:37.896Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3912-Gzipped-source-tarball", + "os": 3, + "release": 713, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.12/Python-3.9.12.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.12/Python-3.9.12.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "abc7f7f83ea8614800b73c45cf3262d3", + "filesize": 26338472, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3751, + "fields": { + "created": "2022-03-24T00:24:37.964Z", + "updated": "2022-03-24T00:24:56.625Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3912-Windows-installer-32-bit", + "os": 1, + "release": 713, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.12/python-3.9.12.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.12/python-3.9.12.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1e8477792ec093c02991bd37b8615a2e", + "filesize": 28036880, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3752, + "fields": { + "created": "2022-03-24T10:31:50.244Z", + "updated": "2022-03-24T10:31:50.251Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3104-Gzipped-source-tarball", + "os": 3, + "release": 714, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7011fa5e61dc467ac9a98c3d62cfe2be", + "filesize": 25612387, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3753, + "fields": { + "created": "2022-03-24T10:31:50.321Z", + "updated": "2022-03-24T10:31:50.328Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3104-Windows-installer-64-bit", + "os": 1, + "release": 714, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.4/python-3.10.4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.4/python-3.10.4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "53fea6cfcce86fb87253364990f22109", + "filesize": 28488112, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3754, + "fields": { + "created": "2022-03-24T10:31:50.403Z", + "updated": "2022-03-24T10:31:50.410Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3104-macOS-64-bit-universal2-installer", + "os": 2, + "release": 714, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.4/python-3.10.4-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.4/python-3.10.4-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5dd5087f4eec2be635b1966330db5b74", + "filesize": 40382410, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3755, + "fields": { + "created": "2022-03-24T10:31:50.478Z", + "updated": "2022-03-24T10:31:50.483Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3104-Windows-help-file", + "os": 1, + "release": 714, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.4/python3104.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.4/python3104.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "758b7773027cbc94e2dd0000423f032c", + "filesize": 9222920, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3756, + "fields": { + "created": "2022-03-24T10:31:50.557Z", + "updated": "2022-03-24T10:31:50.569Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3104-Windows-embeddable-package-64-bit", + "os": 1, + "release": 714, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.4/python-3.10.4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.4/python-3.10.4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bf4e0306c349fbd18e9819d53f955429", + "filesize": 8523000, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3757, + "fields": { + "created": "2022-03-24T10:31:50.635Z", + "updated": "2022-03-24T10:31:50.640Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3104-XZ-compressed-source-tarball", + "os": 3, + "release": 714, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "21f2e113e087083a1e8cf10553d93599", + "filesize": 19342692, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3758, + "fields": { + "created": "2022-03-24T10:31:50.705Z", + "updated": "2022-03-24T10:32:14.298Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3104-Windows-installer-32-bit", + "os": 1, + "release": 714, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.4/python-3.10.4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.4/python-3.10.4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "977b91d2e0727952d5e8e4ff07eee34e", + "filesize": 27338104, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3759, + "fields": { + "created": "2022-03-24T10:31:50.775Z", + "updated": "2022-03-24T10:31:50.779Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3104-Windows-embeddable-package-32-bit", + "os": 1, + "release": 714, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.4/python-3.10.4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.4/python-3.10.4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "4c1cb704caafdc5cbf05ff919bf513f4", + "filesize": 7563393, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3768, + "fields": { + "created": "2022-04-06T09:28:58.408Z", + "updated": "2022-04-06T09:28:58.414Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3110-a7-Windows-embeddable-package-64-bit", + "os": 1, + "release": 715, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a7-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a7-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ad4504f2dfad696be68f32cf126d201f", + "filesize": 10619146, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3769, + "fields": { + "created": "2022-04-06T09:28:58.497Z", + "updated": "2022-04-06T09:28:58.506Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3110-a7-Gzipped-source-tarball", + "os": 3, + "release": 715, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a7.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a7.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ca0e8cb4e3aa5b90d044feca456e456f", + "filesize": 25672862, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3770, + "fields": { + "created": "2022-04-06T09:28:58.576Z", + "updated": "2022-04-06T09:28:58.580Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3110-a7-Windows-installer-64-bit", + "os": 1, + "release": 715, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a7-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a7-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "746bf15e2a13c596afc035ec257bcb82", + "filesize": 24726576, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3771, + "fields": { + "created": "2022-04-06T09:28:58.644Z", + "updated": "2022-04-06T09:28:58.650Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3110-a7-XZ-compressed-source-tarball", + "os": 3, + "release": 715, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a7.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0a7.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0358634aa8f4a8250cda3b05d838fc97", + "filesize": 19362368, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3772, + "fields": { + "created": "2022-04-06T09:28:58.718Z", + "updated": "2022-04-06T09:28:58.731Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3110-a7-macOS-64-bit-universal2-installer", + "os": 2, + "release": 715, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a7-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a7-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ed322f7c6164df01ddfd8b87466d49ea", + "filesize": 41988871, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3773, + "fields": { + "created": "2022-04-06T09:28:58.813Z", + "updated": "2022-04-06T09:28:58.819Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (ARM64)", + "slug": "3110-a7-Windows-embeddable-package-ARM64", + "os": 1, + "release": 715, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a7-embed-arm64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a7-embed-arm64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8828b682879912b56f7e376a4758beda", + "filesize": 9894726, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3774, + "fields": { + "created": "2022-04-06T09:28:58.896Z", + "updated": "2022-04-06T09:28:58.903Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3110-a7-Windows-installer-32-bit", + "os": 1, + "release": 715, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a7.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a7.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1501a148e95436b3b1e2dab4bce38e0e", + "filesize": 23580152, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3775, + "fields": { + "created": "2022-04-06T09:28:58.968Z", + "updated": "2022-04-06T09:28:58.975Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3110-a7-Windows-embeddable-package-32-bit", + "os": 1, + "release": 715, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a7-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a7-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1b938fb198e0e8591827bda986967d7d", + "filesize": 9673901, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3776, + "fields": { + "created": "2022-04-06T09:28:59.054Z", + "updated": "2022-04-06T09:28:59.060Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (ARM64)", + "slug": "3110-a7-Windows-installer-ARM64", + "os": 1, + "release": 715, + "description": "Experimental", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a7-arm64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0a7-arm64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d409448e62a0a13e812d1bbc4bdbe8d1", + "filesize": 23893248, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3777, + "fields": { + "created": "2022-05-08T02:44:40.579Z", + "updated": "2022-05-08T02:46:46.208Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3110-b1-Windows-installer-32-bit", + "os": 1, + "release": 716, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "34229f38e118756df10db26c45eaf361", + "filesize": 23645024, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3778, + "fields": { + "created": "2022-05-08T02:44:40.670Z", + "updated": "2022-05-08T02:44:40.677Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (ARM64)", + "slug": "3110-b1-Windows-embeddable-package-ARM64", + "os": 1, + "release": 716, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1-embed-arm64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1-embed-arm64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a53878c3d5f60bf1c4684df6e7fd2d5d", + "filesize": 9777447, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3779, + "fields": { + "created": "2022-05-08T02:44:40.764Z", + "updated": "2022-05-08T02:44:40.771Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3110-b1-Windows-embeddable-package-64-bit", + "os": 1, + "release": 716, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "bff67f4f54ad7a3bd23c1a1e8bbe6fca", + "filesize": 10531677, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3780, + "fields": { + "created": "2022-05-08T02:44:40.849Z", + "updated": "2022-05-08T02:44:40.866Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3110-b1-XZ-compressed-source-tarball", + "os": 3, + "release": 716, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9e0b8e46b67c53170549da7c3d874b15", + "filesize": 19416160, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3781, + "fields": { + "created": "2022-05-08T02:44:40.980Z", + "updated": "2022-05-08T02:44:40.987Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3110-b1-macOS-64-bit-universal2-installer", + "os": 2, + "release": 716, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2f39e19c6695416da9cd4ebea7f90637", + "filesize": 42040957, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3782, + "fields": { + "created": "2022-05-08T02:44:41.074Z", + "updated": "2022-05-08T02:44:41.081Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (ARM64)", + "slug": "3110-b1-Windows-installer-ARM64", + "os": 1, + "release": 716, + "description": "Experimental", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1-arm64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1-arm64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2af6370cd85b52a696e86ce3f4ddfaf1", + "filesize": 23952448, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3783, + "fields": { + "created": "2022-05-08T02:44:41.167Z", + "updated": "2022-05-08T02:44:41.175Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3110-b1-Windows-installer-64-bit", + "os": 1, + "release": 716, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7279e850e602576115f3ff24f791483d", + "filesize": 24791760, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3784, + "fields": { + "created": "2022-05-08T02:44:41.251Z", + "updated": "2022-05-08T02:44:41.256Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3110-b1-Gzipped-source-tarball", + "os": 3, + "release": 716, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eda16babdfbab8aa7b8d4500d04e9935", + "filesize": 25760554, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3785, + "fields": { + "created": "2022-05-08T02:44:41.355Z", + "updated": "2022-05-08T02:44:41.363Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3110-b1-Windows-embeddable-package-32-bit", + "os": 1, + "release": 716, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3b158eb5ecb403a21524be6ec18c2292", + "filesize": 9568398, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3788, + "fields": { + "created": "2022-05-17T17:03:59.339Z", + "updated": "2022-05-17T17:03:59.345Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3913-macOS-64-bit-universal2-installer", + "os": 2, + "release": 717, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.13/python-3.9.13-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.13/python-3.9.13-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "76b63cf623e32cdf27c5033434bd69ce", + "filesize": 38821163, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3789, + "fields": { + "created": "2022-05-17T17:03:59.418Z", + "updated": "2022-05-17T17:03:59.423Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit Intel-only installer", + "slug": "3913-macOS-64-bit-Intel-only-installer", + "os": 2, + "release": 717, + "description": "for macOS 10.9 and later, deprecated", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.13/python-3.9.13-macosx10.9.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.13/python-3.9.13-macosx10.9.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "671848930809decf27f586ddf98c6e9b", + "filesize": 30997161, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3790, + "fields": { + "created": "2022-05-17T17:03:59.510Z", + "updated": "2022-05-17T17:04:29.879Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3913-Windows-installer-32-bit", + "os": 1, + "release": 717, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.13/python-3.9.13.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.13/python-3.9.13.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "46c35b0a2a4325c275b2ed3187b08ac4", + "filesize": 28096840, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3791, + "fields": { + "created": "2022-05-17T17:03:59.602Z", + "updated": "2022-05-17T17:03:59.607Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3913-Windows-help-file", + "os": 1, + "release": 717, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.13/python3913.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.13/python3913.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c86feba059b340a1de2a9d2ee7059a6d", + "filesize": 8953644, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3792, + "fields": { + "created": "2022-05-17T17:03:59.690Z", + "updated": "2022-05-17T17:03:59.696Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3913-Windows-embeddable-package-64-bit", + "os": 1, + "release": 717, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.13/python-3.9.13-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.13/python-3.9.13-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "57731cf80b1c429a0be7133266d7d7cf", + "filesize": 8570740, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3793, + "fields": { + "created": "2022-05-17T17:03:59.767Z", + "updated": "2022-05-17T17:03:59.771Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3913-XZ-compressed-source-tarball", + "os": 3, + "release": 717, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.13/Python-3.9.13.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.13/Python-3.9.13.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5e2411217b0060828d5f923eb422a3b8", + "filesize": 19754368, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3794, + "fields": { + "created": "2022-05-17T17:03:59.840Z", + "updated": "2022-05-17T17:03:59.845Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3913-Windows-embeddable-package-32-bit", + "os": 1, + "release": 717, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.13/python-3.9.13-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.13/python-3.9.13-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fec0bc06857502a56dd1aeaea6488ef8", + "filesize": 7729405, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3795, + "fields": { + "created": "2022-05-17T17:03:59.924Z", + "updated": "2022-05-17T17:03:59.928Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3913-Gzipped-source-tarball", + "os": 3, + "release": 717, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.13/Python-3.9.13.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.13/Python-3.9.13.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eafda83543bad127cadef4d288fdab87", + "filesize": 26355887, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3796, + "fields": { + "created": "2022-05-17T17:04:00.010Z", + "updated": "2022-05-17T17:04:00.015Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3913-Windows-installer-64-bit", + "os": 1, + "release": 717, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e7062b85c3624af82079794729618eca", + "filesize": 29235432, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3797, + "fields": { + "created": "2022-05-31T13:17:13.991Z", + "updated": "2022-05-31T13:17:13.998Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3110-b2-Windows-installer-64-bit", + "os": 1, + "release": 718, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b2-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b2-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "be03987219bd0bd2ed45e03092792d71", + "filesize": 24811104, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3798, + "fields": { + "created": "2022-05-31T13:17:14.077Z", + "updated": "2022-05-31T13:17:14.084Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (ARM64)", + "slug": "3110-b2-Windows-embeddable-package-ARM64", + "os": 1, + "release": 718, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b2-embed-arm64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b2-embed-arm64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "e99cde40e73d7ef8f4a03128344dc912", + "filesize": 9750110, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3799, + "fields": { + "created": "2022-05-31T13:17:14.157Z", + "updated": "2022-05-31T13:17:14.162Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (ARM64)", + "slug": "3110-b2-Windows-installer-ARM64", + "os": 1, + "release": 718, + "description": "Experimental", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b2-arm64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b2-arm64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "6e66b99f10ddf09132acadec323c35a5", + "filesize": 23951696, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3800, + "fields": { + "created": "2022-05-31T13:17:14.231Z", + "updated": "2022-05-31T13:17:54.456Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3110-b2-Windows-installer-32-bit", + "os": 1, + "release": 718, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b2.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b2.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "04c4ec7d95454cc0c8c27bd4124c1b25", + "filesize": 23647664, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3801, + "fields": { + "created": "2022-05-31T13:17:14.299Z", + "updated": "2022-05-31T13:17:14.302Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3110-b2-macOS-64-bit-universal2-installer", + "os": 2, + "release": 718, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b2-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b2-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "87883130f750c41363cbd3da2c27e0cc", + "filesize": 42069409, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3802, + "fields": { + "created": "2022-05-31T13:17:14.374Z", + "updated": "2022-05-31T13:17:14.380Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3110-b2-XZ-compressed-source-tarball", + "os": 3, + "release": 718, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b2.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b2.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "508ec02987e4f13631c8ccc7e014527f", + "filesize": 19529360, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3803, + "fields": { + "created": "2022-05-31T13:17:14.439Z", + "updated": "2022-05-31T13:17:14.448Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3110-b2-Windows-embeddable-package-32-bit", + "os": 1, + "release": 718, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b2-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b2-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2c2edf675ac2f1d24bbc0803c887ef21", + "filesize": 9544423, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3804, + "fields": { + "created": "2022-05-31T13:17:14.520Z", + "updated": "2022-05-31T13:17:14.524Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3110-b2-Windows-embeddable-package-64-bit", + "os": 1, + "release": 718, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b2-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b2-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f3588fe5a48cd7bb1a8a010219ca79d9", + "filesize": 10515214, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3805, + "fields": { + "created": "2022-05-31T13:17:14.601Z", + "updated": "2022-05-31T13:17:14.605Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3110-b2-Gzipped-source-tarball", + "os": 3, + "release": 718, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b2.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b2.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2be67f6340dc81e844431d40e15b9845", + "filesize": 25885975, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3806, + "fields": { + "created": "2022-06-01T15:28:37.729Z", + "updated": "2022-06-01T15:29:16.378Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3110-b3-Windows-installer-32-bit", + "os": 1, + "release": 719, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b3.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b3.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f186c3bffc7e6aef118c873746596363", + "filesize": 23647560, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3807, + "fields": { + "created": "2022-06-01T15:28:37.804Z", + "updated": "2022-06-01T15:28:37.810Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3110-b3-macOS-64-bit-universal2-installer", + "os": 2, + "release": 719, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b3-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b3-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "898be1994df2da38741b9efbe1d70018", + "filesize": 42071047, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3808, + "fields": { + "created": "2022-06-01T15:28:37.878Z", + "updated": "2022-06-01T15:28:37.883Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (ARM64)", + "slug": "3110-b3-Windows-installer-ARM64", + "os": 1, + "release": 719, + "description": "Experimental", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b3-arm64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b3-arm64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "34068df3f354bd9cdbba2d120c12417f", + "filesize": 23954600, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3809, + "fields": { + "created": "2022-06-01T15:28:37.962Z", + "updated": "2022-06-01T15:28:37.967Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3110-b3-Windows-embeddable-package-64-bit", + "os": 1, + "release": 719, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b3-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b3-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "82bfde27c8607208bcd56c2176094342", + "filesize": 10519232, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3810, + "fields": { + "created": "2022-06-01T15:28:38.040Z", + "updated": "2022-06-01T15:28:38.045Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3110-b3-Windows-embeddable-package-32-bit", + "os": 1, + "release": 719, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b3-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b3-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d94dc3ca50134a71f7ca60a48cff7ff3", + "filesize": 9545461, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3811, + "fields": { + "created": "2022-06-01T15:28:38.125Z", + "updated": "2022-06-01T15:28:38.150Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3110-b3-Windows-installer-64-bit", + "os": 1, + "release": 719, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b3-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b3-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7bc8cccb6e549dd82ae89fa96e2682b0", + "filesize": 24814352, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3812, + "fields": { + "created": "2022-06-01T15:28:38.225Z", + "updated": "2022-06-01T15:28:38.230Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3110-b3-Gzipped-source-tarball", + "os": 3, + "release": 719, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b3.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b3.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "00de8e1893ad1c5d32d43ae6ccb234f4", + "filesize": 25885965, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3813, + "fields": { + "created": "2022-06-01T15:28:38.299Z", + "updated": "2022-06-01T15:28:38.309Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3110-b3-XZ-compressed-source-tarball", + "os": 3, + "release": 719, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b3.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b3.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d8ebc28f88e5e0c0215cf074537f0d48", + "filesize": 19532936, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3814, + "fields": { + "created": "2022-06-01T15:28:38.383Z", + "updated": "2022-06-01T15:28:38.390Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (ARM64)", + "slug": "3110-b3-Windows-embeddable-package-ARM64", + "os": 1, + "release": 719, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b3-embed-arm64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b3-embed-arm64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "646f86dd3d1a5ab23365327517d6f2fa", + "filesize": 9751411, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3815, + "fields": { + "created": "2022-06-06T17:14:58.399Z", + "updated": "2022-06-06T17:14:58.404Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3105-Windows-help-file", + "os": 1, + "release": 720, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.5/python3105.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.5/python3105.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "43c924ac87daeed65acd85596eed1e33", + "filesize": 9319556, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3816, + "fields": { + "created": "2022-06-06T17:14:58.477Z", + "updated": "2022-06-06T17:14:58.483Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3105-Windows-installer-64-bit", + "os": 1, + "release": 720, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.5/python-3.10.5-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.5/python-3.10.5-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9a99ae597902b70b1273e88cc8d41abd", + "filesize": 28637720, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3817, + "fields": { + "created": "2022-06-06T17:14:58.555Z", + "updated": "2022-06-06T17:14:58.560Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3105-Windows-embeddable-package-64-bit", + "os": 1, + "release": 720, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.5/python-3.10.5-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.5/python-3.10.5-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d97e3c0c7a19db2c5019f5534bcb0b19", + "filesize": 8558134, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3818, + "fields": { + "created": "2022-06-06T17:14:58.632Z", + "updated": "2022-06-06T17:14:58.636Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3105-XZ-compressed-source-tarball", + "os": 3, + "release": 720, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.5/Python-3.10.5.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.5/Python-3.10.5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f05727cb3489aa93cd57eb561c16747b", + "filesize": 19361320, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3819, + "fields": { + "created": "2022-06-06T17:14:58.705Z", + "updated": "2022-06-06T17:16:38.265Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3105-Windows-installer-32-bit", + "os": 1, + "release": 720, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.5/python-3.10.5.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.5/python-3.10.5.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eb59401a8da40051ec3b429897ae1203", + "filesize": 27478768, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3820, + "fields": { + "created": "2022-06-06T17:14:58.789Z", + "updated": "2022-06-06T17:14:58.796Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3105-Windows-embeddable-package-32-bit", + "os": 1, + "release": 720, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.5/python-3.10.5-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.5/python-3.10.5-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "86be4156e8a5d5c9added8aab2bc83d1", + "filesize": 7596969, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3821, + "fields": { + "created": "2022-06-06T17:14:58.861Z", + "updated": "2022-06-06T17:14:58.866Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3105-Gzipped-source-tarball", + "os": 3, + "release": 720, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.5/Python-3.10.5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.5/Python-3.10.5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d87193c077541e22f892ff1353fac76c", + "filesize": 25628472, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3822, + "fields": { + "created": "2022-06-06T17:14:58.943Z", + "updated": "2022-06-06T17:14:58.946Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3105-macOS-64-bit-universal2-installer", + "os": 2, + "release": 720, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.5/python-3.10.5-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.5/python-3.10.5-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "cdc2e4c5a91477ae446689711c53aa72", + "filesize": 40430804, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3823, + "fields": { + "created": "2022-07-11T17:31:52.333Z", + "updated": "2022-07-11T17:31:52.342Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3110-b4-macOS-64-bit-universal2-installer", + "os": 2, + "release": 721, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b4-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b4-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "826b12e8227d31470b9e79f9de35ece2", + "filesize": 42164386, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3824, + "fields": { + "created": "2022-07-11T17:31:52.431Z", + "updated": "2022-07-11T17:43:26.604Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3110-b4-Windows-installer-32-bit", + "os": 1, + "release": 721, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b4.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b4.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a1fccc894f8cd4e2225a6cdb953c3dcf", + "filesize": 23732096, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3825, + "fields": { + "created": "2022-07-11T17:31:52.529Z", + "updated": "2022-07-11T17:31:52.534Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (ARM64)", + "slug": "3110-b4-Windows-embeddable-package-ARM64", + "os": 1, + "release": 721, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b4-embed-arm64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b4-embed-arm64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f57a413f6e6d234d39fc9dfe4263b9f1", + "filesize": 9762701, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3826, + "fields": { + "created": "2022-07-11T17:31:52.614Z", + "updated": "2022-07-11T17:31:52.623Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3110-b4-Gzipped-source-tarball", + "os": 3, + "release": 721, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b4.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b4.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f039c5c12c31153785d560fe0ce1782b", + "filesize": 25935614, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3827, + "fields": { + "created": "2022-07-11T17:31:52.702Z", + "updated": "2022-07-11T17:31:52.708Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (ARM64)", + "slug": "3110-b4-Windows-installer-ARM64", + "os": 1, + "release": 721, + "description": "Experimental", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b4-arm64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b4-arm64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "7df47df9b960a9273349faebe9e17f4c", + "filesize": 24031248, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3828, + "fields": { + "created": "2022-07-11T17:31:52.783Z", + "updated": "2022-07-11T17:31:52.790Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3110-b4-XZ-compressed-source-tarball", + "os": 3, + "release": 721, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b4.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b4.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aa663eaec1554e0979ed8b30afd6a7e9", + "filesize": 19573532, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3829, + "fields": { + "created": "2022-07-11T17:31:52.905Z", + "updated": "2022-07-11T17:31:52.913Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3110-b4-Windows-embeddable-package-64-bit", + "os": 1, + "release": 721, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b4-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b4-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "f44e8b2c92c0a857995225467ce451b8", + "filesize": 10532065, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3830, + "fields": { + "created": "2022-07-11T17:31:52.989Z", + "updated": "2022-07-11T17:31:52.994Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3110-b4-Windows-installer-64-bit", + "os": 1, + "release": 721, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b4-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b4-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "9449c26a0d187e5e01b61314aa78f156", + "filesize": 24895912, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3831, + "fields": { + "created": "2022-07-11T17:31:53.083Z", + "updated": "2022-07-11T17:31:53.089Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3110-b4-Windows-embeddable-package-32-bit", + "os": 1, + "release": 721, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b4-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b4-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3c9ddeb7ac92014ff9ec857e934db95e", + "filesize": 9554415, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3832, + "fields": { + "created": "2022-07-26T10:13:10.910Z", + "updated": "2022-07-26T10:13:10.917Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (ARM64)", + "slug": "3110-b5-Windows-installer-ARM64", + "os": 1, + "release": 722, + "description": "Experimental", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b5-arm64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b5-arm64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0f054c36d6898ead697bad2f8ad0a85e", + "filesize": 24267032, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3833, + "fields": { + "created": "2022-07-26T10:13:10.992Z", + "updated": "2022-07-26T10:15:15.710Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3110-b5-Windows-installer-32-bit", + "os": 1, + "release": 722, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b5.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b5.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "264f8a790c8acf955a8a4d16043da044", + "filesize": 23961784, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3834, + "fields": { + "created": "2022-07-26T10:13:11.081Z", + "updated": "2022-07-26T10:13:11.087Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3110-b5-Windows-installer-64-bit", + "os": 1, + "release": 722, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b5-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b5-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "eec2c4ce1fc1f8314f6a244b88e49516", + "filesize": 25123208, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3835, + "fields": { + "created": "2022-07-26T10:13:11.161Z", + "updated": "2022-07-26T10:13:11.167Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3110-b5-Windows-embeddable-package-64-bit", + "os": 1, + "release": 722, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b5-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b5-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "1a1e37c146e4d2aafb846550e1c8d52f", + "filesize": 10532221, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3836, + "fields": { + "created": "2022-07-26T10:13:11.237Z", + "updated": "2022-07-26T10:13:11.243Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3110-b5-macOS-64-bit-universal2-installer", + "os": 2, + "release": 722, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b5-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b5-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "df1da04df4fc0593844f6ff161f38e54", + "filesize": 42494188, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3837, + "fields": { + "created": "2022-07-26T10:13:11.319Z", + "updated": "2022-07-26T10:13:11.325Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3110-b5-Windows-embeddable-package-32-bit", + "os": 1, + "release": 722, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b5-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b5-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "94b7bd9732c8c0cfa7076a5c91fc0ee8", + "filesize": 9553115, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3838, + "fields": { + "created": "2022-07-26T10:13:11.399Z", + "updated": "2022-07-26T10:13:11.404Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3110-b5-XZ-compressed-source-tarball", + "os": 3, + "release": 722, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b5.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b5.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "ef72213a60146324699c48344b4ea31c", + "filesize": 19792136, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3839, + "fields": { + "created": "2022-07-26T10:13:11.481Z", + "updated": "2022-07-26T10:13:11.487Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3110-b5-Gzipped-source-tarball", + "os": 3, + "release": 722, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b5.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b5.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "944a2913ed45e8111f4169230f24556c", + "filesize": 26268336, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3840, + "fields": { + "created": "2022-07-26T10:13:11.569Z", + "updated": "2022-07-26T10:13:11.574Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (ARM64)", + "slug": "3110-b5-Windows-embeddable-package-ARM64", + "os": 1, + "release": 722, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b5-embed-arm64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0b5-embed-arm64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "3572178d23f692f2870f46816b4a31cf", + "filesize": 9761490, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3841, + "fields": { + "created": "2022-08-02T10:05:37.708Z", + "updated": "2022-08-02T10:05:37.714Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3106-Windows-embeddable-package-64-bit", + "os": 1, + "release": 723, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.6/python-3.10.6-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.6/python-3.10.6-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "37303f03e19563fa87722d9df11d0fa0", + "filesize": 8585728, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3842, + "fields": { + "created": "2022-08-02T10:05:37.805Z", + "updated": "2022-08-02T10:06:29.532Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3106-Windows-installer-32-bit", + "os": 1, + "release": 723, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.6/python-3.10.6.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.6/python-3.10.6.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "c4aa2cd7d62304c804e45a51696f2a88", + "filesize": 27750096, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3843, + "fields": { + "created": "2022-08-02T10:05:37.961Z", + "updated": "2022-08-02T10:05:37.967Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3106-macOS-64-bit-universal2-installer", + "os": 2, + "release": 723, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.6/python-3.10.6-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.6/python-3.10.6-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "2ce68dc6cb870ed3beea8a20b0de71fc", + "filesize": 40826114, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3844, + "fields": { + "created": "2022-08-02T10:05:38.054Z", + "updated": "2022-08-02T10:05:38.061Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3106-Windows-help-file", + "os": 1, + "release": 723, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.6/python3106.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.6/python3106.chm.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "0aee63c8fb87dc71bf2bcc1f62231389", + "filesize": 9329034, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3845, + "fields": { + "created": "2022-08-02T10:05:38.145Z", + "updated": "2022-08-02T10:05:38.150Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3106-Windows-embeddable-package-32-bit", + "os": 1, + "release": 723, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.6/python-3.10.6-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.6/python-3.10.6-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a62cca7ea561a037e54b4c0d120c2b0a", + "filesize": 7608928, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3846, + "fields": { + "created": "2022-08-02T10:05:38.234Z", + "updated": "2022-08-02T10:05:38.240Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3106-XZ-compressed-source-tarball", + "os": 3, + "release": 723, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "afc7e14f7118d10d1ba95ae8e2134bf0", + "filesize": 19600672, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3847, + "fields": { + "created": "2022-08-02T10:05:38.324Z", + "updated": "2022-08-02T10:05:38.330Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3106-Gzipped-source-tarball", + "os": 3, + "release": 723, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d76638ca8bf57e44ef0841d2cde557a0", + "filesize": 25986768, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3848, + "fields": { + "created": "2022-08-02T10:05:38.411Z", + "updated": "2022-08-02T10:05:38.417Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3106-Windows-installer-64-bit", + "os": 1, + "release": 723, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.6/python-3.10.6-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.6/python-3.10.6-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "8f46453e68ef38e5544a76d84df3994c", + "filesize": 28916488, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3849, + "fields": { + "created": "2022-08-08T13:09:11.804Z", + "updated": "2022-08-08T13:09:11.812Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3110-rc1-Windows-embeddable-package-64-bit", + "os": 1, + "release": 724, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0rc1-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0rc1-embed-amd64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "fc49be511116c47c44f9774c975f63f0", + "filesize": 10533153, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3850, + "fields": { + "created": "2022-08-08T13:09:11.910Z", + "updated": "2022-08-08T13:09:11.916Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3110-rc1-Gzipped-source-tarball", + "os": 3, + "release": 724, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0rc1.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0rc1.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "16fe982ecffb81b603b3f4d9e6c044d6", + "filesize": 26287252, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3851, + "fields": { + "created": "2022-08-08T13:09:12.028Z", + "updated": "2022-08-08T13:09:12.035Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3110-rc1-Windows-installer-64-bit", + "os": 1, + "release": 724, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0rc1-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0rc1-amd64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "5943d8702e40a5ccd62e5a8d4c8852aa", + "filesize": 25134944, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3852, + "fields": { + "created": "2022-08-08T13:09:12.140Z", + "updated": "2022-08-08T13:09:12.146Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3110-rc1-Windows-embeddable-package-32-bit", + "os": 1, + "release": 724, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0rc1-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0rc1-embed-win32.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "74c060c2b674fec528e0a3f99de8ac69", + "filesize": 9554307, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3853, + "fields": { + "created": "2022-08-08T13:09:12.264Z", + "updated": "2022-08-08T13:20:39.475Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (ARM64)", + "slug": "3110-rc1-Windows-installer-ARM64", + "os": 1, + "release": 724, + "description": "Experimental", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0rc1-arm64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0rc1-arm64.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "aa18d5ba3a35df911ebd80165de40291", + "filesize": 24282392, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3854, + "fields": { + "created": "2022-08-08T13:09:12.378Z", + "updated": "2022-08-08T13:09:12.385Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (ARM64)", + "slug": "3110-rc1-Windows-embeddable-package-ARM64", + "os": 1, + "release": 724, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0rc1-embed-arm64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0rc1-embed-arm64.zip.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "01b970a96e4424c2fdcbc7ae0f11fc61", + "filesize": 9762007, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3855, + "fields": { + "created": "2022-08-08T13:09:12.496Z", + "updated": "2022-08-08T13:09:12.503Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3110-rc1-macOS-64-bit-universal2-installer", + "os": 2, + "release": 724, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0rc1-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0rc1-macos11.pkg.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "93f7bbb7a10fe4f773beb6831e3bf423", + "filesize": 42510156, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3856, + "fields": { + "created": "2022-08-08T13:09:12.609Z", + "updated": "2022-08-08T13:09:12.616Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3110-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 724, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0rc1.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/Python-3.11.0rc1.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "013eb698ab20c284e5b8373435add767", + "filesize": 19815524, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3857, + "fields": { + "created": "2022-08-08T13:09:12.704Z", + "updated": "2022-08-08T13:20:39.472Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3110-rc1-Windows-installer-32-bit", + "os": 1, + "release": 724, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.11.0/python-3.11.0rc1.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.11.0/python-3.11.0rc1.exe.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "d2e5420e53d9e71c82b4a19763dbaa12", + "filesize": 23985704, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3866, + "fields": { + "created": "2022-09-06T21:51:42.688Z", + "updated": "2022-09-06T21:51:42.696Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3814-XZ-compressed-source-tarball", + "os": 3, + "release": 727, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.14/Python-3.8.14.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.14/Python-3.8.14.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "78710eed185b71f4198d354502ff62c9", + "filesize": 19031932, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3867, + "fields": { + "created": "2022-09-06T21:51:42.990Z", + "updated": "2022-09-06T21:51:42.995Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3814-Gzipped-source-tarball", + "os": 3, + "release": 727, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.8.14/Python-3.8.14.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.8.14/Python-3.8.14.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "a82168eb586e19122b747b84038825f2", + "filesize": 25306520, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3868, + "fields": { + "created": "2022-09-06T21:51:48.314Z", + "updated": "2022-09-06T21:51:48.320Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3914-XZ-compressed-source-tarball", + "os": 3, + "release": 726, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.14/Python-3.9.14.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.14/Python-3.9.14.tar.xz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "81cbab3acbc7771f71491b52206d9b6a", + "filesize": 19750176, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3869, + "fields": { + "created": "2022-09-06T21:51:48.412Z", + "updated": "2022-09-06T21:51:48.420Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3914-Gzipped-source-tarball", + "os": 3, + "release": 726, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.9.14/Python-3.9.14.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.9.14/Python-3.9.14.tgz.asc", + "sigstore_signature_file": "", + "sigstore_cert_file": "", + "md5_sum": "324a9dcaaa11b2b0dafe5614e8f01145", + "filesize": 26365055, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3870, + "fields": { + "created": "2022-09-06T22:06:03.584Z", + "updated": "2022-09-06T22:06:03.591Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3107-Windows-installer-64-bit", + "os": 1, + "release": 725, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.7/python-3.10.7-amd64.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.7/python-3.10.7-amd64.exe.asc", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.10.7/python-3.10.7-amd64.exe.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.10.7/python-3.10.7-amd64.exe.crt", + "md5_sum": "bfbe8467c7e3504f3800b0fe94d9a3e6", + "filesize": 28953568, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3871, + "fields": { + "created": "2022-09-06T22:06:03.770Z", + "updated": "2022-09-06T22:06:03.779Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3107-Windows-embeddable-package-64-bit", + "os": 1, + "release": 725, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.7/python-3.10.7-embed-amd64.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.7/python-3.10.7-embed-amd64.zip.asc", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.10.7/python-3.10.7-embed-amd64.zip.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.10.7/python-3.10.7-embed-amd64.zip.crt", + "md5_sum": "7f90f8642c1b19cf02bce91a5f4f9263", + "filesize": 8591256, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3872, + "fields": { + "created": "2022-09-06T22:06:03.910Z", + "updated": "2022-09-06T22:06:03.915Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3107-macOS-64-bit-universal2-installer", + "os": 2, + "release": 725, + "description": "for macOS 10.9 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.7/python-3.10.7-macos11.pkg", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.7/python-3.10.7-macos11.pkg.asc", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.10.7/python-3.10.7-macos11.pkg.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.10.7/python-3.10.7-macos11.pkg.crt", + "md5_sum": "4c89649f6ca799ff29f1d1dffcbb9393", + "filesize": 40865361, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3873, + "fields": { + "created": "2022-09-06T22:06:04.058Z", + "updated": "2022-09-06T22:06:04.064Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3107-XZ-compressed-source-tarball", + "os": 3, + "release": 725, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.7/Python-3.10.7.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.7/Python-3.10.7.tar.xz.asc", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.10.7/Python-3.10.7.tar.xz.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.10.7/Python-3.10.7.tar.xz.crt", + "md5_sum": "b8094f007b3a835ca3be6bdf8116cccc", + "filesize": 19618696, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3874, + "fields": { + "created": "2022-09-06T22:06:04.198Z", + "updated": "2022-09-06T22:06:04.209Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3107-Windows-embeddable-package-32-bit", + "os": 1, + "release": 725, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.7/python-3.10.7-embed-win32.zip", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.7/python-3.10.7-embed-win32.zip.asc", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.10.7/python-3.10.7-embed-win32.zip.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.10.7/python-3.10.7-embed-win32.zip.crt", + "md5_sum": "7e4de22bfe1e6d333b2c691ec2c1fcee", + "filesize": 7615330, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3875, + "fields": { + "created": "2022-09-06T22:06:04.344Z", + "updated": "2022-09-06T22:06:04.349Z", + "creator": null, + "last_modified_by": null, + "name": "Windows help file", + "slug": "3107-Windows-help-file", + "os": 1, + "release": 725, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.7/python3107.chm", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.7/python3107.chm.asc", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.10.7/python3107.chm.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.10.7/python3107.chm.crt", + "md5_sum": "643179390f5f5d9d6b1ad66355c795bb", + "filesize": 9355326, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3876, + "fields": { + "created": "2022-09-06T22:06:04.480Z", + "updated": "2022-09-06T22:06:04.485Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3107-Windows-installer-32-bit", + "os": 1, + "release": 725, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.10.7/python-3.10.7.exe", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.7/python-3.10.7.exe.asc", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.10.7/python-3.10.7.exe.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.10.7/python-3.10.7.exe.crt", + "md5_sum": "58755d6906f825168999c83ce82315d7", + "filesize": 27779240, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3877, + "fields": { + "created": "2022-09-06T22:06:04.589Z", + "updated": "2022-09-06T22:06:04.594Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3107-Gzipped-source-tarball", + "os": 3, + "release": 725, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.10.7/Python-3.10.7.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.10.7/Python-3.10.7.tgz.asc", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.10.7/Python-3.10.7.tgz.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.10.7/Python-3.10.7.tgz.crt", + "md5_sum": "1aea68575c0e97bc83ff8225977b0d46", + "filesize": 26006589, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3878, + "fields": { + "created": "2022-09-06T22:54:25.439Z", + "updated": "2022-09-06T22:54:25.445Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3714-Gzipped-source-tarball", + "os": 3, + "release": 728, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.14/Python-3.7.14.tgz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.14/Python-3.7.14.tgz.asc", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.7.14/Python-3.7.14.tgz.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.7.14/Python-3.7.14.tgz.crt", + "md5_sum": "dd65d6708e9c28a9e4fd2e986776ad14", + "filesize": 24033206, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3879, + "fields": { + "created": "2022-09-06T22:54:25.565Z", + "updated": "2022-09-06T23:52:22.559Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3714-XZ-compressed-source-tarball", + "os": 3, + "release": 728, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.7.14/Python-3.7.14.tar.xz", + "gpg_signature_file": "https://www.python.org/ftp/python/3.7.14/Python-3.7.14.tar.xz.asc", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.7.14/Python-3.7.14.tar.xz.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.7.14/Python-3.7.14.tar.xz.crt", + "md5_sum": "0acdd6e1a95f49ee7f9b338fb6092b65", + "filesize": 18121168, + "download_button": false + } +} +] From e8e4c24a3c3fbff347f3f784b26a5193e105ab13 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Mon, 24 Oct 2022 14:41:58 -0400 Subject: [PATCH 020/256] remove our custom tastypie django admin bits (#2160) --- users/admin.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/users/admin.py b/users/admin.py index d42be419b..1c003655c 100644 --- a/users/admin.py +++ b/users/admin.py @@ -61,16 +61,3 @@ class MembershipAdmin(admin.ModelAdmin): search_fields = ['creator__username'] list_filter = ['membership_type'] raw_id_fields = ['creator'] - - -class ApiKeyAdmin(admin.ModelAdmin): - list_display = ('user', 'created', ) - date_hierarchy = 'created' - - -try: - admin.site.unregister(ApiKey) -except admin.sites.NotRegistered: - pass -finally: - admin.site.register(ApiKey, ApiKeyAdmin) From 050e55866eaa39be8feca1fbb1fb0f48ac949ab4 Mon Sep 17 00:00:00 2001 From: Sumit Singh Date: Tue, 1 Nov 2022 00:39:57 +0530 Subject: [PATCH 021/256] Fix Back to Top button (#2157) --- static/js/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/js/script.js b/static/js/script.js index a50b5be71..c0264567b 100644 --- a/static/js/script.js +++ b/static/js/script.js @@ -195,7 +195,7 @@ $().ready(function() { }); $("#back-to-top-1, #back-to-top-2").click(function() { - $("body").animate({ scrollTop: $('#python-network').offset().top }, 500); + $('body, html').animate({ scrollTop: $('#python-network').offset().top }, 500); return false; }); From 8fcca08715198d2b992185fede938e06f3c0cec1 Mon Sep 17 00:00:00 2001 From: partev Date: Mon, 31 Oct 2022 15:19:52 -0400 Subject: [PATCH 022/256] remove redundant double periods (#2144) this fixes issue https://github.com/python/pythondotorg/issues/2143 --- fixtures/boxes.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fixtures/boxes.json b/fixtures/boxes.json index d8f0bd0e7..f7dbeb15e 100644 --- a/fixtures/boxes.json +++ b/fixtures/boxes.json @@ -6,9 +6,9 @@ "created": "2013-03-11T22:38:14.817Z", "updated": "2014-06-25T19:01:06.268Z", "label": "supernav-python-about", - "content": "\r\n
  • \r\n

    Python is a programming language that lets you work more quickly and integrate your systems more effectively.

    \r\n

    You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs. Learn more about Python..\r\n

  • ", + "content": "\r\n
  • \r\n

    Python is a programming language that lets you work more quickly and integrate your systems more effectively.

    \r\n

    You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs. Learn more about Python.\r\n

  • ", "content_markup_type": "html", - "_content_rendered": "\r\n
  • \r\n

    Python is a programming language that lets you work more quickly and integrate your systems more effectively.

    \r\n

    You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs. Learn more about Python..\r\n

  • " + "_content_rendered": "\r\n
  • \r\n

    Python is a programming language that lets you work more quickly and integrate your systems more effectively.

    \r\n

    You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs. Learn more about Python.\r\n

  • " } }, { From 8404c51cde4e89db1234bba1e51ffafca9140cbe Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Mon, 31 Oct 2022 15:26:00 -0400 Subject: [PATCH 023/256] update issue template (#2175) closes #2085 --- .github/ISSUE_TEMPLATE/bug_report.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 36707340b..c958c11a4 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -8,11 +8,10 @@ This is the repository and issue tracker for https://www.python.org website. If you're looking to file an issue with CPython itself, please go to -https://bugs.python.org +https://github.com/python/cpython/issues/new/choose Issues related to Python's documentation (https://docs.python.org) can -also be filed in https://bugs.python.org, by selecting the -"Documentation" component. +also be filed at https://github.com/python/cpython/issues/new?assignees=&labels=docs&template=documentation.md. --> **Describe the bug** From ae1c385bd9cb5681af7f0c8b19aabc14b717da72 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade Date: Mon, 31 Oct 2022 21:30:10 +0200 Subject: [PATCH 024/256] Update link to devguide (#2162) --- templates/downloads/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/downloads/index.html b/templates/downloads/index.html index aa56d9809..4cd8155e1 100644 --- a/templates/downloads/index.html +++ b/templates/downloads/index.html @@ -42,7 +42,7 @@

    Download the latest version of Python

    {% render_active_banner %}

    Active Python Releases

    -

    For more information visit the Python Developer's Guide.

    +

    For more information visit the Python Developer's Guide.

    {% box 'downloads-active-releases' %}
    From c2209fe1788f84cd5b051f04c0234883585895d0 Mon Sep 17 00:00:00 2001 From: Harkishan Khuva <78949167+hakiKhuva@users.noreply.github.com> Date: Tue, 1 Nov 2022 01:01:00 +0530 Subject: [PATCH 025/256] updated author `humans.txt` path (#2169) removed the {{ STATIC_URL }} from humans.txt path of author --- templates/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/base.html b/templates/base.html index 7cd423fbc..a8e3acf69 100644 --- a/templates/base.html +++ b/templates/base.html @@ -74,7 +74,7 @@ {# permalink to the current page #} - + From 8b118b549df6d300b5bc0fd4fe41bc52fe8d82dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Mon, 31 Oct 2022 21:31:19 +0100 Subject: [PATCH 026/256] Remove mentions of Python 2 (#2176) --- templates/downloads/download-sources-box.html | 2 +- templates/downloads/os_list.html | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/templates/downloads/download-sources-box.html b/templates/downloads/download-sources-box.html index 1583c86ac..f4cb39b2f 100644 --- a/templates/downloads/download-sources-box.html +++ b/templates/downloads/download-sources-box.html @@ -1,6 +1,6 @@

    Sources

    For most Unix systems, you must download and compile the source code. The same source code archive can also be used to build the Windows and Mac versions, and is the starting point for ports to all other platforms.

    -

    Download the latest Python 3 and Python 2 source.

    +

    Download the latest Python 3 source.

    Read more

    \ No newline at end of file diff --git a/templates/downloads/os_list.html b/templates/downloads/os_list.html index eceb064fd..67db5233f 100644 --- a/templates/downloads/os_list.html +++ b/templates/downloads/os_list.html @@ -29,7 +29,6 @@

    Python Releases for {{ os.name }}

    From cfdaf1af2e8be942296187a0fd8a4e040f9fe332 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Wed, 2 Nov 2022 11:04:07 -0400 Subject: [PATCH 027/256] configure cmarkgfm to make cms pages more flexible (#2182) * configure cmarkgfm to make cms pages more flexible closes #2181 * move unsafe markdown to its own render selection --- pages/models.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pages/models.py b/pages/models.py index c272e89c4..c5b5d20f4 100644 --- a/pages/models.py +++ b/pages/models.py @@ -21,6 +21,7 @@ from markupfield.markup import DEFAULT_MARKUP_TYPES import cmarkgfm +from cmarkgfm.cmark import Options as cmarkgfmOptions from cms.models import ContentManageable from fastly.utils import purge_url @@ -29,6 +30,11 @@ DEFAULT_MARKUP_TYPE = getattr(settings, 'DEFAULT_MARKUP_TYPE', 'restructuredtext') +# Set options for cmarkgfm for "unsafe" renderer, see https://github.com/theacodes/cmarkgfm#advanced-usage +CMARKGFM_UNSAFE_OPTIONS = ( + cmarkgfmOptions.CMARK_OPT_UNSAFE +) + PAGE_PATH_RE = re.compile(r""" ^ /? # We can optionally start with a / @@ -59,6 +65,14 @@ 'Markdown' ) +RENDERERS.append( + ( + "markdown_unsafe", + lambda markdown_text: cmarkgfm.github_flavored_markdown_to_html(markdown_text, options=CMARKGFM_UNSAFE_OPTIONS), + "Markdown (unsafe)", + ) +) + class Page(ContentManageable): title = models.CharField(max_length=500) From e84706b1d97f3d1ab4c3bc1e51b4fd5c95243b88 Mon Sep 17 00:00:00 2001 From: Marc-Andre Lemburg Date: Wed, 2 Nov 2022 21:11:38 +0100 Subject: [PATCH 028/256] Use a custom version of the Github MD formatter (#2183) * Use a custom version of the Github MD formatter This doesn't filter away the script (and some other) HTML tags. Fixes #2181. * Apply some code cosmetics --- pages/models.py | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/pages/models.py b/pages/models.py index c5b5d20f4..9b67997e1 100644 --- a/pages/models.py +++ b/pages/models.py @@ -30,11 +30,6 @@ DEFAULT_MARKUP_TYPE = getattr(settings, 'DEFAULT_MARKUP_TYPE', 'restructuredtext') -# Set options for cmarkgfm for "unsafe" renderer, see https://github.com/theacodes/cmarkgfm#advanced-usage -CMARKGFM_UNSAFE_OPTIONS = ( - cmarkgfmOptions.CMARK_OPT_UNSAFE -) - PAGE_PATH_RE = re.compile(r""" ^ /? # We can optionally start with a / @@ -65,10 +60,35 @@ 'Markdown' ) +# Add our own Github style Markdown parser, which doesn't apply the default +# tagfilter used by Github (we can be more liberal, since we know our page +# editors). + +def unsafe_markdown_to_html(text, options=0): + + """Render the given GitHub-flavored Makrdown to HTML. + + This function is similar to cmarkgfm.github_flavored_markdown_to_html(), + except that it allows raw HTML to get rendered, which is useful when + using jQuery UI script extensions on pages. + + """ + # Set options for cmarkgfm for "unsafe" renderer, see + # https://github.com/theacodes/cmarkgfm#advanced-usage + options = options | ( + cmarkgfmOptions.CMARK_OPT_UNSAFE | + cmarkgfmOptions.CMARK_OPT_GITHUB_PRE_LANG + ) + return cmarkgfm.markdown_to_html_with_extensions( + text, options=options, + extensions=[ + 'table', 'autolink', 'strikethrough', 'tasklist' + ]) + RENDERERS.append( ( "markdown_unsafe", - lambda markdown_text: cmarkgfm.github_flavored_markdown_to_html(markdown_text, options=CMARKGFM_UNSAFE_OPTIONS), + unsafe_markdown_to_html, "Markdown (unsafe)", ) ) From c4c6d2d8cff06090625b5bded0f658ee441395a4 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Thu, 8 Dec 2022 13:22:20 -0500 Subject: [PATCH 029/256] upgrade to python 3.9.16 (#2208) --- .github/workflows/ci.yml | 2 +- .python-version | 2 +- runtime.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8f1e6fdf9..f34cc73bb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: - python-version: 3.9.6 + python-version: 3.9.16 - name: Cache Python dependencies uses: actions/cache@v2 env: diff --git a/.python-version b/.python-version index 1635d0f5a..9f3d4c178 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.9.6 +3.9.16 diff --git a/runtime.txt b/runtime.txt index 9bff0e00f..c9cbcea6f 100644 --- a/runtime.txt +++ b/runtime.txt @@ -1 +1 @@ -python-3.9.6 +python-3.9.16 From 54cf832bdf4acbd2460be9191ce6ad06fca4059d Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Thu, 8 Dec 2022 13:56:27 -0500 Subject: [PATCH 030/256] update Basic Membership forms (#2207) * update Basic Membership forms - Removes email related fields/notes since we do not use this membership for any mailing lists. - Adds note/link regarding other membership types * makes more sense this way... * clarify that delete is for Basic Membership only --- templates/users/membership_form.html | 17 ++++++++--------- users/forms.py | 6 ------ 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/templates/users/membership_form.html b/templates/users/membership_form.html index b2efb0f88..cef557897 100644 --- a/templates/users/membership_form.html +++ b/templates/users/membership_form.html @@ -2,7 +2,7 @@ {% load boxes %} {% load honeypot %} -{% block page_title %}Edit Membership | Our Users & Members | {{ SITE_INFO.site_name }}{% endblock %} +{% block page_title %}Edit Basic Membership | Our Users & Members | {{ SITE_INFO.site_name }}{% endblock %} {% block body_attributes %}class="psf signup default-page"{% endblock %} @@ -13,11 +13,15 @@
    {% if request.user.has_membership %} -

    Edit your PSF Membership

    +

    Edit your PSF Basic Membership

    {% else %} -

    Register to become a PSF Member

    +

    Register to become a PSF Basic Member

    {% endif %} +
    +

    For more information and to sign up for other kinds of PSF membership, visit our Membership Page.

    +
    + {% if form.errors %}

    Please correct the errors noted in red below:

    @@ -104,12 +108,7 @@

    Register to become a PSF Member

    class="deletion-form" onsubmit="return confirm('Are you sure?');"> {% csrf_token %} -

    - - -

    + {% endif %} diff --git a/users/forms.py b/users/forms.py index fb05144f3..89045bab1 100644 --- a/users/forms.py +++ b/users/forms.py @@ -68,10 +68,6 @@ def __init__(self, *args, **kwargs): code_of_conduct = self.fields['psf_code_of_conduct'] code_of_conduct.widget = forms.Select(choices=self.COC_CHOICES) - announcements = self.fields['psf_announcements'] - announcements.widget = forms.CheckboxInput() - announcements.initial = False - class Meta: model = Membership fields = [ @@ -83,7 +79,6 @@ class Meta: 'country', 'postal_code', 'psf_code_of_conduct', - 'psf_announcements', ] def clean_psf_code_of_conduct(self): @@ -105,4 +100,3 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) del(self.fields['psf_code_of_conduct']) - del(self.fields['psf_announcements']) From 7208dd0032a92f5edee1cb85ee86716d50f535f8 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Wed, 11 Jan 2023 10:05:46 -0500 Subject: [PATCH 031/256] add snippet for google analytics 4 --- templates/base.html | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/templates/base.html b/templates/base.html index a8e3acf69..92b422edd 100644 --- a/templates/base.html +++ b/templates/base.html @@ -5,6 +5,15 @@ {% load pipeline sitetree %} + + + + From b41f5e461f077be9d6999a3d42d9c23f8edcbaab Mon Sep 17 00:00:00 2001 From: eshaan_says_hello_world <54004410+eshaanmandal@users.noreply.github.com> Date: Tue, 17 Jan 2023 22:51:35 +0530 Subject: [PATCH 032/256] Fixed Issue#2190 | Homepage code syntax error (#2191) * Fixed Issue#2190Now the Homepage code sample doesn't have syntax error * Another minor typo in the next line Co-authored-by: Eshaan --- codesamples/factories.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/codesamples/factories.py b/codesamples/factories.py index 49a60730f..5a52b9738 100644 --- a/codesamples/factories.py +++ b/codesamples/factories.py @@ -27,11 +27,11 @@ def initial_data(): ( """\
    # Simple output (with Unicode)
    -            >>> print(\"Hello, I'm Python!\")
    +            >>> print("Hello, I'm Python!")
                 Hello, I'm Python!
     
                 # Input, assignment
    -            >>> name = input('What is your name?\\n')
    +            >>> name = input('What is your name?\n')
                 What is your name?
                 Python
                 >>> print(f'Hi, {name}.')
    
    From afe3cdb9ff27605c54a4ca2c5b26e2c920b3b103 Mon Sep 17 00:00:00 2001
    From: Ee Durbin 
    Date: Fri, 20 Jan 2023 12:16:20 -0800
    Subject: [PATCH 033/256] add a sponsorship export function via admin (#2231)
    
    ---
     base-requirements.txt       |  1 +
     pydotorg/settings/base.py   |  1 +
     sponsors/admin.py           | 78 ++++++++++++++++++++++++++++++++++++-
     sponsors/models/sponsors.py | 13 +++++++
     4 files changed, 92 insertions(+), 1 deletion(-)
    
    diff --git a/base-requirements.txt b/base-requirements.txt
    index da4a2b532..4832f0ee6 100644
    --- a/base-requirements.txt
    +++ b/base-requirements.txt
    @@ -49,3 +49,4 @@ sorl-thumbnail==12.7.0
     docxtpl==0.12.0
     reportlab==3.6.6
     django-extensions==3.1.4
    +django-import-export==2.7.1
    diff --git a/pydotorg/settings/base.py b/pydotorg/settings/base.py
    index 702eaa364..d5eb568a6 100644
    --- a/pydotorg/settings/base.py
    +++ b/pydotorg/settings/base.py
    @@ -203,6 +203,7 @@
         'django_filters',
         'polymorphic',
         'django_extensions',
    +    'import_export',
     ]
     
     # Fixtures
    diff --git a/sponsors/admin.py b/sponsors/admin.py
    index 4e68a7d20..f5108bdc7 100644
    --- a/sponsors/admin.py
    +++ b/sponsors/admin.py
    @@ -1,5 +1,6 @@
     from django.contrib.contenttypes.admin import GenericTabularInline
     from django.contrib.contenttypes.models import ContentType
    +from django.contrib.sites.models import Site
     from ordered_model.admin import OrderedModelAdmin
     from polymorphic.admin import PolymorphicInlineSupportMixin, StackedPolymorphicInline, PolymorphicParentModelAdmin, \
         PolymorphicChildModelAdmin
    @@ -13,6 +14,10 @@
     from django.utils.functional import cached_property
     from django.utils.html import mark_safe
     
    +from import_export import resources
    +from import_export.fields import Field
    +from import_export.admin import ImportExportActionModelAdmin
    +
     from mailing.admin import BaseEmailTemplateAdmin
     from sponsors.models import *
     from sponsors.models.benefits import RequiredAssetMixin
    @@ -292,8 +297,78 @@ def choices(self, changelist):
             return choices
     
     
    +class SponsorshipResource(resources.ModelResource):
    +
    +    sponsor_name = Field(attribute='sponsor__name', column_name='Company Name')
    +    contact_name = Field(column_name='Contact Name(s)')
    +    contact_email = Field(column_name='Contact Email(s)')
    +    contact_phone = Field(column_name='Contact phone number')
    +    contact_type = Field(column_name='Contact Type(s)')
    +    start_date = Field(attribute='start_date', column_name='Start Date')
    +    end_date = Field(attribute='end_date', column_name='End Date')
    +    web_logo = Field(column_name='Logo')
    +    landing_page_url = Field(attribute='sponsor__landing_page_url', column_name='Webpage link')
    +    level = Field(attribute='package__name', column_name='Sponsorship Level')
    +    cost = Field(attribute='sponsorship_fee', column_name='Sponsorship Cost')
    +    admin_url = Field(attribute='admin_url', column_name='Admin Link')
    +
    +    class Meta:
    +        model = Sponsorship
    +        fields = (
    +            'sponsor_name',
    +            'contact_name',
    +            'contact_email',
    +            'contact_phone',
    +            'contact_type',
    +            'start_date',
    +            'end_date',
    +            'web_logo',
    +            'landing_page_url',
    +            'level',
    +            'cost',
    +            'admin_url',
    +        )
    +        export_order = (
    +            "sponsor_name",
    +            "contact_name",
    +            "contact_email",
    +            "contact_phone",
    +            "contact_type",
    +            "start_date",
    +            "end_date",
    +            "web_logo",
    +            "landing_page_url",
    +            "level",
    +            "cost",
    +            "admin_url",
    +        )
    +
    +    def get_sponsorship_url(self, sponsorship):
    +        domain = Site.objects.get_current().domain
    +        url = reverse("admin:sponsors_sponsorship_change", args=[sponsorship.id])
    +        return f'https://{domain}{url}'
    +
    +    def dehydrate_web_logo(self, sponsorship):
    +        return sponsorship.sponsor.web_logo.url
    +
    +    def dehydrate_contact_type(self, sponsorship):
    +        return "\n".join([contact.type for contact in sponsorship.sponsor.contacts.all()])
    +
    +    def dehydrate_contact_name(self, sponsorship):
    +        return "\n".join([contact.name for contact in sponsorship.sponsor.contacts.all()])
    +
    +    def dehydrate_contact_email(self, sponsorship):
    +        return "\n".join([contact.email for contact in sponsorship.sponsor.contacts.all()])
    +
    +    def dehydrate_contact_phone(self, sponsorship):
    +        return "\n".join([contact.phone for contact in sponsorship.sponsor.contacts.all()])
    +
    +    def dehydrate_admin_url(self, sponsorship):
    +        return self.get_sponsorship_url(sponsorship)
    +
    +
     @admin.register(Sponsorship)
    -class SponsorshipAdmin(admin.ModelAdmin):
    +class SponsorshipAdmin(ImportExportActionModelAdmin, admin.ModelAdmin):
         change_form_template = "sponsors/admin/sponsorship_change_form.html"
         form = SponsorshipReviewAdminForm
         inlines = [SponsorBenefitInline, AssetsInline]
    @@ -310,6 +385,7 @@ class SponsorshipAdmin(admin.ModelAdmin):
         ]
         list_filter = [SponsorshipStatusListFilter, "package", "year", TargetableEmailBenefitsFilter]
         actions = ["send_notifications"]
    +    resource_class = SponsorshipResource
         fieldsets = [
             (
                 "Sponsorship Data",
    diff --git a/sponsors/models/sponsors.py b/sponsors/models/sponsors.py
    index ad2c4b8b1..9b4d8fe86 100644
    --- a/sponsors/models/sponsors.py
    +++ b/sponsors/models/sponsors.py
    @@ -164,6 +164,19 @@ def can_manage(self):
             if self.user is not None and (self.primary or self.manager):
                 return True
     
    +    @property
    +    def type(self):
    +        types=[]
    +        if self.primary:
    +            types.append('Primary')
    +        if self.administrative:
    +            types.append('Administrative')
    +        if self.manager:
    +            types.append('Manager')
    +        if self.accounting:
    +            types.append('Accounting')
    +        return ", ".join(types)
    +
         def __str__(self):
             return f"Contact {self.name} from {self.sponsor}"
     
    
    From f01f67fef9c1644328506fefe9c80764275cd418 Mon Sep 17 00:00:00 2001
    From: Renato Oliveira 
    Date: Thu, 26 Jan 2023 16:44:53 -0300
    Subject: [PATCH 034/256] Add management command to create sponsor vouchers for
     PyCon 2023 (#2233)
    
    * ignore Makefile .state folder
    
    * add test and docker_shell command to Makefile
    
    * Add command to create pycon vouchers for sponsors
    
    * Update sponsors/management/commands/create_pycon_vouchers_for_sponsors.py
    
    * Update sponsors/management/commands/create_pycon_vouchers_for_sponsors.py
    
    Co-authored-by: Ee Durbin 
    ---
     .gitignore                                    |   1 +
     Makefile                                      |   6 +
     .../create_pycon_vouchers_for_sponsors.py     | 133 ++++++++++++++++++
     sponsors/tests/test_management_command.py     |  54 +++++++
     4 files changed, 194 insertions(+)
     create mode 100644 sponsors/management/commands/create_pycon_vouchers_for_sponsors.py
     create mode 100644 sponsors/tests/test_management_command.py
    
    diff --git a/.gitignore b/.gitignore
    index 60836490f..954ff2401 100644
    --- a/.gitignore
    +++ b/.gitignore
    @@ -25,3 +25,4 @@ __pycache__
     .env
     .DS_Store
     .envrc
    +.state/
    diff --git a/Makefile b/Makefile
    index 0b190f249..dc296feb4 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -50,3 +50,9 @@ shell: .state/db-initialized
     clean:
     	docker-compose down -v
     	rm -f .state/docker-build-web .state/db-initialized .state/db-migrated 
    +
    +test: .state/db-initialized
    +	docker-compose run --rm web ./manage.py test
    +
    +docker_shell: .state/db-initialized
    +	docker-compose run --rm web /bin/bash
    diff --git a/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py b/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py
    new file mode 100644
    index 000000000..173ec31b9
    --- /dev/null
    +++ b/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py
    @@ -0,0 +1,133 @@
    +import os
    +from hashlib import sha1
    +from calendar import timegm
    +from datetime import datetime
    +import sys
    +from urllib.parse import urlencode
    +
    +import requests
    +from requests.exceptions import RequestException
    +
    +from django.db.models import Q
    +from django.conf import settings
    +from django.core.management import BaseCommand
    +
    +from sponsors.models import (
    +    SponsorBenefit,
    +    BenefitFeature,
    +    ProvidedTextAsset,
    +    TieredBenefit,
    +)
    +
    +BENEFITS = {
    +    121: {
    +        "internal_name": "full_conference_passes_2023_code",
    +        "voucher_type": "SPNS_COMP_",
    +    },
    +    139: {
    +        "internal_name": "expo_hall_only_passes_2023_code",
    +        "voucher_type": "SPNS_EXPO_COMP_",
    +    },
    +    148: {
    +        "internal_name": "additional_full_conference_passes_2023_code",
    +        "voucher_type": "SPNS_EXPO_DISC_",
    +    },
    +    166: {
    +        "internal_name": "online_only_conference_passes_2023_code",
    +        "voucher_type": "SPNS_ONLINE_COMP_",
    +    },
    +}
    +
    +
    +def api_call(uri, query):
    +    method = "GET"
    +    body = ""
    +
    +    timestamp = timegm(datetime.utcnow().timetuple())
    +    base_string = "".join(
    +        (
    +            settings.PYCON_API_SECRET,
    +            str(timestamp),
    +            method.upper(),
    +            f"{uri}?{urlencode(query)}",
    +            body,
    +        )
    +    )
    +
    +    headers = {
    +        "X-API-Key": str(settings.PYCON_API_KEY),
    +        "X-API-Signature": str(sha1(base_string.encode("utf-8")).hexdigest()),
    +        "X-API-Timestamp": str(timestamp),
    +    }
    +    scheme = "http" if settings.DEBUG else "https"
    +    url = f"{scheme}://{settings.PYCON_API_HOST}{uri}"
    +    try:
    +        return requests.get(url, headers=headers, params=query).json()
    +    except RequestException:
    +        raise
    +
    +
    +def generate_voucher_codes(year):
    +    for benefit_id, code in BENEFITS.items():
    +        for sponsorbenefit in (
    +            SponsorBenefit.objects.filter(sponsorship_benefit_id=benefit_id)
    +            .filter(sponsorship__status="finalized")
    +            .all()
    +        ):
    +            try:
    +                quantity = BenefitFeature.objects.instance_of(TieredBenefit).get(
    +                    sponsor_benefit=sponsorbenefit
    +                )
    +            except BenefitFeature.DoesNotExist:
    +                print(
    +                    f"No quantity found for {sponsorbenefit.sponsorship.sponsor.name} and {code['internal_name']}"
    +                )
    +                continue
    +            try:
    +                asset = ProvidedTextAsset.objects.filter(
    +                    sponsor_benefit=sponsorbenefit
    +                ).get(internal_name=code["internal_name"])
    +            except ProvidedTextAsset.DoesNotExist:
    +                print(
    +                    f"No provided asset found for {sponsorbenefit.sponsorship.sponsor.name} with internal name {code['internal_name']}"
    +                )
    +                continue
    +
    +            result = api_call(
    +                f"/{year}/api/vouchers/",
    +                query={
    +                    "voucher_type": code["voucher_type"],
    +                    "quantity": quantity.quantity,
    +                    "sponsor_name": sponsorbenefit.sponsorship.sponsor.name,
    +                },
    +            )
    +            if result["code"] == 200:
    +                print(
    +                    f"Fullfilling {code['internal_name']} for {sponsorbenefit.sponsorship.sponsor.name}: {quantity.quantity}"
    +                )
    +                promo_code = result["data"]["promo_code"]
    +                asset.value = promo_code
    +                asset.save()
    +            else:
    +                print(
    +                    f"Error from PyCon when fullfilling {code['internal_name']} for {sponsorbenefit.sponsorship.sponsor.name}: {result}"
    +                )
    +    print(f"Done!")
    +
    +
    +class Command(BaseCommand):
    +    """
    +    Create Contract objects for existing approved Sponsorships.
    +
    +    Run this command as a initial data migration or to make sure
    +    all approved Sponsorships do have associated Contract objects.
    +    """
    +
    +    help = "Create Contract objects for existing approved Sponsorships."
    +
    +    def add_arguments(self, parser):
    +        parser.add_argument("year")
    +
    +    def handle(self, **options):
    +        year = options["year"]
    +        generate_voucher_codes(year)
    diff --git a/sponsors/tests/test_management_command.py b/sponsors/tests/test_management_command.py
    new file mode 100644
    index 000000000..100daad2a
    --- /dev/null
    +++ b/sponsors/tests/test_management_command.py
    @@ -0,0 +1,54 @@
    +from django.test import TestCase
    +
    +from model_bakery import baker
    +
    +from unittest import mock
    +
    +from sponsors.models import ProvidedTextAssetConfiguration, ProvidedTextAsset
    +from sponsors.models.enums import AssetsRelatedTo
    +
    +from sponsors.management.commands.create_pycon_vouchers_for_sponsors import (
    +    generate_voucher_codes,
    +    BENEFITS,
    +)
    +
    +
    +class CreatePyConVouchersForSponsorsTestCase(TestCase):
    +    @mock.patch(
    +        "sponsors.management.commands.create_pycon_vouchers_for_sponsors.api_call",
    +        return_value={"code": 200, "data": {"promo_code": "test-promo-code"}},
    +    )
    +    def test_generate_voucher_codes(self, mock_api_call):
    +        for benefit_id, code in BENEFITS.items():
    +            sponsor = baker.make("sponsors.Sponsor", name="Foo")
    +            sponsorship = baker.make(
    +                "sponsors.Sponsorship", status="finalized", sponsor=sponsor
    +            )
    +            sponsorship_benefit = baker.make(
    +                "sponsors.SponsorshipBenefit", id=benefit_id
    +            )
    +            sponsor_benefit = baker.make(
    +                "sponsors.SponsorBenefit",
    +                id=benefit_id,
    +                sponsorship=sponsorship,
    +                sponsorship_benefit=sponsorship_benefit,
    +            )
    +            quantity = baker.make(
    +                "sponsors.TieredBenefit",
    +                sponsor_benefit=sponsor_benefit,
    +            )
    +            config = baker.make(
    +                ProvidedTextAssetConfiguration,
    +                related_to=AssetsRelatedTo.SPONSORSHIP.value,
    +                _fill_optional=True,
    +                internal_name=code["internal_name"],
    +            )
    +            asset = config.create_benefit_feature(sponsor_benefit=sponsor_benefit)
    +
    +        generate_voucher_codes(2020)
    +
    +        for benefit_id, code in BENEFITS.items():
    +            asset = ProvidedTextAsset.objects.get(
    +                sponsor_benefit__id=benefit_id, internal_name=code["internal_name"]
    +            )
    +            self.assertEqual(asset.value, "test-promo-code")
    
    From 53487cdba0a505cde7e2669b8547d24f6e5c8f3f Mon Sep 17 00:00:00 2001
    From: Ee Durbin 
    Date: Fri, 27 Jan 2023 16:18:44 -0500
    Subject: [PATCH 035/256] updates to sponsor contract template (#2237)
    
    closes #2235
    closes #2236
    ---
     .../sponsors/admin/contract-template.docx     | Bin 14878 -> 15061 bytes
     1 file changed, 0 insertions(+), 0 deletions(-)
    
    diff --git a/templates/sponsors/admin/contract-template.docx b/templates/sponsors/admin/contract-template.docx
    index 0422b7cd1737b7d4fa488812621a2e5d8052c4be..6316a3eb18f1d361e5e2894ec8074796df09e312 100644
    GIT binary patch
    delta 13298
    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
    Vg!*5TRA*0o;39_r;ryrd{{yRiI<^1+
    
    delta 13098
    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
    
    
    From 19703a645694f90a6dec1f7efc563fa93cf517ef Mon Sep 17 00:00:00 2001
    From: Ee Durbin 
    Date: Wed, 15 Feb 2023 07:43:49 -0500
    Subject: [PATCH 036/256] update prefix for additional discounted registration
     vouchers
    
    ---
     .../management/commands/create_pycon_vouchers_for_sponsors.py   | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py b/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py
    index 173ec31b9..f8b99855a 100644
    --- a/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py
    +++ b/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py
    @@ -30,7 +30,7 @@
         },
         148: {
             "internal_name": "additional_full_conference_passes_2023_code",
    -        "voucher_type": "SPNS_EXPO_DISC_",
    +        "voucher_type": "SPNS_ADDL_DISC_REG_",
         },
         166: {
             "internal_name": "online_only_conference_passes_2023_code",
    
    From fad14cb19cf86d64e7a9d707656a892478809013 Mon Sep 17 00:00:00 2001
    From: Dustin Ingram 
    Date: Wed, 15 Feb 2023 10:45:43 -0500
    Subject: [PATCH 037/256] Add missing migrations (#2246)
    
    ---
     pages/migrations/0003_auto_20230214_2113.py    | 18 ++++++++++++++++++
     sponsors/migrations/0093_auto_20230214_2113.py | 18 ++++++++++++++++++
     2 files changed, 36 insertions(+)
     create mode 100644 pages/migrations/0003_auto_20230214_2113.py
     create mode 100644 sponsors/migrations/0093_auto_20230214_2113.py
    
    diff --git a/pages/migrations/0003_auto_20230214_2113.py b/pages/migrations/0003_auto_20230214_2113.py
    new file mode 100644
    index 000000000..af666269f
    --- /dev/null
    +++ b/pages/migrations/0003_auto_20230214_2113.py
    @@ -0,0 +1,18 @@
    +# Generated by Django 2.2.24 on 2023-02-14 21:13
    +
    +from django.db import migrations, models
    +
    +
    +class Migration(migrations.Migration):
    +
    +    dependencies = [
    +        ('pages', '0002_auto_20150416_1853'),
    +    ]
    +
    +    operations = [
    +        migrations.AlterField(
    +            model_name='page',
    +            name='content_markup_type',
    +            field=models.CharField(choices=[('', '--'), ('html', 'HTML'), ('plain', 'Plain'), ('markdown', 'Markdown'), ('restructuredtext', 'Restructured Text'), ('markdown_unsafe', 'Markdown (unsafe)')], default='restructuredtext', max_length=30),
    +        ),
    +    ]
    diff --git a/sponsors/migrations/0093_auto_20230214_2113.py b/sponsors/migrations/0093_auto_20230214_2113.py
    new file mode 100644
    index 000000000..853d14606
    --- /dev/null
    +++ b/sponsors/migrations/0093_auto_20230214_2113.py
    @@ -0,0 +1,18 @@
    +# Generated by Django 2.2.24 on 2023-02-14 21:13
    +
    +from django.db import migrations, models
    +
    +
    +class Migration(migrations.Migration):
    +
    +    dependencies = [
    +        ('sponsors', '0092_auto_20220816_1517'),
    +    ]
    +
    +    operations = [
    +        migrations.AlterField(
    +            model_name='sponsorshipbenefit',
    +            name='package_only',
    +            field=models.BooleanField(default=False, help_text='If a benefit is only available via a sponsorship package and not as an add-on, select this option.', verbose_name='Sponsor Package Only Benefit'),
    +        ),
    +    ]
    
    From b12479f3c9c04b22a20c9e1f096d194b2ae707b8 Mon Sep 17 00:00:00 2001
    From: Dustin Ingram 
    Date: Wed, 15 Feb 2023 10:46:37 -0500
    Subject: [PATCH 038/256] Add support for Sigstore bundle files (#2247)
    
    ---
     downloads/api.py                               |  2 +-
     .../0009_releasefile_sigstore_bundle_file.py   | 18 ++++++++++++++++++
     downloads/models.py                            |  3 +++
     downloads/serializers.py                       |  1 +
     downloads/templatetags/download_tags.py        |  5 ++++-
     templates/downloads/release_detail.html        |  8 ++++++--
     6 files changed, 33 insertions(+), 4 deletions(-)
     create mode 100644 downloads/migrations/0009_releasefile_sigstore_bundle_file.py
    
    diff --git a/downloads/api.py b/downloads/api.py
    index bb49e588e..e58023dbf 100644
    --- a/downloads/api.py
    +++ b/downloads/api.py
    @@ -69,7 +69,7 @@ class Meta(GenericResource.Meta):
                 'creator', 'last_modified_by',
                 'os', 'release', 'description', 'is_source', 'url', 'gpg_signature_file',
                 'md5_sum', 'filesize', 'download_button', 'sigstore_signature_file',
    -            'sigstore_cert_file',
    +            'sigstore_cert_file', 'sigstore_bundle_file',
             ]
             filtering = {
                 'name': ('exact',),
    diff --git a/downloads/migrations/0009_releasefile_sigstore_bundle_file.py b/downloads/migrations/0009_releasefile_sigstore_bundle_file.py
    new file mode 100644
    index 000000000..52383852c
    --- /dev/null
    +++ b/downloads/migrations/0009_releasefile_sigstore_bundle_file.py
    @@ -0,0 +1,18 @@
    +# Generated by Django 2.2.24 on 2023-02-14 21:14
    +
    +from django.db import migrations, models
    +
    +
    +class Migration(migrations.Migration):
    +
    +    dependencies = [
    +        ('downloads', '0008_auto_20220907_2102'),
    +    ]
    +
    +    operations = [
    +        migrations.AddField(
    +            model_name='releasefile',
    +            name='sigstore_bundle_file',
    +            field=models.URLField(blank=True, help_text='Sigstore Bundle URL', verbose_name='Sigstore Bundle URL'),
    +        ),
    +    ]
    diff --git a/downloads/models.py b/downloads/models.py
    index 7955f58f5..6d91534ac 100644
    --- a/downloads/models.py
    +++ b/downloads/models.py
    @@ -329,6 +329,9 @@ class ReleaseFile(ContentManageable, NameSlugModel):
         sigstore_cert_file = models.URLField(
             "Sigstore Cert URL", blank=True, help_text="Sigstore Cert URL"
         )
    +    sigstore_bundle_file = models.URLField(
    +        "Sigstore Bundle URL", blank=True, help_text="Sigstore Bundle URL"
    +    )
         md5_sum = models.CharField('MD5 Sum', max_length=200, blank=True)
         filesize = models.IntegerField(default=0)
         download_button = models.BooleanField(default=False, help_text="Use for the supernav download button for this OS")
    diff --git a/downloads/serializers.py b/downloads/serializers.py
    index f30974e02..67bde5b5c 100644
    --- a/downloads/serializers.py
    +++ b/downloads/serializers.py
    @@ -48,4 +48,5 @@ class Meta:
                 'resource_uri',
                 'sigstore_signature_file',
                 'sigstore_cert_file',
    +            'sigstore_bundle_file',
             )
    diff --git a/downloads/templatetags/download_tags.py b/downloads/templatetags/download_tags.py
    index a6df103e9..fb3496787 100644
    --- a/downloads/templatetags/download_tags.py
    +++ b/downloads/templatetags/download_tags.py
    @@ -10,4 +10,7 @@ def strip_minor_version(version):
     
     @register.filter
     def has_sigstore_materials(files):
    -    return any(f.sigstore_cert_file or f.sigstore_signature_file for f in files)
    +    return any(
    +        f.sigstore_bundle_file or f.sigstore_cert_file or f.sigstore_signature_file
    +        for f in files
    +    )
    diff --git a/templates/downloads/release_detail.html b/templates/downloads/release_detail.html
    index 386bd795d..b68b69a66 100644
    --- a/templates/downloads/release_detail.html
    +++ b/templates/downloads/release_detail.html
    @@ -65,8 +65,12 @@ 

    Files

    {{ f.filesize }} {% if f.gpg_signature_file %}
    SIG{% endif %} {% if release_files|has_sigstore_materials %} - {% if f.sigstore_cert_file %}CRT{% endif %} - {% if f.sigstore_signature_file %}SIG{% endif %} + {% if f.sigstore_bundle_file %} + {% if f.sigstore_bundle_file %}.sigstore{% endif %} + {% else %} + {% if f.sigstore_cert_file %}CRT{% endif %} + {% if f.sigstore_signature_file %}SIG{% endif %} + {% endif %} {% endif %} {% endfor %} From 240865e4f70cb54cced53a36c3df1557431de3f3 Mon Sep 17 00:00:00 2001 From: Dustin Ingram Date: Wed, 15 Feb 2023 10:58:04 -0500 Subject: [PATCH 039/256] Add a check in CI for missing migrations (#2248) --- .github/workflows/ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f34cc73bb..97298ffca 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,6 +35,11 @@ jobs: run: | pip install -U pip setuptools wheel pip install -r dev-requirements.txt + - name: Check for ungenerated database migrations + run: | + python manage.py makemigrations --check --dry-run + env: + DATABASE_URL: postgres://postgres:postgres@localhost:5432/pythonorg - name: Run Tests run: | python -Wd -m coverage run manage.py test -v2 From 2ce244285bf4e3e044667e42bfea1fbb5119633e Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Thu, 16 Feb 2023 09:42:24 -0500 Subject: [PATCH 040/256] sponsorship: allow admins to temporarily unlock finalized sponsorships for editing (#2249) --- sponsors/admin.py | 18 ++++++++- .../migrations/0094_sponsorship_locked.py | 32 ++++++++++++++++ sponsors/models/contract.py | 1 + sponsors/models/sponsorship.py | 15 +++++++- sponsors/views_admin.py | 38 +++++++++++++++++++ .../admin/sponsorship_change_form.html | 14 ++++++- templates/sponsors/admin/unlock.html | 35 +++++++++++++++++ 7 files changed, 150 insertions(+), 3 deletions(-) create mode 100644 sponsors/migrations/0094_sponsorship_locked.py create mode 100644 templates/sponsors/admin/unlock.html diff --git a/sponsors/admin.py b/sponsors/admin.py index f5108bdc7..aa3d5408e 100644 --- a/sponsors/admin.py +++ b/sponsors/admin.py @@ -489,7 +489,7 @@ def get_readonly_fields(self, request, obj): "get_custom_benefits_removed_by_user", ] - if obj and obj.status != Sponsorship.APPLIED: + if obj and not obj.open_for_editing: extra = ["start_date", "end_date", "package", "level_name", "sponsorship_fee"] readonly_fields.extend(extra) @@ -554,6 +554,16 @@ def get_urls(self): self.admin_site.admin_view(self.list_uploaded_assets_view), name=f"{base_name}_list_uploaded_assets", ), + path( + "/unlock", + self.admin_site.admin_view(self.unlock_view), + name=f"{base_name}_unlock", + ), + path( + "/lock", + self.admin_site.admin_view(self.lock_view), + name=f"{base_name}_lock", + ), ] return my_urls + urls @@ -677,6 +687,12 @@ def approve_signed_sponsorship_view(self, request, pk): def list_uploaded_assets_view(self, request, pk): return views_admin.list_uploaded_assets(self, request, pk) + def unlock_view(self, request, pk): + return views_admin.unlock_view(self, request, pk) + + def lock_view(self, request, pk): + return views_admin.lock_view(self, request, pk) + @admin.register(SponsorshipCurrentYear) class SponsorshipCurrentYearAdmin(admin.ModelAdmin): diff --git a/sponsors/migrations/0094_sponsorship_locked.py b/sponsors/migrations/0094_sponsorship_locked.py new file mode 100644 index 000000000..c1c6a8152 --- /dev/null +++ b/sponsors/migrations/0094_sponsorship_locked.py @@ -0,0 +1,32 @@ +# Generated by Django 2.2.24 on 2023-02-16 13:55 + +from django.db import migrations, models + +from sponsors.models.sponsorship import Sponsorship as _Sponsorship + +def forwards_func(apps, schema_editor): + Sponsorship = apps.get_model('sponsors', 'Sponsorship') + db_alias = schema_editor.connection.alias + + for sponsorship in Sponsorship.objects.all(): + sponsorship.locked = not (sponsorship.status == _Sponsorship.APPLIED) + sponsorship.save() + +def reverse_func(apps, schema_editor): + pass + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0093_auto_20230214_2113'), + ] + + operations = [ + migrations.AddField( + model_name='sponsorship', + name='locked', + field=models.BooleanField(default=False), + ), + migrations.RunPython(forwards_func, reverse_func) + ] diff --git a/sponsors/models/contract.py b/sponsors/models/contract.py index 3b22de9f3..3cbf389e2 100644 --- a/sponsors/models/contract.py +++ b/sponsors/models/contract.py @@ -248,6 +248,7 @@ def execute(self, commit=True, force=False): self.status = self.EXECUTED self.sponsorship.status = Sponsorship.FINALIZED + self.sponsorship.locked = True self.sponsorship.finalized_on = timezone.now().date() if commit: self.sponsorship.save() diff --git a/sponsors/models/sponsorship.py b/sponsors/models/sponsorship.py index ec22f61f1..8e1d13a63 100644 --- a/sponsors/models/sponsorship.py +++ b/sponsors/models/sponsorship.py @@ -161,6 +161,7 @@ class Sponsorship(models.Model): status = models.CharField( max_length=20, choices=STATUS_CHOICES, default=APPLIED, db_index=True ) + locked = models.BooleanField(default=False) start_date = models.DateField(null=True, blank=True) end_date = models.DateField(null=True, blank=True) @@ -211,6 +212,12 @@ def __str__(self): repr += f" [{start} - {end}]" return repr + def save(self, *args, **kwargs): + if "locked" not in kwargs.get("update_fields", []): + if self.status != self.APPLIED: + self.locked = True + return super().save(*args, **kwargs) + @classmethod @transaction.atomic def new(cls, sponsor, benefits, package=None, submited_by=None): @@ -287,6 +294,7 @@ def reject(self): msg = f"Can't reject a {self.get_status_display()} sponsorship." raise InvalidStatusException(msg) self.status = self.REJECTED + self.locked = True self.rejected_on = timezone.now().date() def approve(self, start_date, end_date): @@ -297,6 +305,7 @@ def approve(self, start_date, end_date): msg = f"Start date greater or equal than end date" raise SponsorshipInvalidDateRangeException(msg) self.status = self.APPROVED + self.locked = True self.start_date = start_date self.end_date = end_date self.approved_on = timezone.now().date() @@ -320,6 +329,10 @@ def rollback_to_editing(self): self.approved_on = None self.rejected_on = None + @property + def unlocked(self): + return not self.locked + @property def verified_emails(self): emails = [self.submited_by.email] @@ -353,7 +366,7 @@ def added_benefits(self): @property def open_for_editing(self): - return self.status == self.APPLIED + return (self.status == self.APPLIED) or (self.unlocked) @property def next_status(self): diff --git a/sponsors/views_admin.py b/sponsors/views_admin.py index f68025bf9..8968da1b7 100644 --- a/sponsors/views_admin.py +++ b/sponsors/views_admin.py @@ -182,6 +182,44 @@ def rollback_to_editing_view(ModelAdmin, request, pk): ) +def unlock_view(ModelAdmin, request, pk): + sponsorship = get_object_or_404(ModelAdmin.get_queryset(request), pk=pk) + + if request.method.upper() == "POST" and request.POST.get("confirm") == "yes": + try: + sponsorship.locked = False + sponsorship.save(update_fields=['locked']) + ModelAdmin.message_user( + request, "Sponsorship is now unlocked!", messages.SUCCESS + ) + except InvalidStatusException as e: + ModelAdmin.message_user(request, str(e), messages.ERROR) + + redirect_url = reverse( + "admin:sponsors_sponsorship_change", args=[sponsorship.pk] + ) + return redirect(redirect_url) + + context = {"sponsorship": sponsorship} + return render( + request, + "sponsors/admin/unlock.html", + context=context, + ) + + +def lock_view(ModelAdmin, request, pk): + sponsorship = get_object_or_404(ModelAdmin.get_queryset(request), pk=pk) + + sponsorship.locked = True + sponsorship.save() + + redirect_url = reverse( + "admin:sponsors_sponsorship_change", args=[sponsorship.pk] + ) + return redirect(redirect_url) + + def execute_contract_view(ModelAdmin, request, pk): contract = get_object_or_404(ModelAdmin.get_queryset(request), pk=pk) diff --git a/templates/sponsors/admin/sponsorship_change_form.html b/templates/sponsors/admin/sponsorship_change_form.html index bb8114231..9d7bcce85 100644 --- a/templates/sponsors/admin/sponsorship_change_form.html +++ b/templates/sponsors/admin/sponsorship_change_form.html @@ -1,5 +1,5 @@ {% extends "admin/change_form.html" %} -{% load i18n admin_urls %} +{% load i18n admin_urls admin_modify %} {% block object-tools-items %} {% with original as sp %} @@ -39,6 +39,18 @@ Uploaded Assets + {% if sp.unlocked and sp.status != sp.APPLIED %} +
  • + Lock +
  • + {% endif %} + + {% if sp.locked and sp.status == sp.FINALIZED %} +
  • + Unlock +
  • + {% endif %} + {% endwith %} {{ block.super }} diff --git a/templates/sponsors/admin/unlock.html b/templates/sponsors/admin/unlock.html new file mode 100644 index 000000000..bca6c853d --- /dev/null +++ b/templates/sponsors/admin/unlock.html @@ -0,0 +1,35 @@ +{% extends 'admin/base_site.html' %} +{% load i18n static sponsors %} + +{% block extrastyle %}{{ block.super }}{% endblock %} + +{% block title %}Unlock Finalized Sponsorship {{ sponsorship }} | python.org{% endblock %} + +{% block breadcrumbs %} + +{% endblock %} + +{% block content %} +

    Unlock Finalized Sponsorship

    +

    Please review the sponsorship application and click in the Unlock button if you want to proceed.

    +
    +
    +{% csrf_token %} + +
    {% full_sponsorship sponsorship display_fee=True %}
    + + + +
    + +
    + +
    +
    +
    {% endblock %} From 49a1e2a4c5f68d809d64f1837241b22d57322ed1 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Mon, 6 Mar 2023 07:38:42 -0500 Subject: [PATCH 041/256] bump rate limit for api --- pydotorg/settings/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pydotorg/settings/base.py b/pydotorg/settings/base.py index d5eb568a6..22a8ae71e 100644 --- a/pydotorg/settings/base.py +++ b/pydotorg/settings/base.py @@ -309,7 +309,7 @@ ), 'DEFAULT_THROTTLE_RATES': { 'anon': '100/day', - 'user': '1000/day', + 'user': '3000/day', }, } From 88d42f786f857a30ab3e29fffd39a2e05e9d2f62 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Sat, 18 Mar 2023 08:19:52 -0400 Subject: [PATCH 042/256] sponsorship form: fix rendering of application form When benefits are configured for packages that are to the right of packages that *do not* have a benefit, we should correctly render. This was effectively "gravity left" for the icons on the application. --- templates/sponsors/sponsorship_benefits_form.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/sponsors/sponsorship_benefits_form.html b/templates/sponsors/sponsorship_benefits_form.html index 9b35a9ff8..309bac057 100644 --- a/templates/sponsors/sponsorship_benefits_form.html +++ b/templates/sponsors/sponsorship_benefits_form.html @@ -96,7 +96,7 @@

    {{ benefit.name }}

    {% for package in form.fields.package.queryset %}
    - {% if forloop.counter <= benefit.num_packages %} + {% if benefit in package.benefits.all %} Date: Tue, 21 Mar 2023 05:13:25 -0400 Subject: [PATCH 043/256] enable customizing admin (#2263) psf staff spend a lot of time between us.pycon.org and python.org django admin this enables configuration of a different theme for python.org so its easier to differentiate. thanks to @swiencks for pointing out how easy to confuse they are. --- base-requirements.txt | 5 ++++- pydotorg/settings/base.py | 15 ++++++++++++--- pydotorg/settings/heroku.py | 12 ------------ templates/admin/base_site.html | 2 +- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/base-requirements.txt b/base-requirements.txt index 4832f0ee6..b19aacc93 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -1,11 +1,14 @@ dj-database-url==0.5.0 django-pipeline==2.0.6 django-sitetree==1.17.0 +django-apptemplates==1.5 +django-admin-interface==0.24.2 +django-translation-aliases==0.1.0 Django==2.2.24 docutils==0.12 Markdown==3.3.4 cmarkgfm==0.6.0 -Pillow==8.3.1 +Pillow==9.4.0 psycopg2-binary==2.8.6 python3-openid==3.2.0 python-decouple==3.4 diff --git a/pydotorg/settings/base.py b/pydotorg/settings/base.py index 22a8ae71e..4bd30b408 100644 --- a/pydotorg/settings/base.py +++ b/pydotorg/settings/base.py @@ -94,8 +94,12 @@ 'DIRS': [ TEMPLATES_DIR, ], - 'APP_DIRS': True, 'OPTIONS': { + 'loaders': [ + 'apptemplates.Loader', + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', + ], 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.i18n', @@ -151,10 +155,14 @@ 'django.contrib.redirects', 'django.contrib.messages', 'django.contrib.staticfiles', + 'django.contrib.humanize', + + 'admin_interface', + 'colorfield', 'django.contrib.admin', 'django.contrib.admindocs', - 'django.contrib.humanize', + 'django_translation_aliases', 'pipeline', 'sitetree', 'imagekit', @@ -288,7 +296,8 @@ ### SecurityMiddleware -X_FRAME_OPTIONS = 'DENY' +X_FRAME_OPTIONS = 'SAMEORIGIN' +SILENCED_SYSTEM_CHECKS = ["security.W019"] ### django-rest-framework diff --git a/pydotorg/settings/heroku.py b/pydotorg/settings/heroku.py index 5adff485c..4a0e4cc35 100644 --- a/pydotorg/settings/heroku.py +++ b/pydotorg/settings/heroku.py @@ -20,18 +20,6 @@ } } -HAYSTACK_SEARCHBOX_SSL_URL = config( - 'SEARCHBOX_SSL_URL' -) - -HAYSTACK_CONNECTIONS = { - 'default': { - 'ENGINE': 'haystack.backends.elasticsearch5_backend.Elasticsearch5SearchEngine', - 'URL': HAYSTACK_SEARCHBOX_SSL_URL, - 'INDEX_NAME': 'haystack-prod', - }, -} - SECRET_KEY = config('SECRET_KEY') ALLOWED_HOSTS = config('ALLOWED_HOSTS', cast=Csv()) diff --git a/templates/admin/base_site.html b/templates/admin/base_site.html index 85ef099d7..ce757a4d2 100644 --- a/templates/admin/base_site.html +++ b/templates/admin/base_site.html @@ -1,4 +1,4 @@ -{% extends "admin/base.html" %} +{% extends "admin_interface:admin/base_site.html" %} {% load i18n %} {% block title %}{{ title }} | {% trans 'python.org' %}{% endblock %} From 55b298dd73a82ce55c46acbb48bf1d477b462fde Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Tue, 21 Mar 2023 05:59:24 -0400 Subject: [PATCH 044/256] revert inadvertently committed. was headed this direction while responding to https://status.python.org/incidents/kwsfwt5q4rg1 --- pydotorg/settings/heroku.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pydotorg/settings/heroku.py b/pydotorg/settings/heroku.py index 4a0e4cc35..5adff485c 100644 --- a/pydotorg/settings/heroku.py +++ b/pydotorg/settings/heroku.py @@ -20,6 +20,18 @@ } } +HAYSTACK_SEARCHBOX_SSL_URL = config( + 'SEARCHBOX_SSL_URL' +) + +HAYSTACK_CONNECTIONS = { + 'default': { + 'ENGINE': 'haystack.backends.elasticsearch5_backend.Elasticsearch5SearchEngine', + 'URL': HAYSTACK_SEARCHBOX_SSL_URL, + 'INDEX_NAME': 'haystack-prod', + }, +} + SECRET_KEY = config('SECRET_KEY') ALLOWED_HOSTS = config('ALLOWED_HOSTS', cast=Csv()) From 0422be5e0f4241475abc8062eaeb04cf05ce7392 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Fri, 12 May 2023 13:41:49 -0400 Subject: [PATCH 045/256] add notes regarding basic membership (#2271) --- templates/includes/authenticated.html | 4 ++-- templates/users/membership_form.html | 12 ++++++++++++ templates/users/user_detail.html | 18 +++++++++++++++++- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/templates/includes/authenticated.html b/templates/includes/authenticated.html index bdd2c671e..82d5b38f6 100644 --- a/templates/includes/authenticated.html +++ b/templates/includes/authenticated.html @@ -7,9 +7,9 @@
  • Edit your user profile
  • Change your password
  • {% if request.user.has_membership %} -
  • Edit your PSF membership
  • +
  • Edit your PSF Basic membership
  • {% else %} -
  • Become a PSF member
  • +
  • Become a PSF Basic member
  • {% endif %} {% if request.user.sponsorships %}
  • Sponsorships diff --git a/templates/users/membership_form.html b/templates/users/membership_form.html index cef557897..ecc032467 100644 --- a/templates/users/membership_form.html +++ b/templates/users/membership_form.html @@ -19,6 +19,18 @@

    Register to become a PSF Basic Member

    {% endif %}
    +

    + Basic membership is not a voting membership class.
    For more information see Article IV + of the PSF Bylaws. +

    +

    + All other membership classes are recorded on psfmember.org.
    + Please log in there and review your user profile + to see your membership status.
    + If you believe you are a member but do not have an account on psfmember.org, please + create an account and verify your + email, then email psf-donations@python.org to get your account linked to your membership. +

    For more information and to sign up for other kinds of PSF membership, visit our Membership Page.

    diff --git a/templates/users/user_detail.html b/templates/users/user_detail.html index f584af139..ce2f5ee90 100644 --- a/templates/users/user_detail.html +++ b/templates/users/user_detail.html @@ -21,7 +21,23 @@

    Name: {% firstof object.get_full_name object %}

  • {% comment %} From c4ee749942227ca75c8e670546afe67232d647b2 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Thu, 3 Aug 2023 15:12:29 -0400 Subject: [PATCH 053/256] Update feature_request.md --- .github/ISSUE_TEMPLATE/feature_request.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 316039ee5..514274e5f 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -8,11 +8,10 @@ This is the repository and issue tracker for https://www.python.org website. If you're looking to file an issue with CPython itself, please go to -https://bugs.python.org +https://github.com/python/cpython/issues/new/choose Issues related to Python's documentation (https://docs.python.org) can -also be filed in https://bugs.python.org, by selecting the -"Documentation" component. +also be filed at https://github.com/python/cpython/issues/new?assignees=&labels=docs&template=documentation.md. --> **Is your feature request related to a problem? Please describe.** From ad5e23fc4f6d5d26386f6a355096c459580ed0ad Mon Sep 17 00:00:00 2001 From: Michael Cohen Date: Tue, 14 Nov 2023 05:30:01 -0800 Subject: [PATCH 054/256] Update python.org socialize menu to include a link to the PSF Mastodon account (#2323) * Update python.org socialize menu to include a link to the PSF Mastodon account Updated socialize menu to include a link to the official PSF Mastodon account. Details: - Added Mastodon icon to Pythonicon font family. Used IcoMoon to generate icons - Updated all related CSS and Sass files - Updated the socialize menu in the base.html template To see all rendered Pythonicon fonts, open `static/fonts/demo.html` * Updated help and close icons unicodes Help icon is now assigned unicode `\3f` (`?`). Close icon is now assigned unicode `\58` (`X`). Required regenerating fonts and updating CSS + Sass files. --- static/fonts/Pythonicon.eot | Bin 14020 -> 12628 bytes static/fonts/Pythonicon.json | 1906 ++++++++++++++++++++-------------- static/fonts/Pythonicon.svg | 84 +- static/fonts/Pythonicon.ttf | Bin 13840 -> 12452 bytes static/fonts/Pythonicon.woff | Bin 13916 -> 12528 bytes static/fonts/demo.html | 601 +++++++++++ static/fonts/demo/demo.css | 155 +++ static/fonts/demo/demo.js | 30 + static/fonts/index.html | 410 -------- static/fonts/style.css | 192 ++-- static/sass/_fonts.scss | 97 +- static/sass/style.css | 266 ++--- static/sass/style.scss | 2 +- templates/base.html | 5 +- 14 files changed, 2233 insertions(+), 1515 deletions(-) mode change 100755 => 100644 static/fonts/Pythonicon.eot mode change 100755 => 100644 static/fonts/Pythonicon.json mode change 100755 => 100644 static/fonts/Pythonicon.svg mode change 100755 => 100644 static/fonts/Pythonicon.ttf mode change 100755 => 100644 static/fonts/Pythonicon.woff create mode 100644 static/fonts/demo.html create mode 100644 static/fonts/demo/demo.css create mode 100644 static/fonts/demo/demo.js delete mode 100644 static/fonts/index.html diff --git a/static/fonts/Pythonicon.eot b/static/fonts/Pythonicon.eot old mode 100755 new mode 100644 index db8f2b452a8ee11b20fbaf60cba52cd5bda1ea62..f36815ed5b87531373e95e1be7916f592e2a14d9 GIT binary patch literal 12628 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 literal 14020 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 diff --git a/static/fonts/Pythonicon.json b/static/fonts/Pythonicon.json old mode 100755 new mode 100644 index 05f5b6a8b..ddcdbc09f --- a/static/fonts/Pythonicon.json +++ b/static/fonts/Pythonicon.json @@ -1,787 +1,1121 @@ { - "IcoMoonType": "selection", - "icons": [ - { - "icon": { - "paths": [ - "M1024 429.256c0-200.926-58.792-363.938-131.482-365.226 0.292-0.006 0.578-0.030 0.872-0.030h-82.942c0 0-194.8 146.336-475.23 203.754-8.56 45.292-14.030 99.274-14.030 161.502 0 62.228 5.466 116.208 14.030 161.5 280.428 57.418 475.23 203.756 475.23 203.756h82.942c-0.292 0-0.578-0.024-0.872-0.032 72.696-1.288 131.482-164.298 131.482-365.224zM864.824 739.252c-9.382 0-19.532-9.742-24.746-15.548-12.63-14.064-24.792-35.96-35.188-63.328-23.256-61.232-36.066-143.31-36.066-231.124 0-87.81 12.81-169.89 36.066-231.122 10.394-27.368 22.562-49.266 35.188-63.328 5.214-5.812 15.364-15.552 24.746-15.552 9.38 0 19.536 9.744 24.744 15.552 12.634 14.064 24.796 35.958 35.188 63.328 23.258 61.23 36.068 143.312 36.068 231.122 0 87.804-12.81 169.888-36.068 231.124-10.39 27.368-22.562 49.264-35.188 63.328-5.208 5.806-15.36 15.548-24.744 15.548zM251.812 429.256c0-51.95 3.81-102.43 11.052-149.094-47.372 6.554-88.942 10.324-140.34 10.324-67.058 0-67.058 0-67.058 0l-55.466 94.686v88.17l55.46 94.686c0 0 0 0 67.060 0 51.398 0 92.968 3.774 140.34 10.324-7.236-46.664-11.048-97.146-11.048-149.096zM368.15 642.172l-127.998-24.51 81.842 321.544c4.236 16.634 20.744 25.038 36.686 18.654l118.556-47.452c15.944-6.376 22.328-23.964 14.196-39.084l-123.282-229.152zM864.824 548.73c-3.618 0-7.528-3.754-9.538-5.992-4.87-5.42-9.556-13.86-13.562-24.408-8.962-23.6-13.9-55.234-13.9-89.078 0-33.844 4.938-65.478 13.9-89.078 4.006-10.548 8.696-18.988 13.562-24.408 2.010-2.24 5.92-5.994 9.538-5.994 3.616 0 7.53 3.756 9.538 5.994 4.87 5.42 9.556 13.858 13.56 24.408 8.964 23.598 13.902 55.234 13.902 89.078 0 33.842-4.938 65.478-13.902 89.078-4.004 10.548-8.696 18.988-13.56 24.408-2.008 2.238-5.92 5.992-9.538 5.992z" - ], - "tags": [ - "bullhorn", - "megaphone", - "announcement", - "advertisement", - "news" - ], - "grid": 16 - }, - "properties": { - "order": 1, - "id": 28, - "prevSize": 32, - "code": 58880, - "name": "bullhorn", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M620.62 12.098c-40.884-6.808-83.266-9.918-123.999-9.728-40.695 0.19-79.569 3.622-113.74 9.728-100.693 17.806-118.993 54.974-118.993 123.657v90.738h238.004v30.208h-327.282c-69.177 0-129.764 41.624-148.689 120.68-21.883 90.662-22.85 147.266 0 241.873 16.934 70.466 57.287 120.68 126.502 120.68h81.787v-108.753c0-78.583 68.001-147.797 148.67-147.797h237.739c66.143 0 118.955-54.556 118.955-120.984v-226.664c-0-64.455-54.405-112.905-118.955-123.639zM395.681 166.021c-24.671 0-44.658-20.215-44.658-45.227 0-25.050 19.987-45.473 44.658-45.473 24.557 0 44.658 20.423 44.658 45.473 0.019 24.993-20.082 45.227-44.658 45.227z", - "M995.157 394.923c-17.067-68.798-49.74-120.623-118.955-120.623h-89.335v105.662c0 82.034-69.48 150.945-148.67 150.945h-237.72c-65.119 0-118.974 55.732-118.974 120.927v226.588c0 64.493 56.073 102.438 118.974 120.946 75.34 22.13 147.589 26.131 237.739 0 59.885-17.332 118.993-52.281 118.993-120.946v-90.738h-237.701v-30.189h356.712c69.139 0 94.967-48.242 118.955-120.642 24.841-74.562 23.799-146.242-0.019-241.929zM625.417 848.194c24.652 0 44.639 20.177 44.639 45.189 0 25.145-19.987 45.454-44.639 45.454-24.614 0-44.658-20.309-44.658-45.454 0-24.993 20.063-45.189 44.658-45.189z" - ], - "grid": 0, - "tags": [ - "python-alt" - ] - }, - "properties": { - "order": 2, - "id": 0, - "prevSize": 24, - "code": 58881, - "name": "python-alt", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M770.37-2.37h-521.481c-138.221 0-251.259 113.076-251.259 251.259v521.481c0 138.183 113.038 251.259 251.259 251.259h521.481c138.183 0 251.259-113.076 251.259-251.259v-521.481c0-138.183-113.076-251.259-251.259-251.259zM958.369 763.183c0 100.447-95.63 195.489-195.508 195.489h-502.348c-97.033 0-195.527-95.042-195.527-195.489v-65.479h893.364v65.479zM958.369 636.075h-893.364v-253.649h893.364v253.649zM958.369 320.796h-893.364v-59.999c0-96.446 96.104-195.489 195.527-195.489h502.348c99.878 0 195.508 99.044 195.508 195.489v59.999zM383.924 223.611h260.741v-61.63h-260.741v61.63zM644.665 479.611h-260.741v61.63h260.741v-61.63zM644.665 797.26h-260.741v61.63h260.741v-61.63z" - ], - "grid": 0, - "tags": [ - "pypi" - ] - }, - "properties": { - "order": 3, - "id": 0, - "prevSize": 24, - "code": 58882, - "name": "pypi", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M957.63 189.212v574.805c0 94.853-64 128.531-64 128.531s0-730.624 0-895.962l-893.63 1.043v771.66c0 138.221 113.076 251.259 251.259 251.259h519.111c138.183 0 251.259-113.038 251.259-251.259v-580.286l-64 0.209zM831.393 930.74c0 0-25.998 23.514-72.59 23.514 0 0-426.515 1.157-497.436 1.157-91.041 0-196.058-97.527-196.058-192.891s0.967-700.094 0.967-700.094h765.118v868.314z", - "M770.37 173.511v-47.407h-636.833v125.63h636.833z", - "M133.537 378.937h315.24v65.574h-315.24v-65.574z", - "M133.537 761.363h635.24v65.574h-635.24v-65.574z", - "M133.537 506.937h315.24v65.574h-315.24v-65.574z", - "M133.537 632.567h315.24v65.574h-315.24v-65.574z", - "M770.37 630.215v-251.278h-259.963v320.019h259.963z" - ], - "grid": 0, - "tags": [ - "news" - ] - }, - "properties": { - "order": 4, - "id": 0, - "prevSize": 32, - "code": 58883, - "name": "news", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M508.207 66.882c-244.452 0-442.615 198.163-442.615 442.615 0 244.452 198.163 442.615 442.615 442.615 244.471 0 442.615-198.163 442.615-442.615-0-244.452-198.201-442.615-442.615-442.615zM164.485 424.467l-22.414-22.414c22.225-75.928 67.508-141.862 127.526-190.18l34.266 127.829c-53.134 17.010-100.712 46.364-139.378 84.764zM409.335 764.188c-52.679 0-95.384-42.705-95.384-95.403 0-38.116 22.528-70.751 54.898-86.016l42.648-197.879 45.378 201.709c28.463 16.479 47.825 46.952 47.825 82.185-0.019 52.698-42.705 95.403-95.365 95.403zM409.335 323.205c-23.571 0-46.554 2.408-68.779 6.884l-38.116-142.241c59.335-38.153 129.934-60.283 205.767-60.283 35.992 0 70.751 5.139 103.765 14.45l-83.778 202.278c-37.111-13.502-77.065-21.087-118.86-21.087zM731.932 540.52c-32.18-79.189-92.615-143.834-168.77-181.476l84.897-204.971c131.641 51.883 227.48 174.839 240.375 321.612l-156.501 64.834z" - ], - "grid": 0, - "tags": [ - "moderate" - ] - }, - "properties": { - "order": 5, - "id": 0, - "prevSize": 32, - "code": 58884, - "name": "moderate", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M855.249 128.341c23.211 0 42.78 19.608 42.78 42.78v680.941c0 23.211-19.57 42.78-42.78 42.78h-680.96c-23.192 0-42.78-19.57-42.78-42.78v-680.941c0-23.192 19.608-42.78 42.78-42.78h680.96M855.249 0h-680.96c-94.113 0-171.122 77.009-171.122 171.122v680.941c0 94.132 77.009 171.122 171.122 171.122h680.941c94.132 0 171.122-77.009 171.122-171.122v-680.941c0.019-94.094-76.99-171.122-171.103-171.122v0z", - "M421.812 682.401v-205.464h-118.519v205.464h-64.853v-464.915h64.853v203.321h118.519v-203.321h65.593v464.934h-65.593z", - "M666.131 839.054c-76.516 0-124.549-49.512-124.549-115.105 0-51.010 27.629-84.556 56.813-96.18l-29.886-32.047c0.702-21.144 16.043-40.789 32.047-49.55-26.226-19.646-42.249-48.792-42.249-90.321 0-64.152 41.51-110.099 104.922-110.099 15.322 0 26.965 2.219 35.707 5.12 10.942 3.622 22.604 5.803 37.129 5.803 16.043 0 31.346-5.803 40.088-11.605l8.761 51.75c-4.399 3.622-17.503 8.021-26.965 8.021 5.784 10.923 10.183 29.146 10.183 51.029 0 59.752-37.888 108.544-102.040 110.023-21.106 0-33.527 5.784-33.527 18.223 0 4.361 3.66 11.643 11.681 14.601l63.374 21.826c51.75 17.484 81.636 53.21 81.636 110.080 0.038 61.080-48.052 108.43-123.127 108.43zM690.195 671.497l-40.808-11.7c-31.308 2.939-51.75 26.245-51.75 64.834 0 33.545 22.604 65.65 67.755 65.65 43.748 0 65.612-30.625 65.612-59.733 0.019-27.743-13.843-51.75-40.808-59.051zM663.249 394.562c-27.743 0-48.090 26.965-48.090 61.25 0 34.949 20.347 61.175 48.090 61.175 26.226 0 48.773-26.226 48.773-61.175 0.019-34.285-20.347-61.25-48.773-61.25z" - ], - "grid": 0, - "tags": [ - "mercurial" - ] - }, - "properties": { - "order": 6, - "id": 0, - "prevSize": 32, - "code": 58885, - "name": "mercurial", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M899.167 678.665l-291.499 50.157v29.412c0 45.151-50.498 81.655-94.872 81.655-44.582 0-94.834-36.504-94.834-81.655v-29.412l-291.537-50.157c-69.101 0-125.63-63.962-125.63-63.962v282.074c0 69.12 56.529 125.63 125.63 125.63h772.741c69.101 0 125.63-56.51 125.63-125.63v-282.074c0 0-56.529 63.962-125.63 63.962z", - "M899.167 254.369h-194.37v-66.37c0.19-36.030-11.397-69.367-35.366-92.35-23.893-23.059-57.079-33.413-92.634-33.28h-130.37c-35.593-0.114-68.779 10.221-92.653 33.28-24.007 22.983-35.556 56.32-35.366 92.35v66.37h-191.981c-69.101 0-125.63 56.529-125.63 125.63v128c0 69.12 56.529 125.63 125.63 125.63l339.039 56.168v52.338c0 26.491 21.163 47.938 47.332 47.938 26.055 0 47.369-21.447 47.369-47.938v-52.357l339.001-56.149c69.101 0 125.63-56.51 125.63-125.63v-128c0-69.101-56.529-125.63-125.63-125.63zM384.777 187.999c0.19-23.268 6.466-36.143 15.019-44.582 8.704-8.306 22.907-14.601 46.63-14.715h130.37c23.666 0.114 37.907 6.391 46.573 14.715 8.571 8.439 14.81 21.314 15.057 44.582-0.019 21.902-0.019 45.416-0.019 66.37h-253.63c0-20.954 0-44.468 0-66.37z" - ], - "grid": 0, - "tags": [ - "jobs" - ] - }, - "properties": { - "order": 7, - "id": 0, - "prevSize": 32, - "code": 58886, - "name": "jobs", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M772.741-0.019h-521.481c-138.183 0-251.259 113.076-251.259 251.278v521.481c0 138.183 113.076 251.259 251.259 251.259h521.481c138.221 0 251.259-113.076 251.259-251.259v-521.481c0-138.202-113.038-251.278-251.259-251.278zM593.029 896.777h-185.401v-189.573h185.401v189.573zM748.791 409.429c-14.639 24.652-44.601 54.746-89.809 90.283-31.497 24.955-51.39 44.999-59.639 60.113-8.287 15.132-12.383 55.751-12.383 80.1h-177.778v-38.703c0-30.246 3.432-54.803 10.297-73.671 6.865-18.887 17.048-36.087 30.625-51.693 13.577-15.588 44.051-43.046 91.458-82.318 25.259-20.594 37.888-39.462 37.888-56.604s-5.082-30.473-15.208-39.993c-10.126-9.5-25.505-14.26-46.080-14.26-22.168 0-40.467 7.339-54.955 21.978-14.526 14.658-23.78 40.22-27.838 76.724l-181.495-22.452c6.239-66.731 30.473-120.453 72.742-161.166 42.268-40.695 107.046-61.042 194.351-61.042 68.001 0 122.861 14.184 164.693 42.572 56.737 38.362 85.106 89.505 85.106 153.429-0 26.51-7.301 52.072-21.978 76.705z" - ], - "grid": 0, - "tags": [ - "help" - ] - }, - "properties": { - "order": 8, - "id": 0, - "prevSize": 32, - "code": 63, - "name": "help", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M129.271 383.507l383.166 382.805 380.075-382.805h-190.255v-320.076h-382.085v320.076z", - "M736.484 635.657l-224.047 225.47-225.375-225.185h-288.161v135.149c0 138.202 113.057 251.259 251.259 251.259h521.481c138.183 0 251.259-113.057 251.259-251.259v-135.149l-286.417-0.284z" - ], - "grid": 0, - "tags": [ - "download" - ] - }, - "properties": { - "order": 10, - "id": 0, - "prevSize": 32, - "code": 58889, - "name": "download", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M731.439 149.751l-25.031 39.329-90.529-57.628-186.292 292.636 39.974 25.467 160.825-252.644 50.574 32.161-331.473 520.742 9.937 51.333-36.162 57.666 6.201 30.853 30.891-7.623 35.669-56.889 52.148-12.516 381.933-600.064z", - "M772.741-2.37h-521.481c-138.202 0-251.259 113.057-251.259 251.259v521.481c0 138.183 113.057 251.259 251.259 251.259h521.481c138.183 0 251.259-113.076 251.259-251.259v-521.481c0-138.202-113.076-251.259-251.259-251.259zM99.366 811.179c-26.169 0-47.332-21.447-47.332-47.919 0-26.624 21.163-48.223 47.332-48.223 26.055 0 47.369 21.599 47.369 48.223-0.019 26.472-21.314 47.919-47.369 47.919zM99.366 557.549c-26.169 0-47.332-21.447-47.332-47.938 0-26.605 21.163-48.223 47.332-48.223 26.055 0 47.369 21.618 47.369 48.223-0.019 26.491-21.314 47.938-47.369 47.938zM99.366 303.919c-26.169 0-47.332-21.428-47.332-47.938 0-26.605 21.163-48.223 47.332-48.223 26.055 0 47.369 21.618 47.369 48.223-0.019 26.51-21.314 47.938-47.369 47.938zM955.259 735.365c0 119.637-97.887 217.524-217.524 219.895l-543.365-1.745v-886.689l543.365-0.455c119.637 0 217.524 97.887 217.524 217.524v451.47z" - ], - "grid": 0, - "tags": [ - "documentation" - ] - }, - "properties": { - "order": 11, - "id": 0, - "prevSize": 32, - "code": 58890, - "name": "documentation", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M512.986 682.989c57.647 0 104.277-46.592 104.277-104.183 0-57.496-46.63-104.145-104.277-104.145-57.458 0-104.164 46.649-104.164 104.145 0.019 57.591 46.706 104.183 104.164 104.183", - "M763.733 711.32c45.378 0 82.072-36.674 82.072-81.996 0-45.265-36.712-81.958-82.072-81.958-45.189 0-81.996 36.712-81.996 81.958 0 45.321 36.826 81.996 81.996 81.996", - "M785.749 748.791c-39.045 0-73.519 17.863-95.004 45.303 7.851 16.839 12.231 35.423 12.231 54.955v110.042h200.666v-99.556c-0.019-61.156-52.717-110.744-117.893-110.744", - "M260.305 711.32c45.189 0 81.996-36.674 81.996-81.996 0-45.265-36.807-81.958-81.996-81.958-45.359 0-82.091 36.712-82.091 81.958-0 45.321 36.731 81.996 82.091 81.996", - "M238.308 748.791c-65.195 0-117.893 49.569-117.893 110.744v99.556h200.666v-110.042c0-19.532 4.38-38.135 12.212-54.955-21.466-27.42-55.96-45.303-94.985-45.303", - "M512.986 714.562c-84.689 0-153.259 64.417-153.259 143.91v162.437h306.498v-162.437c0-79.493-68.494-143.91-153.24-143.91", - "M891.847 129.119c0-70.068-169.491-126.919-379.051-126.919-208.896-0-378.728 56.851-378.728 126.919 0 44.108 67.167 82.906 168.903 105.662l-16.801 173.018 96.332-159.611c25.429 3.129 52.072 5.385 79.72 6.637l49.247 193.858 49.19-193.726c28.729-1.214 56.358-3.527 82.697-6.751l96.332 159.592-16.801-172.999c101.888-22.737 168.96-61.554 168.96-105.681z" - ], - "grid": 0, - "tags": [ - "community" - ] - }, - "properties": { - "order": 12, - "id": 0, - "prevSize": 32, - "code": 58891, - "name": "community", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M772.741-0.019h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM316.151 402.015l-124.947 108.241 124.947 108.241v112.242l-254.521-220.482 254.521-220.482v112.242zM461.577 825.135l-76.383-0.265 170.591-630.803 77.103-0.91-171.311 631.979zM699.164 725.94v-112.242l119.41-103.443-119.41-103.443v-112.242l248.984 215.685-248.984 215.685z" - ], - "grid": 0, - "tags": [ - "code" - ] - }, - "properties": { - "order": 13, - "id": 0, - "prevSize": 32, - "code": 58892, - "name": "code", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M770.37-2.37h-521.481c-138.183 0-251.259 113.076-251.259 251.259v521.481c0 138.183 113.076 251.259 251.259 251.259h521.481c138.221 0 251.259-113.076 251.259-251.259v-521.481c0-138.183-113.038-251.259-251.259-251.259zM825.742 670.758l-155.117 155.098-160.18-160.18-160.199 160.218-155.136-155.136 160.199-160.218-160.199-160.218 155.136-155.098 160.18 160.199 160.18-160.199 155.117 155.098-160.18 160.218 160.199 160.218z" - ], - "grid": 0, - "tags": [ - "close" - ] - }, - "properties": { - "order": 14, - "id": 0, - "prevSize": 32, - "code": 88, - "name": "close", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M772.741-2.37h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.183 113.057 251.259 251.259 251.259h521.481c138.183 0 251.259-113.076 251.259-251.259v-521.481c0-138.183-113.076-251.259-251.259-251.259zM765.63 82.849c26.586 0 48.223 21.144 48.223 47.332 0 26.036-21.637 47.351-48.223 47.351-26.472 0-47.919-21.314-47.919-47.351 0-26.188 21.447-47.332 47.919-47.332zM512 82.849c26.586 0 48.223 21.144 48.223 47.332 0 26.036-21.637 47.351-48.223 47.351-26.491 0-47.919-21.314-47.919-47.351 0-26.188 21.428-47.332 47.919-47.332zM258.37 82.849c26.605 0 48.223 21.144 48.223 47.332 0 26.036-21.618 47.351-48.223 47.351-26.491 0-47.919-21.314-47.919-47.351 0-26.188 21.428-47.332 47.919-47.332zM732.843 953.666h-451.47c-119.637 0-217.524-97.887-219.895-217.524l1.745-479.365h886.689l0.455 479.365c0 119.637-97.887 217.524-217.524 217.524z", - "M533.561 320.796h150.528v146.963h-150.528v-146.963z", - "M737.583 320.796h150.528v146.963h-150.528v-146.963z", - "M125.44 534.111h150.528v146.963h-150.528v-146.963z", - "M329.5 534.111h150.528v146.963h-150.528v-146.963z", - "M533.561 534.111h150.528v146.963h-150.528v-146.963z", - "M737.583 534.111h150.528v146.963h-150.528v-146.963z", - "M275.968 894.407v-146.963h-150.528c0 82.887 83.209 146.963 150.528 146.963z", - "M329.5 747.444h150.528v146.963h-150.528v-146.963z", - "M533.561 747.444h150.528v146.963h-150.528v-146.963z" - ], - "grid": 0, - "tags": [ - "calendar" - ] - }, - "properties": { - "order": 15, - "id": 0, - "prevSize": 32, - "code": 58894, - "name": "calendar", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M508.207 66.882c-244.452 0-442.615 198.163-442.615 442.615 0 244.452 198.163 442.615 442.615 442.615 244.471 0 442.615-198.163 442.615-442.615-0-244.452-198.201-442.615-442.615-442.615zM164.485 424.467l-22.414-22.414c22.225-75.928 67.508-141.862 127.526-190.18l34.266 127.829c-53.134 17.010-100.712 46.364-139.378 84.764zM409.335 764.188c-52.679 0-95.384-42.705-95.384-95.403 0-9.956 1.972-19.38 4.798-28.425l-111.426-172.677 174.364 110.327c8.799-2.693 17.958-4.551 27.648-4.551 52.66 0 95.346 42.705 95.346 95.327 0 52.698-42.686 95.403-95.346 95.403zM409.335 323.205c-23.571 0-46.554 2.408-68.779 6.884l-38.116-142.241c59.335-38.153 129.934-60.283 205.767-60.283 35.992 0 70.751 5.139 103.765 14.45l-83.778 202.278c-37.111-13.502-77.065-21.087-118.86-21.087zM731.932 540.52c-32.18-79.189-92.615-143.834-168.77-181.476l84.897-204.971c131.641 51.883 227.48 174.839 240.375 321.612l-156.501 64.834z" - ], - "grid": 0, - "tags": [ - "beginner" - ] - }, - "properties": { - "order": 16, - "id": 0, - "prevSize": 32, - "code": 58895, - "name": "beginner", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M508.207 66.882c-244.452 0-442.615 198.163-442.615 442.615 0 244.452 198.163 442.615 442.615 442.615 244.471 0 442.615-198.163 442.615-442.615-0-244.452-198.201-442.615-442.615-442.615zM508.207 127.583c35.992 0 70.751 5.139 103.765 14.45l-83.778 202.278c-37.092-13.521-77.047-21.087-118.86-21.087-23.571 0-46.554 2.408-68.779 6.884l-38.116-142.241c59.335-38.153 129.934-60.283 205.767-60.283zM164.485 424.467l-22.414-22.414c22.225-75.928 67.508-141.862 127.526-190.18l34.266 127.829c-53.134 17.010-100.712 46.364-139.378 84.764zM502.253 647.964c1.498 6.713 2.427 13.653 2.427 20.821 0 52.698-42.686 95.403-95.346 95.403-52.679 0-95.384-42.705-95.384-95.403 0-52.622 42.705-95.327 95.384-95.327 12.459 0 24.292 2.56 35.195 6.884l169.851-109.625-112.128 177.247zM731.932 540.52c-32.18-79.189-92.615-143.834-168.77-181.476l84.897-204.971c131.641 51.883 227.48 174.839 240.375 321.612l-156.501 64.834z" - ], - "grid": 0, - "tags": [ - "advanced" - ] - }, - "properties": { - "order": 17, - "id": 0, - "prevSize": 32, - "code": 58896, - "name": "advanced", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M772.741-2.37h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM197.215 189.212h279.078v-61.231h71.149v61.231h286.189v194.75h-286.189v61.668h-71.149v-61.687h-279.078l-103.329-96.18 103.329-98.551zM824.149 701.175h-276.708v255.64h-71.149v-255.64h-281.448v-193.517h629.305l103.367 97.337-103.367 96.18z" - ], - "grid": 0, - "tags": [ - "sitemap" - ] - }, - "properties": { - "order": 18, - "id": 0, - "prevSize": 32, - "code": 58897, - "name": "sitemap", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M190.843 190.445c-78.431 78.507-78.431 205.577-0.038 284.027 78.412 78.374 205.596 78.412 284.008-0.019s78.412-205.559-0.038-283.951c-78.374-78.431-205.521-78.431-283.932-0.057zM442.216 358.343c-0.095-75.34-60.966-136.211-136.23-136.306v-26.795c90.055 0 163.025 73.045 163.1 163.119h-26.871zM770.37-0.019h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM944.242 838.447l-104.695 104.676c-15.663 15.701-41.169 15.663-56.87-0.019l-253.421-253.421c-15.701-15.72-15.701-41.188 0-56.908l27.781-27.781-61.857-61.876c-104.448 80.668-254.843 73.311-350.587-22.433-103.993-103.974-103.993-272.517 0-376.491 103.955-103.936 272.517-103.936 376.491 0.019 95.441 95.46 103.007 245.286 23.078 349.677l61.971 61.952 27.8-27.8c15.72-15.663 41.207-15.644 56.908 0l253.402 253.44c15.72 15.758 15.739 41.244 0 56.965z" - ], - "grid": 0, - "tags": [ - "search" - ] - }, - "properties": { - "order": 19, - "id": 0, - "prevSize": 32, - "code": 58898, - "name": "search", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M190.843 190.445c-78.431 78.507-78.431 205.577-0.038 284.027 78.412 78.374 205.596 78.412 284.008-0.019s78.412-205.559-0.038-283.951c-78.374-78.431-205.521-78.431-283.932-0.057zM442.216 358.343c-0.095-75.34-60.966-136.211-136.23-136.306v-26.795c90.055 0 163.025 73.045 163.1 163.119h-26.871zM944.242 838.447l-104.695 104.676c-15.663 15.701-41.169 15.663-56.87-0.019l-253.421-253.421c-15.701-15.72-15.701-41.188 0-56.908l27.781-27.781-61.857-61.876c-104.448 80.668-254.843 73.311-350.587-22.433-103.993-103.974-103.993-272.517 0-376.491 103.955-103.936 272.517-103.936 376.491 0.019 95.441 95.46 103.007 245.286 23.078 349.677l61.971 61.952 27.8-27.8c15.72-15.663 41.207-15.644 56.908 0l253.402 253.44c15.72 15.758 15.739 41.244 0 56.965z" - ], - "grid": 0, - "tags": [ - "search-alt" - ] - }, - "properties": { - "order": 20, - "id": 0, - "prevSize": 32, - "code": 58899, - "name": "search-alt", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M607.991 863.573c20.309 0 36.788-16.744 36.788-37.509 0-20.632-16.479-37.262-36.788-37.262-20.29 0-36.807 16.631-36.807 37.262 0 20.764 16.517 37.509 36.807 37.509zM418.475 151.249c-20.328 0-36.826 16.858-36.826 37.528 0 20.613 16.498 37.3 36.826 37.3 20.309 0 36.864-16.687 36.845-37.3-0-20.67-16.555-37.528-36.845-37.528zM772.741-2.37h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.038 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM285.279 609.735v89.714h-67.47c-57.079 0-90.377-41.434-104.334-99.556-18.849-78.014-18.053-124.719 0-199.509 15.607-65.195 65.593-99.537 122.652-99.537h269.995v-24.917h-196.343v-74.847c0-56.623 15.113-87.305 98.152-101.983 28.179-5.025 60.245-7.87 93.81-8.021 33.583-0.171 68.57 2.389 102.305 8.021 53.267 8.856 98.152 48.83 98.152 101.964v186.956c0 54.803-43.596 99.802-98.152 99.802h-196.134c-66.541 0.019-122.633 57.135-122.633 121.913zM912.991 614.438c-19.816 59.733-41.112 99.556-98.152 99.556h-294.21v24.879h196.077v74.828c0 56.642-48.735 85.466-98.152 99.783-74.373 21.542-133.973 18.242-196.115 0-51.902-15.284-98.133-46.573-98.133-99.783v-186.899c0-53.779 44.411-99.764 98.133-99.764h196.096c65.308 0 122.633-56.832 122.633-124.492v-87.173h73.69c57.116 0 84.044 42.761 98.152 99.518 19.627 78.943 20.48 138.069-0.019 199.547z" - ], - "grid": 0, - "tags": [ - "python" - ] - }, - "properties": { - "order": 21, - "id": 0, - "prevSize": 32, - "code": 58900, - "name": "python", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M653.672 373.077c-32.521 0-58.861 26.908-58.861 59.98 0 32.977 26.34 59.62 58.861 59.62 32.446 0 58.899-26.624 58.899-59.62 0-33.071-26.453-59.98-58.899-59.98zM393.216 373.077c-32.54 0-58.88 26.908-58.88 59.98 0 32.977 26.34 59.62 58.88 59.62 32.351 0 58.88-26.624 58.88-59.62 0-33.071-26.529-59.98-58.88-59.98zM772.741-0.019h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM853.807 399.474c0 32.275-4.248 60.568-12.117 85.694l-2.882 9.14c-1.517 4.21-3.413 8.533-5.367 12.933l-4.229 9.083c-33.849 67.413-101.812 105.472-198.58 120.396l-11.719 1.801 7.927 8.761c19.361 21.39 28.843 43.653 30.303 67.47v171.672c0.057 13.502 5.404 24.614 13.672 33.887-34.854-2.313-58.785-15.227-58.823-37.054v-143.019c0-18.773-17.73-20.518-20.006-20.518-0.796 0-1.441 0.114-1.877 0.209l-4.798 1.176v5.006c0 0 0 153.6 0 169.586-0.19 11.928 2.465 22.509 9.178 31.801-38.381-1.877-53.267-19.589-53.855-40.695 0 0.038 0-147.949 0-156.331 0-8.306-7.471-12.667-13.047-12.667-5.784 0-13.16 4.399-13.16 12.667-0.038 8.268-0.038 164.087-0.038 164.087-0.74 23.097-24.102 31.801-56.548 32.787 5.158-7.301 9.254-16.194 9.235-28.065v-180.053l-6.808 0.531c-0.171 0-19.001 1.365-19.589 20.461v146.792c-0.057 18.318-21.011 36.75-54.405 38.4 6.428-8.078 10.335-18.375 10.202-30.663v-119.182h-57.742c-107.179 1.138-101.224-97.261-162.854-146.66 56.737 6.713 80.801 85.845 155.003 87.685 45.359 0 56.623 0 56.623 0h5.575l0.702-5.537c3.3-25.335 15.55-47.388 39.367-66.807l11.681-9.576-14.905-1.669c-105.946-12.629-176.981-51.655-213.883-117.153l-5.082-9.121c-1.953-3.906-3.812-8.363-5.727-13.028l-3.565-9.14c-9.633-26.624-14.943-57.135-15.436-91.61-0.019-1.46-0.019-2.788-0.019-4.172 0.057-58.482 16.194-110.345 56.908-153.562l2.446-2.655-0.891-3.356c-5.348-20.196-7.813-40.505-7.889-60.928 0.038-24.804 3.812-49.778 10.923-75.055 46.364 2.958 93.544 19.342 141.919 52.034l2.219 1.46 2.655-0.569c39.633-8.647 79.379-12.705 119.068-12.705 41.036 0 82.072 4.38 123.089 12.705l2.731 0.512 2.257-1.555c41.358-29.374 87.381-46.611 138.847-51.712 8.495 28.786 13.464 57.534 13.464 86.13 0 12.971-0.967 25.96-3.148 38.969l-0.436 2.788 1.82 2.238c37.395 46.156 60.928 101.205 61.705 172.544-0.133 1.081-0.095 2.276-0.095 3.413z" - ], - "grid": 0, - "tags": [ - "github" - ] - }, - "properties": { - "order": 22, - "id": 0, - "prevSize": 32, - "code": 58901, - "name": "github", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M511.924 578.37c33.489 0 60.7-24.367 60.7-63.147v-445.8c0-38.836-27.231-63.109-60.7-63.109-33.527 0-60.681 24.273-60.681 63.109v445.8c0 38.779 27.174 63.147 60.681 63.147zM703.924 104.107v146.015c95.554 62.407 158.853 169.965 158.853 292.599 0 193.214-156.691 349.886-349.98 349.886-193.308 0-350.018-156.672-350.018-349.886 0-122.292 62.957-229.623 158.056-292.124v-146.053c-168.77 74.012-286.853 242.157-286.853 438.272 0 264.439 214.376 478.815 478.815 478.815 264.42 0 478.796-214.376 478.796-478.815 0-196.418-118.424-364.904-287.668-438.708z" - ], - "grid": 0, - "tags": [ - "get-started" - ] - }, - "properties": { - "order": 23, - "id": 0, - "prevSize": 32, - "code": 58902, - "name": "get-started", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M770.37 0h-521.481c-138.202 0-251.259 113.057-251.259 251.259v521.481c0 138.183 113.057 251.259 251.259 251.259h521.481c138.183 0 251.259-113.076 251.259-251.259v-521.481c0-138.202-113.076-251.259-251.259-251.259zM299.255 842.183c-65.043 0-117.76-52.698-117.76-117.741s52.717-117.741 117.76-117.741c65.005 0 117.722 52.698 117.722 117.741s-52.736 117.741-117.722 117.741zM611.745 827.923h-145.351c18.679-30.113 29.62-65.479 29.62-103.481 0-108.658-88.102-196.817-196.76-196.817-39.993 0-77.084 12.004-108.146 32.484v-146.508c33.906-11.795 70.182-18.565 108.146-18.66 181.931 0.322 329.14 147.551 329.463 329.481-0.095 36.162-6.163 70.903-16.972 103.5zM843.036 827.923h-149.030c8.666-33.109 13.786-67.698 13.786-103.519-0.057-225.64-182.936-408.5-408.519-408.519-37.528 0-73.633 5.48-108.146 14.943v-149.352c34.987-6.903 71.111-10.638 108.146-10.638 305.759 0 553.567 247.865 553.567 553.567-0.019 35.366-3.508 69.973-9.804 103.519z" - ], - "grid": 0, - "tags": [ - "feed" - ] - }, - "properties": { - "order": 24, - "id": 0, - "prevSize": 32, - "code": 58903, - "name": "feed", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M772.741-2.37h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM677.812 507.563h-105.453v381.952h-157.999v-381.952h-79v-131.622h79v-79.038c0-107.368 44.601-171.255 171.179-171.255h105.472v131.641h-65.896c-49.323 0-52.584 18.413-52.584 52.717l-0.19 65.934h119.448l-13.976 131.622z" - ], - "grid": 0, - "tags": [ - "facebook" - ] - }, - "properties": { - "order": 25, - "id": 0, - "prevSize": 32, - "code": 58904, - "name": "facebook", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M896 188.056h-772.741c-69.101 0-125.63 56.529-125.63 125.63v5.177l509.63 253.193 514.37-255.545v-2.825c0-69.101-56.529-125.63-125.63-125.63zM1021.63 635.032v-252.169l-253.175 125.781 253.175 126.388zM-2.37 385.233v248.225l249.211-124.416-249.211-123.809zM507.259 638.426l-192.341-95.554-317.269 157.582c0.209 68.93 56.642 125.231 125.611 125.231h772.741c68.437 0 124.492-55.505 125.535-123.714l-321.138-159.497-193.138 95.953z" - ], - "grid": 0, - "tags": [ - "email" - ] - }, - "properties": { - "order": 26, - "id": 0, - "prevSize": 32, - "code": 58905, - "name": "email", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M770.37-2.37h-521.481c-138.183 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.076 251.259 251.259 251.259h521.481c138.202 0 251.278-113.057 251.278-251.259v-521.481c0-138.183-113.076-251.259-251.278-251.259zM705.252 507.885v320.057h-382.066v-320.057h-190.255l380.094-382.824 383.166 382.824h-190.938z" - ], - "grid": 0, - "tags": [ - "arrow-up" - ] - }, - "properties": { - "order": 27, - "id": 0, - "prevSize": 32, - "code": 58906, - "name": "arrow-up", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M770.37-2.37h-521.481c-138.221 0-251.259 113.076-251.259 251.259v521.481c0 138.183 113.038 251.259 251.259 251.259h521.481c138.183 0 251.259-113.076 251.259-251.259v-521.481c0-138.183-113.076-251.259-251.259-251.259zM511.374 896.19v-190.938h-320.076v-382.066h320.076v-190.255l382.824 380.075-382.824 383.185z" - ], - "grid": 0, - "tags": [ - "arrow-right" - ] - }, - "properties": { - "order": 28, - "id": 0, - "prevSize": 32, - "code": 58907, - "name": "arrow-right", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M770.37-2.389h-521.481c-138.183 0-251.259 113.076-251.259 251.278v521.481c0 138.183 113.076 251.259 251.259 251.259h521.481c138.221 0 251.259-113.076 251.259-251.259v-521.481c0-138.202-113.038-251.278-251.259-251.278zM827.961 696.073h-320.076v190.255l-382.824-380.094 382.824-383.166v190.919h320.076v382.085z" - ], - "grid": 0, - "tags": [ - "arrow-left" - ] - }, - "properties": { - "order": 29, - "id": 0, - "prevSize": 32, - "code": 58908, - "name": "arrow-left", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M770.389-2.37h-521.481c-138.202 0-251.278 113.038-251.278 251.259v521.481c0 138.183 113.076 251.259 251.278 251.259h521.481c138.183 0 251.259-113.076 251.259-251.259v-521.481c0-138.221-113.076-251.259-251.259-251.259zM506.254 894.18l-383.166-382.805h190.9v-320.076h382.085v320.076h190.255l-380.075 382.805z" - ], - "grid": 0, - "tags": [ - "arrow-down" - ] - }, - "properties": { - "order": 30, - "id": 0, - "prevSize": 32, - "code": 58909, - "name": "arrow-down", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M772.741-2.37h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.038 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM309.627 826.273c-99.859 0-180.812-80.953-180.812-180.793 0-99.821 80.953-180.774 180.812-180.774 27.364 0 53.267 6.277 76.535 17.18l-54.689 94.701c-6.884-2.238-14.241-3.451-21.845-3.451-39.936 0-72.325 32.37-72.325 72.306s32.389 72.344 72.325 72.344c35.537 0 65.062-25.714 71.111-59.506h109.037c-6.618 93.848-84.632 167.993-180.148 167.993zM438.234 306.593c0 19.456 7.737 37.035 20.215 50.081l-55.068 95.308c-44.563-32.92-73.652-85.694-73.652-145.389 0-99.821 80.953-180.774 180.812-180.774 99.84 0 180.774 80.934 180.774 180.774 0 59.582-28.937 112.318-73.406 145.237l-55.049-95.384c12.364-13.009 20.044-30.492 20.044-49.854 0-39.936-32.446-72.325-72.344-72.325-39.936 0-72.325 32.389-72.325 72.325zM708.475 826.216c-95.554 0-173.549-74.145-180.148-167.955h109.037c6.030 33.83 35.556 59.525 71.111 59.525 39.898 0 72.287-32.37 72.287-72.325 0-39.917-32.37-72.287-72.287-72.287-6.599 0-12.99 0.967-19.039 2.636l-54.917-95.175c22.585-10.145 47.597-15.948 73.956-15.948 99.859 0 180.774 80.934 180.774 180.755s-80.915 180.774-180.774 180.774z" - ], - "grid": 0, - "tags": [ - "freenode" - ] - }, - "properties": { - "order": 31, - "id": 0, - "prevSize": 32, - "code": 58910, - "name": "freenode", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M990.701 763.98l-336.175-688.014c-58.69-104.41-224.616-92.558-269.483-1.214l-345.353 690.479c-74.828 142.279-0.929 258.769 164.162 258.769h620.165c165.073 0 240.090-117.020 166.684-260.020zM607.744 891.259h-185.401v-189.573h185.401v189.573zM610.057 384l-33.716 253.080h-122.728l-33.185-253.080v-192h189.63v192z" - ], - "grid": 0, - "tags": [ - "alert" - ] - }, - "properties": { - "order": 32, - "id": 0, - "prevSize": 32, - "code": 58911, - "name": "alert", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M61.554 313.685l450.37-187.259 445.63 187.259-445.63 189.63z", - "M511.924 569.666l-297.415-125.212-152.955 63.602 450.37 189.611 445.63-189.611-151.343-63.602z", - "M511.924 761.666l-297.415-125.231-152.955 63.602 450.37 189.63 445.63-189.63-151.343-63.602z" - ], - "grid": 0, - "tags": [ - "versions" - ] - }, - "properties": { - "order": 33, - "id": 0, - "prevSize": 32, - "code": 58912, - "name": "versions", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M688.583 286.227c-24.728 0-44.715 20.461-44.715 45.587 0 25.012 19.987 45.246 44.715 45.246 24.595 0 44.753-20.252 44.734-45.246 0.019-25.126-20.139-45.587-44.734-45.587zM772.741-2.37h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM816.488 392.021c10.449 231.519-162.588 475.136-468.158 475.136-92.956 0-179.428-27.269-252.302-73.937 87.324 10.278 174.497-13.995 243.674-68.134-72.002-1.365-132.836-48.962-153.771-114.328 25.79 4.93 51.181 3.489 74.354-2.769-79.132-15.929-133.803-87.268-132.001-163.499 22.168 12.288 47.597 19.759 74.562 20.556-73.311-48.962-94.094-145.768-50.972-219.705 81.18 99.537 202.505 165.092 339.285 171.918-24.064-102.912 54.101-202.107 160.275-202.107 47.369 0 90.112 20.025 120.187 52.034 37.509-7.396 112.924-60.833 144.706-79.682-12.288 38.438-78.26 119.353-112.299 139.7 33.375-3.944 92.786 5.613 122.292-7.509-22.092 33.015-77.596 49.133-109.833 72.325z" - ], - "grid": 0, - "tags": [ - "twitter" - ] - }, - "properties": { - "order": 34, - "id": 0, - "prevSize": 32, - "code": 58913, - "name": "twitter", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M770.37-0.019h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM382.028 837.385c-11.169 5.329-34.076 3.375-54.537 3.375h-114.65c-35.631 0-68.191 1.517-75.7-23.381-6.106-20.271-1.119-64.645-1.119-89.050v-180.319c0-42.856-9.273-100.58 23.362-110.213 11.548-3.432 31.744-1.1 46.763-1.1h47.863c44.297 0 91.913-7.111 109.682 15.113l34.114 364.961c-2.484 8.875-7.377 16.631-15.777 20.613zM857.335 628.11c34.816 21.656 18.413 91.231-14.488 102.419 19.475 16.194 13.103 52.527 0 67.906-45.796 53.779-181.305 37.831-284.937 37.831-23.438 0-48.109 2.788-64.55 0-15.246-2.617-26.662-11.264-38.381-19.589l-35.252-377.268c6.163-10.714 11.89-21.751 14.658-26.131 21.883-34.683 44.582-68.248 73.444-93.506 14.829-12.971 32.635-20.271 51.219-32.275 23.324-15.095 56.699-58.615 60.113-93.487 1.384-14.526-2.882-39.481 3.319-52.357 5.803-11.947 29.715-27.572 50.119-21.125 23.59 7.452 42.174 45.435 44.544 75.719 2.332 30.549-3.11 62.995-15.607 83.437-13.464 22.035-28.236 30.587-36.731 47.863-7.49 15.208-9.956 28.046-12.25 52.319 79.929 4.855 201.216-13.388 233.775 41.188 17.446 29.26-6.22 85.257-30.075 96.825 43.899 14.715 42.344 93.62 1.081 110.232zM258.181 686.478c-26.188 0-47.332 21.618-47.332 48.223 0 26.491 21.144 47.919 47.332 47.919 26.036 0 47.351-21.428 47.351-47.919-0-26.605-21.314-48.223-47.351-48.223z" - ], - "grid": 0, - "tags": [ - "thumbs-up" - ] - }, - "properties": { - "order": 35, - "id": 0, - "prevSize": 32, - "code": 58914, - "name": "thumbs-up", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M248.889 1024h521.481c138.202 0 251.259-113.076 251.259-251.259v-521.481c0-138.202-113.057-251.278-251.259-251.278h-521.481c-138.183 0-251.259 113.076-251.259 251.278v521.481c0 138.183 113.076 251.259 251.259 251.259zM637.231 186.596c11.169-5.329 34.076-3.375 54.537-3.375h114.65c35.631 0 68.191-1.517 75.7 23.381 6.106 20.271 1.119 64.645 1.119 89.050v180.319c0 42.856 9.254 100.58-23.362 110.213-11.548 3.432-31.744 1.1-46.763 1.1h-47.863c-44.297 0-91.932 7.092-109.682-15.113l-34.114-364.961c2.484-8.875 7.358-16.631 15.777-20.613zM161.925 395.871c-34.816-21.656-18.413-91.231 14.488-102.419-19.475-16.194-13.103-52.527 0-67.906 45.796-53.779 181.305-37.831 284.937-37.831 23.438 0 48.109-2.788 64.55 0 15.246 2.617 26.643 11.264 38.381 19.589l35.252 377.268c-6.163 10.714-11.89 21.751-14.658 26.131-21.883 34.683-44.582 68.248-73.444 93.506-14.829 12.971-32.635 20.271-51.219 32.275-23.324 15.095-56.699 58.615-60.113 93.487-1.384 14.526 2.882 39.481-3.319 52.357-5.803 11.947-29.715 27.572-50.119 21.125-23.59-7.452-42.174-45.435-44.544-75.719-2.332-30.549 3.11-62.995 15.607-83.437 13.464-22.035 28.236-30.587 36.731-47.863 7.49-15.208 9.956-28.046 12.25-52.319-79.929-4.855-201.216 13.388-233.775-41.188-17.446-29.26 6.22-85.257 30.075-96.825-43.899-14.715-42.344-93.62-1.081-110.232zM761.079 512.815c26.188 0 47.332-21.618 47.332-48.223 0-26.491-21.144-47.919-47.332-47.919-26.036 0-47.351 21.428-47.351 47.919 0 26.605 21.314 48.223 47.351 48.223z" - ], - "grid": 0, - "tags": [ - "thumbs-down" - ] - }, - "properties": { - "order": 36, - "id": 0, - "prevSize": 32, - "code": 58915, - "name": "thumbs-down", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M630.139 539.212h124.511l-61.668-234.837-62.843 234.837zM231.993 596.082h64.076l-31.611-147.399-32.465 147.399zM772.741-0.019h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM344.955 763.354l-27.989-95.782h-106.97l-29.639 95.782h-88.235l135.604-422.798h72.306l131.736 422.798h-86.812zM820.452 764.321l-37.66-128.872h-182.234l-39.898 128.872h-99.631l182.5-568.984h97.318l177.304 568.984h-97.697z" - ], - "grid": 0, - "tags": [ - "text-resize" - ] - }, - "properties": { - "order": 37, - "id": 0, - "prevSize": 32, - "code": 58916, - "name": "text-resize", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M593.427 476.824l128.91-93.867h-152.292l-58.482-140.383-46.895 140.383h-152.102l128.74 93.867-58.615 163.859 128.872-105.396 128.683 105.396-46.82-163.859zM479.327 865.754c-12.535-1.271-24.86-3.167-36.997-5.613 7.073-44.146-1.764-89.695-16.498-124.511-15.607-35.157-33.849-51.333-57.192-54.177-18.489 38.153-29.582 81.408-16.308 120.282 5.158 16.137 14.45 29.449 26.207 39.671-41.719-16.194-79.796-39.519-113.076-68.267 22.812-30.208 36.978-67.186 41.908-100.902 4.741-36.807-2.2-61.402-19.191-78.412-30.417 20.992-57.116 51.086-64.455 90.491-3.527 17.048-2.503 33.773 1.801 49.019-22.206-25.638-41.131-54.101-56.092-84.935 28.236-13.843 51.731-39.177 66.238-67.584 14.791-30.398 16.251-57.742 7.945-83.437-29.961 2.996-59.62 17.105-77.122 48.811-10.638 18.413-14.962 40.183-13.824 61.478-14.127-40.258-22.168-83.399-22.168-128.493 0-6.618 0.531-13.103 0.853-19.646 25.998 3.508 52.698-5.803 74.183-24.026 22.528-20.063 34.456-46.061 39.31-75.34-23.192-13.179-50.991-15.455-76.724 4.134-12.25 8.913-22.225 21.921-29.544 36.978 8.325-40.865 22.831-79.493 42.894-114.593 18.148 16.005 42.837 20.499 69.044 13.767 28.027-7.851 52.11-26.719 74.088-50.574-11.093-21.732-33.052-36.257-64.645-30.91-16.194 2.295-32.465 9.956-47.028 21.371 24.595-31.479 53.893-58.994 86.907-81.617 9.69 17.92 30.644 27.553 60.226 27.667 31.953-0.474 68.191-11.074 107.501-24.595-0.076-19.646-17.692-36.409-54.632-39.974-17.863-2.105-37.755-0.171-57.325 5.101 26.889-12.497 55.315-22.281 85.125-28.388 8.875-1.839 14.583-10.468 12.781-19.342-1.839-8.875-10.468-14.583-19.342-12.781-24.595 5.044-48.375 12.269-71.206 21.39 9.406-6.751 18.508-13.634 26.984-20.651 30.758-24.538 45.189-46.459 35.821-64.512-55.334 7.433-104.638 31.004-130.522 60.738-22.964 27.288-24.102 51.693-13.786 68.267-30.929 21.182-58.918 46.251-83.153 74.695 5.385-11.7 10.297-23.514 13.995-35.518 11.34-35.233 10.031-64-6.903-81.56-39.045 24.424-68.551 64.417-76.079 103.424-6.542 36.466 5.329 62.445 24.329 76.667-20.385 35.404-35.385 74.202-44.809 115.124-1.517-14.962-3.982-29.772-8.344-44.070-10.543-35.631-29.355-60.113-55.031-66.844-19.608 41.169-24.311 91.212-10.012 128.133 13.426 33.849 37.945 49 63.431 50.953-0.55 8.799-1.176 17.598-1.176 26.529 0 40.638 5.803 79.91 16.536 117.077-7.396-9.766-15.436-19.058-25.012-27.117-27.117-23.381-58.311-32.939-87.704-23.040-0.076 47.18 17.958 93.431 48.981 115.845 29.62 20.992 62.123 16.915 89.41 0.607 21.713 44.772 51.124 85.011 86.509 119.239-20.366-15.986-44.525-26.377-72.761-29.696-37.092-4.722-73.652 5.215-101.205 31.991 17.427 43.71 54.367 75.985 95.706 77.748 42.060 1.422 76.023-26.169 97.811-61.762-1.062-1.176-2.2-2.219-3.3-3.356 44.734 38.969 97.564 68.93 155.913 86.319-25.998 1.062-51.75 7.964-77.483 21.732-38.628 20.442-69.006 53.039-81.806 94.265 40.031 26.377 95.516 30.53 138.505 5.139 41.434-24.841 59.525-68.077 61.497-111.332 12.079 2.332 24.311 4.248 36.75 5.499 0.55 0.057 1.1 0.076 1.65 0.076 8.306 0 15.436-6.258 16.289-14.715 0.872-8.988-5.689-17.048-14.677-17.939zM934.817 569.154c-9.595 8.078-17.673 17.37-25.050 27.174 10.752-37.186 16.536-76.478 16.555-117.134 0-8.951-0.626-17.749-1.176-26.548 25.505-1.953 50.024-17.086 63.469-50.953 14.298-36.921 9.595-86.945-10.012-128.133-25.676 6.732-44.506 31.213-55.031 66.844-4.38 14.317-6.827 29.165-8.306 44.127-9.425-40.96-24.443-79.777-44.828-115.2 19.001-14.222 30.891-40.201 24.348-76.686-7.509-39.007-37.035-79-76.079-103.424-16.953 17.56-18.242 46.327-6.903 81.56 3.679 12.023 8.609 23.874 14.014 35.593-24.235-28.482-52.243-53.589-83.191-74.771 10.335-16.574 9.178-40.979-13.786-68.267-25.884-29.734-75.188-53.305-130.522-60.738-9.368 18.053 5.063 39.974 35.821 64.512 8.495 7.035 17.636 13.919 27.060 20.708-22.869-9.121-46.668-16.384-71.301-21.409-8.875-1.839-17.541 3.906-19.361 12.781-1.801 8.837 3.925 17.503 12.8 19.323 29.81 6.106 58.216 15.872 85.125 28.388-19.57-5.272-39.462-7.187-57.325-5.101-36.94 3.565-54.556 20.328-54.632 39.974 39.31 13.502 75.548 24.102 107.501 24.595 29.582-0.114 50.536-9.747 60.226-27.667 32.958 22.604 62.236 50.1 86.831 81.541-14.564-11.378-30.815-19.001-46.971-21.314-31.592-5.329-53.551 9.197-64.645 30.91 21.978 23.874 46.080 42.724 74.088 50.574 26.188 6.732 50.897 2.238 69.025-13.748 20.044 35.081 34.532 73.652 42.856 114.479-7.32-15.019-17.256-27.989-29.487-36.883-25.714-19.589-53.532-17.313-76.724-4.134 4.855 29.279 16.801 55.277 39.31 75.34 21.466 18.204 48.166 27.534 74.145 24.045 0.341 6.542 0.872 13.028 0.872 19.646 0 45.056-8.040 88.14-22.13 128.398 1.119-21.276-3.224-43.027-13.824-61.383-17.522-31.706-47.161-45.815-77.122-48.811-8.306 25.695-6.846 53.058 7.945 83.437 14.507 28.407 37.983 53.741 66.2 67.584-14.943 30.796-33.868 59.24-56.055 84.859 4.305-15.208 5.31-31.934 1.801-48.943-7.358-39.405-34.039-69.499-64.455-90.491-16.991 16.991-23.931 41.586-19.191 78.412 4.93 33.716 19.115 70.694 41.889 100.883-33.28 28.748-71.339 52.053-113.038 68.267 11.757-10.221 21.011-23.514 26.188-39.652 13.255-38.874 2.162-82.129-16.308-120.282-23.324 2.844-41.567 19.039-57.192 54.177-14.715 34.816-23.571 80.365-16.479 124.511-12.174 2.427-24.5 4.343-37.035 5.613-9.026 0.91-15.55 8.951-14.639 17.977 0.872 8.439 8.021 14.734 16.327 14.734 0.531 0 1.1-0.038 1.65-0.095v-0.038c12.421-1.252 24.671-3.167 36.75-5.499 1.972 43.255 20.063 86.49 61.478 111.332 42.989 25.391 98.456 21.22 138.505-5.139-12.819-41.225-43.179-73.823-81.806-94.265-25.733-13.786-51.503-20.689-77.521-21.732 58.425-17.427 111.313-47.407 156.084-86.471-1.157 1.176-2.332 2.276-3.451 3.508 21.788 35.593 55.751 63.185 97.811 61.762 41.339-1.764 78.279-34.039 95.706-77.748-27.553-26.757-64.114-36.712-101.205-31.991-28.274 3.356-52.489 13.748-72.875 29.772 35.404-34.247 64.872-74.505 86.585-119.334 27.288 16.289 59.771 20.404 89.429-0.588 31.023-22.433 49.057-68.665 48.981-115.845-29.412-9.88-60.606-0.322-87.723 23.078z" - ], - "grid": 0, - "tags": [ - "success-stories" - ] - }, - "properties": { - "order": 38, - "id": 0, - "prevSize": 32, - "code": 58917, - "name": "success-stories", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M124.113 449.574h132.741v385.574h-132.741v-385.574z", - "M250.539 1023.204h521.481c93.127 0 174.668-51.465 218.055-127.241h-957.611c43.387 75.776 124.947 127.241 218.074 127.241z", - "M336.915 196.741h132.741v638.426h-132.741v-638.426z", - "M549.736 323.148h132.741v512h-132.741v-512z", - "M762.539 1.574h132.741v833.574h-132.741v-833.574z" - ], - "grid": 0, - "tags": [ - "statistics" - ] - }, - "properties": { - "order": 39, - "id": 0, - "prevSize": 32, - "code": 58918, - "name": "statistics", - "ligatures": "" - } - }, - { - "icon": { - "paths": [ - "M772.741-2.37h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM376.055 250.842l269.065 175.066-36.693 57.989-273.484-168.107 41.112-64.948zM295.291 404.082l307.352 92.748-18.982 65.953-309.627-84.764 21.257-73.937zM260.437 551.064l319.052 35.821-6.789 68.248-319.848-27.553 7.585-76.516zM252.587 680.562h321.024v76.895h-321.024v-76.895zM698.804 890.558h-570.728v-351.118h65.517v290.873h441.799v-290.873h63.412v351.118zM653.047 419.176l-178.745-266.676 64.398-41.927 171.823 271.151-57.477 37.452zM717.577 378.709l-23.742-320.133 76.743-4.665 15.493 320.626-68.494 4.172z" - ], - "grid": 0, - "tags": [ - "stack-overflow" - ] - }, - "properties": { - "order": 40, - "id": 0, - "prevSize": 32, - "code": 58919, - "name": "stack-overflow", - "ligatures": "" - } - } - ], - "height": 1024, - "metadata": { - "name": "pythonicons" - } -} + "IcoMoonType": "selection", + "icons": [ + { + "icon": { + "paths": [ + "M1024 429.256c0-200.926-58.792-363.938-131.482-365.226 0.292-0.006 0.578-0.030 0.872-0.030h-82.942c0 0-194.8 146.336-475.23 203.754-8.56 45.292-14.030 99.274-14.030 161.502 0 62.228 5.466 116.208 14.030 161.5 280.428 57.418 475.23 203.756 475.23 203.756h82.942c-0.292 0-0.578-0.024-0.872-0.032 72.696-1.288 131.482-164.298 131.482-365.224zM864.824 739.252c-9.382 0-19.532-9.742-24.746-15.548-12.63-14.064-24.792-35.96-35.188-63.328-23.256-61.232-36.066-143.31-36.066-231.124 0-87.81 12.81-169.89 36.066-231.122 10.394-27.368 22.562-49.266 35.188-63.328 5.214-5.812 15.364-15.552 24.746-15.552 9.38 0 19.536 9.744 24.744 15.552 12.634 14.064 24.796 35.958 35.188 63.328 23.258 61.23 36.068 143.312 36.068 231.122 0 87.804-12.81 169.888-36.068 231.124-10.39 27.368-22.562 49.264-35.188 63.328-5.208 5.806-15.36 15.548-24.744 15.548zM251.812 429.256c0-51.95 3.81-102.43 11.052-149.094-47.372 6.554-88.942 10.324-140.34 10.324-67.058 0-67.058 0-67.058 0l-55.466 94.686v88.17l55.46 94.686c0 0 0 0 67.060 0 51.398 0 92.968 3.774 140.34 10.324-7.236-46.664-11.048-97.146-11.048-149.096zM368.15 642.172l-127.998-24.51 81.842 321.544c4.236 16.634 20.744 25.038 36.686 18.654l118.556-47.452c15.944-6.376 22.328-23.964 14.196-39.084l-123.282-229.152zM864.824 548.73c-3.618 0-7.528-3.754-9.538-5.992-4.87-5.42-9.556-13.86-13.562-24.408-8.962-23.6-13.9-55.234-13.9-89.078 0-33.844 4.938-65.478 13.9-89.078 4.006-10.548 8.696-18.988 13.562-24.408 2.010-2.24 5.92-5.994 9.538-5.994 3.616 0 7.53 3.756 9.538 5.994 4.87 5.42 9.556 13.858 13.56 24.408 8.964 23.598 13.902 55.234 13.902 89.078 0 33.842-4.938 65.478-13.902 89.078-4.004 10.548-8.696 18.988-13.56 24.408-2.008 2.238-5.92 5.992-9.538 5.992z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bullhorn", + "megaphone", + "announcement", + "advertisement", + "news" + ], + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 1, + "id": 0, + "prevSize": 32, + "code": 58880, + "name": "bullhorn", + "ligatures": "" + }, + "setIdx": 0, + "setId": 0, + "iconIdx": 0 + }, + { + "icon": { + "paths": [ + "M620.62 12.098c-40.884-6.808-83.266-9.918-123.999-9.728-40.695 0.19-79.569 3.622-113.74 9.728-100.693 17.806-118.993 54.974-118.993 123.657v90.738h238.004v30.208h-327.282c-69.177 0-129.764 41.624-148.689 120.68-21.883 90.662-22.85 147.266 0 241.873 16.934 70.466 57.287 120.68 126.502 120.68h81.787v-108.753c0-78.583 68.001-147.797 148.67-147.797h237.739c66.143 0 118.955-54.556 118.955-120.984v-226.664c-0-64.455-54.405-112.905-118.955-123.639zM395.681 166.021c-24.671 0-44.658-20.215-44.658-45.227 0-25.050 19.987-45.473 44.658-45.473 24.557 0 44.658 20.423 44.658 45.473 0.019 24.993-20.082 45.227-44.658 45.227z", + "M995.157 394.923c-17.067-68.798-49.74-120.623-118.955-120.623h-89.335v105.662c0 82.034-69.48 150.945-148.67 150.945h-237.72c-65.119 0-118.974 55.732-118.974 120.927v226.588c0 64.493 56.073 102.438 118.974 120.946 75.34 22.13 147.589 26.131 237.739 0 59.885-17.332 118.993-52.281 118.993-120.946v-90.738h-237.701v-30.189h356.712c69.139 0 94.967-48.242 118.955-120.642 24.841-74.562 23.799-146.242-0.019-241.929zM625.417 848.194c24.652 0 44.639 20.177 44.639 45.189 0 25.145-19.987 45.454-44.639 45.454-24.614 0-44.658-20.309-44.658-45.454 0-24.993 20.063-45.189 44.658-45.189z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "python-alt" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 2, + "id": 0, + "prevSize": 24, + "code": 58881, + "name": "python-alt", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 0 + }, + { + "icon": { + "paths": [ + "M770.37-2.37h-521.481c-138.221 0-251.259 113.076-251.259 251.259v521.481c0 138.183 113.038 251.259 251.259 251.259h521.481c138.183 0 251.259-113.076 251.259-251.259v-521.481c0-138.183-113.076-251.259-251.259-251.259zM958.369 763.183c0 100.447-95.63 195.489-195.508 195.489h-502.348c-97.033 0-195.527-95.042-195.527-195.489v-65.479h893.364v65.479zM958.369 636.075h-893.364v-253.649h893.364v253.649zM958.369 320.796h-893.364v-59.999c0-96.446 96.104-195.489 195.527-195.489h502.348c99.878 0 195.508 99.044 195.508 195.489v59.999zM383.924 223.611h260.741v-61.63h-260.741v61.63zM644.665 479.611h-260.741v61.63h260.741v-61.63zM644.665 797.26h-260.741v61.63h260.741v-61.63z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pypi" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 3, + "id": 1, + "prevSize": 24, + "code": 58882, + "name": "pypi", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 1 + }, + { + "icon": { + "paths": [ + "M957.63 189.212v574.805c0 94.853-64 128.531-64 128.531s0-730.624 0-895.962l-893.63 1.043v771.66c0 138.221 113.076 251.259 251.259 251.259h519.111c138.183 0 251.259-113.038 251.259-251.259v-580.286l-64 0.209zM831.393 930.74c0 0-25.998 23.514-72.59 23.514 0 0-426.515 1.157-497.436 1.157-91.041 0-196.058-97.527-196.058-192.891s0.967-700.094 0.967-700.094h765.118v868.314z", + "M770.37 173.511v-47.407h-636.833v125.63h636.833z", + "M133.537 378.937h315.24v65.574h-315.24v-65.574z", + "M133.537 761.363h635.24v65.574h-635.24v-65.574z", + "M133.537 506.937h315.24v65.574h-315.24v-65.574z", + "M133.537 632.567h315.24v65.574h-315.24v-65.574z", + "M770.37 630.215v-251.278h-259.963v320.019h259.963z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "news" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 4, + "id": 2, + "prevSize": 24, + "code": 58883, + "name": "news", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 2 + }, + { + "icon": { + "paths": [ + "M508.207 66.882c-244.452 0-442.615 198.163-442.615 442.615 0 244.452 198.163 442.615 442.615 442.615 244.471 0 442.615-198.163 442.615-442.615-0-244.452-198.201-442.615-442.615-442.615zM164.485 424.467l-22.414-22.414c22.225-75.928 67.508-141.862 127.526-190.18l34.266 127.829c-53.134 17.010-100.712 46.364-139.378 84.764zM409.335 764.188c-52.679 0-95.384-42.705-95.384-95.403 0-38.116 22.528-70.751 54.898-86.016l42.648-197.879 45.378 201.709c28.463 16.479 47.825 46.952 47.825 82.185-0.019 52.698-42.705 95.403-95.365 95.403zM409.335 323.205c-23.571 0-46.554 2.408-68.779 6.884l-38.116-142.241c59.335-38.153 129.934-60.283 205.767-60.283 35.992 0 70.751 5.139 103.765 14.45l-83.778 202.278c-37.111-13.502-77.065-21.087-118.86-21.087zM731.932 540.52c-32.18-79.189-92.615-143.834-168.77-181.476l84.897-204.971c131.641 51.883 227.48 174.839 240.375 321.612l-156.501 64.834z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "moderate" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 5, + "id": 3, + "prevSize": 24, + "code": 58884, + "name": "moderate", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 3 + }, + { + "icon": { + "paths": [ + "M855.249 128.341c23.211 0 42.78 19.608 42.78 42.78v680.941c0 23.211-19.57 42.78-42.78 42.78h-680.96c-23.192 0-42.78-19.57-42.78-42.78v-680.941c0-23.192 19.608-42.78 42.78-42.78h680.96M855.249 0h-680.96c-94.113 0-171.122 77.009-171.122 171.122v680.941c0 94.132 77.009 171.122 171.122 171.122h680.941c94.132 0 171.122-77.009 171.122-171.122v-680.941c0.019-94.094-76.99-171.122-171.103-171.122v0z", + "M421.812 682.401v-205.464h-118.519v205.464h-64.853v-464.915h64.853v203.321h118.519v-203.321h65.593v464.934h-65.593z", + "M666.131 839.054c-76.516 0-124.549-49.512-124.549-115.105 0-51.010 27.629-84.556 56.813-96.18l-29.886-32.047c0.702-21.144 16.043-40.789 32.047-49.55-26.226-19.646-42.249-48.792-42.249-90.321 0-64.152 41.51-110.099 104.922-110.099 15.322 0 26.965 2.219 35.707 5.12 10.942 3.622 22.604 5.803 37.129 5.803 16.043 0 31.346-5.803 40.088-11.605l8.761 51.75c-4.399 3.622-17.503 8.021-26.965 8.021 5.784 10.923 10.183 29.146 10.183 51.029 0 59.752-37.888 108.544-102.040 110.023-21.106 0-33.527 5.784-33.527 18.223 0 4.361 3.66 11.643 11.681 14.601l63.374 21.826c51.75 17.484 81.636 53.21 81.636 110.080 0.038 61.080-48.052 108.43-123.127 108.43zM690.195 671.497l-40.808-11.7c-31.308 2.939-51.75 26.245-51.75 64.834 0 33.545 22.604 65.65 67.755 65.65 43.748 0 65.612-30.625 65.612-59.733 0.019-27.743-13.843-51.75-40.808-59.051zM663.249 394.562c-27.743 0-48.090 26.965-48.090 61.25 0 34.949 20.347 61.175 48.090 61.175 26.226 0 48.773-26.226 48.773-61.175 0.019-34.285-20.347-61.25-48.773-61.25z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mercurial" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 6, + "id": 4, + "prevSize": 24, + "code": 58885, + "name": "mercurial", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 4 + }, + { + "icon": { + "paths": [ + "M899.167 678.665l-291.499 50.157v29.412c0 45.151-50.498 81.655-94.872 81.655-44.582 0-94.834-36.504-94.834-81.655v-29.412l-291.537-50.157c-69.101 0-125.63-63.962-125.63-63.962v282.074c0 69.12 56.529 125.63 125.63 125.63h772.741c69.101 0 125.63-56.51 125.63-125.63v-282.074c0 0-56.529 63.962-125.63 63.962z", + "M899.167 254.369h-194.37v-66.37c0.19-36.030-11.397-69.367-35.366-92.35-23.893-23.059-57.079-33.413-92.634-33.28h-130.37c-35.593-0.114-68.779 10.221-92.653 33.28-24.007 22.983-35.556 56.32-35.366 92.35v66.37h-191.981c-69.101 0-125.63 56.529-125.63 125.63v128c0 69.12 56.529 125.63 125.63 125.63l339.039 56.168v52.338c0 26.491 21.163 47.938 47.332 47.938 26.055 0 47.369-21.447 47.369-47.938v-52.357l339.001-56.149c69.101 0 125.63-56.51 125.63-125.63v-128c0-69.101-56.529-125.63-125.63-125.63zM384.777 187.999c0.19-23.268 6.466-36.143 15.019-44.582 8.704-8.306 22.907-14.601 46.63-14.715h130.37c23.666 0.114 37.907 6.391 46.573 14.715 8.571 8.439 14.81 21.314 15.057 44.582-0.019 21.902-0.019 45.416-0.019 66.37h-253.63c0-20.954 0-44.468 0-66.37z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "jobs" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 7, + "id": 5, + "prevSize": 24, + "code": 58886, + "name": "jobs", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 5 + }, + { + "icon": { + "paths": [ + "M772.741-0.019h-521.481c-138.183 0-251.259 113.076-251.259 251.278v521.481c0 138.183 113.076 251.259 251.259 251.259h521.481c138.221 0 251.259-113.076 251.259-251.259v-521.481c0-138.202-113.038-251.278-251.259-251.278zM593.029 896.777h-185.401v-189.573h185.401v189.573zM748.791 409.429c-14.639 24.652-44.601 54.746-89.809 90.283-31.497 24.955-51.39 44.999-59.639 60.113-8.287 15.132-12.383 55.751-12.383 80.1h-177.778v-38.703c0-30.246 3.432-54.803 10.297-73.671 6.865-18.887 17.048-36.087 30.625-51.693 13.577-15.588 44.051-43.046 91.458-82.318 25.259-20.594 37.888-39.462 37.888-56.604s-5.082-30.473-15.208-39.993c-10.126-9.5-25.505-14.26-46.080-14.26-22.168 0-40.467 7.339-54.955 21.978-14.526 14.658-23.78 40.22-27.838 76.724l-181.495-22.452c6.239-66.731 30.473-120.453 72.742-161.166 42.268-40.695 107.046-61.042 194.351-61.042 68.001 0 122.861 14.184 164.693 42.572 56.737 38.362 85.106 89.505 85.106 153.429-0 26.51-7.301 52.072-21.978 76.705z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "help" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 8, + "id": 6, + "prevSize": 24, + "code": 63, + "name": "help", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 6 + }, + { + "icon": { + "paths": [ + "M129.271 383.507l383.166 382.805 380.075-382.805h-190.255v-320.076h-382.085v320.076z", + "M736.484 635.657l-224.047 225.47-225.375-225.185h-288.161v135.149c0 138.202 113.057 251.259 251.259 251.259h521.481c138.183 0 251.259-113.057 251.259-251.259v-135.149l-286.417-0.284z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "download" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 10, + "id": 7, + "prevSize": 24, + "code": 58889, + "name": "download", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 7 + }, + { + "icon": { + "paths": [ + "M731.439 149.751l-25.031 39.329-90.529-57.628-186.292 292.636 39.974 25.467 160.825-252.644 50.574 32.161-331.473 520.742 9.937 51.333-36.162 57.666 6.201 30.853 30.891-7.623 35.669-56.889 52.148-12.516 381.933-600.064z", + "M772.741-2.37h-521.481c-138.202 0-251.259 113.057-251.259 251.259v521.481c0 138.183 113.057 251.259 251.259 251.259h521.481c138.183 0 251.259-113.076 251.259-251.259v-521.481c0-138.202-113.076-251.259-251.259-251.259zM99.366 811.179c-26.169 0-47.332-21.447-47.332-47.919 0-26.624 21.163-48.223 47.332-48.223 26.055 0 47.369 21.599 47.369 48.223-0.019 26.472-21.314 47.919-47.369 47.919zM99.366 557.549c-26.169 0-47.332-21.447-47.332-47.938 0-26.605 21.163-48.223 47.332-48.223 26.055 0 47.369 21.618 47.369 48.223-0.019 26.491-21.314 47.938-47.369 47.938zM99.366 303.919c-26.169 0-47.332-21.428-47.332-47.938 0-26.605 21.163-48.223 47.332-48.223 26.055 0 47.369 21.618 47.369 48.223-0.019 26.51-21.314 47.938-47.369 47.938zM955.259 735.365c0 119.637-97.887 217.524-217.524 219.895l-543.365-1.745v-886.689l543.365-0.455c119.637 0 217.524 97.887 217.524 217.524v451.47z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "documentation" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 11, + "id": 8, + "prevSize": 24, + "code": 58890, + "name": "documentation", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 8 + }, + { + "icon": { + "paths": [ + "M512.986 682.989c57.647 0 104.277-46.592 104.277-104.183 0-57.496-46.63-104.145-104.277-104.145-57.458 0-104.164 46.649-104.164 104.145 0.019 57.591 46.706 104.183 104.164 104.183", + "M763.733 711.32c45.378 0 82.072-36.674 82.072-81.996 0-45.265-36.712-81.958-82.072-81.958-45.189 0-81.996 36.712-81.996 81.958 0 45.321 36.826 81.996 81.996 81.996", + "M785.749 748.791c-39.045 0-73.519 17.863-95.004 45.303 7.851 16.839 12.231 35.423 12.231 54.955v110.042h200.666v-99.556c-0.019-61.156-52.717-110.744-117.893-110.744", + "M260.305 711.32c45.189 0 81.996-36.674 81.996-81.996 0-45.265-36.807-81.958-81.996-81.958-45.359 0-82.091 36.712-82.091 81.958-0 45.321 36.731 81.996 82.091 81.996", + "M238.308 748.791c-65.195 0-117.893 49.569-117.893 110.744v99.556h200.666v-110.042c0-19.532 4.38-38.135 12.212-54.955-21.466-27.42-55.96-45.303-94.985-45.303", + "M512.986 714.562c-84.689 0-153.259 64.417-153.259 143.91v162.437h306.498v-162.437c0-79.493-68.494-143.91-153.24-143.91", + "M891.847 129.119c0-70.068-169.491-126.919-379.051-126.919-208.896-0-378.728 56.851-378.728 126.919 0 44.108 67.167 82.906 168.903 105.662l-16.801 173.018 96.332-159.611c25.429 3.129 52.072 5.385 79.72 6.637l49.247 193.858 49.19-193.726c28.729-1.214 56.358-3.527 82.697-6.751l96.332 159.592-16.801-172.999c101.888-22.737 168.96-61.554 168.96-105.681z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "community" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 12, + "id": 9, + "prevSize": 24, + "code": 58891, + "name": "community", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 9 + }, + { + "icon": { + "paths": [ + "M772.741-0.019h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM316.151 402.015l-124.947 108.241 124.947 108.241v112.242l-254.521-220.482 254.521-220.482v112.242zM461.577 825.135l-76.383-0.265 170.591-630.803 77.103-0.91-171.311 631.979zM699.164 725.94v-112.242l119.41-103.443-119.41-103.443v-112.242l248.984 215.685-248.984 215.685z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "code" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 13, + "id": 10, + "prevSize": 24, + "code": 58892, + "name": "code", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 10 + }, + { + "icon": { + "paths": [ + "M770.37-2.37h-521.481c-138.183 0-251.259 113.076-251.259 251.259v521.481c0 138.183 113.076 251.259 251.259 251.259h521.481c138.221 0 251.259-113.076 251.259-251.259v-521.481c0-138.183-113.038-251.259-251.259-251.259zM825.742 670.758l-155.117 155.098-160.18-160.18-160.199 160.218-155.136-155.136 160.199-160.218-160.199-160.218 155.136-155.098 160.18 160.199 160.18-160.199 155.117 155.098-160.18 160.218 160.199 160.218z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "close" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 14, + "id": 11, + "prevSize": 24, + "code": 88, + "name": "close", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 11 + }, + { + "icon": { + "paths": [ + "M772.741-2.37h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.183 113.057 251.259 251.259 251.259h521.481c138.183 0 251.259-113.076 251.259-251.259v-521.481c0-138.183-113.076-251.259-251.259-251.259zM765.63 82.849c26.586 0 48.223 21.144 48.223 47.332 0 26.036-21.637 47.351-48.223 47.351-26.472 0-47.919-21.314-47.919-47.351 0-26.188 21.447-47.332 47.919-47.332zM512 82.849c26.586 0 48.223 21.144 48.223 47.332 0 26.036-21.637 47.351-48.223 47.351-26.491 0-47.919-21.314-47.919-47.351 0-26.188 21.428-47.332 47.919-47.332zM258.37 82.849c26.605 0 48.223 21.144 48.223 47.332 0 26.036-21.618 47.351-48.223 47.351-26.491 0-47.919-21.314-47.919-47.351 0-26.188 21.428-47.332 47.919-47.332zM732.843 953.666h-451.47c-119.637 0-217.524-97.887-219.895-217.524l1.745-479.365h886.689l0.455 479.365c0 119.637-97.887 217.524-217.524 217.524z", + "M533.561 320.796h150.528v146.963h-150.528v-146.963z", + "M737.583 320.796h150.528v146.963h-150.528v-146.963z", + "M125.44 534.111h150.528v146.963h-150.528v-146.963z", + "M329.5 534.111h150.528v146.963h-150.528v-146.963z", + "M533.561 534.111h150.528v146.963h-150.528v-146.963z", + "M737.583 534.111h150.528v146.963h-150.528v-146.963z", + "M275.968 894.407v-146.963h-150.528c0 82.887 83.209 146.963 150.528 146.963z", + "M329.5 747.444h150.528v146.963h-150.528v-146.963z", + "M533.561 747.444h150.528v146.963h-150.528v-146.963z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "calendar" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 15, + "id": 12, + "prevSize": 24, + "code": 58894, + "name": "calendar", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 12 + }, + { + "icon": { + "paths": [ + "M508.207 66.882c-244.452 0-442.615 198.163-442.615 442.615 0 244.452 198.163 442.615 442.615 442.615 244.471 0 442.615-198.163 442.615-442.615-0-244.452-198.201-442.615-442.615-442.615zM164.485 424.467l-22.414-22.414c22.225-75.928 67.508-141.862 127.526-190.18l34.266 127.829c-53.134 17.010-100.712 46.364-139.378 84.764zM409.335 764.188c-52.679 0-95.384-42.705-95.384-95.403 0-9.956 1.972-19.38 4.798-28.425l-111.426-172.677 174.364 110.327c8.799-2.693 17.958-4.551 27.648-4.551 52.66 0 95.346 42.705 95.346 95.327 0 52.698-42.686 95.403-95.346 95.403zM409.335 323.205c-23.571 0-46.554 2.408-68.779 6.884l-38.116-142.241c59.335-38.153 129.934-60.283 205.767-60.283 35.992 0 70.751 5.139 103.765 14.45l-83.778 202.278c-37.111-13.502-77.065-21.087-118.86-21.087zM731.932 540.52c-32.18-79.189-92.615-143.834-168.77-181.476l84.897-204.971c131.641 51.883 227.48 174.839 240.375 321.612l-156.501 64.834z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "beginner" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 16, + "id": 13, + "prevSize": 24, + "code": 58895, + "name": "beginner", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 13 + }, + { + "icon": { + "paths": [ + "M508.207 66.882c-244.452 0-442.615 198.163-442.615 442.615 0 244.452 198.163 442.615 442.615 442.615 244.471 0 442.615-198.163 442.615-442.615-0-244.452-198.201-442.615-442.615-442.615zM508.207 127.583c35.992 0 70.751 5.139 103.765 14.45l-83.778 202.278c-37.092-13.521-77.047-21.087-118.86-21.087-23.571 0-46.554 2.408-68.779 6.884l-38.116-142.241c59.335-38.153 129.934-60.283 205.767-60.283zM164.485 424.467l-22.414-22.414c22.225-75.928 67.508-141.862 127.526-190.18l34.266 127.829c-53.134 17.010-100.712 46.364-139.378 84.764zM502.253 647.964c1.498 6.713 2.427 13.653 2.427 20.821 0 52.698-42.686 95.403-95.346 95.403-52.679 0-95.384-42.705-95.384-95.403 0-52.622 42.705-95.327 95.384-95.327 12.459 0 24.292 2.56 35.195 6.884l169.851-109.625-112.128 177.247zM731.932 540.52c-32.18-79.189-92.615-143.834-168.77-181.476l84.897-204.971c131.641 51.883 227.48 174.839 240.375 321.612l-156.501 64.834z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "advanced" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 17, + "id": 14, + "prevSize": 24, + "code": 58896, + "name": "advanced", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 14 + }, + { + "icon": { + "paths": [ + "M772.741-2.37h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM197.215 189.212h279.078v-61.231h71.149v61.231h286.189v194.75h-286.189v61.668h-71.149v-61.687h-279.078l-103.329-96.18 103.329-98.551zM824.149 701.175h-276.708v255.64h-71.149v-255.64h-281.448v-193.517h629.305l103.367 97.337-103.367 96.18z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sitemap" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 18, + "id": 15, + "prevSize": 24, + "code": 58897, + "name": "sitemap", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 15 + }, + { + "icon": { + "paths": [ + "M190.843 190.445c-78.431 78.507-78.431 205.577-0.038 284.027 78.412 78.374 205.596 78.412 284.008-0.019s78.412-205.559-0.038-283.951c-78.374-78.431-205.521-78.431-283.932-0.057zM442.216 358.343c-0.095-75.34-60.966-136.211-136.23-136.306v-26.795c90.055 0 163.025 73.045 163.1 163.119h-26.871zM770.37-0.019h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM944.242 838.447l-104.695 104.676c-15.663 15.701-41.169 15.663-56.87-0.019l-253.421-253.421c-15.701-15.72-15.701-41.188 0-56.908l27.781-27.781-61.857-61.876c-104.448 80.668-254.843 73.311-350.587-22.433-103.993-103.974-103.993-272.517 0-376.491 103.955-103.936 272.517-103.936 376.491 0.019 95.441 95.46 103.007 245.286 23.078 349.677l61.971 61.952 27.8-27.8c15.72-15.663 41.207-15.644 56.908 0l253.402 253.44c15.72 15.758 15.739 41.244 0 56.965z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "search" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 19, + "id": 16, + "prevSize": 24, + "code": 58898, + "name": "search", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 16 + }, + { + "icon": { + "paths": [ + "M190.843 190.445c-78.431 78.507-78.431 205.577-0.038 284.027 78.412 78.374 205.596 78.412 284.008-0.019s78.412-205.559-0.038-283.951c-78.374-78.431-205.521-78.431-283.932-0.057zM442.216 358.343c-0.095-75.34-60.966-136.211-136.23-136.306v-26.795c90.055 0 163.025 73.045 163.1 163.119h-26.871zM944.242 838.447l-104.695 104.676c-15.663 15.701-41.169 15.663-56.87-0.019l-253.421-253.421c-15.701-15.72-15.701-41.188 0-56.908l27.781-27.781-61.857-61.876c-104.448 80.668-254.843 73.311-350.587-22.433-103.993-103.974-103.993-272.517 0-376.491 103.955-103.936 272.517-103.936 376.491 0.019 95.441 95.46 103.007 245.286 23.078 349.677l61.971 61.952 27.8-27.8c15.72-15.663 41.207-15.644 56.908 0l253.402 253.44c15.72 15.758 15.739 41.244 0 56.965z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "search-alt" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 20, + "id": 17, + "prevSize": 24, + "code": 58899, + "name": "search-alt", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 17 + }, + { + "icon": { + "paths": [ + "M607.991 863.573c20.309 0 36.788-16.744 36.788-37.509 0-20.632-16.479-37.262-36.788-37.262-20.29 0-36.807 16.631-36.807 37.262 0 20.764 16.517 37.509 36.807 37.509zM418.475 151.249c-20.328 0-36.826 16.858-36.826 37.528 0 20.613 16.498 37.3 36.826 37.3 20.309 0 36.864-16.687 36.845-37.3-0-20.67-16.555-37.528-36.845-37.528zM772.741-2.37h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.038 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM285.279 609.735v89.714h-67.47c-57.079 0-90.377-41.434-104.334-99.556-18.849-78.014-18.053-124.719 0-199.509 15.607-65.195 65.593-99.537 122.652-99.537h269.995v-24.917h-196.343v-74.847c0-56.623 15.113-87.305 98.152-101.983 28.179-5.025 60.245-7.87 93.81-8.021 33.583-0.171 68.57 2.389 102.305 8.021 53.267 8.856 98.152 48.83 98.152 101.964v186.956c0 54.803-43.596 99.802-98.152 99.802h-196.134c-66.541 0.019-122.633 57.135-122.633 121.913zM912.991 614.438c-19.816 59.733-41.112 99.556-98.152 99.556h-294.21v24.879h196.077v74.828c0 56.642-48.735 85.466-98.152 99.783-74.373 21.542-133.973 18.242-196.115 0-51.902-15.284-98.133-46.573-98.133-99.783v-186.899c0-53.779 44.411-99.764 98.133-99.764h196.096c65.308 0 122.633-56.832 122.633-124.492v-87.173h73.69c57.116 0 84.044 42.761 98.152 99.518 19.627 78.943 20.48 138.069-0.019 199.547z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "python" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 21, + "id": 18, + "prevSize": 24, + "code": 58900, + "name": "python", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 18 + }, + { + "icon": { + "paths": [ + "M653.672 373.077c-32.521 0-58.861 26.908-58.861 59.98 0 32.977 26.34 59.62 58.861 59.62 32.446 0 58.899-26.624 58.899-59.62 0-33.071-26.453-59.98-58.899-59.98zM393.216 373.077c-32.54 0-58.88 26.908-58.88 59.98 0 32.977 26.34 59.62 58.88 59.62 32.351 0 58.88-26.624 58.88-59.62 0-33.071-26.529-59.98-58.88-59.98zM772.741-0.019h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM853.807 399.474c0 32.275-4.248 60.568-12.117 85.694l-2.882 9.14c-1.517 4.21-3.413 8.533-5.367 12.933l-4.229 9.083c-33.849 67.413-101.812 105.472-198.58 120.396l-11.719 1.801 7.927 8.761c19.361 21.39 28.843 43.653 30.303 67.47v171.672c0.057 13.502 5.404 24.614 13.672 33.887-34.854-2.313-58.785-15.227-58.823-37.054v-143.019c0-18.773-17.73-20.518-20.006-20.518-0.796 0-1.441 0.114-1.877 0.209l-4.798 1.176v5.006c0 0 0 153.6 0 169.586-0.19 11.928 2.465 22.509 9.178 31.801-38.381-1.877-53.267-19.589-53.855-40.695 0 0.038 0-147.949 0-156.331 0-8.306-7.471-12.667-13.047-12.667-5.784 0-13.16 4.399-13.16 12.667-0.038 8.268-0.038 164.087-0.038 164.087-0.74 23.097-24.102 31.801-56.548 32.787 5.158-7.301 9.254-16.194 9.235-28.065v-180.053l-6.808 0.531c-0.171 0-19.001 1.365-19.589 20.461v146.792c-0.057 18.318-21.011 36.75-54.405 38.4 6.428-8.078 10.335-18.375 10.202-30.663v-119.182h-57.742c-107.179 1.138-101.224-97.261-162.854-146.66 56.737 6.713 80.801 85.845 155.003 87.685 45.359 0 56.623 0 56.623 0h5.575l0.702-5.537c3.3-25.335 15.55-47.388 39.367-66.807l11.681-9.576-14.905-1.669c-105.946-12.629-176.981-51.655-213.883-117.153l-5.082-9.121c-1.953-3.906-3.812-8.363-5.727-13.028l-3.565-9.14c-9.633-26.624-14.943-57.135-15.436-91.61-0.019-1.46-0.019-2.788-0.019-4.172 0.057-58.482 16.194-110.345 56.908-153.562l2.446-2.655-0.891-3.356c-5.348-20.196-7.813-40.505-7.889-60.928 0.038-24.804 3.812-49.778 10.923-75.055 46.364 2.958 93.544 19.342 141.919 52.034l2.219 1.46 2.655-0.569c39.633-8.647 79.379-12.705 119.068-12.705 41.036 0 82.072 4.38 123.089 12.705l2.731 0.512 2.257-1.555c41.358-29.374 87.381-46.611 138.847-51.712 8.495 28.786 13.464 57.534 13.464 86.13 0 12.971-0.967 25.96-3.148 38.969l-0.436 2.788 1.82 2.238c37.395 46.156 60.928 101.205 61.705 172.544-0.133 1.081-0.095 2.276-0.095 3.413z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "github" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 22, + "id": 19, + "prevSize": 24, + "code": 58901, + "name": "github", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 19 + }, + { + "icon": { + "paths": [ + "M511.924 578.37c33.489 0 60.7-24.367 60.7-63.147v-445.8c0-38.836-27.231-63.109-60.7-63.109-33.527 0-60.681 24.273-60.681 63.109v445.8c0 38.779 27.174 63.147 60.681 63.147zM703.924 104.107v146.015c95.554 62.407 158.853 169.965 158.853 292.599 0 193.214-156.691 349.886-349.98 349.886-193.308 0-350.018-156.672-350.018-349.886 0-122.292 62.957-229.623 158.056-292.124v-146.053c-168.77 74.012-286.853 242.157-286.853 438.272 0 264.439 214.376 478.815 478.815 478.815 264.42 0 478.796-214.376 478.796-478.815 0-196.418-118.424-364.904-287.668-438.708z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "get-started" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 23, + "id": 20, + "prevSize": 24, + "code": 58902, + "name": "get-started", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 20 + }, + { + "icon": { + "paths": [ + "M770.37 0h-521.481c-138.202 0-251.259 113.057-251.259 251.259v521.481c0 138.183 113.057 251.259 251.259 251.259h521.481c138.183 0 251.259-113.076 251.259-251.259v-521.481c0-138.202-113.076-251.259-251.259-251.259zM299.255 842.183c-65.043 0-117.76-52.698-117.76-117.741s52.717-117.741 117.76-117.741c65.005 0 117.722 52.698 117.722 117.741s-52.736 117.741-117.722 117.741zM611.745 827.923h-145.351c18.679-30.113 29.62-65.479 29.62-103.481 0-108.658-88.102-196.817-196.76-196.817-39.993 0-77.084 12.004-108.146 32.484v-146.508c33.906-11.795 70.182-18.565 108.146-18.66 181.931 0.322 329.14 147.551 329.463 329.481-0.095 36.162-6.163 70.903-16.972 103.5zM843.036 827.923h-149.030c8.666-33.109 13.786-67.698 13.786-103.519-0.057-225.64-182.936-408.5-408.519-408.519-37.528 0-73.633 5.48-108.146 14.943v-149.352c34.987-6.903 71.111-10.638 108.146-10.638 305.759 0 553.567 247.865 553.567 553.567-0.019 35.366-3.508 69.973-9.804 103.519z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "feed" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 24, + "id": 21, + "prevSize": 24, + "code": 58903, + "name": "feed", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 21 + }, + { + "icon": { + "paths": [ + "M772.741-2.37h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM677.812 507.563h-105.453v381.952h-157.999v-381.952h-79v-131.622h79v-79.038c0-107.368 44.601-171.255 171.179-171.255h105.472v131.641h-65.896c-49.323 0-52.584 18.413-52.584 52.717l-0.19 65.934h119.448l-13.976 131.622z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "facebook" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 25, + "id": 22, + "prevSize": 24, + "code": 58904, + "name": "facebook", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 22 + }, + { + "icon": { + "paths": [ + "M896 188.056h-772.741c-69.101 0-125.63 56.529-125.63 125.63v5.177l509.63 253.193 514.37-255.545v-2.825c0-69.101-56.529-125.63-125.63-125.63zM1021.63 635.032v-252.169l-253.175 125.781 253.175 126.388zM-2.37 385.233v248.225l249.211-124.416-249.211-123.809zM507.259 638.426l-192.341-95.554-317.269 157.582c0.209 68.93 56.642 125.231 125.611 125.231h772.741c68.437 0 124.492-55.505 125.535-123.714l-321.138-159.497-193.138 95.953z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "email" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 26, + "id": 23, + "prevSize": 24, + "code": 58905, + "name": "email", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 23 + }, + { + "icon": { + "paths": [ + "M770.37-2.37h-521.481c-138.183 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.076 251.259 251.259 251.259h521.481c138.202 0 251.278-113.057 251.278-251.259v-521.481c0-138.183-113.076-251.259-251.278-251.259zM705.252 507.885v320.057h-382.066v-320.057h-190.255l380.094-382.824 383.166 382.824h-190.938z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-up" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 27, + "id": 24, + "prevSize": 24, + "code": 58906, + "name": "arrow-up", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 24 + }, + { + "icon": { + "paths": [ + "M770.37-2.37h-521.481c-138.221 0-251.259 113.076-251.259 251.259v521.481c0 138.183 113.038 251.259 251.259 251.259h521.481c138.183 0 251.259-113.076 251.259-251.259v-521.481c0-138.183-113.076-251.259-251.259-251.259zM511.374 896.19v-190.938h-320.076v-382.066h320.076v-190.255l382.824 380.075-382.824 383.185z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-right" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 28, + "id": 25, + "prevSize": 24, + "code": 58907, + "name": "arrow-right", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 25 + }, + { + "icon": { + "paths": [ + "M770.37-2.389h-521.481c-138.183 0-251.259 113.076-251.259 251.278v521.481c0 138.183 113.076 251.259 251.259 251.259h521.481c138.221 0 251.259-113.076 251.259-251.259v-521.481c0-138.202-113.038-251.278-251.259-251.278zM827.961 696.073h-320.076v190.255l-382.824-380.094 382.824-383.166v190.919h320.076v382.085z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-left" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 29, + "id": 26, + "prevSize": 24, + "code": 58908, + "name": "arrow-left", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 26 + }, + { + "icon": { + "paths": [ + "M770.389-2.37h-521.481c-138.202 0-251.278 113.038-251.278 251.259v521.481c0 138.183 113.076 251.259 251.278 251.259h521.481c138.183 0 251.259-113.076 251.259-251.259v-521.481c0-138.221-113.076-251.259-251.259-251.259zM506.254 894.18l-383.166-382.805h190.9v-320.076h382.085v320.076h190.255l-380.075 382.805z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-down" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 30, + "id": 27, + "prevSize": 24, + "code": 58909, + "name": "arrow-down", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 27 + }, + { + "icon": { + "paths": [ + "M772.741-2.37h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.038 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM309.627 826.273c-99.859 0-180.812-80.953-180.812-180.793 0-99.821 80.953-180.774 180.812-180.774 27.364 0 53.267 6.277 76.535 17.18l-54.689 94.701c-6.884-2.238-14.241-3.451-21.845-3.451-39.936 0-72.325 32.37-72.325 72.306s32.389 72.344 72.325 72.344c35.537 0 65.062-25.714 71.111-59.506h109.037c-6.618 93.848-84.632 167.993-180.148 167.993zM438.234 306.593c0 19.456 7.737 37.035 20.215 50.081l-55.068 95.308c-44.563-32.92-73.652-85.694-73.652-145.389 0-99.821 80.953-180.774 180.812-180.774 99.84 0 180.774 80.934 180.774 180.774 0 59.582-28.937 112.318-73.406 145.237l-55.049-95.384c12.364-13.009 20.044-30.492 20.044-49.854 0-39.936-32.446-72.325-72.344-72.325-39.936 0-72.325 32.389-72.325 72.325zM708.475 826.216c-95.554 0-173.549-74.145-180.148-167.955h109.037c6.030 33.83 35.556 59.525 71.111 59.525 39.898 0 72.287-32.37 72.287-72.325 0-39.917-32.37-72.287-72.287-72.287-6.599 0-12.99 0.967-19.039 2.636l-54.917-95.175c22.585-10.145 47.597-15.948 73.956-15.948 99.859 0 180.774 80.934 180.774 180.755s-80.915 180.774-180.774 180.774z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "freenode" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 31, + "id": 28, + "prevSize": 24, + "code": 58910, + "name": "freenode", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 28 + }, + { + "icon": { + "paths": [ + "M990.701 763.98l-336.175-688.014c-58.69-104.41-224.616-92.558-269.483-1.214l-345.353 690.479c-74.828 142.279-0.929 258.769 164.162 258.769h620.165c165.073 0 240.090-117.020 166.684-260.020zM607.744 891.259h-185.401v-189.573h185.401v189.573zM610.057 384l-33.716 253.080h-122.728l-33.185-253.080v-192h189.63v192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "alert" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 32, + "id": 29, + "prevSize": 24, + "code": 58911, + "name": "alert", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 29 + }, + { + "icon": { + "paths": [ + "M61.554 313.685l450.37-187.259 445.63 187.259-445.63 189.63z", + "M511.924 569.666l-297.415-125.212-152.955 63.602 450.37 189.611 445.63-189.611-151.343-63.602z", + "M511.924 761.666l-297.415-125.231-152.955 63.602 450.37 189.63 445.63-189.63-151.343-63.602z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "versions" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 33, + "id": 30, + "prevSize": 24, + "code": 58912, + "name": "versions", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 30 + }, + { + "icon": { + "paths": [ + "M688.583 286.227c-24.728 0-44.715 20.461-44.715 45.587 0 25.012 19.987 45.246 44.715 45.246 24.595 0 44.753-20.252 44.734-45.246 0.019-25.126-20.139-45.587-44.734-45.587zM772.741-2.37h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM816.488 392.021c10.449 231.519-162.588 475.136-468.158 475.136-92.956 0-179.428-27.269-252.302-73.937 87.324 10.278 174.497-13.995 243.674-68.134-72.002-1.365-132.836-48.962-153.771-114.328 25.79 4.93 51.181 3.489 74.354-2.769-79.132-15.929-133.803-87.268-132.001-163.499 22.168 12.288 47.597 19.759 74.562 20.556-73.311-48.962-94.094-145.768-50.972-219.705 81.18 99.537 202.505 165.092 339.285 171.918-24.064-102.912 54.101-202.107 160.275-202.107 47.369 0 90.112 20.025 120.187 52.034 37.509-7.396 112.924-60.833 144.706-79.682-12.288 38.438-78.26 119.353-112.299 139.7 33.375-3.944 92.786 5.613 122.292-7.509-22.092 33.015-77.596 49.133-109.833 72.325z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "twitter" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 34, + "id": 31, + "prevSize": 24, + "code": 58913, + "name": "twitter", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 31 + }, + { + "icon": { + "paths": [ + "M770.37-0.019h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM382.028 837.385c-11.169 5.329-34.076 3.375-54.537 3.375h-114.65c-35.631 0-68.191 1.517-75.7-23.381-6.106-20.271-1.119-64.645-1.119-89.050v-180.319c0-42.856-9.273-100.58 23.362-110.213 11.548-3.432 31.744-1.1 46.763-1.1h47.863c44.297 0 91.913-7.111 109.682 15.113l34.114 364.961c-2.484 8.875-7.377 16.631-15.777 20.613zM857.335 628.11c34.816 21.656 18.413 91.231-14.488 102.419 19.475 16.194 13.103 52.527 0 67.906-45.796 53.779-181.305 37.831-284.937 37.831-23.438 0-48.109 2.788-64.55 0-15.246-2.617-26.662-11.264-38.381-19.589l-35.252-377.268c6.163-10.714 11.89-21.751 14.658-26.131 21.883-34.683 44.582-68.248 73.444-93.506 14.829-12.971 32.635-20.271 51.219-32.275 23.324-15.095 56.699-58.615 60.113-93.487 1.384-14.526-2.882-39.481 3.319-52.357 5.803-11.947 29.715-27.572 50.119-21.125 23.59 7.452 42.174 45.435 44.544 75.719 2.332 30.549-3.11 62.995-15.607 83.437-13.464 22.035-28.236 30.587-36.731 47.863-7.49 15.208-9.956 28.046-12.25 52.319 79.929 4.855 201.216-13.388 233.775 41.188 17.446 29.26-6.22 85.257-30.075 96.825 43.899 14.715 42.344 93.62 1.081 110.232zM258.181 686.478c-26.188 0-47.332 21.618-47.332 48.223 0 26.491 21.144 47.919 47.332 47.919 26.036 0 47.351-21.428 47.351-47.919-0-26.605-21.314-48.223-47.351-48.223z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "thumbs-up" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 35, + "id": 32, + "prevSize": 24, + "code": 58914, + "name": "thumbs-up", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 32 + }, + { + "icon": { + "paths": [ + "M248.889 1024h521.481c138.202 0 251.259-113.076 251.259-251.259v-521.481c0-138.202-113.057-251.278-251.259-251.278h-521.481c-138.183 0-251.259 113.076-251.259 251.278v521.481c0 138.183 113.076 251.259 251.259 251.259zM637.231 186.596c11.169-5.329 34.076-3.375 54.537-3.375h114.65c35.631 0 68.191-1.517 75.7 23.381 6.106 20.271 1.119 64.645 1.119 89.050v180.319c0 42.856 9.254 100.58-23.362 110.213-11.548 3.432-31.744 1.1-46.763 1.1h-47.863c-44.297 0-91.932 7.092-109.682-15.113l-34.114-364.961c2.484-8.875 7.358-16.631 15.777-20.613zM161.925 395.871c-34.816-21.656-18.413-91.231 14.488-102.419-19.475-16.194-13.103-52.527 0-67.906 45.796-53.779 181.305-37.831 284.937-37.831 23.438 0 48.109-2.788 64.55 0 15.246 2.617 26.643 11.264 38.381 19.589l35.252 377.268c-6.163 10.714-11.89 21.751-14.658 26.131-21.883 34.683-44.582 68.248-73.444 93.506-14.829 12.971-32.635 20.271-51.219 32.275-23.324 15.095-56.699 58.615-60.113 93.487-1.384 14.526 2.882 39.481-3.319 52.357-5.803 11.947-29.715 27.572-50.119 21.125-23.59-7.452-42.174-45.435-44.544-75.719-2.332-30.549 3.11-62.995 15.607-83.437 13.464-22.035 28.236-30.587 36.731-47.863 7.49-15.208 9.956-28.046 12.25-52.319-79.929-4.855-201.216 13.388-233.775-41.188-17.446-29.26 6.22-85.257 30.075-96.825-43.899-14.715-42.344-93.62-1.081-110.232zM761.079 512.815c26.188 0 47.332-21.618 47.332-48.223 0-26.491-21.144-47.919-47.332-47.919-26.036 0-47.351 21.428-47.351 47.919 0 26.605 21.314 48.223 47.351 48.223z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "thumbs-down" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 36, + "id": 33, + "prevSize": 24, + "code": 58915, + "name": "thumbs-down", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 33 + }, + { + "icon": { + "paths": [ + "M630.139 539.212h124.511l-61.668-234.837-62.843 234.837zM231.993 596.082h64.076l-31.611-147.399-32.465 147.399zM772.741-0.019h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM344.955 763.354l-27.989-95.782h-106.97l-29.639 95.782h-88.235l135.604-422.798h72.306l131.736 422.798h-86.812zM820.452 764.321l-37.66-128.872h-182.234l-39.898 128.872h-99.631l182.5-568.984h97.318l177.304 568.984h-97.697z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "text-resize" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 37, + "id": 34, + "prevSize": 24, + "code": 58916, + "name": "text-resize", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 34 + }, + { + "icon": { + "paths": [ + "M593.427 476.824l128.91-93.867h-152.292l-58.482-140.383-46.895 140.383h-152.102l128.74 93.867-58.615 163.859 128.872-105.396 128.683 105.396-46.82-163.859zM479.327 865.754c-12.535-1.271-24.86-3.167-36.997-5.613 7.073-44.146-1.764-89.695-16.498-124.511-15.607-35.157-33.849-51.333-57.192-54.177-18.489 38.153-29.582 81.408-16.308 120.282 5.158 16.137 14.45 29.449 26.207 39.671-41.719-16.194-79.796-39.519-113.076-68.267 22.812-30.208 36.978-67.186 41.908-100.902 4.741-36.807-2.2-61.402-19.191-78.412-30.417 20.992-57.116 51.086-64.455 90.491-3.527 17.048-2.503 33.773 1.801 49.019-22.206-25.638-41.131-54.101-56.092-84.935 28.236-13.843 51.731-39.177 66.238-67.584 14.791-30.398 16.251-57.742 7.945-83.437-29.961 2.996-59.62 17.105-77.122 48.811-10.638 18.413-14.962 40.183-13.824 61.478-14.127-40.258-22.168-83.399-22.168-128.493 0-6.618 0.531-13.103 0.853-19.646 25.998 3.508 52.698-5.803 74.183-24.026 22.528-20.063 34.456-46.061 39.31-75.34-23.192-13.179-50.991-15.455-76.724 4.134-12.25 8.913-22.225 21.921-29.544 36.978 8.325-40.865 22.831-79.493 42.894-114.593 18.148 16.005 42.837 20.499 69.044 13.767 28.027-7.851 52.11-26.719 74.088-50.574-11.093-21.732-33.052-36.257-64.645-30.91-16.194 2.295-32.465 9.956-47.028 21.371 24.595-31.479 53.893-58.994 86.907-81.617 9.69 17.92 30.644 27.553 60.226 27.667 31.953-0.474 68.191-11.074 107.501-24.595-0.076-19.646-17.692-36.409-54.632-39.974-17.863-2.105-37.755-0.171-57.325 5.101 26.889-12.497 55.315-22.281 85.125-28.388 8.875-1.839 14.583-10.468 12.781-19.342-1.839-8.875-10.468-14.583-19.342-12.781-24.595 5.044-48.375 12.269-71.206 21.39 9.406-6.751 18.508-13.634 26.984-20.651 30.758-24.538 45.189-46.459 35.821-64.512-55.334 7.433-104.638 31.004-130.522 60.738-22.964 27.288-24.102 51.693-13.786 68.267-30.929 21.182-58.918 46.251-83.153 74.695 5.385-11.7 10.297-23.514 13.995-35.518 11.34-35.233 10.031-64-6.903-81.56-39.045 24.424-68.551 64.417-76.079 103.424-6.542 36.466 5.329 62.445 24.329 76.667-20.385 35.404-35.385 74.202-44.809 115.124-1.517-14.962-3.982-29.772-8.344-44.070-10.543-35.631-29.355-60.113-55.031-66.844-19.608 41.169-24.311 91.212-10.012 128.133 13.426 33.849 37.945 49 63.431 50.953-0.55 8.799-1.176 17.598-1.176 26.529 0 40.638 5.803 79.91 16.536 117.077-7.396-9.766-15.436-19.058-25.012-27.117-27.117-23.381-58.311-32.939-87.704-23.040-0.076 47.18 17.958 93.431 48.981 115.845 29.62 20.992 62.123 16.915 89.41 0.607 21.713 44.772 51.124 85.011 86.509 119.239-20.366-15.986-44.525-26.377-72.761-29.696-37.092-4.722-73.652 5.215-101.205 31.991 17.427 43.71 54.367 75.985 95.706 77.748 42.060 1.422 76.023-26.169 97.811-61.762-1.062-1.176-2.2-2.219-3.3-3.356 44.734 38.969 97.564 68.93 155.913 86.319-25.998 1.062-51.75 7.964-77.483 21.732-38.628 20.442-69.006 53.039-81.806 94.265 40.031 26.377 95.516 30.53 138.505 5.139 41.434-24.841 59.525-68.077 61.497-111.332 12.079 2.332 24.311 4.248 36.75 5.499 0.55 0.057 1.1 0.076 1.65 0.076 8.306 0 15.436-6.258 16.289-14.715 0.872-8.988-5.689-17.048-14.677-17.939zM934.817 569.154c-9.595 8.078-17.673 17.37-25.050 27.174 10.752-37.186 16.536-76.478 16.555-117.134 0-8.951-0.626-17.749-1.176-26.548 25.505-1.953 50.024-17.086 63.469-50.953 14.298-36.921 9.595-86.945-10.012-128.133-25.676 6.732-44.506 31.213-55.031 66.844-4.38 14.317-6.827 29.165-8.306 44.127-9.425-40.96-24.443-79.777-44.828-115.2 19.001-14.222 30.891-40.201 24.348-76.686-7.509-39.007-37.035-79-76.079-103.424-16.953 17.56-18.242 46.327-6.903 81.56 3.679 12.023 8.609 23.874 14.014 35.593-24.235-28.482-52.243-53.589-83.191-74.771 10.335-16.574 9.178-40.979-13.786-68.267-25.884-29.734-75.188-53.305-130.522-60.738-9.368 18.053 5.063 39.974 35.821 64.512 8.495 7.035 17.636 13.919 27.060 20.708-22.869-9.121-46.668-16.384-71.301-21.409-8.875-1.839-17.541 3.906-19.361 12.781-1.801 8.837 3.925 17.503 12.8 19.323 29.81 6.106 58.216 15.872 85.125 28.388-19.57-5.272-39.462-7.187-57.325-5.101-36.94 3.565-54.556 20.328-54.632 39.974 39.31 13.502 75.548 24.102 107.501 24.595 29.582-0.114 50.536-9.747 60.226-27.667 32.958 22.604 62.236 50.1 86.831 81.541-14.564-11.378-30.815-19.001-46.971-21.314-31.592-5.329-53.551 9.197-64.645 30.91 21.978 23.874 46.080 42.724 74.088 50.574 26.188 6.732 50.897 2.238 69.025-13.748 20.044 35.081 34.532 73.652 42.856 114.479-7.32-15.019-17.256-27.989-29.487-36.883-25.714-19.589-53.532-17.313-76.724-4.134 4.855 29.279 16.801 55.277 39.31 75.34 21.466 18.204 48.166 27.534 74.145 24.045 0.341 6.542 0.872 13.028 0.872 19.646 0 45.056-8.040 88.14-22.13 128.398 1.119-21.276-3.224-43.027-13.824-61.383-17.522-31.706-47.161-45.815-77.122-48.811-8.306 25.695-6.846 53.058 7.945 83.437 14.507 28.407 37.983 53.741 66.2 67.584-14.943 30.796-33.868 59.24-56.055 84.859 4.305-15.208 5.31-31.934 1.801-48.943-7.358-39.405-34.039-69.499-64.455-90.491-16.991 16.991-23.931 41.586-19.191 78.412 4.93 33.716 19.115 70.694 41.889 100.883-33.28 28.748-71.339 52.053-113.038 68.267 11.757-10.221 21.011-23.514 26.188-39.652 13.255-38.874 2.162-82.129-16.308-120.282-23.324 2.844-41.567 19.039-57.192 54.177-14.715 34.816-23.571 80.365-16.479 124.511-12.174 2.427-24.5 4.343-37.035 5.613-9.026 0.91-15.55 8.951-14.639 17.977 0.872 8.439 8.021 14.734 16.327 14.734 0.531 0 1.1-0.038 1.65-0.095v-0.038c12.421-1.252 24.671-3.167 36.75-5.499 1.972 43.255 20.063 86.49 61.478 111.332 42.989 25.391 98.456 21.22 138.505-5.139-12.819-41.225-43.179-73.823-81.806-94.265-25.733-13.786-51.503-20.689-77.521-21.732 58.425-17.427 111.313-47.407 156.084-86.471-1.157 1.176-2.332 2.276-3.451 3.508 21.788 35.593 55.751 63.185 97.811 61.762 41.339-1.764 78.279-34.039 95.706-77.748-27.553-26.757-64.114-36.712-101.205-31.991-28.274 3.356-52.489 13.748-72.875 29.772 35.404-34.247 64.872-74.505 86.585-119.334 27.288 16.289 59.771 20.404 89.429-0.588 31.023-22.433 49.057-68.665 48.981-115.845-29.412-9.88-60.606-0.322-87.723 23.078z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "success-stories" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 38, + "id": 35, + "prevSize": 24, + "code": 58917, + "name": "success-stories", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 35 + }, + { + "icon": { + "paths": [ + "M124.113 449.574h132.741v385.574h-132.741v-385.574z", + "M250.539 1023.204h521.481c93.127 0 174.668-51.465 218.055-127.241h-957.611c43.387 75.776 124.947 127.241 218.074 127.241z", + "M336.915 196.741h132.741v638.426h-132.741v-638.426z", + "M549.736 323.148h132.741v512h-132.741v-512z", + "M762.539 1.574h132.741v833.574h-132.741v-833.574z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "statistics" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 39, + "id": 36, + "prevSize": 24, + "code": 58918, + "name": "statistics", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 36 + }, + { + "icon": { + "paths": [ + "M772.741-2.37h-521.481c-138.202 0-251.259 113.076-251.259 251.259v521.481c0 138.202 113.057 251.278 251.259 251.278h521.481c138.183 0 251.259-113.076 251.259-251.278v-521.481c0-138.183-113.076-251.259-251.259-251.259zM376.055 250.842l269.065 175.066-36.693 57.989-273.484-168.107 41.112-64.948zM295.291 404.082l307.352 92.748-18.982 65.953-309.627-84.764 21.257-73.937zM260.437 551.064l319.052 35.821-6.789 68.248-319.848-27.553 7.585-76.516zM252.587 680.562h321.024v76.895h-321.024v-76.895zM698.804 890.558h-570.728v-351.118h65.517v290.873h441.799v-290.873h63.412v351.118zM653.047 419.176l-178.745-266.676 64.398-41.927 171.823 271.151-57.477 37.452zM717.577 378.709l-23.742-320.133 76.743-4.665 15.493 320.626-68.494 4.172z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stack-overflow" + ], + "grid": 0 + }, + "attrs": [], + "properties": { + "order": 40, + "id": 37, + "prevSize": 24, + "code": 58919, + "name": "stack-overflow", + "ligatures": "" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 37 + }, + { + "icon": { + "paths": [ + "M251.262-2.371c-138.202 0-251.258 113.076-251.258 251.258v521.48c0 138.202 113.058 251.277 251.258 251.277h521.477c138.182 0 251.262-113.076 251.262-251.277v-521.48c0-138.182-113.078-251.258-251.262-251.258h-521.477zM502.934 122h0.969c129.617 0 185.568 7.873 200.336 10.035 87.534 12.798 161.375 78.841 172.773 162.648v0.004c6.202 62.253 0.829 163.576 0.789 180.203 0 4.892-0.717 49.558-1.004 54.273-7.671 119.756-83.16 167.050-162.484 182.117-1.076 0.319-2.331 0.529-3.586 0.777-50.291 9.714-104.166 12.305-155.281 13.723-12.224 0.319-24.41 0.316-36.633 0.316-50.823 0.013-101.466-5.938-150.871-17.727-0.262-0.070-0.537-0.080-0.801-0.020-0.264 0.057-0.513 0.175-0.723 0.344s-0.375 0.385-0.484 0.629c-0.105 0.245-0.155 0.514-0.145 0.781 1.397 15.91 4.892 31.569 10.395 46.582 6.847 17.372 30.757 59.098 119.652 59.098 51.655 0.094 103.141-5.857 153.383-17.727 0.255-0.052 0.517-0.060 0.773 0 0.255 0.057 0.497 0.168 0.703 0.328s0.371 0.362 0.488 0.594c0.112 0.232 0.18 0.487 0.184 0.746v58.777c-0.009 0.277-0.081 0.552-0.211 0.797s-0.314 0.456-0.539 0.621c-16.417 11.77-38.751 18.474-57.785 24.465-8.435 2.623-16.968 4.925-25.594 6.91-78.419 17.666-160.26 13.396-236.363-12.336-71.081-24.675-143.632-85.156-161.555-157.832-9.571-39.35-16.314-79.317-20.18-119.609-5.592-60.658-6.059-121.457-8.461-182.363-1.685-42.471-0.713-88.773 8.355-130.535 18.855-84.799 96.563-144.142 181.66-156.586 14.768-2.163 42.587-10.035 172.238-10.035zM398.371 246.082c-36.885 0-66.6 12.831-89.254 37.824-21.961 25.053-32.941 58.853-32.941 101.395v208.203h83.34v-202.070c0.036-42.542 18.139-64.238 54.379-64.238 40.075 0 60.184 25.665 60.184 76.359v110.609h82.91v-110.609c0-50.695 20.074-76.359 60.148-76.359 36.455 0 54.375 21.696 54.375 64.238v202.070h83.414l0.070-208.203c0-42.566-10.979-76.366-32.941-101.395-22.726-24.993-52.44-37.824-89.289-37.824-42.62 0-74.884 16.237-96.391 48.676l-20.789 34.457-20.754-34.457c-21.507-32.439-53.77-48.676-96.461-48.676z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "isMulticolor2": false, + "grid": 0, + "tags": [ + "mastodon" + ] + }, + "attrs": [ + {} + ], + "properties": { + "order": 48, + "id": 38, + "name": "mastodon", + "prevSize": 24, + "code": 59648 + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 38 + } + ], + "height": 1024, + "metadata": { + "name": "Pythonicon" + }, + "preferences": { + "showGlyphs": true, + "showQuickUse": true, + "showQuickUse2": true, + "showSVGs": true, + "fontPref": { + "prefix": "icon-", + "metadata": { + "fontFamily": "Pythonicon", + "majorVersion": 1, + "minorVersion": 0 + }, + "metrics": { + "emSize": 1024, + "baseline": 6.25, + "whitespace": 50 + }, + "embed": false, + "resetPoint": 58880 + }, + "imagePref": { + "prefix": "icon-", + "png": true, + "useClassSelector": true, + "color": 0, + "bgColor": 16777215, + "classSelector": ".icon" + }, + "historySize": 50, + "showCodes": true, + "gridSize": 16 + } +} \ No newline at end of file diff --git a/static/fonts/Pythonicon.svg b/static/fonts/Pythonicon.svg old mode 100755 new mode 100644 index 513b029b5..a7441c98a --- a/static/fonts/Pythonicon.svg +++ b/static/fonts/Pythonicon.svg @@ -3,48 +3,48 @@ Generated by IcoMoon - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/fonts/Pythonicon.ttf b/static/fonts/Pythonicon.ttf old mode 100755 new mode 100644 index 9d69d57a3ef6c89cfb368c4f053508dce434fde2..5c57bd93dec5139cb912d24a5bdc39cff829f1c2 GIT binary patch literal 12452 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 HTmAkYcoVmx literal 13840 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 literal 13916 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 + + + + IcoMoon Demo + + + + + +
    +

    Font Name: Pythonicon (Glyphs: 40)

    +
    +
    +

    Grid Size: 16

    +
    +
    + + icon-bullhorn +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    +

    Grid Size: Unknown

    +
    +
    + + icon-python-alt +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-pypi +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-news +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-moderate +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-mercurial +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-jobs +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-help +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-download +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-documentation +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-community +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-code +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-close +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-calendar +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-beginner +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-advanced +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-sitemap +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-search +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-search-alt +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-python +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-github +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-get-started +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-feed +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-facebook +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-email +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-arrow-up +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-arrow-right +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-arrow-left +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-arrow-down +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-freenode +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-alert +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-versions +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-twitter +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-thumbs-up +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-thumbs-down +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-text-resize +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-success-stories +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-statistics +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-stack-overflow +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + icon-mastodon +
    +
    + + +
    +
    + liga: + +
    +
    +
    + + +
    +

    Font Test Drive

    + + +
      +
    +
    + +
    +

    Generated by IcoMoon

    +
    + + + + diff --git a/static/fonts/demo/demo.css b/static/fonts/demo/demo.css new file mode 100644 index 000000000..932837ba3 --- /dev/null +++ b/static/fonts/demo/demo.css @@ -0,0 +1,155 @@ +body { + padding: 0; + margin: 0; + font-family: sans-serif; + font-size: 1em; + line-height: 1.5; + color: #555; + background: #fff; +} +h1 { + font-size: 1.5em; + font-weight: normal; +} +small { + font-size: .66666667em; +} +a { + color: #e74c3c; + text-decoration: none; +} +a:hover, a:focus { + box-shadow: 0 1px #e74c3c; +} +.bshadow0, input { + box-shadow: inset 0 -2px #e7e7e7; +} +input:hover { + box-shadow: inset 0 -2px #ccc; +} +input, fieldset { + font-family: sans-serif; + font-size: 1em; + margin: 0; + padding: 0; + border: 0; +} +input { + color: inherit; + line-height: 1.5; + height: 1.5em; + padding: .25em 0; +} +input:focus { + outline: none; + box-shadow: inset 0 -2px #449fdb; +} +.glyph { + font-size: 16px; + width: 15em; + padding-bottom: 1em; + margin-right: 4em; + margin-bottom: 1em; + float: left; + overflow: hidden; +} +.liga { + width: 80%; + width: calc(100% - 2.5em); +} +.talign-right { + text-align: right; +} +.talign-center { + text-align: center; +} +.bgc1 { + background: #f1f1f1; +} +.fgc1 { + color: #999; +} +.fgc0 { + color: #000; +} +p { + margin-top: 1em; + margin-bottom: 1em; +} +.mvm { + margin-top: .75em; + margin-bottom: .75em; +} +.mtn { + margin-top: 0; +} +.mtl, .mal { + margin-top: 1.5em; +} +.mbl, .mal { + margin-bottom: 1.5em; +} +.mal, .mhl { + margin-left: 1.5em; + margin-right: 1.5em; +} +.mhmm { + margin-left: 1em; + margin-right: 1em; +} +.mls { + margin-left: .25em; +} +.ptl { + padding-top: 1.5em; +} +.pbs, .pvs { + padding-bottom: .25em; +} +.pvs, .pts { + padding-top: .25em; +} +.unit { + float: left; +} +.unitRight { + float: right; +} +.size1of2 { + width: 50%; +} +.size1of1 { + width: 100%; +} +.clearfix:before, .clearfix:after { + content: " "; + display: table; +} +.clearfix:after { + clear: both; +} +.hidden-true { + display: none; +} +.textbox0 { + width: 3em; + background: #f1f1f1; + padding: .25em .5em; + line-height: 1.5; + height: 1.5em; +} +#testDrive { + display: block; + padding-top: 24px; + line-height: 1.5; +} +.fs0 { + font-size: 16px; +} +.fs1 { + font-size: 32px; +} +.fs2 { + font-size: 24px; +} + diff --git a/static/fonts/demo/demo.js b/static/fonts/demo/demo.js new file mode 100644 index 000000000..6f45f1c40 --- /dev/null +++ b/static/fonts/demo/demo.js @@ -0,0 +1,30 @@ +if (!('boxShadow' in document.body.style)) { + document.body.setAttribute('class', 'noBoxShadow'); +} + +document.body.addEventListener("click", function(e) { + var target = e.target; + if (target.tagName === "INPUT" && + target.getAttribute('class').indexOf('liga') === -1) { + target.select(); + } +}); + +(function() { + var fontSize = document.getElementById('fontSize'), + testDrive = document.getElementById('testDrive'), + testText = document.getElementById('testText'); + function updateTest() { + testDrive.innerHTML = testText.value || String.fromCharCode(160); + if (window.icomoonLiga) { + window.icomoonLiga(testDrive); + } + } + function updateSize() { + testDrive.style.fontSize = fontSize.value + 'px'; + } + fontSize.addEventListener('change', updateSize, false); + testText.addEventListener('input', updateTest, false); + testText.addEventListener('change', updateTest, false); + updateSize(); +}()); diff --git a/static/fonts/index.html b/static/fonts/index.html deleted file mode 100644 index 703c351ee..000000000 --- a/static/fonts/index.html +++ /dev/null @@ -1,410 +0,0 @@ - - - -Your Font/Glyphs - - - - - -
    -
    -
    -

    Your font contains the following glyphs

    -

    The generated SVG font can be imported back to IcoMoon for modification.

    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    -
    -
    -

    Class Names

    -
    - - -  icon-alert - - - -  icon-arrow-down - - - -  icon-arrow-left - - - -  icon-arrow-right - - - -  icon-arrow-up - - - -  icon-calendar - - - -  icon-close - - - -  icon-code - - - -  icon-documentation - - - -  icon-email - - - -  icon-facebook - - - -  icon-feed - - - -  icon-freenode - - - -  icon-get-started - - - -  icon-github - - - -  icon-help - - - -  icon-pypi - - - -  icon-python - - - -  icon-python-alt - - - -  icon-search - - - -  icon-sitemap - - - -  icon-stack-overflow - - - -  icon-statistics - - - -  icon-success-stories - - - -  icon-text-resize - - - -  icon-thumbs-down - - - -  icon-thumbs-up - - - -  icon-twitter - - - -  icon-versions - - - -  icon-community - - - -  icon-download - - - -  icon-news - - - -  icon-jobs - - - -  icon-beginner - - - -  icon-moderate - - - -  icon-advanced - - - -  icon-search-alt - -
    - -
    - - - diff --git a/static/fonts/style.css b/static/fonts/style.css index 2f45ac8b0..dd31e10f7 100644 --- a/static/fonts/style.css +++ b/static/fonts/style.css @@ -4,148 +4,144 @@ } @font-face { font-family: 'Pythonicon'; - src: url(data:application/x-font-woff;charset=utf-8;base64,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) format('woff'), - url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTWb3zyIAACLIAAAAHEdERUYAVwAGAAAiqAAAACBPUy8yL7vcIQAAAVgAAABWY21hcOHj1hsAAAJYAAABnmdhc3D//wADAAAioAAAAAhnbHlmPv4lRQAABFAAABr4aGVhZPvYbRAAAADcAAAANmhoZWEEEgAKAAABFAAAACRobXR4TrUBAwAAAbAAAACobG9jYYPse+IAAAP4AAAAVm1heHAAegEpAAABOAAAACBuYW1lontVwgAAH0gAAAGncG9zdFx+wrQAACDwAAABrgABAAAAAQAAnNFwT18PPPUACwIAAAAAAM1dFikAAAAAzV0WKf/+/98CAQHiAAAACAACAAAAAAAAAAEAAAHi/98ALgIA//7+AAIBAAEAAAAAAAAAAAAAAAAAAAAqAAEAAAAqASYADgAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAQIAAZAABQAIAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAIABQMAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUGZFZABA4ADwAAHg/+AALgHiACGAAAABAAAAAAAAAgAAAAAAAAAAqgAAAgAADwIA//8CAP//AgD//wIA//8CAAAAAgD//wIAAAACAAAAAgD//wIAAAACAP//AgAAAAIAABACAAAAAgAAAAIAAAACAP//AgAAAAIAAAQCAP//AgAAAAIAAAACAAAQAgAAAAIAAAACAP//AgD//wIAAAACAAAeAgAAPAIAAAACAAAAAgAAAAIAACACAAAgAgAAIAIAACEAAAAAAAAAAwAAAAMAAAAcAAEAAAAAAJgAAwABAAAAHAAEAHwAAAAIAAgAAgAAAADgJfAA//8AAAAA4ADwAP//AAAAABApAAEAAAAGAAAAAAADAAQABQAGAAcACAAJAAoACwAiAAwADQAOAA8AEAARABIAEwAjACQAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACUAJgAnACgAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAFAAdgCcAMIBQgFyAaoCEAJCAnYCyAM4A2wEQgTIBRAFXgXaBkIGoAbYBygHVAkGCUYJ4AqACuYLCAt0C5YL7AxQDJgM3g0mDW4NfAAAAAMAD//gAfMB3AAFABIAFgAAEzMVByMnBwYWMyEyNicDLgEGBxMzFSPSXxE9Eb4cMD4BNj4xHKgOODULEl1dAYBgf3+/NUxMNgFYGRETFv7GXwAAAAL//v/hAf8B4gAPABYAAAM0NjMhMhYVERQGIyEiJjU3FzcjNSMVAUozAQU0Sko0/vszSj+/vl+/AWQzSkoz/vs0Sko0gb+/oKAAAAAC//7/4QH/AeIADwAWAAABMhYVERQGIyEiJjURNDYzFwcXNTM1IwGBNEpKNP77M0pKM4K/v6CgAeFKM/77NEpKNAEFM0o/v75fvwAAAv/+/+EB/wHiAA8AFgAAFyImNRE0NjMhMhYVERQGIyc3JxUjFTN8M0pKMwEFNEpKNIG/v6CgH0o0AQUzSkoz/vs0Sj+/v2C/AAAAAAL//v/hAf8B4gAPABYAACUUBiMhIiY1ETQ2MyEyFhUHJwczFTM1Af9KNP77M0pKMwEFNEo/v79gv180Sko0AQUzSkozgr+/oKAAAAAOAAD/4QIBAeIADwATABcAGwAfACMAJwAsADAANAA8AEQATABWAAAXIiY1ETQ2MyEyFhURFAYjAzMVIzczFSMFMxUjNzMVIzczFSM3MxUjBzUjFBY3MxUjNzMVIxIUBiImNDYyBhQGIiY0NjIEFAYiJjQ2MhM1IQceATsBMjZ+NEpKNAEENEpKNHdLS2ZLS/7OS0tmS0tmS0tmS0vnSzA2S0tmS0sNDhQODhRxDhQODhQBDA4UDg4UUv5FAQFALeEtQB9KNAEFM0pKM/77NEoBX0pKSiFKSkpKSkpKakkdLElJSUkBiBQODhQODhQODhQODhQODhQO/rnw8C1AQAAAAv/+/+EB/wHiAA8AGwAAASEiBhURFBYzITI2NRE0JgMHJwcnNyc3FzcXBwGB/vszSkozAQU0SkoYTlBQTVBQTVBQTlAB4Uoz/vs0Sko0AQUzSv6wTlBQTlBQTVBQTVAABAAA/+ACAAHhAA8AFQAZAB8AAAEhIgYVERQWMyEyNjURNCYFBxcVJzcTJxMzEzU3JzUXAYL+/DRKSjQBBDRKSv7oPj5/f0kmVSYiOzt8AeBKNP78NEpKNAEENErJNjY4bm7+9AEBO/72ODQ0OGwAAAYAAP/hAgEB4gAOAB4AJgAuADYAQAAAAQcnBxc3FwMXBxc/AhMnISIGFREUFjMhMjY1ETQmACImNDYyFhQmIiY0NjIWFCYiJjQ2MhYUBRQGByURITIWFQFuDS1dFFAZpQUSAw8SGr8d/vw0Sko0AQQ0Skr+hRMODhMODhMODhMODhMODhMOAZVALf7wARAtQAGVFB2SDX8R/vwaHBAEHAcBLGtKM/77NEpKNAEFM0r+aQ4UDg4UcQ4UDg4UcQ4UDg4U5ixBAQEBvEAtAAT//gBDAf8BggAKAA0AEAAbAAABISIGHQEFJTU0Jhc1ByUVNxcnBxQWMyEyNjcnAcD+fholAP8BASUlf/5/fINhniUaAYIaJAGhAYIlGgJ/gAEaJeB/Pz18PkAwTxolJBpQAAACAAD/4QIBAeIADwAjAAABISIGFREUFjMhMjY1ETQmByMVIzUjNTM1NDY7ARUjIgYdATMBgv78NEpKNAEENEpKYzVPJycoLjUhEgk8AeFKM/77NEpKNAEFM0r/v79CKCorQgsPIQAAAAT//v/fAf8B4AAPABcAJwA3AAABISIGFREUFjMhMjY1ETQmACImNDYyFhQXIzY1NCYjIgc1NjceARUUFyM2NTQmIyIHNTYzMhYVFAGB/vszSkozAQU0Skr++TEiIjEiYkkPOigeGBocRGBsSwd4VBsbGxtyogHgSjT+/DRKSjQBBDRK/lsiMSMjMRsYHCk5EEkJAQFgRBsZGhpUeAdKBqNyGgAABAAA/+ECAQHiAA8AIwA5AE8AABciJjURNDYzITIWFREUBiMDFAcXNjU0JiIGFRQXNyY1NDYyFgciJjQ2MzIXNyYjIgYUFjMyNjcjDgE3IgcXNjMyFhQGIyImJyMeATMyNjQmfjRKSjQBBDRKSjRfChwlNUs1JRsKFR4ViA8VFQ8FBhsSFCY1NSYkMwM3AhS6ExIcBQQPFRUPDRQCNwM0IyY1NR9KNAEFM0pKM/77NEoBZg8KMBsuJTU1JS4bMAoPDxUV3RUeFQEvCTVLNTEjDRF/CDABFR4VEQ0jMTVLNQACABD/4QHwAd0ACwAjAAA2MjY9ATQmIgYdARQ3FR4BFRQGIiY1NDY3NQ4BFRQWMjY1NCbzGhERGhF+JCtmkWcrJEBPjMeMUL8RDt8PEREP3w7cSRhNLUlmZkktTRhJHHdIZIyMZEh3AAQAAP/gAgAB4QAHAA8AHwDCAAAAIgYUFjI2NCYiBhQWMjY0NyEiBhURFBYzITI2NRE0JgcUDwEUDwEGDwEXFhcVFBcmPQE0LgEjMCMHHQEUFyYnOQE9NjQiHQEUBzY9ASMiDgEdARQGBzY9ASMiLgEnHgE7AjU2PwEnJi8BJi8BJjUwNTQ/AScmNTQ3Fhc7ATYyFzsBNjcWFRQHFRcWFzABUxgSEhgRkxkRERkRoP78NEpKNAEENEpKCwYCAgIZSwYEDgIGHQUEAQECBBoBDRwFBAEDBg8MBR0XGhULDC0UHQMCEgUHTxwDAQECCB0BAQQGJCMBAR09HwIBHyYHAgEeAQElERkRERkRERkRERnMSjT+/DRKSjQBBDRKyBcUBAIFBDELAQUPElYKBwIQSAQFAQECVQkHAhMBAQEBAQEBAQEBAQEBAQEBAQEBAgEBAQECAQECAQECAQECAQIBAQIBAgECAgECAQIBAgECAgEJBgZSEAEHB1oBBQRKBwsBBwk7GSgJAioCFA4FAQkxBQIEBRQaAi4eAgEPEBITAhgGBhYEFxQKCQIBJTEABQAA/+ECAQHiABMAHwAvAFcAYwAANyYGFRQWMzI1NCcuBicuAgYeARcyMTI2JyY3ISIGFREUFjMhMjY1ETQmBxQHDgEVFBceARUUBiMiJjU0NjMyNjMmNTQ3BiMiJjU0NjsBByMeARcjFSM1IzUzNTMVM6IgLykfTwIBAwUFCQUMAw0HKhgHIxUBFBgEA7b+/DRKSjQBBDRKSsAeDQgcFhA5MS9APiwEDAMPBgQGJS46JWwYIxES1EIZQ0MZQqUBIhcYIjgGBQQHBgUHAwkCBMsBJTcoASYbHJhKM/77NEpKNAEFM0qxIRgKDAkOFA8fGCAuIxwfLwEODwoLAS4hIDASBiMhQkIZQ0MAAAMAAP/gAgAB4QAPABMALgAAASEiBhURFBYzITI2NRE0JgMjNTM2BgcOARUjNTQ+ATc2NCYjIgYHJz4BMzIXFhUBgv78NEpKNAEENEpKjV1dWBYiFw1YChQkEw8QERUDWwU/QTMgKgHgSjT+/DRKSjQBBDRK/kBeqCUbExYdExccGB0QGQ8WHAwyPRYcMAAAAAf//v/hAf8B4gAPABkAHQAnACsALwAzAAABISIGFREUFjMhMjY1ETQmExQGKwEiJj0BITUhNSE1ITU0NjsBMhYVJTM1IxcjFTMVIxUzAYH++zNKSjMBBTRKSio8JvskPgG//kIBvv5CPCX7Jjz+4YKCgoKCgoIB4Uoz/vs0Sko0AQUzSv6BJTw8JSEffx8eJD09JBIfnx+AHgAAAAUAAP/hAgEB4gAHAA8AHwA9AFgAACQyNjQmIgYUAiIGFBYyNjQ3ISIGFREUFjMhMjY1ETQmARUjIiY3PgE7ATUjNTQ2NzYzNhceAR0BFAYrASIGBQ4BKwEVMxUUBwYnJj0BNDY7ATI2PQEzMhcWASgQCgoQCkUPCwsPC57+/DRKSjQBBDRKSv7ZIigYDAUiFodiEx4WGRoZFRwdFGIZJAE5CBUUk2IxMTExHRRiGSUkJQ0OMAsQCwsQAVkLDwsLD1hKM/77NEpKNAEFM0r+zi1kMhgaDCUXFwUEAQUDHBRdFR0kGxoYDCYkDg4ODyNeFB0lGisxOgAABAAE/+wB8gHfAB8AJwBCAEoAAAEmIyIHDgEdATMVIyIGBw4BFxY7ATU0NjsBMjY9ATQmBiImNDYyFhQFJisBFRQGKwEiBh0BFBcWNzY9ASM1MzI2NzYGMhYUBiImNAE2HiAeGyMYd6QbKAcIAQkOMSksHncZIyOAEg0NEg0BFg8tLSwedxgjOzs8PHeyGBkLEdQTDQ0TDQHaBQUGHBwtDyAdIjMkPDYeLCQZcRgiSQ0TDQ0Tfzw1HywkGXErEhEREistDx4fM50NEw0NEwAAAAT//v/gAf8B4QAHAA8AHwA9AAASBhQWMjY0Jhc0JiM1MhYVNyEiBhURFBYzITI2NRE0JhMHBiIvASY0PwEnBiYnJjQ2MhceAQcXNzYyHwEWFH07O1M7Ow0oHCIwlv77M0pKMwEFNEpKIzQGEQZ+BgYOHydlJCdObycjBh4fDgYRBX8GAZ47Uzs7UztxHCgNLyKzSjT+/DRKSjQBBDRK/l01BQV/BhEGDh4eBiQnbk4nJGQnHw4GBn8GEAAAAwAA/+ECAQHiAA8AHAAlAAABISIGFREUFjMhMjY1ETQmBTM1MxUzFSMVIzUjJwUjFSM1IzUhFwGC/vw0Sko0AQQ0Skr+rYskj48kizQBbYokjQE7NAHhSjP++zRKSjQBBTNKYB8fYR8fMM9/f2EwAAgAAP/hAgEB4gAPABMAFwAbAB8AJwArAC8AAAEhIgYVERQWMyEyNjURNCYHFwcnBxcHJwcXBycVMxUjFyE1MxUzNTMvATcXNyc3FwGC/vw0Sko0AQQ0Skr6hxOJE5kJmwegBKChod/+4yHdHxZaIFYEDCYIAeFKM/77NEpKNAEFM0p+WB1ULC4hKiURIw4aJ0KvkZE8hhWIAqACoAAAAAAFABD/4AHwAeAAAwALAA8AEwAXAAATMxUjFyEyNjchHgETMxEjEzMRIxMzESM+QkI/AQUiOhH+IRE6TUNDa0JCakNDAP/BXiMdHSMBnv7AAQD/AAGh/l8AAwAA/+ECAAHfAAkAlwElAAAlNyMnByMXBzcXByYnNicmJwYXFhcmJzY3NicGBwYXJic2NzYnBgcGFyY1NDcWNzY3JgcGBzY3Fjc2NyYHBgc2NxYzMjc0JyYHNjc2JgcGBzY3NicGBwYXBgc2NzYnBgcGFwYHJicmJwYXFhcUFRQXJicmBxQXFjcWFyYnJgceARcWNzAmJxYXIgcGBx4BNzY3FhcwMzI3NjcGBzY1NDU2NzYnBgcGByYnNicmJwYXFhcmJzYnJicGFxYXJicmBhcWFyYHBhUWMzI3FhcmJyYHFhcWNxYXJicmBxYXFjcWFRQHNicmJwYXFhcGBzYnJicGFxYXBgc2NzYnBgcGFwYHBhcWMzIxNjcWFxY2NyYnJiM2NzAGMRY3PgE3JgcGBzY3Fjc2NSYBKUBMHRhMQR5BQFAKCQUNCxIRCQQJHxkRBAMNGwUDBBELFQwKBhsMCAELARMSEAMUEgkGBw8OFBMSChYMDBMZBxcTIxwNDxUVCAMIEhIIBhgGLBURChgSBQIJDCAGBREPCAEDCBMRDAkWCAYGFhYYFRgQGxAUHhUHGg8dFAEBIysUEiAJDyURHQIJCQEHAQHbBgYIFgkMERMIAwEIDxEFBiAMCQIFEhgKERUsBhgGCBISCAMIFRUPDRwjExcHGRMMDBYKEhMUDg8HBgkSFAQPEhMBCwEIDBsGCgwVCxEEAwUbDQMEERkfCQQJERILDQUKCQgBAQcBCQkCHRElDwkfExQrIwIUHQ8aBxUeFBAbEBgVGBbyL0ZGL1I0NHEBAh8fGQIiGgwIDBYXHBoNExoMDRQXChgVFAIWDhEgIAIIAg4OGAwOBwwfGw0GBRQTAwIJGBEODBEDAgQJBQEQAQQHBgQUDQYZEw8QFQoIGw0UHxoNGh8MChwFIh4YAQoEHR0IBRMHKBIPDyIaDQIEFBEVAQEgAQEfDQoRHwoBCREnAgEHCJUFCBweBAoBGB4iBRwKDB8aDRofFAwcCAoVEA8TGQYNFAQGBwQBEAEFCQQCAxEMDhEYCQIDExQFBg0bHwwHDgwYDg4CCAIgIBEOFgIUFRgKFxQNDBoTDRocFxYMCAwaIgIZHx8CAQEIBwECJxEJAQofEQoNHwIgAQEVERQEAg0aIg8PEigHAAAAAAUAAP/gAgAB4QACAAUAFQAdACUAACUzJwczJzchIgYVERQWMyEyNjURNCYBJyMHIzczFzMnIwcjEzMTATs+H+YgEP7+/DRKSjQBBDRKSv72DjUPLEQkQsITWxQxWzBZ0naSSuBKNP78NEpKNAEENEr+gjAw1NRAQAEc/uQAAAAABP/+/+AB/wHhAA8ALQBjAGsAABchMjY1ETQmIyEiBhURFBYTNjsBMjMyFx4BBh0BHAIOAQcGKwEqAi4BLwE2ByY2NyY2Nz4CMhY7ARYfAQ4BBwYHDgEHDgEHHAEjDgEnLgEnJjc+ATc2NyImIiYnJjY3JjQEMjY0JiIGFHwBBTRKSjT++zNKSvYDGDkBAiADAQEBAgUFAhUYBREKDAkCEQLoDQcNBwIFBxYiGiwKIAcMEgIFARQQBRMCCRQBAgIQBwgNAQIKAw0CBQEOJSAcBgULChEBMhMODhMOIEo0AQQ0Sko0/vw0SgGjAQsFEBQEWgQTCg0IAQEBBAO2CGYIJwQHFQYICQMBAQm8AwkBIQ4ECwEGHQwBGQUIAgMXDBoQBQ4FCREBCgoLIAUGKzQOFA4OFAAE//7/4AH/AeEADwAtAGYAbgAAASEiBhURFBYzITI2NRE0JgMGKwEiIyInJjQ2PQE0Jj4CNzY7AToCHgEfAQY3FgYHFgYHDgIiJiMiBiInJi8BPgE3Njc+ATc+ATc0JjM+ARceARcWBw4BBwYHMhYyFhcWBgcWFAQiBhQWMjY0AYH++zNKSjMBBTRKSvYEFzoBASADAgEBAQEGBQIVGAQSCgwIAxEC6AwHDQcBBgYXIRotCQQOCwMHDREBBQEVEAQUAgkTAgECAw8HCQ0BAgoEDAMEAg8kIRsGBgsKEP7PFA4OFA4B4Eo0/vw0Sko0AQQ0Sv5dAQsFEBUDWgQTCg0IAQEBBAO2CGYIJwQHFQYICQMBAQEBCbwDCQEhDgQLAQYdDAEZBQgCAxcMGhAFDgUJEQEKCgsgBQYrIw4UDg4UAAMAAP/hAgEB4gAHABcAQQAAACIGFBYyNjQ3ISIGFREUFjMhMjY1ETQmBxYOASMiJxY3LgEnFjcuATcWFy4BNx4BFyY2MzIXPgI3DgEHNhY3DgEBYhMNDRMNE/78NEpKNAEENEpKHgM0cElEOkQ2GyoIExIdJgESExsOEB9YMwkxKCMZCBsjAgQnDQQ3AgYuAVENEw4OE51KM/77NEpKNAEFM0rFO2tIJQgqASAZBAUGLx0KARNAGyYtAyc+GgIOFwEOMAgBAQQKGAAAAAMAHgAjAd8BoQADAAkADwAAEzcXBxUnBxc3JwcnBxc3Jx/h39+VTOHfTJOVTOHfTAFDXl5fIT8gX18gnz8gX18gAAAABwA8/+EBxAHfAAcADwAZACEAKwAzAEkAADYyNjQmIgYUFjI2NCYiBhQXIgcWHQEzNTQmJDI2NCYiBhQXIgYdATM1NDcmNiIGHQEzNTQTNCYjIgYVFBYXBzcWHwE3MjcXJz4B6ysfHysfoSIYGCIYNB4SBmUj/tAiGBgiGB4YI2UGEos/LZlxb09Oby4mCDAUFBkYFRUwCScuix4rHx8rLRgiGBgiKhcNDzcyFyESGCIYGCIqIRcyNw8NFxEqHlFRHgFOGyUlGxAcCFdQAgFhYQNQVwgcAAAAAv///+ACAAHBAAYAEwAAExc3IzUjFRcHJyMVFBYzITI2PQFBv75fv9BwcJFKNAEFNEkBIL+/oKB+cXFEM0pKM0QAAAAIAAD/4QH/AeIAEAAdACIAJgAqAC4AMgA3AAABERQGDwERBREUFjMhMjY1EQMGIwYjIiY1PAIVIQc1IRUhBTMVIxUhFSE1MxUjFTMVIyU1IxUzAd8QCAj+QUo0AQM0Sl8NGNUjIz8Bfx/+wgE+/sKdnQE9/sOdnZ2dAT6CggGB/uEVIAYFAcAB/n4zSkozASL+jgwBPSQVrpwBOBg/PyGfIKAhHiEifqAAAAAAAwAA/+ACAQHBABcAOwBIAAAlBxUUBiImPQEnIicVFBYzITI2PQEOAicjNTYnJisBIgcGHQEjIgYdARQWMxcVFBYyNj0BNzI2PQE0JiU2NzY7ATIXFhUUFSMBwpIeIx6SIh0lGgGDGSUDCyEPYgESEh1BHRESYBolJRqqDhMOqhklJf7lAQcID0EQCAd/jRkPEBkZEA8ZII0aJSUajQQLEdQhHREREREdISUaQBolHBoKDg4KGhwlGkAaJSEPBwgIBw8LFgAAAAAFACAAAwHcAb8ABwANABoAJAArAAAAIgYUFjI2NAUnNjcXBhYiJjU0NycXNjMyFhQnIgcnNjMyFwcmFyYnNx4BFwFauIGBuIH+dwsRLxEocCccAjdXBwcTHC8SERMvOBoaKh2DGTsqMkEFAb+Ct4KCtzELOSZADcccFAYIVjcCHCfAA0ceB2UKbD0dZxRWNwAFACAAAwHcAb8ABwANABgAIgApAAAAIgYUFjI2NAUnNjcXBhYiJjU0PwEXFhUUJyIHJzYzMhcHJhcmJzceARcBWriBgbiB/ncLES8RKHAnHBsWFhgvEhETLzgaGiodgxk7KjJBBQG/greCgrcxCzkmQA3HHBQeDWNlDhsUwANHHgdlCmw9HWcUVjcAAAUAIAADAdwBvwAHABEAFwAkACsAAAAiBhQWMjY0JzIXByYjIgcnNgcnNjcXBhcWFRQGIiY0NjMyFzcXJic3HgEXAVq4gYG4gd0aGiodHhIREy90CxEvESiLARwnHBwUCQhVOxk7KjJBBQG/greCgrdjB2UKA0celAs5JkANjQUFFBwcJxwDNyM9HWcUVjcAAAMAIQACAd8BvwAHAA8ALQAAEgYUFjI2NCYXNCYjNTIWFRcHBiIvASY0PwEnBiYnJjQ2MhceAQcXNzYyHwEWFH07O1M7Ow0oHCIw7TQGEQZ+BgYOHydlJCdObycjBh4fDgYRBX8GAZ47Uzs7UztxHCgNLyLwNQUFfwYRBg4eHgYkJ25OJyRkJx8OBgZ/BhAAAAEAAP/gAgAB4AACAAARASECAP4AAeD+AAAAAAAAAAwAlgABAAAAAAABAAoAFgABAAAAAAACAAcAMQABAAAAAAADACUAhQABAAAAAAAEAAoAwQABAAAAAAAFAAsA5AABAAAAAAAGAAoBBgADAAEECQABABQAAAADAAEECQACAA4AIQADAAEECQADAEoAOQADAAEECQAEABQAqwADAAEECQAFABYAzAADAAEECQAGABQA8ABQAHkAdABoAG8AbgBpAGMAbwBuAABQeXRob25pY29uAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAABGAG8AbgB0AEYAbwByAGcAZQAgADIALgAwACAAOgAgAFAAeQB0AGgAbwBuAGkAYwBvAG4AIAA6ACAANgAtADMALQAyADAAMQAzAABGb250Rm9yZ2UgMi4wIDogUHl0aG9uaWNvbiA6IDYtMy0yMDEzAABQAHkAdABoAG8AbgBpAGMAbwBuAABQeXRob25pY29uAABWAGUAcgBzAGkAbwBuACAAMQAuADAAAFZlcnNpb24gMS4wAABQAHkAdABoAG8AbgBpAGMAbwBuAABQeXRob25pY29uAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAAQACAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoB3VuaUUwMDAHdW5pRTAwMQd1bmlFMDAyB3VuaUUwMDMHdW5pRTAwNAd1bmlFMDA1B3VuaUUwMDYHdW5pRTAwNwd1bmlFMDA4B3VuaUUwMEEHdW5pRTAwQgd1bmlFMDBDB3VuaUUwMEQHdW5pRTAwRQd1bmlFMDBGB3VuaUUwMTAHdW5pRTAxMQd1bmlFMDE0B3VuaUUwMTUHdW5pRTAxNgd1bmlFMDE3B3VuaUUwMTgHdW5pRTAxOQd1bmlFMDFBB3VuaUUwMUIHdW5pRTAxQwd1bmlFMDFEB3VuaUUwMUUHdW5pRTAxRgd1bmlFMDIwB3VuaUUwMjEHdW5pRTAwOQd1bmlFMDEyB3VuaUUwMTMHdW5pRTAyMgd1bmlFMDIzB3VuaUUwMjQHdW5pRTAyNQd1bmlGMDAwAAAAAAAB//8AAgABAAAADgAAABgAAAAAAAIAAQADACkAAQAEAAAAAgAAAAAAAQAAAADMPaLPAAAAAM1dFikAAAAAzV0WKQ==) format('truetype'); + src: url(data:application/x-font-woff;charset=utf-8;base64,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) format('woff'), + url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype'); font-weight: normal; font-style: normal; } -/* Use the following CSS code if you want to use data attributes for inserting your icons */ -[data-icon]:before { - font-family: 'Pythonicon'; - content: attr(data-icon); - speak: none; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; +[class^="icon-"], [class*=" icon-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'Pythonicon' !important; + speak: never; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } -/* Use the following CSS code if you want to have a class per icon */ -/* -Instead of a list of all class selectors, -you can use the generic selector below, but it's slower: -[class*="icon-"]:before { -*/ -.icon-alert:before, .icon-arrow-down:before, .icon-arrow-left:before, .icon-arrow-right:before, .icon-arrow-up:before, .icon-calendar:before, .icon-close:before, .icon-code:before, .icon-documentation:before, .icon-email:before, .icon-facebook:before, .icon-feed:before, .icon-freenode:before, .icon-get-started:before, .icon-github:before, .icon-help:before, .icon-pypi:before, .icon-python:before, .icon-python-alt:before, .icon-search:before, .icon-sitemap:before, .icon-stack-overflow:before, .icon-statistics:before, .icon-success-stories:before, .icon-text-resize:before, .icon-thumbs-down:before, .icon-thumbs-up:before, .icon-twitter:before, .icon-versions:before, .icon-community:before, .icon-download:before, .icon-news:before, .icon-jobs:before, .icon-beginner:before, .icon-moderate:before, .icon-advanced:before, .icon-search-alt:before { - font-family: 'Pythonicon'; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; +.icon-bullhorn:before { + content: "\e600"; } -.icon-alert:before { - content: "\e000"; +.icon-python-alt:before { + content: "\e601"; } -.icon-arrow-down:before { - content: "\e001"; +.icon-pypi:before { + content: "\e602"; } -.icon-arrow-left:before { - content: "\e002"; +.icon-news:before { + content: "\e603"; } -.icon-arrow-right:before { - content: "\e003"; +.icon-moderate:before { + content: "\e604"; } -.icon-arrow-up:before { - content: "\e004"; +.icon-mercurial:before { + content: "\e605"; } -.icon-calendar:before { - content: "\e005"; +.icon-jobs:before { + content: "\e606"; } -.icon-close:before { - content: "\e006"; +.icon-help:before { + content: "\3f"; } -.icon-code:before { - content: "\e007"; +.icon-download:before { + content: "\e609"; } .icon-documentation:before { - content: "\e008"; + content: "\e60a"; } -.icon-email:before { - content: "\e00a"; +.icon-community:before { + content: "\e60b"; } -.icon-facebook:before { - content: "\e00b"; +.icon-code:before { + content: "\e60c"; } -.icon-feed:before { - content: "\e00c"; +.icon-close:before { + content: "\58"; } -.icon-freenode:before { - content: "\e00d"; +.icon-calendar:before { + content: "\e60e"; } -.icon-get-started:before { - content: "\e00e"; +.icon-beginner:before { + content: "\e60f"; } -.icon-github:before { - content: "\e00f"; +.icon-advanced:before { + content: "\e610"; } -.icon-help:before { - content: "\e011"; +.icon-sitemap:before { + content: "\e611"; } -.icon-pypi:before { - content: "\e014"; +.icon-search:before { + content: "\e612"; +} +.icon-search-alt:before { + content: "\e613"; } .icon-python:before { - content: "\e015"; + content: "\e614"; } -.icon-python-alt:before { - content: "\e016"; +.icon-github:before { + content: "\e615"; } -.icon-search:before { - content: "\e017"; +.icon-get-started:before { + content: "\e616"; } -.icon-sitemap:before { - content: "\e018"; +.icon-feed:before { + content: "\e617"; } -.icon-stack-overflow:before { - content: "\e019"; +.icon-facebook:before { + content: "\e618"; } -.icon-statistics:before { - content: "\e01a"; +.icon-email:before { + content: "\e619"; } -.icon-success-stories:before { - content: "\e01b"; +.icon-arrow-up:before { + content: "\e61a"; } -.icon-text-resize:before { - content: "\e01c"; +.icon-arrow-right:before { + content: "\e61b"; } -.icon-thumbs-down:before { - content: "\e01d"; +.icon-arrow-left:before { + content: "\e61c"; } -.icon-thumbs-up:before { - content: "\e01e"; +.icon-arrow-down:before { + content: "\e61d"; } -.icon-twitter:before { - content: "\e01f"; +.icon-freenode:before { + content: "\e61e"; +} +.icon-alert:before { + content: "\e61f"; } .icon-versions:before { - content: "\e020"; + content: "\e620"; } -.icon-community:before { - content: "\e021"; +.icon-twitter:before { + content: "\e621"; } -.icon-download:before { - content: "\e009"; +.icon-thumbs-up:before { + content: "\e622"; } -.icon-news:before { - content: "\e012"; +.icon-thumbs-down:before { + content: "\e623"; } -.icon-jobs:before { - content: "\e013"; +.icon-text-resize:before { + content: "\e624"; } -.icon-beginner:before { - content: "\e022"; +.icon-success-stories:before { + content: "\e625"; } -.icon-moderate:before { - content: "\e023"; +.icon-statistics:before { + content: "\e626"; } -.icon-advanced:before { - content: "\e024"; +.icon-stack-overflow:before { + content: "\e627"; } -.icon-search-alt:before { - content: "\e025"; +.icon-mastodon:before { + content: "\e900"; } diff --git a/static/sass/_fonts.scss b/static/sass/_fonts.scss index 6154dcef1..a12d69881 100644 --- a/static/sass/_fonts.scss +++ b/static/sass/_fonts.scss @@ -5,134 +5,137 @@ */ -@font-face { + @font-face { font-family: 'Pythonicon'; - src: url('../fonts/Pythonicon.eot'); + src:url('../fonts/Pythonicon.eot'); } @font-face { font-family: 'Pythonicon'; - src: url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype'), - url(data:application/font-woff;charset=utf-8;base64,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) format('woff'); + src: url(data:application/x-font-woff;charset=utf-8;base64,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) format('woff'), + url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype'); font-weight: normal; font-style: normal; } - -.icon-megaphone:before { - content: "\e600"; + +.icon-bullhorn:before { + content: "\e600"; } .icon-python-alt:before { - content: "\e601"; + content: "\e601"; } .icon-pypi:before { - content: "\e602"; + content: "\e602"; } .icon-news:before { - content: "\e603"; + content: "\e603"; } .icon-moderate:before { - content: "\e604"; + content: "\e604"; } .icon-mercurial:before { - content: "\e605"; + content: "\e605"; } .icon-jobs:before { - content: "\e606"; + content: "\e606"; } .icon-help:before { - content: "\3f"; + content: "\3f"; } .icon-download:before { - content: "\e609"; + content: "\e609"; } .icon-documentation:before { - content: "\e60a"; + content: "\e60a"; } .icon-community:before { - content: "\e60b"; + content: "\e60b"; } .icon-code:before { - content: "\e60c"; + content: "\e60c"; } .icon-close:before { - content: "\58"; + content: "\58"; } .icon-calendar:before { - content: "\e60e"; + content: "\e60e"; } .icon-beginner:before { - content: "\e60f"; + content: "\e60f"; } .icon-advanced:before { - content: "\e610"; + content: "\e610"; } .icon-sitemap:before { - content: "\e611"; + content: "\e611"; } .icon-search-alt:before { - content: "\e612"; + content: "\e612"; } .icon-search:before { - content: "\e613"; + content: "\e613"; } .icon-python:before { - content: "\e614"; + content: "\e614"; } .icon-github:before { - content: "\e615"; + content: "\e615"; } .icon-get-started:before { - content: "\e616"; + content: "\e616"; } .icon-feed:before { - content: "\e617"; + content: "\e617"; } .icon-facebook:before { - content: "\e618"; + content: "\e618"; } .icon-email:before { - content: "\e619"; + content: "\e619"; } .icon-arrow-up:before { - content: "\e61a"; + content: "\e61a"; } .icon-arrow-right:before { - content: "\e61b"; + content: "\e61b"; } .icon-arrow-left:before { - content: "\e61c"; + content: "\e61c"; } .icon-arrow-down:before { - content: "\e61d"; + content: "\e61d"; } .icon-freenode:before { - content: "\e61e"; + content: "\e61e"; } .icon-alert:before { - content: "\e61f"; + content: "\e61f"; } .icon-versions:before { - content: "\e620"; + content: "\e620"; } .icon-twitter:before { - content: "\e621"; + content: "\e621"; } .icon-thumbs-up:before { - content: "\e622"; + content: "\e622"; } .icon-thumbs-down:before { - content: "\e623"; + content: "\e623"; } .icon-text-resize:before { - content: "\e624"; + content: "\e624"; } .icon-success-stories:before { - content: "\e625"; + content: "\e625"; } .icon-statistics:before { - content: "\e626"; + content: "\e626"; } .icon-stack-overflow:before { - content: "\e627"; + content: "\e627"; +} +.icon-mastodon:before { + content: "\e900"; } @@ -143,7 +146,7 @@ */ /*modernizr*/ .no-fontface, .no-svg, .no-generatedcontent { - .icon-megaphone, .icon-python-alt, .icon-pypi, .icon-news, .icon-moderate, .icon-mercurial, .icon-jobs, .icon-help, .icon-download, .icon-documentation, .icon-community, .icon-code, .icon-close, .icon-calendar, .icon-beginner, .icon-advanced, .icon-sitemap, .icon-search, .icon-search-alt, .icon-python, .icon-github, .icon-get-started, .icon-feed, .icon-facebook, .icon-email, .icon-arrow-up, .icon-arrow-right, .icon-arrow-left, .icon-arrow-down, .icon-freenode, .icon-alert, .icon-versions, .icon-twitter, .icon-thumbs-up, .icon-thumbs-down, .icon-text-resize, .icon-success-stories, .icon-statistics, .icon-stack-overflow { + .icon-megaphone, .icon-python-alt, .icon-pypi, .icon-news, .icon-moderate, .icon-mercurial, .icon-jobs, .icon-help, .icon-download, .icon-documentation, .icon-community, .icon-code, .icon-close, .icon-calendar, .icon-beginner, .icon-advanced, .icon-sitemap, .icon-search, .icon-search-alt, .icon-python, .icon-github, .icon-get-started, .icon-feed, .icon-facebook, .icon-email, .icon-arrow-up, .icon-arrow-right, .icon-arrow-left, .icon-arrow-down, .icon-freenode, .icon-alert, .icon-versions, .icon-twitter, .icon-thumbs-up, .icon-thumbs-down, .icon-text-resize, .icon-success-stories, .icon-statistics, .icon-stack-overflow, .icon-mastodon { &:before { display: none; @@ -159,7 +162,7 @@ /* Show in IE8: supports FontFace (eot) but not SVG. */ .ie8 { - .icon-megaphone, .icon-python-alt, .icon-pypi, .icon-news, .icon-moderate, .icon-mercurial, .icon-jobs, .icon-help, .icon-download, .icon-documentation, .icon-community, .icon-code, .icon-close, .icon-calendar, .icon-beginner, .icon-advanced, .icon-sitemap, .icon-search, .icon-search-alt, .icon-python, .icon-github, .icon-get-started, .icon-feed, .icon-facebook, .icon-email, .icon-arrow-up, .icon-arrow-right, .icon-arrow-left, .icon-arrow-down, .icon-freenode, .icon-alert, .icon-versions, .icon-twitter, .icon-thumbs-up, .icon-thumbs-down, .icon-text-resize, .icon-success-stories, .icon-statistics, .icon-stack-overflow { + .icon-megaphone, .icon-python-alt, .icon-pypi, .icon-news, .icon-moderate, .icon-mercurial, .icon-jobs, .icon-help, .icon-download, .icon-documentation, .icon-community, .icon-code, .icon-close, .icon-calendar, .icon-beginner, .icon-advanced, .icon-sitemap, .icon-search, .icon-search-alt, .icon-python, .icon-github, .icon-get-started, .icon-feed, .icon-facebook, .icon-email, .icon-arrow-up, .icon-arrow-right, .icon-arrow-left, .icon-arrow-down, .icon-freenode, .icon-alert, .icon-versions, .icon-twitter, .icon-thumbs-up, .icon-thumbs-down, .icon-text-resize, .icon-success-stories, .icon-statistics, .icon-stack-overflow, .icon-mastodon { &:before { display: inline; diff --git a/static/sass/style.css b/static/sass/style.css index 472737c2a..ad49c77b4 100644 --- a/static/sass/style.css +++ b/static/sass/style.css @@ -3391,7 +3391,7 @@ span.highlighted { */ /* ! ===== ICONS ===== */ /* Look inside _fonts.scss for most of the code. We declare this here so we can adjust as needed for specific elements. */ -.icon-megaphone, .icon-python-alt, .icon-pypi, .icon-news, .icon-moderate, .icon-mercurial, .icon-jobs, .icon-help, .icon-download, .icon-documentation, .icon-community, .icon-code, .icon-close, .icon-calendar, .icon-beginner, .icon-advanced, .icon-sitemap, .icon-search, .icon-search-alt, .icon-python, .icon-github, .icon-get-started, .icon-feed, .icon-facebook, .icon-email, .icon-arrow-up, .icon-arrow-right, .icon-arrow-left, .icon-arrow-down, .errorlist:before, .icon-freenode, .icon-alert, .icon-versions, .icon-twitter, .icon-thumbs-up, .icon-thumbs-down, .icon-text-resize, .icon-success-stories, .icon-statistics, .icon-stack-overflow { +.icon-megaphone, .icon-python-alt, .icon-pypi, .icon-news, .icon-moderate, .icon-mercurial, .icon-jobs, .icon-help, .icon-download, .icon-documentation, .icon-community, .icon-code, .icon-close, .icon-calendar, .icon-beginner, .icon-advanced, .icon-sitemap, .icon-search, .icon-search-alt, .icon-python, .icon-github, .icon-get-started, .icon-feed, .icon-facebook, .icon-email, .icon-arrow-up, .icon-arrow-right, .icon-arrow-left, .icon-arrow-down, .errorlist:before, .icon-freenode, .icon-alert, .icon-versions, .icon-twitter, .icon-thumbs-up, .icon-thumbs-down, .icon-text-resize, .icon-success-stories, .icon-statistics, .icon-stack-overflow, .icon-mastodon { font-family: 'Pythonicon'; speak: none; font-style: normal; @@ -3406,7 +3406,7 @@ span.highlighted { /* Hide a unicode fallback character when we supply it by default. * In fonts.scss, we hide the icon and show the fallback when other conditions are not met */ } - .icon-megaphone span, .icon-python-alt span, .icon-pypi span, .icon-news span, .icon-moderate span, .icon-mercurial span, .icon-jobs span, .icon-help span, .icon-download span, .icon-documentation span, .icon-community span, .icon-code span, .icon-close span, .icon-calendar span, .icon-beginner span, .icon-advanced span, .icon-sitemap span, .icon-search span, .icon-search-alt span, .icon-python span, .icon-github span, .icon-get-started span, .icon-feed span, .icon-facebook span, .icon-email span, .icon-arrow-up span, .icon-arrow-right span, .icon-arrow-left span, .icon-arrow-down span, .errorlist:before span, .icon-freenode span, .icon-alert span, .icon-versions span, .icon-twitter span, .icon-thumbs-up span, .icon-thumbs-down span, .icon-text-resize span, .icon-success-stories span, .icon-statistics span, .icon-stack-overflow span { + .icon-megaphone span, .icon-python-alt span, .icon-pypi span, .icon-news span, .icon-moderate span, .icon-mercurial span, .icon-jobs span, .icon-help span, .icon-download span, .icon-documentation span, .icon-community span, .icon-code span, .icon-close span, .icon-calendar span, .icon-beginner span, .icon-advanced span, .icon-sitemap span, .icon-search span, .icon-search-alt span, .icon-python span, .icon-github span, .icon-get-started span, .icon-feed span, .icon-facebook span, .icon-email span, .icon-arrow-up span, .icon-arrow-right span, .icon-arrow-left span, .icon-arrow-down span, .errorlist:before span, .icon-freenode span, .icon-alert span, .icon-versions span, .icon-twitter span, .icon-thumbs-up span, .icon-thumbs-down span, .icon-text-resize span, .icon-success-stories span, .icon-statistics span, .icon-stack-overflow span, .icon-mastodon span { display: none; } /* Keep this at the bottom since it will create a huge set of data */ @@ -3415,130 +3415,138 @@ span.highlighted { * Be sure to upgrade to at least 0.12.1 to have this work properly. * in Terminal, gem install compass --version '= 0.12.1' */ + @font-face { + font-family: 'Pythonicon'; + src:url('../fonts/Pythonicon.eot'); +} @font-face { - font-family: 'Pythonicon'; - src: url("../fonts/Pythonicon.eot"); } -@font-face { - font-family: 'Pythonicon'; - src: url(data:application/x-font-ttf;charset=utf-8;base64,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) format("truetype"), url(data:application/font-woff;charset=utf-8;base64,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) format("woff"); - font-weight: normal; - font-style: normal; } -.icon-megaphone:before { - content: "\e600"; } - -.icon-python-alt:before { - content: "\e601"; } - -.icon-pypi:before { - content: "\e602"; } - -.icon-news:before { - content: "\e603"; } - -.icon-moderate:before { - content: "\e604"; } - -.icon-mercurial:before { - content: "\e605"; } - -.icon-jobs:before { - content: "\e606"; } - -.icon-help:before { - content: "\3f"; } - -.icon-download:before { - content: "\e609"; } - -.icon-documentation:before { - content: "\e60a"; } - -.icon-community:before { - content: "\e60b"; } - -.icon-code:before { - content: "\e60c"; } - -.icon-close:before { - content: "\58"; } - -.icon-calendar:before { - content: "\e60e"; } - -.icon-beginner:before { - content: "\e60f"; } - -.icon-advanced:before { - content: "\e610"; } - -.icon-sitemap:before { - content: "\e611"; } - -.icon-search-alt:before { - content: "\e612"; } - -.icon-search:before { - content: "\e613"; } - -.icon-python:before { - content: "\e614"; } - -.icon-github:before { - content: "\e615"; } - -.icon-get-started:before { - content: "\e616"; } - -.icon-feed:before { - content: "\e617"; } - -.icon-facebook:before { - content: "\e618"; } - -.icon-email:before { - content: "\e619"; } - -.icon-arrow-up:before { - content: "\e61a"; } - -.icon-arrow-right:before { - content: "\e61b"; } - -.icon-arrow-left:before { - content: "\e61c"; } - -.icon-arrow-down:before, .errorlist:before { - content: "\e61d"; } - -.icon-freenode:before { - content: "\e61e"; } - -.icon-alert:before { - content: "\e61f"; } - -.icon-versions:before { - content: "\e620"; } - -.icon-twitter:before { - content: "\e621"; } - -.icon-thumbs-up:before { - content: "\e622"; } - -.icon-thumbs-down:before { - content: "\e623"; } - -.icon-text-resize:before { - content: "\e624"; } - -.icon-success-stories:before { - content: "\e625"; } - -.icon-statistics:before { - content: "\e626"; } + font-family: 'Pythonicon'; + src: url(data:application/x-font-woff;charset=utf-8;base64,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) format('woff'), + url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBh4AAAC8AAAAYGNtYXDPws1/AAABHAAAAHxnYXNwAAAAEAAAAZgAAAAIZ2x5ZmlzfDUAAAGgAAArsGhlYWQmDfxCAAAtUAAAADZoaGVhB8MD6wAALYgAAAAkaG10eKYL/+kAAC2sAAAAsGxvY2HZ8NA+AAAuXAAAAFptYXhwADsBtAAALrgAAAAgbmFtZQhhTh0AAC7YAAABqnBvc3QAAwAAAAAwhAAAACAAAwP0AZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpAAPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAYAAAABQAEAADAAQAAQAgAD8AWOYG5gzmJ+kA//3//wAAAAAAIAA/AFjmAOYJ5g7pAP/9//8AAf/j/8X/rRoGGgQaAxcrAAMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAf//AA8AAQAA/8AAAAPAAAIAADc5AQAAAAABAAD/wAAAA8AAAgAANzkBAAAAAAEAAP/AAAADwAACAAA3OQEAAAAAAwAA/6sEAAPAAB8AIwBXAAABISIHDgEHBhURFBceARcWMyEyNz4BNzY1ETQnLgEnJgMjNTMTDgEHDgEHDgEVIzU0Njc+ATc+ATc+ATU0JicuASMiBgcOAQcnPgE3PgEzMhYXHgEVFAYHAwX99jQtLkQUFBQURC4tNAIKNC0uRBQUFBRELi3oubmcCy0iGB0HBgayBQUGDwoKLiQTEgcIBxcQEBwLCw4DtQUkIB9hQjNSICorCwsDqxQURC4uNP33NC4tRRQTExRFLS40Agk0Li5EFBT8f70BKhItGxMeCwwyEiYXJQ4OGgwLKh0QHA0NFAcHBwsLCyYcFzJQHx4fFRYcTTAUJhMAAv/+/60D/gPAAB8ALAAAASEiBw4BBwYVERQXHgEXFjMhMjc+ATc2NRE0Jy4BJyYTBycHJzcnNxc3FwcXAwL99zQuLUUUExMURS0uNAIJNC4uRBQUFBRELi4Em6Ggm6Cgm6Chm6CgA60UFEQuLTT99jQtLkQUFBQURC4tNAIKNC0uRBQU/V+boKCboKCboKCboKAAAAUAAP/ABAADwAAqAE4AYwBtAJEAAAE0Jy4BJyYnOAExIzAHDgEHBgcOARUUFhcWFx4BFxYxMzA0MTI3PgE3NjUDIiYnLgEnLgE1NDY3PgE3PgEzMhYXHgEXHgEVFAYHDgEHDgEBNDY3DgEjKgExBxUXMDIzMhYXLgEXJxMeAT8BPgEnASImJy4BJy4BNTQ2Nz4BNz4BMzIWFx4BFx4BFRQGBw4BBw4BBAAKCyMYGBtTIiN+V1hpBggIBmlYV34jIlMbGBgjCwqfBw4ECRIIEhISEggSCQQOBwcOBAkSCBETExEIEgkEDv2UBQYkQiYzETc3ETMmQiQGBXSAUgMWDHYMCQcBdgMFAgMHAwcHBwcDBwMCBQMDBQEEBwMHBwcHAwcEAQUCE0tCQ2MdHAEYGEEjIhYiUS4vUSIVIyJCGBgBHR1jQkJM/soLBAsgFS53QkJ3LhQhCgULCwUKIRQud0JCdy4VIAsECwE2J0sjBQVfWF8FBSNLrhj+vw0LBTAEFwwBQgUBBA0IES4aGS4SCAwEAgQEAgQMCBIuGRouEQgNBAEFAAQAAP/AA+MDwAAjAC8AUABcAAABLgEjIgYHDgEdATMVISIGBw4BFx4BOwE1NDY7ATI2PQE0JicHIiY1NDYzMhYVFAYFLgErARUUBisBIgYdARQWFx4BNz4BPQEjNSEyNjc2JicBMhYVFAYjIiY1NDYCbR8/Hh85Gkwr7v65NFMOEAERDT4zUlg97jFGRzDhExoaExIaGgJFDTY0WVk87jBGRy85ckMtSu0BZDQxEhMBEv6OExoaExIaGgOfBQQFBA47M1sePTxEZ0c0RGw7WUcy4zBECJoaExMaGhMTGuUzRWk+WUgx4zA7DhADEw05M1seQzY4ckj+OhoTExoaExMaAAAAB//+/60D/gPAAB8AMgA2AEkATQBRAFUAAAEhIgcOAQcGFREUFx4BFxYzITI3PgE3NjURNCcuAScmExQHDgEHBiMhIicuAScmPQEhFTUhNSE1ITU0Nz4BNzYzITIXHgEXFh0BJSE1IQEhFSERIRUhAwL99zQuLUUUExMURS0uNAIJNC4uRBQUFBRELi6IEBE2IyQl/golIyM3EREDffyDA338gxEQNyMjJgH2JSQjNhEQ/cIBBf77AQX++wEF/vsBBQOtFBRELi00/fY0LS5EFBQUFEQuLTQCCjQtLkQUFP0CJSMkNhEQEBE2JCMlQkKA/T48JCMjNxERERE3IyMkPGE+/sI+/wA9AAAAAAgAAP+uA/4DwAAeADkAPgBDAEgATQBSAFcAAAERFAYxMDU0EDU0NQURFBceARcWMyEyNz4BNzY1EQcDMAYjMCMqAQciIyInLgEnJjU0NTY0NTQxIREDNSEVIQUhFSE1ESEVITU1IRUhNRUhFSE1JTUhESEDvkD8ghQURC4tNAIHNC4uRBQUQH8lI0RErVFRGyIjIzgSEgEC/T39hAJ8/YQBO/7FAnv9hQE7/sUBO/7FAnz+/AEEAu39wkc6dXUBMZOUPgH8/DMuLkQUFBQURC4uMwJFAf0bGAERETYjIiQkcnL0YGD8nAL1MH5/QkL+gUFB/0JCfkFBAvz+wAAAAAAFAAD/wAO3A8AAHAAlADQAQwBQAAABIgcOAQcGFRQXHgEXFjMyNz4BNzY1NCcuAScmIwEnPgE3Fw4BBxMiJjU0Nj8BFx4BFRQGIxEiBgcnPgEzMhYXBy4BIwUuASc3FhceARcWFwcB/FtRUXgjIiIjeFFRW1xRUHgjIyMjeFFQXP6oFhFCLSIoRx31JzgfGCouFRs4KBEjECctaDkbNBlUHDsgAUMYWDlVMSoqPxQUBJwDaCMjeFFQXFtRUXgjIiIjeFFRW1xQUXgjI/6aFzlhJIANKx3+rDgoHC4MxsoMLBooOAG5AwOOHCAHB8sLCtk8XR3NFCAgUzIyN0EAAAAABgAA/6sEAgPAAA8AIAAtAF4AbAB5AAABMhYVERQGIyEiJjURNDYzJSEiBhURFBYzITI2NRE0JiMBNSMVIxEzFTM1MxEjFyImNTQ2Nyc0NjcuATU0NjMyFhceATMyNjcXDgEjHgEVFAYHIgYVFBYfAR4BFRQGIzcnDgEVFBYzMjY1NCYnAyIGFRQWMzI2NTQmIwNXEhkZEv1XERkZEQKp/VdGZWVGAqlHZGRH/k93QUF3QUH0OUMjFR0UDBQXOi8MEQcIEgsMFgYJAxEHBAY2MBARBQZAJitDOBgpFxwiISEhFRQbFRsbFRQdGxYDKhkR/VcSGRkSAqkRGYFlRv1XR2VlRwKpRmX9Vc7OAdHLy/4vnEIxJjEJIBAbBg8tHzA+AwIDAwcFNAMFCBsQLUABCQkECQIWDTYrLj6nDAIiHRkpJhYVIQUBFSMaGiMjGhojAAAAAAMAAP+sBAEDwAAZAEMAWAAAAQUVFAYjIiY9ASUiJjERFBYzITI2NREwBiMRIzU0JicuASsBIgYHDgEdASMiBh0BFBYzBRUUFjMyNj0BJTI2PQE0JiMlNDY3PgE7ATIWFx4BFRwBFSM8ATUDg/7dPiEiPf7cM0pKMwMFNEpKNMISEhExGoMaMBISEsAzSkozAVMcFBMcAVM0Sko0/f4IBwYXEYMSFgYHCP0BBDIeITAwIR4yQP7mNEpKNAEaQAGoQxswEREQEBERMBtDSjOANEo4NBQcHBQ0OEo0gDNKQxEVBgYJCQYGFRERIhAQIhEAAAL///+sA/8DwAAGABwAABMJASMRIREFBychFRQXHgEXFjMhMjc+ATc2PQEhgQF/AX2//oIBoODh/uAUFEQuLTQCCjMuLkQUFP7hAiv+gQF/AUD+wPzh4Yc0Li5EFBQUFEQuLjSHAAAABgAA/60EAAPAAA4ALgA7AEgAVQBnAAABBycDFzcXARcHFz8CASchIgcOAQcGFREUFx4BFxYzITI3PgE3NjURNCcuAScmASImNTQ2MzIWFRQGIzUiJjU0NjMyFhUUBiM1IiY1NDYzMhYVFAYjARQHDgEHBgclESEyFx4BFxYVAtsZWroooDP+tAokBh8kNAF+Of32NC0uRBQUFBRELi00Ago0LS5EFBQUFEQuLf0qExwcExQcHBQTHBwTFBwcFBMcHBMUHBwUA1gRETsoJy394AIgLScoOxERAxUnOf7cGv0g/fczOh8IOQwCWNcUFEQuLTT99jQtLkQUFBQURC4tNAIKNC0uRBQU/NIdExQdHRQTHf4cFBQcHBQUHP4cFBQcHBQUHP5QLScoOxISAQIDdxEROygnLQAABwAA/64DiAPAAAwAGQAmADMAQABKAGsAAAEyNjU0JiMiBhUUFjMXMjY1NCYjIgYVFBYzFyIGBx4BHQEzNTQmIyUyNjU0JiMiBhUUFjMHIgYdATM1NDY3LgEjJSIGHQEhNTQmIwE0Jy4BJyYjIgcOAQcGFRQWFwc3HgEfATc+ATcXJz4BNQIBKz09Kys9PSv7IjAwIiIwMCIWHjEQBgbJRTH98iIwMCIiMDAiFjFFyQYGEDEeARNAWQEyWUABex4eZ0VFTk9FRGceHl1MEWETJxUxMhUqE2ERTF0BAD0rKz09Kys9HTAiIjAwIiIwJRkUDRwObmMuQSUwIiIwMCIiMCVBLmNuDhwNFBkiVDyiojxUAkoaFxcjCQoKCSMXFxoiNxGtnwIDAcLCAQMCn60RNyIAAAAEAAD/qwQAA8AAHwAmACsAMQAAASEiBw4BBwYVERQXHgEXFjMhMjc+ATc2NRE0Jy4BJyYBBxcVJzcVEyMTNwM3NTcnNRcDBf32NC0uRBQUFBRELi00Ago0LS5EFBQUFEQuLf4DfX3+/pJNq02r7Xh4+QOrFBRELi40/fc0Li1FFBMTFEUtLjQCCTQuLkQUFP5ubWxw3N1w/lkCdwH9iGNwZ2hw2AAAAAAOAAD/rQQAA8AAHwArADgARABWAFoAXgBjAGcAawBvAHQAeAB8AAABISIHDgEHBhURFBceARcWMyEyNz4BNzY1ETQnLgEnJgcyFhUUBiMiJjU0NiMyFhUUBiMiJjU0NjMjMhYVFAYjIiY1NDYBISInLgEnJicTIREUBw4BBwYDMxUjNzMVIwUzFSM1OwEVIzczFSM3MxUjBTUjFBY3MxUjNzMVIwMF/fY0LS5EFBQUFEQuLTQCCjQtLkQUFBQURC4tOxQcHBQUHBzqFBwcFBQcHBT+FB0dFBMdHQHu/jwsKCg7EhIBAgN3ERE7KCf0lpbMlpb9m5eXzJeWzJaWzJaW/jKXZGiXlsyWlgOtFBRELi00/fY0LS5EFBQUFEQuLTQCCjQtLkQUFFUcFBMcHBMUHBwUExwcExQcHBQTHBwTFBz8mREROygoLQHf/iEtKCg7ERECeZOTk0KTk5OTk5OT1pM+VZOTk5MAAAAABQAA/8ADtwPAABwAJQA3AEYAUwAAASIHDgEHBhUUFx4BFxYzMjc+ATc2NTQnLgEnJiMBJz4BNxcOAQcTIiY1NDY3Jxc+ATMyFhUUBiMRIgYHJz4BMzIWFwcuASMFLgEnNxYXHgEXFhcHAfxbUVF4IyIiI3hRUVtcUVB4IyMjI3hRUFz+qBYRQi0iKEcd9Sc4AwJwrwYOByg4OCgRIxAnLWg5GzQZVBw7IAFDGFg5VTEqKj8UFAScA2gjI3hRUFxbUVF4IyIiI3hRUVtcUFF4IyP+mhc5YSSADSsd/qw4KAcPBq1uAgI4Jyg4AbkDA44cIAcHywsK2TxdHc0UICBTMjI3QQAFAAD/wAO3A8AAHAArADQARgBTAAABIgcOAQcGFRQXHgEXFjMyNz4BNzY1NCcuAScmIxUyFhcHLgEjIgYHJz4BMwEnPgE3Fw4BBwUeARUUBiMiJjU0NjMyFhc3BzcuASc3FhceARcWFwcB/FtRUXgjIiIjeFFRW1xRUHgjIyMjeFFQXBs0GVQcOyARIxAnLWg5/qgWEUItIihHHQFSAQI4KCc4OCcKEQmpcOYYWDlVMSoqPxQUBJwDaCMjeFFQXFtRUXgjIiIjeFFRW1xQUXgjIz0HB8sKCwMDjhwg/tcXOWEkgA0rHd8FCwUoODgoJzgDBG6xazxdHc0UICBTMjI3QQAAAAMAAP+tBAADwAAfAC0ANgAAASEiBw4BBwYVERQXHgEXFjMhMjc+ATc2NRE0Jy4BJyYFITUzFSEVIRUjNSEnNwEhFSM1ITUhFwMF/fY0LS5EFBQUFEQuLTQCCjQtLkQUFBQURC4t/YwBF0cBH/7hR/7pZ2cCc/7rR/7nAnVoA60UFEQuLTT99jQtLkQUFBQURC4tNAIKNC0uRBQUwD4+wj4+YGL+AP//wmEAAAAE//7/qwP+A8AAHAAlAEUAdQAAEwYHBhQXFhcWFxYyNzY3Njc2NCcmJyYnJiIHBgcXNCYjNTIWFSMBISIHDgEHBhURFBceARcWMyEyNz4BNzY1ETQnLgEnJhMHBiIvASY0PwEnBgcGJicmJyYnJjQ3Njc2NzYyFxYXFhceAQcGBxc3NjIfARYUB78eDg8PDh4dJSVNJSUeHQ8PDw8dHiUlTSUlHftQOERfGwFI/fc0Li1FFBMTFEUtLjQCCTQuLkQUFBQURC4uemgMIgv+DAwcPicuLl4tLSMnFBMTFCcnMTFmMTEnJBMUBQ0OHj4cDCEM/QwMAuwdJSVNJSUeHQ8PDw8dHiUlTSUlHR4ODw8OHqg5UBpfRAFnFBRELi40/fc0Li1FFBMTFEUtLjQCCTQuLkQUFPy5aAwM/QwhDBw+Hw0OBRQTJCcxMWYxMScnFBMTFCcjLSxeLi4nPhwLC/4MIQwAAAMAAP/AA7ADwAAcACUAVQAAEwYHBhQXFhcWFxYyNzY3Njc2NCcmJyYnJiIHBgcXNCYjNTIWFSMBBwYiLwEmND8BJwYHBiYnJicmJyY0NzY3Njc2MhcWFxYXHgEHBgcXNzYyHwEWFAe/Hg4PDw4eHSUlTSUlHh0PDw8PHR4lJU0lJR37UDhEXxsB9mgMIgv+DAwcPicuLl4tLSMnFBMTFCcnMTFmMTEnJBMUBQ0OHj4cDCEM/QwMAuwdJSVNJSUeHQ8PDw8dHiUlTSUlHR4ODw8OHqg5UBpfRP4gaAwM/QwhDBw+Hw0OBRQTJCcxMWYxMScnFBMTFCcjLSxeLi4nPhwLC/4MIQwAAAUAAP+tBAADwAAMABgAOABcAHwAACUyNjU0JiMiBhUUFjMDIgYVFBYzMjY1NCYlISIHDgEHBhURFBceARcWMyEyNz4BNzY1ETQnLgEnJgEVIyImJyY2Nz4BMyE1IzU0Njc+ATcyFhceAR0BFAYrASIGFQUOASMhFTMVFAYHBiYnLgE9ATQ2OwEyNj0BMzIWFxYUAmAPFhYPDxYWD74PFRUPEBUVAVP99jQtLkQUFBQURC4tNAIKNC0uRBQUFBRELi395EMrMwsOAQ0MRCsBDsQkPhUwGRk0GSg6OSnEMkkCdA8oK/7axD0lOF4vJjw6KMUxSUorLAsPSxYQDxYWDxAWAsgWDxAVFRAPFpoUFEQuLTT99jQtLkQUFBQURC4tNAIKNC0uRBQU/ZxaOCw6VTgxMxlLKjELAwQBBAQHOCe7KTtJMQUtNhlLKy4LEAMNDDAouyg8STNXOSo7XwAAAAAEAAD/qwQAA8AACwAXADcAyAAAASIGFRQWMzI2NTQmISIGFRQWMzI2NTQmASEiBw4BBwYVERQXHgEXFjMhMjc+ATc2NRE0Jy4BJyYTFAYPAQ4BDwEOAQ8BFx4BFxUUFhcuAT0BNCYjKgExBxUwFBUUFhcuATUwNDU0JiMiBhUcATEUBgc+AT0BIzAGHQEUBgc+ASc1IwYmJx4BFzoBMTM3PgE/AScuAS8BLgEvAS4BJzwBNTQ2PwEnLgE1NDY3HgEfATc+ATMyFh8BNz4BNx4BFRQGDwEXHgEXHAEVAo4ZIiIZGCMj/uMYIyMYGCMjAWT99jQtLkQUFBQURC4tNAIKNC0uRBQUFBRELi0dBgYDAQMCBBllSAwIDg8BCAYaIRICAQEFBAUcGQkEBQkgGAQFBxMeGQUGATlRJC4qOTgiFwUBAhMSDA9QahwFAgICAwgHARseAwEEBAUGIkclAgMdPB4ePh8CAx9FJgcHAgEBAhwhAQI2JBgZIyMZGCQkGBkjIxkYJAF1FBRELi40/fc0Li1FFBMTFEUtLjQCCTQuLkQUFP5wGCsTCQMGBAkyOwsCCRAhEqwKEQcCExCPDwYBBZ4MCRAHAhcQlgYGBwcGBp4RDwEGDQm0Bg+SDhgBBhAJdwFvJQVSAQYTIQ4KAgk7MQkDBgQJFC4aAQIBLE0gAwMQHg8TJRMCGRkBAQYGBgYBAhYZBBUrFgoTCgMCIlU1AQIBAAIAAP+tA+ADwAAOAEkAAAEyNjURNCYjIgYVERQWMxMVFhceARcWFRQHDgEHBiMiJy4BJyY1NDc+ATc2NzUGBw4BBwYVFBceARcWMzI3PgE3NjU0Jy4BJyYnAgAZJCQZGSQkGcAkHR0qCwwcG19AQEhJP0BfHBsLCyodHSQ/NTVMFRUmJYJXWGNjV1eCJiYWFUw1NT8BaCIdAb4dIiId/kIdIgHbkhgfIEsqKy5JP0BfGxwcG19AP0kuKitLHyAXkhwsLHJDREljWFeCJSYmJYJXWGNKQ0NyLC0cAAAE//7/qwP+A8AAHwArAEgAZQAAASEiBw4BBwYVERQXHgEXFjMhMjc+ATc2NRE0Jy4BJyYBIiY1NDYzMhYVFAYlIz4BNTQnLgEnJiMiBgc1PgEzMhceARcWFRQGBzMjPgE1NCcuAScmIyIGBzU+ATMyFx4BFxYVFAYHAwL99zQuLUUUExMURS0uNAIJNC4uRBQUFBRELi799TFFRTExRUUBCJIOEA8QNSQkKR43Fxo2HEQ8PFoaGgkI55UHByAgb0tKVRw2Gho2HHNlZZYrLAUFA6sUFEQuLjT99zQuLUUUExMURS0uNAIJNC4uRBQU/LVFMTFFRTExRQ8WNRwpJCQ1EA8RD5IJChoaWjw8RBs0GBkzG1VKS28gIAgHlQUGLCuWZWVzGjQZAAIAAP+tBAADwAAfADQAAAEhIgcOAQcGFREUFx4BFxYzITI3PgE3NjURNCcuAScmAyMRIxEjNTM1NDY7ARUjIgYVBzMHAwX99jQtLkQUFBQURC4tNAIKNC0uRBQUFBRELi2Tap5PT01faUIlDwF4DgOtFBRELi00/fY0LS5EFBQUFEQuLTQCCjQtLkQUFP4C/oIBfoRPUFuEGxlChAAAAAAE//7/wAP+A8AACwAPABMAHwAAASEiBh0BBSU1NCYjEzUHFyUVNycFJwUUFjMhMjY3JQcDgPz7NEkB/QIDSjR+/v78APn5Af3A/sNKMwMFM0oB/r7BAu9KNAX9/wM0Sv5B/H5++fh9e/1gnjNKSTOfYAAAAAL//v+tA/4DwAAfACcAAAEhIgcOAQcGFREUFx4BFxYzITI3PgE3NjURNCcuAScmAxEhESMJASMDAv33NC4tRRQTExRFLS40Agk0Li5EFBQUFEQuLnX+gr4BfAF/vwOtFBRELi00/fY0LS5EFBQUFEQuLTQCCjQtLkQUFP4C/sABQAF//oEAAAAC//7/rQP+A8AAHwAnAAABISIHDgEHBhURFBceARcWMyEyNz4BNzY1ETQnLgEnJgE1IREhNQkBAwL99zQuLUUUExMURS0uNAIJNC4uRBQUFBRELi7+yf7AAUABf/6BA60UFEQuLTT99jQtLkQUFBQURC4tNAIKNC0uRBQU/H2/AX6//oT+gAAAAv/+/60D/gPAAB8AJwAAASEiBw4BBwYVERQXHgEXFjMhMjc+ATc2NRE0Jy4BJyYTIRUJARUhEQMC/fc0Li1FFBMTFEUtLjQCCTQuLkQUFBQURC4uBv7A/oEBfwFAA60UFEQuLTT99jQtLkQUFBQURC4tNAIKNC0uRBQU/Ua/AXwBgL/+ggAAAAL//v+tA/4DwAAfACcAAAEhIgcOAQcGFREUFx4BFxYzITI3PgE3NjURNCcuAScmCQEzESERMwEDAv33NC4tRRQTExRFLS40Agk0Li5EFBQUFEQuLv7E/oG/AX6+/oQDrRQURC4tNP32NC0uRBQUFBRELi00Ago0LS5EFBT8fwF/AUD+wP6BAAAEAAD/rQQAA8AAHwA6AFUAcAAAASEiBw4BBwYVERQXHgEXFjMhMjc+ATc2NRE0Jy4BJyYBIiY1NDYzMhYXBy4BIyIGFRQWMzI2NzMOASMTFBYXBy4BNTQ2MzIWFRQGByc+ATU0JiMiBhUBIiYnMx4BMzI2NTQmIyIGByc+ATMyFhUUBiMDBf32NC0uRBQUFBRELi00Ago0LS5EFBQUFEQuLf39S2pqSxQnETcFCwUeKyseGigFbQVoR4ALCTchKGpLSmooITcJCysdHisBDkdoBW0FKBoeKyseBAoFNhAmE0tqaksDrRQURC4tNP32NC0uRBQUFBRELi00Ago0LS5EFBT8w2pLS2oJCF8CAiseHioiGUZiAggPGQpfGEwtS2pqSy1LGV8KGg4eKioe/fhiRhkiKh4eKgEBXwgIaktLagAAAAADAAD/qwP7A8AAFwAbACIAACUBJicmBgcGBwEGBwYWFxYzITI3PgE1JgUjNTMTByMnNTMVA9/+sBYnJ1EkJBH+pxwBAi0sLD4CbD4sLC0B/ma6ugIieiK+rwKwJxISAhMTIv1NNS8vRhUUFBVGMC9KvgE+/f3AwAADAAD/wAO+A8AAAwAJAA8AABMlDQEVJQcFJScBJQcFJSc+AcIBvv5C/teZAcIBvpj+2v7XmQHCAb6YAnG7u75CfT++vj/+w30/vr4/AAAAAAMAAP+tBAADwAALACsAYQAAASIGFRQWMzI2NTQmEyEiBw4BBwYVERQXHgEXFjMhMjc+ATc2NRE0Jy4BJyYDFgcOAQcGIyImJxY2Ny4BJxY2Ny4BNx4BMy4BNxYXHgEXFhcmNjMyFhc+ATcOAQc2FjcOAQcCsRMaGhMSGhpC/fY0LS5EFBQUFEQuLTQCCjQtLkQUFBQURC4tCQQdHnhZWXNFgDdCfjQ2VBATJhE7SgERJhQ3HCAeJiVXMDAzEmNPJD4XHFwYCU0aGUsWEEUZAowaExMaGhMTGgEhFBRELi00/fY0LS5EFBQUFEQuLTQCCjQtLkQUFP52V1VVhyopJiMHIykBQDEEAgUMXjkJCySANyUfHi0NDQNOfR0YBjwOHV8QAwUKGR4RAAAAAAT//v+rA/4DwAAfADkAdQCBAAABISIHDgEHBhURFBceARcWMyEyNz4BNzY1ETQnLgEnJgEGJisBIiYnJjY9ATQmNzYWOwEyNhcTDgEHJRYGBxYGBwYHDgEnJiMiBicuAScDPgE3PgE3PgE3PgE3NiY3PgEXHgEXFgYHDgEHDgEHFjYXFgYHFgYHBSIGFRQWMzI2NTQmAwL99zQuLUUUExMURS0uNAIJNC4uRBQUFBRELi7+SAgfEHIbKwYEAwEYCRsLMCE/DiICCAYB2xoPGQ4EChEgIU4rKycSIg0LEgkjBAgCESMWCxoOEigCAQIEBR4QERkCAggJCxQGBgUBPJUYDRkSIQEf/akTHBwTFBwcA6sUFEQuLjT99zQuLUUUExMURS0uNAIJNC4uRBQU/LoEAQUSDzgStSBHBwIBAhH+kwcLA9IRTQkMLAwUCAkEAgECAgIMBgF5CA8DGjETCg0JCzkaCx8KCREFBTAXFi4PERINCxcSBAQpFkMIC1cMOxwUFBwcFBQcAAAAAAT//v+rA/4DwAAfADkAdQCBAAAXITI3PgE3NjURNCcuAScmIyEiBw4BBwYVERQXHgEXFgE2FjsBMhYXFgYdARQWBwYmKwEiBicDPgE3BSY2NyY2NzY3PgEXFjMyNhceARcTDgEHDgEHDgEHDgEHBhYHDgEnLgEnJjY3PgE3PgE3JgYnJjY3JjY3BTI2NTQmIyIGFRQW+QIJNC4uRBQUFBRELi40/fc0Li1FFBMTFEUtLgG4CR4QchsrBgUEARgJGwswIT8NIwIIBv4lGhAYDgUJEiAgTysqJxIjDAsSCSQFCAIRIxYLGg4RKAMBAgQFHg8SGQICCAoKFAYGBQI8lhgNGRIhAR8CVxQbGxQTHBxVExRFLS40Agk0Li5EFBQUFEQuLjT99zQuLUUUEwNFBAEEEw84ErQgRwgCAQEQAW0HCwPREE4IDC0LFAkIBAECAgICCwf+hwgPAxoxEwkOCQs4GgsgCgkRBQYvFxctDxESDQwWEwMDKRZCCQtWDXUcFBQcHBQUHAAABQAA/6sEAAPAAAIABgAmAC8AOAAAATMnATMnBwEhIgcOAQcGFREUFx4BFxYzITI3PgE3NjURNCcuAScmAScjByMTMxMjBScjByMTMxMjAnZ9Pv4zQCAgAh399jQtLkQUFBQURC4tNAIKNC0uRBQUFBRELi3+IBxrHliISIRXAdsltihkt2GxYgGP6/7dk5MCVBQURC4uNP33NC4tRRQTExRFLS40Agk0Li5EFBT9BGBgAaf+WQGBgQI5/ccAAAAAAwAA/78D/wPAAAoA3QGxAAABNyMnByMXBzcXJwMuASc2JicuAScOARceARcuASc+ATc2JicOAQcGFhcuASc+ATc+AScOAQcOARcuATU8ATUWNjc+ATcuAQcOAQc+ATceATc+ATcuAQcOAQc+ATceATM+ATc0JicmBgc+ATc+AScuAQcOAQc+ATc+AScOAQcOARcOAQc+ATc2JicOAQcGFhcOAQcuAScuAScOARceARcGFBUUFhcuAScuAQcGFhcWNjceARcuAScmBgceARcWNjciJiceARcOAQcOAQceATc+ATceARcwMjMyNjc2JicBDgEHPgE1PAEnPgE3NiYnDgEHDgEHLgEnPgEnLgEnDgEXHgEXLgEnNiYnLgEnBhYXHgEXLgEnJgYHBhYXHgEXLgEHDgEVHgEXMjY3HgEXLgEnJgYHHgEXFjY3HgEXLgEnJgYHHgEXHgE3FBYVFAYHNiYnLgEnBhYXHgEXDgEHPgEnLgEnDgEXHgEXDgEHPgE3NiYnDgEHDgEXDgEHDgEXHgEzOgE5AT4BNx4BFxY2Ny4BJy4BJz4BNw4BBx4BNz4BNy4BBw4BBz4BNx4BNz4BNSYGBwJRgZg6L5iAOoGAL3IJEwkGCwsMHBEODQoEDgkgORkSFQMECg0XJAUDAQQRHAwWIgsLAwYXKQ4HBwELCxQmERATBBIoEwkPBQYVDw4kFBUkEQkgGAwYCxIsGQcfFhg2HhscDR4OFCoXBggBAgsHEiQRBw4GFxQHKkUUEQQHFyoSBAgCCQMNHSkGBQ8PEBYHAQQDCBwUDgYKCyITAQgIBQ0HFC0WARoYFi4VECwaDyQVHDUVDjMfIDIQAQEBIU8sFCcTHSsKHk0gHx0BCRMJAQEGCQEBCQcByAcNBQgIARMjCgoGDhQcBwQEAQcWEA8PBQYpHQ0DCQMHBBIqFwcEERRFKgcUFwcNBxEkEgcLAQIIBhcqFA4dDhwaHTYYFh8HGSwSCxgMGCAJESUVEyQODxUGBQ8JEygSBBMRECYUAQwLAQYIDikXBgMLCyIWDBwQAwEDBSQXDQoEAxYRGTkfCA4ECg0OERwMCwsGCRMJBwkBAQkGAQEJEwkBHR8hTB4KKx0TJxQsTyIBAgEQMiAfNA0VNRwVJA8aLBAVLhcXGhctFAHOXoyMXqRpaaT+ewEDAiFBGhoaAhw/HQwUCAwjFhY1GRwmDRAtHgwZDBQqFwskFRcpEwIXGA0gEB5BIQUKBQIMDg8nFgkBDwYTDB86GgwHBQYbEhATBAILCRgpEQ0PAQ4KDxYDAQIECQ8EAgsGBwgCBAoHBQoGEiAOBiAXFCQMECUWCRIJGioNEjgdGycLGjofCxcKGyMFH0UcGRkBBw0HHjscCA0HEQ0HJD8REAMMITwaDA8DAw8UISwBASQbAgEdLA0BCwoPMB8UBRQSPCECAwEJBgcKAQEpBw0IHDseBw0HARkZHEUfBSMbChcLHzoaCycbHTgSDSoaCRIJFiUQDCQUFyAGDSESBgoFBwoEAggHBgsCBA8JBAIBAxYPCg4BDw0RKRgJCwIEExASGwYFBwwaOh4LEwYPAQkWJw8NDQIFCgQiQR4QIA0YFwITKRcVJAsXKhQMGQweLRANJhwZNRYWIwwIFAwdPxwCGhoaQSECAwEBCgcGCQEDAiE8EhQFFB8wDwoLAQ0sHQEBARskAQEsIRQPAwMPDBo8IQwDEBE/JAcNEQAFAAD/qwPeA8AABAANABIAFgAaAAATMxEjERMhMjY3IR4BMxMzESMRFzMRIxMzESN8hYV/AglGdCD8QiF0RlaFhdWEhNWEhAHp/n8Bgf3CRzk5RwM7/YECf37+AANB/L8AAAAACAAA/60EAAPAAB8AJAApAC4AMgA7AEAARAAAASEiBw4BBwYVERQXHgEXFjMhMjc+ATc2NRE0Jy4BJyYNAQclNwcFByU3BwUHJTcHIRUhBSERMxEhETMRCwE3Ewc3AzcTAwX99jQtLkQUFBQURC4tNAIKNC0uRBQUFBRELi3+PwENJf7vKVEBNBP+yhUjAT8G/sAHBwFB/r8Bvv3FQgG5QC6zQaw6QRhNDwOtFBRELi00/fY0LS5EFBQUFEQuLTQCCjQtLkQUFP2vOqhBmV1CVUqTJEQbTYJNhQFf/t0BI/6hAdcBCyr+8SYpAUAF/r8AAwAA/60EAAPAACAAgQCqAAATIgcOAQcGFREUFx4BFxYzITI3PgE3NjURNCcuAScmIyEXMzIWFx4BFzEWBhUUBhUOAQcwIiMOAQcqASMiJicwIjE4ASM4ARU4ATEeARceATMyNjcwMjEwFjE4ATEwFDEVOAEVOAExDgEHDgEHBiYnLgEnLgEnLgEnJjY3PgE3PgEzByIGBw4BHQEzNTQ2MzIWHQEzNTQ2MzIWHQEzNTQmJy4BIyIGDwEnLgH7NC0uRBQUFBRELi00Ago0LS5EFBQUFEQuLTT99vwBYVwLQmIJBQQBBmE8AgEmTycJEgkmTCUBAQEFBAUwQydNJQEBDR8OBg0HO3g5NV8OBwoDBAMBAgMHDmhAC0BhaRstERARVBsbHh5THh4bHFMQEREtGyAwERQVEDEDrRQURC4tNP32NC0uRBQUFBRELi00Ago0LS5EFBR8CQEKWj8veQwELwNaUQwIBQEICQEMGAsNLgkJAQE7AQkLBQIDAg0GFBJVNx08Hi5bLh9EH0BTCgEJfBMTEzMg0MogICYmbm4mJiAgytAgMxMTExkYIyMYGQAAAQAAAAEAAEDJ37dfDzz1AAsEAAAAAADhd1vtAAAAAOF3W+3//v+rBAIDwAAAAAgAAgAAAAAAAAABAAADwP/AAAAEAP/+//4EAgABAAAAAAAAAAAAAAAAAAAALAQAAAAAAAAAAAAAAAIAAAAEAAAABAD//gQAAAAEAAAABAD//gQAAAAEAAAABAAAAAQAAAAEAP//BAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQA//4EAAAABAAAAAQAAAAEAAAABAD//gQAAAAEAP/+BAD//gQA//4EAP/+BAD//gQAAAAEAAAABAAAAAQAAAAEAP/+BAD//gQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAKABQAHgCiAOwBvgJAAsYDRgPGBHAE6AUcBbgGUgamB1wH3ghgCLYJaAnsCpwLrgwcDLANAA06DX4Nwg4GDkoO7A8oD1AP5hCsEXAR0BRWFIgVABXYAAAAAQAAACwBsgAOAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAoAAAABAAAAAAACAAcAewABAAAAAAADAAoAPwABAAAAAAAEAAoAkAABAAAAAAAFAAsAHgABAAAAAAAGAAoAXQABAAAAAAAKABoArgADAAEECQABABQACgADAAEECQACAA4AggADAAEECQADABQASQADAAEECQAEABQAmgADAAEECQAFABYAKQADAAEECQAGABQAZwADAAEECQAKADQAyFB5dGhvbmljb24AUAB5AHQAaABvAG4AaQBjAG8AblZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMFB5dGhvbmljb24AUAB5AHQAaABvAG4AaQBjAG8AblB5dGhvbmljb24AUAB5AHQAaABvAG4AaQBjAG8AblJlZ3VsYXIAUgBlAGcAdQBsAGEAclB5dGhvbmljb24AUAB5AHQAaABvAG4AaQBjAG8AbkZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) format('truetype'); + font-weight: normal; + font-style: normal; +} -.icon-stack-overflow:before { - content: "\e627"; } + .icon-bullhorn:before { + content: "\e600"; + } + .icon-python-alt:before { + content: "\e601"; + } + .icon-pypi:before { + content: "\e602"; + } + .icon-news:before { + content: "\e603"; + } + .icon-moderate:before { + content: "\e604"; + } + .icon-mercurial:before { + content: "\e605"; + } + .icon-jobs:before { + content: "\e606"; + } + .icon-help:before { + content: "\3f"; + } + .icon-download:before { + content: "\e609"; + } + .icon-documentation:before { + content: "\e60a"; + } + .icon-community:before { + content: "\e60b"; + } + .icon-code:before { + content: "\e60c"; + } + .icon-close:before { + content: "\58"; + } + .icon-calendar:before { + content: "\e60e"; + } + .icon-beginner:before { + content: "\e60f"; + } + .icon-advanced:before { + content: "\e610"; + } + .icon-sitemap:before { + content: "\e611"; + } + .icon-search-alt:before { + content: "\e612"; + } + .icon-search:before { + content: "\e613"; + } + .icon-python:before { + content: "\e614"; + } + .icon-github:before { + content: "\e615"; + } + .icon-get-started:before { + content: "\e616"; + } + .icon-feed:before { + content: "\e617"; + } + .icon-facebook:before { + content: "\e618"; + } + .icon-email:before { + content: "\e619"; + } + .icon-arrow-up:before { + content: "\e61a"; + } + .icon-arrow-right:before { + content: "\e61b"; + } + .icon-arrow-left:before { + content: "\e61c"; + } + .icon-arrow-down:before, .errorlist:before { + content: "\e61d"; + } + .icon-freenode:before { + content: "\e61e"; + } + .icon-alert:before { + content: "\e61f"; + } + .icon-versions:before { + content: "\e620"; + } + .icon-twitter:before { + content: "\e621"; + } + .icon-thumbs-up:before { + content: "\e622"; + } + .icon-thumbs-down:before { + content: "\e623"; + } + .icon-text-resize:before { + content: "\e624"; + } + .icon-success-stories:before { + content: "\e625"; + } + .icon-statistics:before { + content: "\e626"; + } + .icon-stack-overflow:before { + content: "\e627"; + } + .icon-mastodon:before { + content: "\e900"; + } /* * Hide from anything that does not support FontFace (Opera Mini, Blackberry) @@ -3546,18 +3554,18 @@ span.highlighted { * or generated content */ /*modernizr*/ -.no-fontface .icon-megaphone, .no-fontface .icon-python-alt, .no-fontface .icon-pypi, .no-fontface .icon-news, .no-fontface .icon-moderate, .no-fontface .icon-mercurial, .no-fontface .icon-jobs, .no-fontface .icon-help, .no-fontface .icon-download, .no-fontface .icon-documentation, .no-fontface .icon-community, .no-fontface .icon-code, .no-fontface .icon-close, .no-fontface .icon-calendar, .no-fontface .icon-beginner, .no-fontface .icon-advanced, .no-fontface .icon-sitemap, .no-fontface .icon-search, .no-fontface .icon-search-alt, .no-fontface .icon-python, .no-fontface .icon-github, .no-fontface .icon-get-started, .no-fontface .icon-feed, .no-fontface .icon-facebook, .no-fontface .icon-email, .no-fontface .icon-arrow-up, .no-fontface .icon-arrow-right, .no-fontface .icon-arrow-left, .no-fontface .icon-arrow-down, .no-fontface .errorlist:before, .no-fontface .icon-freenode, .no-fontface .icon-alert, .no-fontface .icon-versions, .no-fontface .icon-twitter, .no-fontface .icon-thumbs-up, .no-fontface .icon-thumbs-down, .no-fontface .icon-text-resize, .no-fontface .icon-success-stories, .no-fontface .icon-statistics, .no-fontface .icon-stack-overflow, .no-svg .icon-megaphone, .no-svg .icon-python-alt, .no-svg .icon-pypi, .no-svg .icon-news, .no-svg .icon-moderate, .no-svg .icon-mercurial, .no-svg .icon-jobs, .no-svg .icon-help, .no-svg .icon-download, .no-svg .icon-documentation, .no-svg .icon-community, .no-svg .icon-code, .no-svg .icon-close, .no-svg .icon-calendar, .no-svg .icon-beginner, .no-svg .icon-advanced, .no-svg .icon-sitemap, .no-svg .icon-search, .no-svg .icon-search-alt, .no-svg .icon-python, .no-svg .icon-github, .no-svg .icon-get-started, .no-svg .icon-feed, .no-svg .icon-facebook, .no-svg .icon-email, .no-svg .icon-arrow-up, .no-svg .icon-arrow-right, .no-svg .icon-arrow-left, .no-svg .icon-arrow-down, .no-svg .errorlist:before, .no-svg .icon-freenode, .no-svg .icon-alert, .no-svg .icon-versions, .no-svg .icon-twitter, .no-svg .icon-thumbs-up, .no-svg .icon-thumbs-down, .no-svg .icon-text-resize, .no-svg .icon-success-stories, .no-svg .icon-statistics, .no-svg .icon-stack-overflow, .no-generatedcontent .icon-megaphone, .no-generatedcontent .icon-python-alt, .no-generatedcontent .icon-pypi, .no-generatedcontent .icon-news, .no-generatedcontent .icon-moderate, .no-generatedcontent .icon-mercurial, .no-generatedcontent .icon-jobs, .no-generatedcontent .icon-help, .no-generatedcontent .icon-download, .no-generatedcontent .icon-documentation, .no-generatedcontent .icon-community, .no-generatedcontent .icon-code, .no-generatedcontent .icon-close, .no-generatedcontent .icon-calendar, .no-generatedcontent .icon-beginner, .no-generatedcontent .icon-advanced, .no-generatedcontent .icon-sitemap, .no-generatedcontent .icon-search, .no-generatedcontent .icon-search-alt, .no-generatedcontent .icon-python, .no-generatedcontent .icon-github, .no-generatedcontent .icon-get-started, .no-generatedcontent .icon-feed, .no-generatedcontent .icon-facebook, .no-generatedcontent .icon-email, .no-generatedcontent .icon-arrow-up, .no-generatedcontent .icon-arrow-right, .no-generatedcontent .icon-arrow-left, .no-generatedcontent .icon-arrow-down, .no-generatedcontent .errorlist:before, .no-generatedcontent .icon-freenode, .no-generatedcontent .icon-alert, .no-generatedcontent .icon-versions, .no-generatedcontent .icon-twitter, .no-generatedcontent .icon-thumbs-up, .no-generatedcontent .icon-thumbs-down, .no-generatedcontent .icon-text-resize, .no-generatedcontent .icon-success-stories, .no-generatedcontent .icon-statistics, .no-generatedcontent .icon-stack-overflow { +.no-fontface .icon-megaphone, .no-fontface .icon-python-alt, .no-fontface .icon-pypi, .no-fontface .icon-news, .no-fontface .icon-moderate, .no-fontface .icon-mercurial, .no-fontface .icon-jobs, .no-fontface .icon-help, .no-fontface .icon-download, .no-fontface .icon-documentation, .no-fontface .icon-community, .no-fontface .icon-code, .no-fontface .icon-close, .no-fontface .icon-calendar, .no-fontface .icon-beginner, .no-fontface .icon-advanced, .no-fontface .icon-sitemap, .no-fontface .icon-search, .no-fontface .icon-search-alt, .no-fontface .icon-python, .no-fontface .icon-github, .no-fontface .icon-get-started, .no-fontface .icon-feed, .no-fontface .icon-facebook, .no-fontface .icon-email, .no-fontface .icon-arrow-up, .no-fontface .icon-arrow-right, .no-fontface .icon-arrow-left, .no-fontface .icon-arrow-down, .no-fontface .errorlist:before, .no-fontface .icon-freenode, .no-fontface .icon-alert, .no-fontface .icon-versions, .no-fontface .icon-twitter, .no-fontface .icon-thumbs-up, .no-fontface .icon-thumbs-down, .no-fontface .icon-text-resize, .no-fontface .icon-success-stories, .no-fontface .icon-statistics, .no-fontface .icon-stack-overflow, .no-fontface .icon-mastodon, .no-svg .icon-megaphone, .no-svg .icon-python-alt, .no-svg .icon-pypi, .no-svg .icon-news, .no-svg .icon-moderate, .no-svg .icon-mercurial, .no-svg .icon-jobs, .no-svg .icon-help, .no-svg .icon-download, .no-svg .icon-documentation, .no-svg .icon-community, .no-svg .icon-code, .no-svg .icon-close, .no-svg .icon-calendar, .no-svg .icon-beginner, .no-svg .icon-advanced, .no-svg .icon-sitemap, .no-svg .icon-search, .no-svg .icon-search-alt, .no-svg .icon-python, .no-svg .icon-github, .no-svg .icon-get-started, .no-svg .icon-feed, .no-svg .icon-facebook, .no-svg .icon-email, .no-svg .icon-arrow-up, .no-svg .icon-arrow-right, .no-svg .icon-arrow-left, .no-svg .icon-arrow-down, .no-svg .errorlist:before, .no-svg .icon-freenode, .no-svg .icon-alert, .no-svg .icon-versions, .no-svg .icon-twitter, .no-svg .icon-thumbs-up, .no-svg .icon-thumbs-down, .no-svg .icon-text-resize, .no-svg .icon-success-stories, .no-svg .icon-statistics, .no-svg .icon-stack-overflow, .no-svg .icon-mastodon, .no-generatedcontent .icon-megaphone, .no-generatedcontent .icon-python-alt, .no-generatedcontent .icon-pypi, .no-generatedcontent .icon-news, .no-generatedcontent .icon-moderate, .no-generatedcontent .icon-mercurial, .no-generatedcontent .icon-jobs, .no-generatedcontent .icon-help, .no-generatedcontent .icon-download, .no-generatedcontent .icon-documentation, .no-generatedcontent .icon-community, .no-generatedcontent .icon-code, .no-generatedcontent .icon-close, .no-generatedcontent .icon-calendar, .no-generatedcontent .icon-beginner, .no-generatedcontent .icon-advanced, .no-generatedcontent .icon-sitemap, .no-generatedcontent .icon-search, .no-generatedcontent .icon-search-alt, .no-generatedcontent .icon-python, .no-generatedcontent .icon-github, .no-generatedcontent .icon-get-started, .no-generatedcontent .icon-feed, .no-generatedcontent .icon-facebook, .no-generatedcontent .icon-email, .no-generatedcontent .icon-arrow-up, .no-generatedcontent .icon-arrow-right, .no-generatedcontent .icon-arrow-left, .no-generatedcontent .icon-arrow-down, .no-generatedcontent .errorlist:before, .no-generatedcontent .icon-freenode, .no-generatedcontent .icon-alert, .no-generatedcontent .icon-versions, .no-generatedcontent .icon-twitter, .no-generatedcontent .icon-thumbs-up, .no-generatedcontent .icon-thumbs-down, .no-generatedcontent .icon-text-resize, .no-generatedcontent .icon-success-stories, .no-generatedcontent .icon-statistics, .no-generatedcontent .icon-stack-overflow, .no-generatedcontent .icon-mastodon { /* Show a unicode character back up if it exists */ } - .no-fontface .icon-megaphone:before, .no-fontface .icon-python-alt:before, .no-fontface .icon-pypi:before, .no-fontface .icon-news:before, .no-fontface .icon-moderate:before, .no-fontface .icon-mercurial:before, .no-fontface .icon-jobs:before, .no-fontface .icon-help:before, .no-fontface .icon-download:before, .no-fontface .icon-documentation:before, .no-fontface .icon-community:before, .no-fontface .icon-code:before, .no-fontface .icon-close:before, .no-fontface .icon-calendar:before, .no-fontface .icon-beginner:before, .no-fontface .icon-advanced:before, .no-fontface .icon-sitemap:before, .no-fontface .icon-search:before, .no-fontface .icon-search-alt:before, .no-fontface .icon-python:before, .no-fontface .icon-github:before, .no-fontface .icon-get-started:before, .no-fontface .icon-feed:before, .no-fontface .icon-facebook:before, .no-fontface .icon-email:before, .no-fontface .icon-arrow-up:before, .no-fontface .icon-arrow-right:before, .no-fontface .icon-arrow-left:before, .no-fontface .icon-arrow-down:before, .no-fontface .errorlist:before, .no-fontface .icon-freenode:before, .no-fontface .icon-alert:before, .no-fontface .icon-versions:before, .no-fontface .icon-twitter:before, .no-fontface .icon-thumbs-up:before, .no-fontface .icon-thumbs-down:before, .no-fontface .icon-text-resize:before, .no-fontface .icon-success-stories:before, .no-fontface .icon-statistics:before, .no-fontface .icon-stack-overflow:before, .no-svg .icon-megaphone:before, .no-svg .icon-python-alt:before, .no-svg .icon-pypi:before, .no-svg .icon-news:before, .no-svg .icon-moderate:before, .no-svg .icon-mercurial:before, .no-svg .icon-jobs:before, .no-svg .icon-help:before, .no-svg .icon-download:before, .no-svg .icon-documentation:before, .no-svg .icon-community:before, .no-svg .icon-code:before, .no-svg .icon-close:before, .no-svg .icon-calendar:before, .no-svg .icon-beginner:before, .no-svg .icon-advanced:before, .no-svg .icon-sitemap:before, .no-svg .icon-search:before, .no-svg .icon-search-alt:before, .no-svg .icon-python:before, .no-svg .icon-github:before, .no-svg .icon-get-started:before, .no-svg .icon-feed:before, .no-svg .icon-facebook:before, .no-svg .icon-email:before, .no-svg .icon-arrow-up:before, .no-svg .icon-arrow-right:before, .no-svg .icon-arrow-left:before, .no-svg .icon-arrow-down:before, .no-svg .errorlist:before, .no-svg .icon-freenode:before, .no-svg .icon-alert:before, .no-svg .icon-versions:before, .no-svg .icon-twitter:before, .no-svg .icon-thumbs-up:before, .no-svg .icon-thumbs-down:before, .no-svg .icon-text-resize:before, .no-svg .icon-success-stories:before, .no-svg .icon-statistics:before, .no-svg .icon-stack-overflow:before, .no-generatedcontent .icon-megaphone:before, .no-generatedcontent .icon-python-alt:before, .no-generatedcontent .icon-pypi:before, .no-generatedcontent .icon-news:before, .no-generatedcontent .icon-moderate:before, .no-generatedcontent .icon-mercurial:before, .no-generatedcontent .icon-jobs:before, .no-generatedcontent .icon-help:before, .no-generatedcontent .icon-download:before, .no-generatedcontent .icon-documentation:before, .no-generatedcontent .icon-community:before, .no-generatedcontent .icon-code:before, .no-generatedcontent .icon-close:before, .no-generatedcontent .icon-calendar:before, .no-generatedcontent .icon-beginner:before, .no-generatedcontent .icon-advanced:before, .no-generatedcontent .icon-sitemap:before, .no-generatedcontent .icon-search:before, .no-generatedcontent .icon-search-alt:before, .no-generatedcontent .icon-python:before, .no-generatedcontent .icon-github:before, .no-generatedcontent .icon-get-started:before, .no-generatedcontent .icon-feed:before, .no-generatedcontent .icon-facebook:before, .no-generatedcontent .icon-email:before, .no-generatedcontent .icon-arrow-up:before, .no-generatedcontent .icon-arrow-right:before, .no-generatedcontent .icon-arrow-left:before, .no-generatedcontent .icon-arrow-down:before, .no-generatedcontent .errorlist:before, .no-generatedcontent .icon-freenode:before, .no-generatedcontent .icon-alert:before, .no-generatedcontent .icon-versions:before, .no-generatedcontent .icon-twitter:before, .no-generatedcontent .icon-thumbs-up:before, .no-generatedcontent .icon-thumbs-down:before, .no-generatedcontent .icon-text-resize:before, .no-generatedcontent .icon-success-stories:before, .no-generatedcontent .icon-statistics:before, .no-generatedcontent .icon-stack-overflow:before { + .no-fontface .icon-megaphone:before, .no-fontface .icon-python-alt:before, .no-fontface .icon-pypi:before, .no-fontface .icon-news:before, .no-fontface .icon-moderate:before, .no-fontface .icon-mercurial:before, .no-fontface .icon-jobs:before, .no-fontface .icon-help:before, .no-fontface .icon-download:before, .no-fontface .icon-documentation:before, .no-fontface .icon-community:before, .no-fontface .icon-code:before, .no-fontface .icon-close:before, .no-fontface .icon-calendar:before, .no-fontface .icon-beginner:before, .no-fontface .icon-advanced:before, .no-fontface .icon-sitemap:before, .no-fontface .icon-search:before, .no-fontface .icon-search-alt:before, .no-fontface .icon-python:before, .no-fontface .icon-github:before, .no-fontface .icon-get-started:before, .no-fontface .icon-feed:before, .no-fontface .icon-facebook:before, .no-fontface .icon-email:before, .no-fontface .icon-arrow-up:before, .no-fontface .icon-arrow-right:before, .no-fontface .icon-arrow-left:before, .no-fontface .icon-arrow-down:before, .no-fontface .errorlist:before, .no-fontface .icon-freenode:before, .no-fontface .icon-alert:before, .no-fontface .icon-versions:before, .no-fontface .icon-twitter:before, .no-fontface .icon-thumbs-up:before, .no-fontface .icon-thumbs-down:before, .no-fontface .icon-text-resize:before, .no-fontface .icon-success-stories:before, .no-fontface .icon-statistics:before, .no-fontface .icon-stack-overflow:before, .no-fontface .icon-mastodon:before, .no-svg .icon-megaphone:before, .no-svg .icon-python-alt:before, .no-svg .icon-pypi:before, .no-svg .icon-news:before, .no-svg .icon-moderate:before, .no-svg .icon-mercurial:before, .no-svg .icon-jobs:before, .no-svg .icon-help:before, .no-svg .icon-download:before, .no-svg .icon-documentation:before, .no-svg .icon-community:before, .no-svg .icon-code:before, .no-svg .icon-close:before, .no-svg .icon-calendar:before, .no-svg .icon-beginner:before, .no-svg .icon-advanced:before, .no-svg .icon-sitemap:before, .no-svg .icon-search:before, .no-svg .icon-search-alt:before, .no-svg .icon-python:before, .no-svg .icon-github:before, .no-svg .icon-get-started:before, .no-svg .icon-feed:before, .no-svg .icon-facebook:before, .no-svg .icon-email:before, .no-svg .icon-arrow-up:before, .no-svg .icon-arrow-right:before, .no-svg .icon-arrow-left:before, .no-svg .icon-arrow-down:before, .no-svg .errorlist:before, .no-svg .icon-freenode:before, .no-svg .icon-alert:before, .no-svg .icon-versions:before, .no-svg .icon-twitter:before, .no-svg .icon-thumbs-up:before, .no-svg .icon-thumbs-down:before, .no-svg .icon-text-resize:before, .no-svg .icon-success-stories:before, .no-svg .icon-statistics:before, .no-svg .icon-stack-overflow:before, .no-svg .icon-mastodon:before, .no-generatedcontent .icon-megaphone:before, .no-generatedcontent .icon-python-alt:before, .no-generatedcontent .icon-pypi:before, .no-generatedcontent .icon-news:before, .no-generatedcontent .icon-moderate:before, .no-generatedcontent .icon-mercurial:before, .no-generatedcontent .icon-jobs:before, .no-generatedcontent .icon-help:before, .no-generatedcontent .icon-download:before, .no-generatedcontent .icon-documentation:before, .no-generatedcontent .icon-community:before, .no-generatedcontent .icon-code:before, .no-generatedcontent .icon-close:before, .no-generatedcontent .icon-calendar:before, .no-generatedcontent .icon-beginner:before, .no-generatedcontent .icon-advanced:before, .no-generatedcontent .icon-sitemap:before, .no-generatedcontent .icon-search:before, .no-generatedcontent .icon-search-alt:before, .no-generatedcontent .icon-python:before, .no-generatedcontent .icon-github:before, .no-generatedcontent .icon-get-started:before, .no-generatedcontent .icon-feed:before, .no-generatedcontent .icon-facebook:before, .no-generatedcontent .icon-email:before, .no-generatedcontent .icon-arrow-up:before, .no-generatedcontent .icon-arrow-right:before, .no-generatedcontent .icon-arrow-left:before, .no-generatedcontent .icon-arrow-down:before, .no-generatedcontent .errorlist:before, .no-generatedcontent .icon-freenode:before, .no-generatedcontent .icon-alert:before, .no-generatedcontent .icon-versions:before, .no-generatedcontent .icon-twitter:before, .no-generatedcontent .icon-thumbs-up:before, .no-generatedcontent .icon-thumbs-down:before, .no-generatedcontent .icon-text-resize:before, .no-generatedcontent .icon-success-stories:before, .no-generatedcontent .icon-statistics:before, .no-generatedcontent .icon-stack-overflow:before, .no-generatedcontent .icon-mastodon:before { display: none; margin-right: 0; } - .no-fontface .icon-megaphone span, .no-fontface .icon-python-alt span, .no-fontface .icon-pypi span, .no-fontface .icon-news span, .no-fontface .icon-moderate span, .no-fontface .icon-mercurial span, .no-fontface .icon-jobs span, .no-fontface .icon-help span, .no-fontface .icon-download span, .no-fontface .icon-documentation span, .no-fontface .icon-community span, .no-fontface .icon-code span, .no-fontface .icon-close span, .no-fontface .icon-calendar span, .no-fontface .icon-beginner span, .no-fontface .icon-advanced span, .no-fontface .icon-sitemap span, .no-fontface .icon-search span, .no-fontface .icon-search-alt span, .no-fontface .icon-python span, .no-fontface .icon-github span, .no-fontface .icon-get-started span, .no-fontface .icon-feed span, .no-fontface .icon-facebook span, .no-fontface .icon-email span, .no-fontface .icon-arrow-up span, .no-fontface .icon-arrow-right span, .no-fontface .icon-arrow-left span, .no-fontface .icon-arrow-down span, .no-fontface .errorlist:before span, .no-fontface .icon-freenode span, .no-fontface .icon-alert span, .no-fontface .icon-versions span, .no-fontface .icon-twitter span, .no-fontface .icon-thumbs-up span, .no-fontface .icon-thumbs-down span, .no-fontface .icon-text-resize span, .no-fontface .icon-success-stories span, .no-fontface .icon-statistics span, .no-fontface .icon-stack-overflow span, .no-svg .icon-megaphone span, .no-svg .icon-python-alt span, .no-svg .icon-pypi span, .no-svg .icon-news span, .no-svg .icon-moderate span, .no-svg .icon-mercurial span, .no-svg .icon-jobs span, .no-svg .icon-help span, .no-svg .icon-download span, .no-svg .icon-documentation span, .no-svg .icon-community span, .no-svg .icon-code span, .no-svg .icon-close span, .no-svg .icon-calendar span, .no-svg .icon-beginner span, .no-svg .icon-advanced span, .no-svg .icon-sitemap span, .no-svg .icon-search span, .no-svg .icon-search-alt span, .no-svg .icon-python span, .no-svg .icon-github span, .no-svg .icon-get-started span, .no-svg .icon-feed span, .no-svg .icon-facebook span, .no-svg .icon-email span, .no-svg .icon-arrow-up span, .no-svg .icon-arrow-right span, .no-svg .icon-arrow-left span, .no-svg .icon-arrow-down span, .no-svg .errorlist:before span, .no-svg .icon-freenode span, .no-svg .icon-alert span, .no-svg .icon-versions span, .no-svg .icon-twitter span, .no-svg .icon-thumbs-up span, .no-svg .icon-thumbs-down span, .no-svg .icon-text-resize span, .no-svg .icon-success-stories span, .no-svg .icon-statistics span, .no-svg .icon-stack-overflow span, .no-generatedcontent .icon-megaphone span, .no-generatedcontent .icon-python-alt span, .no-generatedcontent .icon-pypi span, .no-generatedcontent .icon-news span, .no-generatedcontent .icon-moderate span, .no-generatedcontent .icon-mercurial span, .no-generatedcontent .icon-jobs span, .no-generatedcontent .icon-help span, .no-generatedcontent .icon-download span, .no-generatedcontent .icon-documentation span, .no-generatedcontent .icon-community span, .no-generatedcontent .icon-code span, .no-generatedcontent .icon-close span, .no-generatedcontent .icon-calendar span, .no-generatedcontent .icon-beginner span, .no-generatedcontent .icon-advanced span, .no-generatedcontent .icon-sitemap span, .no-generatedcontent .icon-search span, .no-generatedcontent .icon-search-alt span, .no-generatedcontent .icon-python span, .no-generatedcontent .icon-github span, .no-generatedcontent .icon-get-started span, .no-generatedcontent .icon-feed span, .no-generatedcontent .icon-facebook span, .no-generatedcontent .icon-email span, .no-generatedcontent .icon-arrow-up span, .no-generatedcontent .icon-arrow-right span, .no-generatedcontent .icon-arrow-left span, .no-generatedcontent .icon-arrow-down span, .no-generatedcontent .errorlist:before span, .no-generatedcontent .icon-freenode span, .no-generatedcontent .icon-alert span, .no-generatedcontent .icon-versions span, .no-generatedcontent .icon-twitter span, .no-generatedcontent .icon-thumbs-up span, .no-generatedcontent .icon-thumbs-down span, .no-generatedcontent .icon-text-resize span, .no-generatedcontent .icon-success-stories span, .no-generatedcontent .icon-statistics span, .no-generatedcontent .icon-stack-overflow span { + .no-fontface .icon-megaphone span, .no-fontface .icon-python-alt span, .no-fontface .icon-pypi span, .no-fontface .icon-news span, .no-fontface .icon-moderate span, .no-fontface .icon-mercurial span, .no-fontface .icon-jobs span, .no-fontface .icon-help span, .no-fontface .icon-download span, .no-fontface .icon-documentation span, .no-fontface .icon-community span, .no-fontface .icon-code span, .no-fontface .icon-close span, .no-fontface .icon-calendar span, .no-fontface .icon-beginner span, .no-fontface .icon-advanced span, .no-fontface .icon-sitemap span, .no-fontface .icon-search span, .no-fontface .icon-search-alt span, .no-fontface .icon-python span, .no-fontface .icon-github span, .no-fontface .icon-get-started span, .no-fontface .icon-feed span, .no-fontface .icon-facebook span, .no-fontface .icon-email span, .no-fontface .icon-arrow-up span, .no-fontface .icon-arrow-right span, .no-fontface .icon-arrow-left span, .no-fontface .icon-arrow-down span, .no-fontface .errorlist:before span, .no-fontface .icon-freenode span, .no-fontface .icon-alert span, .no-fontface .icon-versions span, .no-fontface .icon-twitter span, .no-fontface .icon-thumbs-up span, .no-fontface .icon-thumbs-down span, .no-fontface .icon-text-resize span, .no-fontface .icon-success-stories span, .no-fontface .icon-statistics span, .no-fontface .icon-stack-overflow span, .no-fontface .icon-mastodon span, .no-svg .icon-megaphone span, .no-svg .icon-python-alt span, .no-svg .icon-pypi span, .no-svg .icon-news span, .no-svg .icon-moderate span, .no-svg .icon-mercurial span, .no-svg .icon-jobs span, .no-svg .icon-help span, .no-svg .icon-download span, .no-svg .icon-documentation span, .no-svg .icon-community span, .no-svg .icon-code span, .no-svg .icon-close span, .no-svg .icon-calendar span, .no-svg .icon-beginner span, .no-svg .icon-advanced span, .no-svg .icon-sitemap span, .no-svg .icon-search span, .no-svg .icon-search-alt span, .no-svg .icon-python span, .no-svg .icon-github span, .no-svg .icon-get-started span, .no-svg .icon-feed span, .no-svg .icon-facebook span, .no-svg .icon-email span, .no-svg .icon-arrow-up span, .no-svg .icon-arrow-right span, .no-svg .icon-arrow-left span, .no-svg .icon-arrow-down span, .no-svg .errorlist:before span, .no-svg .icon-freenode span, .no-svg .icon-alert span, .no-svg .icon-versions span, .no-svg .icon-twitter span, .no-svg .icon-thumbs-up span, .no-svg .icon-thumbs-down span, .no-svg .icon-text-resize span, .no-svg .icon-success-stories span, .no-svg .icon-statistics span, .no-svg .icon-stack-overflow span, .no-svg .icon-mastodon span, .no-generatedcontent .icon-megaphone span, .no-generatedcontent .icon-python-alt span, .no-generatedcontent .icon-pypi span, .no-generatedcontent .icon-news span, .no-generatedcontent .icon-moderate span, .no-generatedcontent .icon-mercurial span, .no-generatedcontent .icon-jobs span, .no-generatedcontent .icon-help span, .no-generatedcontent .icon-download span, .no-generatedcontent .icon-documentation span, .no-generatedcontent .icon-community span, .no-generatedcontent .icon-code span, .no-generatedcontent .icon-close span, .no-generatedcontent .icon-calendar span, .no-generatedcontent .icon-beginner span, .no-generatedcontent .icon-advanced span, .no-generatedcontent .icon-sitemap span, .no-generatedcontent .icon-search span, .no-generatedcontent .icon-search-alt span, .no-generatedcontent .icon-python span, .no-generatedcontent .icon-github span, .no-generatedcontent .icon-get-started span, .no-generatedcontent .icon-feed span, .no-generatedcontent .icon-facebook span, .no-generatedcontent .icon-email span, .no-generatedcontent .icon-arrow-up span, .no-generatedcontent .icon-arrow-right span, .no-generatedcontent .icon-arrow-left span, .no-generatedcontent .icon-arrow-down span, .no-generatedcontent .errorlist:before span, .no-generatedcontent .icon-freenode span, .no-generatedcontent .icon-alert span, .no-generatedcontent .icon-versions span, .no-generatedcontent .icon-twitter span, .no-generatedcontent .icon-thumbs-up span, .no-generatedcontent .icon-thumbs-down span, .no-generatedcontent .icon-text-resize span, .no-generatedcontent .icon-success-stories span, .no-generatedcontent .icon-statistics span, .no-generatedcontent .icon-stack-overflow span, .no-generatedcontent .icon-mastodon span { display: inline; } /* Show in IE8: supports FontFace (eot) but not SVG. */ -.ie8 .icon-megaphone:before, .ie8 .icon-python-alt:before, .ie8 .icon-pypi:before, .ie8 .icon-news:before, .ie8 .icon-moderate:before, .ie8 .icon-mercurial:before, .ie8 .icon-jobs:before, .ie8 .icon-help:before, .ie8 .icon-download:before, .ie8 .icon-documentation:before, .ie8 .icon-community:before, .ie8 .icon-code:before, .ie8 .icon-close:before, .ie8 .icon-calendar:before, .ie8 .icon-beginner:before, .ie8 .icon-advanced:before, .ie8 .icon-sitemap:before, .ie8 .icon-search:before, .ie8 .icon-search-alt:before, .ie8 .icon-python:before, .ie8 .icon-github:before, .ie8 .icon-get-started:before, .ie8 .icon-feed:before, .ie8 .icon-facebook:before, .ie8 .icon-email:before, .ie8 .icon-arrow-up:before, .ie8 .icon-arrow-right:before, .ie8 .icon-arrow-left:before, .ie8 .icon-arrow-down:before, .ie8 .errorlist:before, .ie8 .icon-freenode:before, .ie8 .icon-alert:before, .ie8 .icon-versions:before, .ie8 .icon-twitter:before, .ie8 .icon-thumbs-up:before, .ie8 .icon-thumbs-down:before, .ie8 .icon-text-resize:before, .ie8 .icon-success-stories:before, .ie8 .icon-statistics:before, .ie8 .icon-stack-overflow:before { +.ie8 .icon-megaphone:before, .ie8 .icon-python-alt:before, .ie8 .icon-pypi:before, .ie8 .icon-news:before, .ie8 .icon-moderate:before, .ie8 .icon-mercurial:before, .ie8 .icon-jobs:before, .ie8 .icon-help:before, .ie8 .icon-download:before, .ie8 .icon-documentation:before, .ie8 .icon-community:before, .ie8 .icon-code:before, .ie8 .icon-close:before, .ie8 .icon-calendar:before, .ie8 .icon-beginner:before, .ie8 .icon-advanced:before, .ie8 .icon-sitemap:before, .ie8 .icon-search:before, .ie8 .icon-search-alt:before, .ie8 .icon-python:before, .ie8 .icon-github:before, .ie8 .icon-get-started:before, .ie8 .icon-feed:before, .ie8 .icon-facebook:before, .ie8 .icon-email:before, .ie8 .icon-arrow-up:before, .ie8 .icon-arrow-right:before, .ie8 .icon-arrow-left:before, .ie8 .icon-arrow-down:before, .ie8 .errorlist:before, .ie8 .icon-freenode:before, .ie8 .icon-alert:before, .ie8 .icon-versions:before, .ie8 .icon-twitter:before, .ie8 .icon-thumbs-up:before, .ie8 .icon-thumbs-down:before, .ie8 .icon-text-resize:before, .ie8 .icon-success-stories:before, .ie8 .icon-statistics:before, .ie8 .icon-stack-overflow:before, .ie8 .icon-mastodon:before { display: inline; } -.ie8 .icon-megaphone span, .ie8 .icon-python-alt span, .ie8 .icon-pypi span, .ie8 .icon-news span, .ie8 .icon-moderate span, .ie8 .icon-mercurial span, .ie8 .icon-jobs span, .ie8 .icon-help span, .ie8 .icon-download span, .ie8 .icon-documentation span, .ie8 .icon-community span, .ie8 .icon-code span, .ie8 .icon-close span, .ie8 .icon-calendar span, .ie8 .icon-beginner span, .ie8 .icon-advanced span, .ie8 .icon-sitemap span, .ie8 .icon-search span, .ie8 .icon-search-alt span, .ie8 .icon-python span, .ie8 .icon-github span, .ie8 .icon-get-started span, .ie8 .icon-feed span, .ie8 .icon-facebook span, .ie8 .icon-email span, .ie8 .icon-arrow-up span, .ie8 .icon-arrow-right span, .ie8 .icon-arrow-left span, .ie8 .icon-arrow-down span, .ie8 .errorlist:before span, .ie8 .icon-freenode span, .ie8 .icon-alert span, .ie8 .icon-versions span, .ie8 .icon-twitter span, .ie8 .icon-thumbs-up span, .ie8 .icon-thumbs-down span, .ie8 .icon-text-resize span, .ie8 .icon-success-stories span, .ie8 .icon-statistics span, .ie8 .icon-stack-overflow span { +.ie8 .icon-megaphone span, .ie8 .icon-python-alt span, .ie8 .icon-pypi span, .ie8 .icon-news span, .ie8 .icon-moderate span, .ie8 .icon-mercurial span, .ie8 .icon-jobs span, .ie8 .icon-help span, .ie8 .icon-download span, .ie8 .icon-documentation span, .ie8 .icon-community span, .ie8 .icon-code span, .ie8 .icon-close span, .ie8 .icon-calendar span, .ie8 .icon-beginner span, .ie8 .icon-advanced span, .ie8 .icon-sitemap span, .ie8 .icon-search span, .ie8 .icon-search-alt span, .ie8 .icon-python span, .ie8 .icon-github span, .ie8 .icon-get-started span, .ie8 .icon-feed span, .ie8 .icon-facebook span, .ie8 .icon-email span, .ie8 .icon-arrow-up span, .ie8 .icon-arrow-right span, .ie8 .icon-arrow-left span, .ie8 .icon-arrow-down span, .ie8 .errorlist:before span, .ie8 .icon-freenode span, .ie8 .icon-alert span, .ie8 .icon-versions span, .ie8 .icon-twitter span, .ie8 .icon-thumbs-up span, .ie8 .icon-thumbs-down span, .ie8 .icon-text-resize span, .ie8 .icon-success-stories span, .ie8 .icon-statistics span, .ie8 .icon-stack-overflow span, .ie8 .icon-mastodon span { display: none; } /* @license diff --git a/static/sass/style.scss b/static/sass/style.scss index aeecbc72b..45998bbc1 100644 --- a/static/sass/style.scss +++ b/static/sass/style.scss @@ -2410,7 +2410,7 @@ span.highlighted { /* ! ===== ICONS ===== */ /* Look inside _fonts.scss for most of the code. We declare this here so we can adjust as needed for specific elements. */ -.icon-megaphone, .icon-python-alt, .icon-pypi, .icon-news, .icon-moderate, .icon-mercurial, .icon-jobs, .icon-help, .icon-download, .icon-documentation, .icon-community, .icon-code, .icon-close, .icon-calendar, .icon-beginner, .icon-advanced, .icon-sitemap, .icon-search, .icon-search-alt, .icon-python, .icon-github, .icon-get-started, .icon-feed, .icon-facebook, .icon-email, .icon-arrow-up, .icon-arrow-right, .icon-arrow-left, .icon-arrow-down, .icon-freenode, .icon-alert, .icon-versions, .icon-twitter, .icon-thumbs-up, .icon-thumbs-down, .icon-text-resize, .icon-success-stories, .icon-statistics, .icon-stack-overflow { +.icon-megaphone, .icon-python-alt, .icon-pypi, .icon-news, .icon-moderate, .icon-mercurial, .icon-jobs, .icon-help, .icon-download, .icon-documentation, .icon-community, .icon-code, .icon-close, .icon-calendar, .icon-beginner, .icon-advanced, .icon-sitemap, .icon-search, .icon-search-alt, .icon-python, .icon-github, .icon-get-started, .icon-feed, .icon-facebook, .icon-email, .icon-arrow-up, .icon-arrow-right, .icon-arrow-left, .icon-arrow-down, .icon-freenode, .icon-alert, .icon-versions, .icon-twitter, .icon-thumbs-up, .icon-thumbs-down, .icon-text-resize, .icon-success-stories, .icon-statistics, .icon-stack-overflow, .icon-mastodon { font-family: 'Pythonicon'; speak: none; font-style: normal; diff --git a/templates/base.html b/templates/base.html index cf4c65cb0..ffa517a91 100644 --- a/templates/base.html +++ b/templates/base.html @@ -236,8 +236,9 @@

    Socialize From f274b4f340dfb943ba846af5da81c9603ae55e6e Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Wed, 15 Nov 2023 09:51:17 -0500 Subject: [PATCH 055/256] upgrade elasticsearch client --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index b19aacc93..998625e1d 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -22,7 +22,7 @@ chardet==4.0.0 # TODO: We may drop 'django-imagekit' completely. django-imagekit==4.0.2 django-haystack==3.0 -elasticsearch>=5,<6 +elasticsearch>=7,<8 # TODO: 0.14.0 only supports Django 1.8 and 1.11. django-tastypie==0.14.3 From ac85091d1c3937fba565c8f1597366ff1b34b495 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Wed, 15 Nov 2023 09:54:54 -0500 Subject: [PATCH 056/256] upgrade django-haystack --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index 998625e1d..9ddabf236 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -21,7 +21,7 @@ icalendar==4.0.7 chardet==4.0.0 # TODO: We may drop 'django-imagekit' completely. django-imagekit==4.0.2 -django-haystack==3.0 +django-haystack==3.2.1 elasticsearch>=7,<8 # TODO: 0.14.0 only supports Django 1.8 and 1.11. django-tastypie==0.14.3 From 82682b072d615ad7563aa64232c247ee54354142 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Wed, 15 Nov 2023 09:58:28 -0500 Subject: [PATCH 057/256] use new backend --- pydotorg/settings/heroku.py | 2 +- pydotorg/settings/local.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pydotorg/settings/heroku.py b/pydotorg/settings/heroku.py index ab9646936..c32c9c67b 100644 --- a/pydotorg/settings/heroku.py +++ b/pydotorg/settings/heroku.py @@ -26,7 +26,7 @@ HAYSTACK_CONNECTIONS = { 'default': { - 'ENGINE': 'haystack.backends.elasticsearch5_backend.Elasticsearch5SearchEngine', + 'ENGINE': 'haystack.backends.elasticsearch7_backend.Elasticsearch7SearchEngine', 'URL': HAYSTACK_SEARCHBOX_SSL_URL, 'INDEX_NAME': 'haystack-prod', }, diff --git a/pydotorg/settings/local.py b/pydotorg/settings/local.py index 4ecbe35aa..6525d9837 100644 --- a/pydotorg/settings/local.py +++ b/pydotorg/settings/local.py @@ -26,7 +26,7 @@ HAYSTACK_CONNECTIONS = { 'default': { - 'ENGINE': 'haystack.backends.elasticsearch5_backend.Elasticsearch5SearchEngine', + 'ENGINE': 'haystack.backends.elasticsearch7_backend.Elasticsearch7SearchEngine', 'URL': HAYSTACK_SEARCHBOX_SSL_URL, 'INDEX_NAME': 'haystack', }, From e4ee9ce52bd7ad43032296eede85f7c26ea51b56 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Wed, 15 Nov 2023 10:40:58 -0500 Subject: [PATCH 058/256] make index name configurable --- pydotorg/settings/heroku.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pydotorg/settings/heroku.py b/pydotorg/settings/heroku.py index c32c9c67b..83e975cb1 100644 --- a/pydotorg/settings/heroku.py +++ b/pydotorg/settings/heroku.py @@ -28,7 +28,7 @@ 'default': { 'ENGINE': 'haystack.backends.elasticsearch7_backend.Elasticsearch7SearchEngine', 'URL': HAYSTACK_SEARCHBOX_SSL_URL, - 'INDEX_NAME': 'haystack-prod', + 'INDEX_NAME': config('HAYSTACK_INDEX', default='haystack-prod'), }, } From 67207962a817b4dc345843f7524fd2da8f4f2252 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Wed, 15 Nov 2023 10:51:14 -0500 Subject: [PATCH 059/256] this is just a 1/2/3 differentiator, disregard in search --- downloads/search_indexes.py | 1 - 1 file changed, 1 deletion(-) diff --git a/downloads/search_indexes.py b/downloads/search_indexes.py index 307841283..7d476fb33 100644 --- a/downloads/search_indexes.py +++ b/downloads/search_indexes.py @@ -13,7 +13,6 @@ class ReleaseIndex(indexes.SearchIndex, indexes.Indexable): name = indexes.CharField(model_attr='name') description = indexes.CharField() path = indexes.CharField() - version = indexes.CharField(model_attr='version') release_notes_url = indexes.CharField(model_attr='release_notes_url') release_date = indexes.DateTimeField(model_attr='release_date') From c94985579635ad1791246493f7ec024ebe9abbac Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade Date: Tue, 21 Nov 2023 10:18:59 +0200 Subject: [PATCH 060/256] Add config file for Read the Docs (#2328) * Add config file for Read the Docs * Remove comment --- .gitignore | 1 + .readthedocs.yaml | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 .readthedocs.yaml diff --git a/.gitignore b/.gitignore index 954ff2401..a9eca9d19 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ # $ git config --global core.excludesfile ~/.gitignore_global .sass-cache/ +docs/build media/* static-root/ static/stylesheets/mq.css diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 000000000..ec9dc1ce9 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,15 @@ +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details +# Project page: https://readthedocs.org/projects/pythondotorg/ + +version: 2 + +build: + os: ubuntu-22.04 + tools: + python: "3" + + commands: + - python -m pip install -r docs-requirements.txt + - make -C docs html JOBS=$(nproc) BUILDDIR=_readthedocs + - mv docs/_readthedocs _readthedocs From f04b96f59147015676cf2b283684b381aef27a55 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade Date: Tue, 21 Nov 2023 10:22:56 +0200 Subject: [PATCH 061/256] Remove broken Twitter widget (#2329) * Remove broken Twitter widget * Remove broken Twitter widget --- static/sass/style.css | 4 --- static/sass/style.scss | 3 -- templates/components/tweets-from-psf.html | 4 --- templates/pages/default.html | 2 -- templates/pages/pep-page.html | 2 -- templates/psf/default.html | 2 -- templates/python/inner.html | 33 +--------------------- templates/successstories/base.html | 2 -- templates/waitforit.html | 34 +---------------------- 9 files changed, 2 insertions(+), 84 deletions(-) delete mode 100644 templates/components/tweets-from-psf.html diff --git a/static/sass/style.css b/static/sass/style.css index ad49c77b4..c3d2bb5f9 100644 --- a/static/sass/style.css +++ b/static/sass/style.css @@ -2771,10 +2771,6 @@ p.quote-by-organization { /* {% endblock left_sidebar %} diff --git a/templates/python/inner.html b/templates/python/inner.html index 06b1ad99e..542e6cb64 100644 --- a/templates/python/inner.html +++ b/templates/python/inner.html @@ -623,40 +623,9 @@

    Form Example

    {% block left_sidebar %} {% endblock left_sidebar %} diff --git a/templates/waitforit.html b/templates/waitforit.html index a7bc8f532..a27a9e274 100644 --- a/templates/waitforit.html +++ b/templates/waitforit.html @@ -22,37 +22,5 @@

    Wait for it…

    {% block left_sidebar %} -{% endblock left_sidebar %} \ No newline at end of file +{% endblock left_sidebar %} From f3eebba0937c408aaa51012a82d4b0a4a315fc36 Mon Sep 17 00:00:00 2001 From: Marc-Andre Lemburg Date: Tue, 21 Nov 2023 11:35:31 +0100 Subject: [PATCH 062/256] Merge main into release (#2330) * Add config file for Read the Docs (#2328) * Add config file for Read the Docs * Remove comment * Remove broken Twitter widget (#2329) * Remove broken Twitter widget * Remove broken Twitter widget --------- Co-authored-by: Hugo van Kemenade --- .gitignore | 1 + .readthedocs.yaml | 15 ++++++++++ static/sass/style.css | 4 --- static/sass/style.scss | 3 -- templates/components/tweets-from-psf.html | 4 --- templates/pages/default.html | 2 -- templates/pages/pep-page.html | 2 -- templates/psf/default.html | 2 -- templates/python/inner.html | 33 +--------------------- templates/successstories/base.html | 2 -- templates/waitforit.html | 34 +---------------------- 11 files changed, 18 insertions(+), 84 deletions(-) create mode 100644 .readthedocs.yaml delete mode 100644 templates/components/tweets-from-psf.html diff --git a/.gitignore b/.gitignore index 954ff2401..a9eca9d19 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ # $ git config --global core.excludesfile ~/.gitignore_global .sass-cache/ +docs/build media/* static-root/ static/stylesheets/mq.css diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 000000000..ec9dc1ce9 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,15 @@ +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details +# Project page: https://readthedocs.org/projects/pythondotorg/ + +version: 2 + +build: + os: ubuntu-22.04 + tools: + python: "3" + + commands: + - python -m pip install -r docs-requirements.txt + - make -C docs html JOBS=$(nproc) BUILDDIR=_readthedocs + - mv docs/_readthedocs _readthedocs diff --git a/static/sass/style.css b/static/sass/style.css index ad49c77b4..c3d2bb5f9 100644 --- a/static/sass/style.css +++ b/static/sass/style.css @@ -2771,10 +2771,6 @@ p.quote-by-organization { /* {% endblock left_sidebar %} diff --git a/templates/python/inner.html b/templates/python/inner.html index 06b1ad99e..542e6cb64 100644 --- a/templates/python/inner.html +++ b/templates/python/inner.html @@ -623,40 +623,9 @@

    Form Example

    {% block left_sidebar %} {% endblock left_sidebar %} diff --git a/templates/waitforit.html b/templates/waitforit.html index a7bc8f532..a27a9e274 100644 --- a/templates/waitforit.html +++ b/templates/waitforit.html @@ -22,37 +22,5 @@

    Wait for it…

    {% block left_sidebar %} -{% endblock left_sidebar %} \ No newline at end of file +{% endblock left_sidebar %} From 0f881058596384d2ff167ade73d732edac58068c Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Sat, 9 Dec 2023 10:10:41 -0500 Subject: [PATCH 063/256] fix misleading link in site-tree fixture --- fixtures/sitetree_menus.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fixtures/sitetree_menus.json b/fixtures/sitetree_menus.json index 85fb6b6b0..70ad3fc7c 100644 --- a/fixtures/sitetree_menus.json +++ b/fixtures/sitetree_menus.json @@ -2557,7 +2557,7 @@ "fields": { "title": "PSF Sponsors", "hint": "", - "url": "/psf/sponsorship/sponsors/", + "url": "/psf/sponsors/", "urlaspattern": false, "tree": 1, "hidden": false, From e6118a4540060d53ad807a846979b34952fb208c Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Thu, 14 Dec 2023 14:14:27 -0500 Subject: [PATCH 064/256] Update sponsor_new_application.txt --- templates/sponsors/email/sponsor_new_application.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/templates/sponsors/email/sponsor_new_application.txt b/templates/sponsors/email/sponsor_new_application.txt index 486e4ef34..e859386bf 100644 --- a/templates/sponsors/email/sponsor_new_application.txt +++ b/templates/sponsors/email/sponsor_new_application.txt @@ -1,9 +1,11 @@ {% load sponsors %} Dear {{ sponsorship.sponsor.name }} {% if sponsorship.for_modified_package %} -Thank you for submitting your sponsorship application. We will contact you to discuss finalizing the customized sponsorship package within 2 business days. +Thank you for submitting your sponsorship application. +We will contact you to discuss finalizing the customized sponsorship package within 5 business days. {% else %} -Thank you for submitting your sponsorship application. We will be sending a Contract reflecting the sponsorship contract details. +Thank you for submitting your sponsorship application. +We will be sending a Contract reflecting the sponsorship contract details within 5 business days. {% endif %} You can review your full application and a list of benefits you will receive below. From 91fc8ccdf64d16618f49824c3b014f8751aa82b1 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Thu, 14 Dec 2023 14:21:50 -0500 Subject: [PATCH 065/256] update sponsor contract with new info, fix sponsorship year --- .../sponsors/admin/contract-template.docx | Bin 15061 -> 15199 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/templates/sponsors/admin/contract-template.docx b/templates/sponsors/admin/contract-template.docx index 6316a3eb18f1d361e5e2894ec8074796df09e312..5bdc44525a4d15367bcaad989f5d63ba6c278233 100644 GIT binary patch delta 10927 zcmZviWl&x{yS8z6cZ$11ad&rjcXwS#p~bmzEm|nPYjB0eQ>qD6vN)X*%)mjzZ1JPocecat1_wk_PjUC?Ojm z6;_#Jl3rgWbs6Q$kxg4lKcjqnAu5{7J(-`H3a}x! z@+J$ofLZa37z=5W_dWF@5E}rydJVRjnchpCk}1@?xjLx+lRr zUgcfgf#2(<=Ou{(Q(_`=wvpSUVbO0;!17+X_LJ=Fgnr1GCI8oG9ytvL^?!_(|6im3kI!~6zyD|b zH;Ta;LH{Qc3J|D(Cl?&~><=KHa@Sa=r8LOh63%9QB-GX}!l`v>_8dvtT1HzsB@ILh zIx5Pp|6R*5_iN*Y?1lb~`h^tJ|F?MoN7CL@x{cc&CL!1tjNf~a2n6t|47E3?Woii<}h*&-l84-tFYIlgbUw5u=n)kV24_W_bIbhB`%)Jk#dhjX^3y@BH@S1 zgpH4{hy~EMr1B(l&taNSo%>s4`E(S!N5A=SKbyI;9(Mh*QMOtvuv3uhEHA;Tv|=$T z|IZ4SV+?cC=L8X(CQJJbJi;kGIHr|9(NksImlc|wt)jKMjh^?bE0wd;=Xt7*n>NdR zd@F)Pr6c1ZP`NO|n0!KzEH%P#QO7xcF&{R!KrO)h=9#UEO+y=a!0F%Q6Q`L`<-C&@ zoiMrESJKXdXzV7Pu1|0i0?Ijls>y}_DTApXjpXY|dv@@w(sgIuX37Tx<6dGSmHf}VkX zj|1S}7hO^_B{f8=0(r{_~^SD z1<*`82=})Spm_t&=E#)qufb)tCS>_NLj1uYw+g4Cg8V|S@0X7#`J+$#=MUaS%V907 zfH=!~d!Vb2_X{mK&tglj8EVL20AK*U4&2tVJLU)f#qsZ_g8=tD?ok5`yB4lEV^Z?U-g6G4*k2Y7t>E z9>FzVyarHURNh`5%-U97m6<)8_dEng@ARq%f4UB_uf@m49)}$fr=ek=$+#Lp0xK`; z!?2$ly2363wnt3cLE3uzgC0KL`_yzSs{@Nff83o_1{G;Bnke6Zz|2# zx>~cbu82NZbPuN>aR-ezb_jSGiDE(_TpNYe)qt+j`BG=;>5(^8DIG;+!hVZFNf&E! zj(*{?jNIM`+m60#Pe9J1)-+!b)7O&y8AlS-u+H>|loE(S4ER-g${xHG)^?)gpP3me zlh<5bn?CT(k8SnOF2Bdl7LV=w{zILUM~$O z8zJs!7R)4V1(W^-kL4Vy~B1srS2n@ubK7TIDhb|bCDjt)sMX%1< zwX#=$Y$0@hK-HMD(q5;{H2pL#z^@157u zWit%09))NcdwIarh>5#qA@}zyo)2qp^ZN$Xi!G6d0UW3QQ=4iaC^r!^=<>>qh2BLG zo|nh%8J0jW$Y~vgh^KRQZN{Il>imu_cVsKA39R}#A$feAv?B1vG^zq-Gkq8$WPC4U zQ$-7Oo_kYlnf8i#UO&>iaNv(dR zHY_p%UbVZ0IIptE#&Ur`Q%cT^Ud7gBSe&!?b#b^Wl(j|L=8MBypVEBXnmXEbWPkdY!-s+M9O(XrZ2XBc~?{gT`G*#Gl>1|0A-clp~@XhjXMbHAC1mk}f`s{x`vWaiLQ}_z?}@WQ-uoW~`&W2o>)cLy5iU9xO@;?w zo{TuUp<@y7yt7aGn>0x8Mvo=q!Wp=9+4Y-)ELBp0j-(#1cLRo>wTZDIFH>h5@v$ML zr)|nzep!y8!Nzs+M-dT{I2}jY(Ze&~FeRf;6As+XmAWbFSh$cuDYjU=nls`tDzBzY zSG7+|4~*;*=bgx1bv3+6uW6-1W>DA`n5mRlSSzAM5T7wrdLsl+e0@JlF_#@iI&>1Y~tue)$qOMl=OU@Gh!#~ z-|yB1Lvlyxwk{Fu`Gm+y_BhM48nfIV&25hK@XE};$`72v9?nam7*(BkI>45-d$=Em zIh?LTTwTKCOI8yWo0U{hT>Q;*Oo35?y4b*=g;a`&XCSvXh?H6Cg3WUrl6z+9rCeBo zptWI3qxIqWw!HkSd=Mc!GVhOnw{HFRgTq!~Gy|5B-aw#^CH5s@N;ft>ZKGC7n=OVk zq>kztJ`>}DUyt_u_hX|hS& z&T;g-Su`u4lJHdbqu#DA%dHiu{ib+v-_lB#GNvO_Oqcog3$>*f)~e2!_^_2O29-MM z>=U>QzSlX+rFw?bT2n8rdY~WJ9&(sR`K)UO3c$&kXpoY%BUpIQ7?sY8?kgu3Z>}$u zb`;BNEYy~MruWjd4R9^JocdJ65{@(j^Gw?7Xyd*Qfms+wG3<)9MPYmii-pJl46BR z3!t5o@I3fRsMvDJr?tXzF!Z|47_$jC>2)$gx+YrGE5u%6y6}D45=tZ-<$7 zX4)Kc8eB@cp$jnr1}Dd9D8+qPAm zkOzCF@>eVAGJ`a1)k%H}M$>tB8!A09Wv-A7tY*-Dhw;ZodHG?8AM!Q)V%|i&eM=nE ztu0yG^Xu5Hj-|uy*T7H!Sw>dZx~C_BKlDh_b}4XDeLOSBI{220b}hBI#%l;90g2m>2bc;C zx0FPl;See&^nZM-vpcmz1U*62YzK_ei1KY3GF*K)LU}}{tJT<4c?9|hlQv26&Rt`_ zhkArFr(1&4r{mbKo{4xv=k@%nAn_1z;l53?NxzFf$Gr92L--czmnx}43$7K~)Ignm zUmTWCoaeIZ?S+T3sc^6#JiFxR=IFNYsyG?EycFEv_DM;ef! z$S}1x_~tCRA5r+{+oV{~U~)t?qX|@&?j59=l@GCBtQwvQMAn`VEHP5-DKqPqAQj(( zBn~1XqHj}2P&@j8=K=kU>L??1U>&9&Z;BCUA64_2_SiffFnaR2?F z=H5unF*PC1c57e)q}(As5K1c&#|Dc0)k`{9z2_IENX@xdVIY&%z%`H|moz07 zSidos{fY>`xvc1Oonz(d^bIPVq1^=s%Z(xCz~hU*jbiE5F-9DO4|~B;QA46b?r((a zYlchVde&$>rF_2Rh#E%M&o#jq6hGg@geIg^AMcs*g>X*Z08~z(AgpiE%Brq`6xpYze&Yeprbxr{JBu;e{=ZAr}3e>D&d1J>!hYzEANARF;XE;3~@bKF?H zC5#PSzc5!ZL{a_frB8I`&ai=AdR}*`)VA!AZDdl>$MFm5;wVcMo~`uJ9^av!!r2T@ zmE}M76a|sgi(|BLJH1SWxUBy{KF9zVn`nX-ue~Il&4aeJOPsahI3_Ur8M;P))Zhe< ze=m_F0vd-X6>Td}cHO=aghWwVwMA>L!boJlhSuega{YSritrw5S5VS%_MPU^sp9nd zm?O#Hi&x~=rQDm7zgP*H+OL>I78ZKFzJbfP>n}%9ZzwH~dZ&x;5PP&Iw!H0Vsk;d# zJx(eUpv%>#f1y$cLr~M*YSAO+v=N*VInd)5f-4z$lBZ*%=m&Mtob zG{!$W?^>rhbfL+JhMwLVX0tH}F+XF9_QJEB+8Qz+`_05)9_wQfF zxS*}g=a_yl({(iC^-+m3opZW;j(Y{XfP=Bz*_F_*Op5D~_l7qPPBZuT64JoROb?F$ zCksn)%JH7W{-2-74j0zxJxrrAPv)7>0lu%@AM~IAB`{y!psgkUe$|_q)cpBMqO=f+ zCp3(3`a$${Z>4cdhkKGFod%D$8PqpOZ>Tc}y2VQH6I3Q9?cDByrwm0NQt3LM7j9p} z*o5U24uRO9e6h8>;W2gh?@pAfls2wN>CW*wOD%4*_%SjNndqe7$8Q#im>d2nz?ya@ z=oh*5A=cn`tT?>3w;3%CF~P;>`NkM%5*6Ch$q4>^ExsaR>OG|geDS_XGEdrBbQ7&T z_yvtN+rTIosTv+ym;F7&m}SUFBt2!fLfXZK0NJwSCn30OP|)i@Ss_}?kZQu~aB}Kr*UiVaECZA9MhTvg)b)NuGmmmf`UX(dAwx{!j3e z1b3!Nu-CDry8~Q+x-*x`gTEzCpicYL=9W5ROGeJAl}8EoaGb)Xs-a@f>(bdKBlBw2 z31_;1`2lYI3C0$sO%?|XKB(u5>MfL6U=qzCEHpmVCo-Y#0^qG2tgzVt1i>PNu*--? z%^h*zWh31PR)@{b$tnyH9i=Es{+to)|Es+>7s#E&C-eEH0SpfDBYI;IphQZ}%%Lv% zVsDp#dp^gv#xPObU5UfsjER!37MUIc6H==5_@+g@-W~kHH0{jL))zkUkeAM2blYK$*Gbo!Tv%52Utw=-S7yazhpYjc}7R5cZ<-*}>G0nvqAJ&>D<5WJ za(lz%C$TFq+*>f+Ls+|ujs5=Ov=XvpW(nVX>Q@d9aOC5sa=6NsL&&}2LpyzSRtJiR9 z!DuSm@cFB8eaOeu8>+kO!~XsoyzhmNqd;RRi(%LB0k{i0U>QyB#4O5k;Uf_V_E`X! zTfg&7yaCrTjK#*xg+;9KkK9Z=djHwI!FH3FZ;sIk=x>&@ap|{)Kgl9tZqG0jBH;$8 zOajX4r@JCP&Zb#CERRH4OzC;bKhTOFf0_DHl|+Q8B*#P@g6P%fLZ}l@R}tn_-;EO* zzit!S7+S7OR8~hYDJ!2W{jkh9>1PGnr+L<~!7?=4_Tf{z%}p2rCP#jIjedJhU%>vR znT1NjN2-xc6_zOp$^xIW%v06_J0D=O&9}MXqs9Wan`YXvTF*~Uy-?;kl)&sxMb#o4pB!Jsx_EROdh??YZi* zyPn$BB(yt`!sKjy}Im<?$k8^3{ofFW70v{3oA6)R~9%k=q(-)KgG!z-i_T-McBw=znZAp%~BICh}Y zKc*GtYkBY*^w=eX0XkjdZ3KW_5aXu6`~Lash3j+sDcS~5B(V4Kf%NqvpYW3m6cRu| zhd!K-TxncYjJMsE%fc^cS}4I%ei2VItKb)(>y{0-9UVS_1u4n++Fsb?E_N;k(B;<%0)@7kYXZp;5#*j0X+-0k55ne{80%r!K^ zEDoBMi~k}%W^Il{fCr#qs>GLMMk@5LwNG^8Hc7x=cBDDIi>|B(HlfR>#0;}|KpGqi zw~|hrGS7o1KAg=d<;W2jdU;|&Y=Bmzvtj%yZ2_qEHPlZgnvtRkuIH3VGHR6Jj}OfZ zZ3(`_2;-K7J_P$_^u1W-4JscdK8hzNXY{oO+AIi4$Cw(~0uUa+7-0Jivd>cf^7XuW zz1#&g{5P7JcQ;lRGGrbSv#z+D35|-5tN0xeb8WPUb@#b4GQ`_Bby4ck=w$j90){Gk znKTiGv-lFF4M4x$%-KfIs^e_!cAqinl_?4LF%n>kIQCb~MeN|qWO#uJLgA177^IF% zxhhK1c}~ktJ&QISeZOVC-12Oj*XD*Jlj;gezbTcpN2i_^i*i^3=Xm-h=xUDNCj^kc zx&&N4Wnkt-U07TQ=>HwN9`+tIp~_lLAG-=J4I!@jg#>V2NJ@JXC5t}BaaHT5K~BRV z$NSL)^-UFIc`OuU8;--G8-~9xa_FrRp29M2%$Wxa40Kxm@)>=MEjVOkE0jV*ci=P* z%{5)tiNB`ppDFUl5XFsaR2k0~`_t{7gu6Mvbu?ZuJN`#+8Fm^}I42RDc&rQZHCl4t z0?$5*a{#PZjCf2cK}X>9tId#~v7~B>?HRb_Q^l1QGoLEp_6N(qm1g6h)!a%T8n=}= zN%eeaaWC;5N}^%vy)zSZ$hgPD7g%sFX*Z^YvMZv(2DupCWeuWX^`p_9e!uM|`9!i{ zP>Mh)Fz@TB+OB4G*TI-;SjiWr+B70RB(i|4Mq92>DY>SC|Q^|hvYOQlMXiJncs&A zSU@?sVo#_!qe?9=6vAO^h_b5bE89h9$b@d+#oYGza61lC(!>RoA;b!iPj2HeLBW^@ znFB`G4Mj3wVbTX?=5YhFIn41jovUe&wE0b3i7Fl3g_9t0dJb)|@2gE< zWd>B7O~?JM^{20%Pk7Y=T)PbkC4-N_GL+z2#}!oTAI)ra4ODBTn*BGw{zAai76Q{^ zz#oYPBQjir3gKkKHoO?DDKr#cILUqzMj!~h01nzu_0krBA)H)bHd?t+A@{|y=AhQj zb~IcSw@cB=!vEA<#4<|$_2MT&>8cp&NmmRFI9XP^a_`Stcv&_i?74TPp8K5ztJ>E{ zQ|ameyXEj5g=4Kg?NX=DY?nmkGwJqPgtz{X$a)^?sZ|Q_k78YM4i7Y%xiOSCG5}c0 zAU4q8u-ia7oNrH!!lj>ISFe{899Bz-BuV^BXR{;ypi`9MidExhbPpxilyrZ`w&C0r zQ<&Up_e0=E_*mQUn*tgpD{8Ds+lM~2^K<66TvaY^n$6|rvjil=YG0AI$N%rqRh4u= z=?G6gAaBurD)`~r{w1{!t(WtEcHfOFgvAk;w;(AI{Agsh5udJBwI`V5hM3F*g4@hC z>ivSfe1iM}7)?Y)h4_P>nxt<#hhC0Zlmw*yP_ic5?|lJjd+-cCac&puY*we)9B&`d zH71-@;HjQdw5NTMW4cNI@z?kV;)?u!BIp;uD{A}gd zl0dTmlgv&2>y_`ku=q!J`)hAPa1H5;(So=-zfRybtdcAvT2<40f|h`WJ`{eL=MX)B zX}yQyRil#11xrR6P&B1&(U5K1rsmK*3w<+N-`!&W?emm&qs-n$=v!)Dx$0f@Q4_Bs z@YD7{@o)=HyLn>nXi>#1gm8TYq$(?tU*;+r8BV*7_V?Geub`jl><{Pab&tpV>BJsE z0qhs&oW>0%Lm$vZrT%lG3QX6Y=z0er)z|rukutfS)0;2Ux5DZe`vs>ILWIF-^g&S5 zM<`!TwyZ-4XQ@xpTe}1T=a>hisCanuZ|@gcVAwR+(s z)Y&GI%0^!{rPMeSla!3Qt=5Tv2{Sgb^6sUT6Y^2AQ8tpwRXP2@YZHM-f3z~OJN{$(ehzc3sY(sl*acV=C0l9oUnc)^S}FGzQD@R5#KYU}Z_J%nJBq3PNGm|h5Llnl8!nX8>L_flteg-iN0Tl~5eiU5vu*dtD=4K-C zK*?e!xlJJ*$qn;^Ed+O*pWC?bKideXzs3?SL*XoLMj@m|^vC^H#uF0&3|@rTcpF^2 zu1{i|5ljg4;@g(9e~zf@KSYAqSNc5M_!MB?DK@#mV~R+2nJv_`O%7_M{WsRbm6aJ8&pO^z(3mI}rS6c%$RjpX3Uamj{H ze@5UopeDchVPKtuD`@xephI=`trL?L#F*f@22Xtz_J5NWL0;;6!(V9X>ZYb=K-W-}{c-z94gek`2=4-y8JOX-FbNhsVBwVr6{^IR-}T*vU!JHlOD!AqoR)Eb=>CG z4nK?^0hM?NA06uc$wEH@CAKU^P>;|5x#4HsD8uRn_{5=oe&v4~$ z*VcpUNNA3;sRPbkq8;Fys#G!W*(@)bU;m*J9Ex85$zBGlja-0AZ|!~r4S>JBeurD3 z3QpIyi+K@UkB@!0z_x6tPQ3hos%eY0gyS9kzhwccncd4A59kTEE7T_sb8#=c&0<> zyo#Ti7&%2hT)f4Y^o2uheE1@rq5&If_9%+z6G706F=~h#QizKqVLvWVYNsv@)GERY zn9wujYNDX=&O&c1-xqngd*~aEqPMeEft7H`LO=ddj1u@C!?h$yY;w|Fa#}jtyZ+>B04!_m$s6Om_Sn)E}4hd5|{^$+W>-m zcU^c(J2J((wAZhOkF`}}_{=J3lG}~oCecm#vF~?JK2AlpI#lx4{bhQnR-oOmBGV(G z0gel`)*?_-8M7wTMwI{BhzeNq8G412{x2lu_eyVaLIVMzq5=6oG}?b5DTx15 z&>rt>!O2O(fESkHLGJWt1OLfmg|nSC2OThi(2V4Ff%Eo-$LkXyAsCLRc)JJZLE{5AIO>L5jOuaWC%f?oi(T?!7brd*4hl zbI#5;$;oc^OwQ)B;W_Vtrm6r9gAIXzfB;cdDyUt9Mgj@*PXojXNd*|H^s-_5Kj<*| zlNs`g&qOEWZOMK3fgj`4&?e?_l5r1peR0OaqZ;A#ut}}b2^BG3)r?Qrh#3DH* zr1j@L`D(gdZ+`S4YG-2XM(o3ULk)mxw?r2@=7+VUf>;7Fc0CV@(uHhnO3Nwp_;1`8aTW$_)nI9v zrNC(rZcobjcE~q=jT9twI2L)qS{;CY9{J(r%{Z4!eM9s|b<|6V<(%q~kJbm-6jGwC znP9PB&`#Yet|T{!tLw}M)KNdu!lwDmcWBJ~etEgRrOX&z*!2NCRrcC-belWGS@k1% zT_y^DWW5X!I@X`Vtl;{V%&3ku?ii4_oVVgS)#E48)^{YTPD+LL|Bx{tQsEBrD)4Mi z#}D<@B?yER*M?=6zklIT&L|hITJcvU z5&~is3IgJvups?kTtG`uEI?X&f|+K+aT$)RQVHx99*ec8##>SF!sm0}K@PP#aU}XTPJBR)?3bPb?DD;_&;hyP z(bwPQuoBG2gO_?Z6|U!z>&5)Q{3?vla49q(h4a;_z}Ed{KO9S=8%@nl|% zX7#Q|{VX-IlW%?$2CJctLD3vmR}@-&nvWB62_i<8t|doH zgb?lI?0jB4`|91QV&+t^*rwwL*;Kk|lC#B^PF4VQKpfs&YDbTTy7T$N5Wk(5pKR^7 zJe%J%UT!O}19BLxZa8MI_rEe4jIE`oD#`WB>^>d9#v-=P@3xp_xSTkuW=We!P8D*R zG3!ffP2KV(mn{o`npnaKdPzmAsskE8#~&(<(= z|9b!H#9$4e|D6eW2voq437pd_+iiDkAkmLbazkHxP1 z*kM*STbsU?9S7jEHEM_?_>X0peWYv9;Ssz}0xI;}-IP++7K0rhmwssHb*yEl-%m($ zXlU8>P1>Eo+eI?f^Tdi+)|=U|Mxt0Th2Wf>NFHbqdd-)uwdF2=m-t`&&*l%U9@a~^ zo!jh-o8UACS6a3cwS z4=hUF0|P1WS+d7SZxu7+MiZ9{4(~Uf{H%@l-~Hk00?m?HW}dH>(`$XiSl3kypR&Uz z-%0sMpPaUon)(c0JvS|@JDOxb9k0Vn!%;hRcqLY%q}ku!$du910TCgQAwk#9xEFsc z9nZYV(OeCMhjY<1!?n&~nV5z%R^5<|n)Te@VgT>k$1%Nwzb8hZ-z;35-`=@naYI+~ zFu|xt)~4E?Md(h-$Q!7LcKzDz^nH1F%hy6e1%GvVpZ-IzhOvyOPQZvOFdhTZrWtKf z5lV=nnRKE+Q;20r?tHw_4%s)qUu~KWW=>rZuNtx?k@o-iZOhTXP>Wa5sLVahn%8F! z37A^1uCDr-u!rimfz|Y9ET*EDgDj=)2K!qrq1_tR8$+d&(H>Tjx(mm+3@wh8v87U> z)^<8W_eXJ2W1N)D-P5J=u{La#o}L1JWhJDPTd@O54j$-HoRT(~(V6WdxX$rzK`zga z$!2#tsv9F;3>$#+0iP&39P7tuD-VyuW>HEQjNKL}6GN&UW*7P&YO1*1xstyFqM^zF zm`Ldo^LRw7L8O5$=mD$~1rj_Cx#HgPpxV+{RRVr5i#DB07?3Xt5nv8>lR0?HuWm!h zJu@~`A#=RE-niwPJ=*G-e)@A$hbx!Txz>54>2VXn#0m%r39mX~eP*sf^eHMTo}L@o zJ5jpRi{ZRfmYz8#-Z}1F%vZc~T4xs$62KMw%6qZu>;AC*Bb>;TgF`u@#uc zj&x#iw>+H8m5q0?3rM&sQluKFHebLBAk*U~rRvy1K;qZ*eYjK(*;L8{;`q!n$Bhwxv~E z9rqVs3wqh;C)<-q;Z{EnaM7$n5T{YIV>QuLX;c&qq~%WkP3u0v%N4cN=0-zb@>KtW z_mpEQwV7=nt3lx}z8Kmyp70!M9(@zgrk`lcb{ppkfsroidVh`P&bqu#CYSSx4_5jJ zRu20E|L6W6Y zHbepuKo;AlEAv&Zv@m7{E)(ZjC+nU~2}_ro)n43L+1|G2WD8g&G3b^I2M1N^EW#pq zV@t>j%ijjJtE(_Oa;Dc6@?jeM8BR|K$ZyZag)s+htL!#Ig~(Bvd{y6zQjC*T5;T|l zlcPFvnK2kR&(T|1cT+cm)xGB66;Fn9e=SgG0(y?8(0IQ|u(4J5IMcpi5K^WDF3b7Ul6-jJKYZKV*_Ss~sSgG;3%cB-UjZoSAqn z0b#`D8FSzpP`o!?C$T8xEF$P2((bGPTn4y$Lg=iYCT|*~(d0TEExA)7vPjEzWD(Q-v{t|^nN1fbV z?(u1DrHelyEkCHSA{u8~iSPZhu}c~+a6<`FI?ASQv1P`!f$AR*x`^$b3<$&$U*J!s|zWw>jU zE_9otRR;E><2$l!s=y>lAJ=QE$()v)Kr!4v*$`Aysz517|1O+mzoD(I)~!wjg738R zF;I%#^XVP4DW<8OG8NxaOd{)0CJrSJsB#G}n$SnDRdh>Quke1a2u|qZ>=`>FO0|#m zG~CBJ*}4{_JeP;J^sxNe6rVNIY(l)oTRm|}Ih@jq|HBxQkLAqW?n?5f`T+|L15Ztv znS2;}pfx7)u!j&f(nHG};wZ5ffG7l&qUE8JMG@QUqc&Dv3uaj(8QF4g>2u5>MfzNT z;hYO$Ju9@ow8j(rmTyv#qZ zF}RRXeqhF>lKmuF>fH{j%Zp0%J1=uy@a#9giHMHkMK@)zRQA3PTcxIqfpD$B595(B z97S#B+%&AcT$aKOL7)*l z@h|64tQ9Ay)IbpfdRlj=E=}Ympe`&t+FDIevlWIE$mO+Ta=TLkB zPJXvvQ9l?iDW;afe)adtLrUYk4( z93onZx`musLlW38z&)Qum_kRG2>!Y{>bcM_7W`PRxP+~30e1e$SF_9&GLEBLNII}z z%QTHiD1Fy~?W$%)>3poC>QG@bO{kh`Z>^Oeg0wcDzMjd@&iUP1$?x@hjA6-)K)5ZY zl86?^Afh|-tP8wX1!BAap`Y=Ci>rY&h!F<~QUSz`!v^^Vvc#bUkiN!dya-a1)TI}W ztOTbeZSWperIPAZ7^Va^$UYEPZfeYu)UjOO zwh*^y^pg0{o*@d#fQ3s{t|LZx0I?qP&igqR%IlRrjp%Qu&&ipLzG)C7eLaO2WA1IB z9Ck_MfRzX`#XFG#zM-$Jw1k~0DVgBWV16Ag%P!UZ6)BqD$;XZs)7HpvBE2k#fmAc} z3%({GEWoOBqm!2Yj1iBOTE>cS`{P^^t&q=UAa@b>n}2ro3Yad)Mjw%P|exW}= z3{XlPn85u4f}9F<85JB6zOCclRbuI7PwDA?Hjwm^q|=R+>^POGSJKU%tovLlV!{xl zbIkof&gG29Hh1xGRgdq5>=0Eud46^-MM-6k;Tn)Boxa17o6`&BNGr0AWo;!r3JTX>`Z!|^vlvo<4V*Kn5z>xad6i-q3_o@@+NO{4wguiVq?}-1Q|YHWucP4iRXeA6RTrvj#Jesd0hcewt_B zD}#S7eZ>!`CJ)xj>U=vt+ejUEA7zY6*&UBd?*D~vg{8GqdXc|vDQB9M8uI0^;Z^ZB zP_k-;&FmnwdNVv2EVR)$dBl*vTK`qP23u*`olv1OD$-F z+Slw8_D{uOk00@Y3Ti^BRAZd_95FKC#xOraAeHcv{WW(ArQ=h<-4Fe()Ou|G+p=h_ z>_s~~NSi)Otbq1H&x))CIz!NkoOd~B-hy%%lV%1E}()!5NT_P02_`&*0 z*j+k;+yr}GjD`QlAJpRrh#q6GzBU13haakBh=>;*&y^X{i zo(zRLNc%UR#`$vgjUP)mB}_<6WKLrY7Am*phRL;A{pnB!@wG`mL>{n)F^OP;6#5!3 zPEUTnd2hX58X-9#<~CF~mNG}Hv`5y*M6z4*Q}Tu3wag_Ks4Rgr3)vNzfLizB5izvz z?^||!p(wmAwwYqGATo@`I5 zKd`S_ZlCJgPTk;XE`TlJkQ~k^CVbB2I)>URafqHiS?-;9@F@M1bDZUDnSZK~1cjMb z)$35h*N!K(<^zJZz6ROs0g4&|ZvHLoQxo7-b1ETZe%wT_B1saRU#dId#ZtlX{%OI;w|4-r6cj~ zRD`AyNg9NyShkp8cf{SXXD5VZXatw{U6z`xR!==qcomc`kN4+&#UMzoEH1s2`Xc2S zg^mdf(Fj2e-Fh&JptKb9@3d3QqpR8I2bDF-LcZJ`152oJVCYrt8w>j>LyvXP3c3;w zbiG++b&eMCrZb0$6X_UxiA02Bd=lrH5ey`+{=Q-XS$pXSdU=uaocNyi0Eu_%nvMgPfHl-nySD+1gx50|9)Lef}&&A-+7jW_=*|A_k7xUW-?`l z+|I?o)K7VqKh|VjTznt?G!-0IH-2|o_llpa9JBp-SyD|e|6xxbA>GYmZvkh2%yClW zYD-YHqsPAE+V%*isu#Ql2J<#uHrGF_xxf6@QkPK&E2~H8Xm37Kx$;ekHI0C~MlhRC zbaaH(4D;njz~E(^inXNSkD;G!3`)Ghv%h$l|12=SWb)$iHEm%WmZsHOBdk6qBr6~W zHl9u8-Ca3BDrEFPWkIm`^xM5|QzEz}ag>6s4aaaC$Nz7!CYH~aA)wn|g*j)L*~RO! z?$PSX`k*IdWv#qwzdWFtx&Xp-|1L`7>ab^G;?vdWQb1D{xFw6b>DK7$z;mB3I&Xi- z+Daxm*;>~|<35|Gn zg8j?1gZ$+$Xd9d;5Hqn{6HP^6YTjU~ zPT~NGxU_8zs%jr9C)%CTEZLlj*>~IA=u~8Rt!36*72H<9jc)sP{{~OAeSWr*8ArN) zpERaSGjdJ;oM6hDrnT;Kmv})!$OyU%Y>;y2HGNF4=!N6RKa%Y1|R85sYW*!sm2|l+;Cpxo0x&Oj<$*Fv7;L${%;L@Op}GEf5_{zb)fO;YRi^Z^B<@WOr?5Ri^f8MP;>F`dmJ?*EDxYjq0&L)uV_c?77npuzgLDJ}H4n;t*tRK)Oa;23gAnk4L;Efb&nXwP z+=^jFYQ8c7T44?=LE7WT7U(yT1EUd)C-d-sqUoy8lQcwrMKIPUe6dvNm(JNemOfK+ z+9z_RWN9vTG5@evM4Tc4ZyYI$+wY^vHg?dW&89g^ETUN8ri57xO?bXo@*(A7@fZ5wCZA=;Gb{MLRq-abY~U;u9GxOD~6@v*47 zMTBxc869Gbw2st}=E2c^M)~apg%7s!-C1eh)qTa0%PEw*@YLVMxk|Xq_3q@fbRAler?A3sA_*PcYs+BN(Q=Fr;6oQq3n||A&@61Hu;B1%) zV`Pijj%7?n#EMqN9{g8v#v)u}YuEzgxbp61Wi!c-m&eVJ8e;Bxf<+~X@qPSyz3SC%L7g+-eX;jfk zLK?Dra(-MhlN6UQwd)Vshodw?MOIyZkWcH*qn(9iOHX!~@8&@JhMVnhlNv0JBlm>W zTfmD}3*{%EScFDc=@*@Bcu7ovM-lj>y%E{I(;JH{8as#{>5_0saa{5zD>db6Gk_0< zRSesO^`l5uxO#7%xF+gYxCSO5fH+y*soCND1=m2GhjIg8B(x{Kr3go0>cT}a{DD7( zQ<^sU$D#hiW?^YQ#Gn;e#BEWWvUWIh4b+(m4U?hysW|NAkO>u^xHoMZl59!}WkprC z3=_S|*$|H$U;7+RzFHZ@-PAZAKi=<`U#1tZgo%$o{M`@mw^wydLVE(%bB7JL!_n|p zAJvO8Ai}PK7BSEl#H473sQ2ghoA^H!o24~!j)|zsC>};Tm=ZwENXasjKrAFYy9CJ} zUebKg^QQFU3z#9p9$Nk>i-Mm#I!j-%S=Teo!*8mNkl8e>@gH z=}bW~ILUcR-f1}NNdK|YKWM1Adr}jMZSoZLwu^9X17*U9S##WqLR_Ii|8R4`8EW{n z+u4dO&uo?f&u=d9T8&C)?^FD=!FaE)@A}b>asgA7sEV6|ogf0>kjQugRrqZx`qkwz zL%H3BsMI7|r)F38y3`i_>loP!N?~b*M$Pt*kw-2hp*^{|SR_V$XFq$&?BCQHJehc2 zF`?y7gffwj?SZgNE%fr*MbLiaU!>tZs5P=8uicj;>Tw_Hv9m?=NsLhMebAc@kx!a- z_%5|1O|0Eyq>R7-0hO9g*1AbnwxZ&xCPQsmihBM!VqU@OcgP?&zDEU zL)&}PPgh$@>0VDeTSr?_R?Gz(H0wG}CNmVRxGo8bAL*hi5>E&wQZdOIW{LG|idpz! zby7UFqUavtSLK6q6TL^(FREr?&ZymV^y>@JNnHGeT-MgSyXPClmg1zAkO$5|kjEk~83uh8WOx5`p_@Okvf1t(7 z25aoaVE`jCmJ33CVd~%*(zLkPvj(M4^)6Kz@W9L~&Z5c^0o${aQc1_>=TE|dz!x}2 zRjoFrY{xU0{nY77k|+1w8}H|P4SMUDv(0g)fToZK9K+?`%go{LPdn2OG6$wz4sQ1{ z7NacJ{=y3H(-DDRU%~pR2wv}7uC*<|OB@JZcg4aXA-)&8yCe+tDd1ov_5kasw0!ha z5P&MQE9F1?D5?C^_yGwrw@^s9oOC{fp#(z)uPmLKku+s;_GtOAb8lw98Y2)zh)?j> zoo;2<-=BE;K)}O28PS~?+Eti7qBPZ)tMoDp1q$ftjQnIXWpR{+iJZF>6LxNsNPMsw z?Y1U6DZ1h#4e6aQ6PGAGW)l?>PCdY24)m(pHT;Q)rrRabA~>zr!WQy!?rQkVyg>A{ z!OGAv_MX%Xm$2V@{ostbcgee0?9@O={oP`l68yrwe&x)N&h3Kf0$2IY+bKuK1(d%IHDg#NkvgJ(VlU0B%ojoVVJ0Dw0?+9H|rt;3`kD9 zBtg+vsu;7UErOrXFiYRW8`4msN_j#T$*qcupaKxyKBp3eCQvf#{E`UiH{}QR7%p)< z*~;$D!#^J)4hfCE5kR0)!DP5@MBM#>E2faq1qC{DaTq(fn6lvFKTTu)g6WByuILTM z3+=IRhBXn8^<(l8#F>14=tKU23J9G;$VBM!hTg&I?4U9+soJ0@sC>8=^s_gd-eYu1 zv!#z@K%?JEgzq1In$mCT4-haE+Q?60tVNR93i{3$mEkMLh2>MC*A*|hFRP-lW<2selG^0&qWKy2&3Gt8Ye|gVK1!Xi z5hU=oySPWs${A^qIyh)Ly8+f%Y^L~lWAo3Q80QtI@;13Ig!qh8JtZdX-E=d`eS#eW z5Khw^Cf#_N63CX}T(L$Y%5oKG8>#xR(7MK=bUr-|vX+iL7VyZa#7s{ydB}LL7_4tJ z9EgMo0sNO;Zz`B7MNXuiytKZZKi$q-iMF6n#UQkz^j9>W=xv(#I01r+F<1`g4ZJQh zVFwNW5n4;d&6x|Wa=2%G?*v1!qX(DSCIouejT(y}8qI50;!9?{r&bFGPtH!aGJ7)j zBk*#A4s_9>FYq%qewVg*55NWsI>wWO7~2 zFCdKZ{?N6(exB{oF>R(q?89xeKo*ttChFIL%t{t0CE4eDfh_oWZnyxpJzxZ0k{r2S z0~pvV}3(_bU_0KQO@FO`-VIh0l7>?6)p=%AqBd z_@@mvNBL=pL!itjCT|s+6@H=#)v9&pIrbz~f1}9Nn&4&96CLs~Q}+J5++yP8=>Z+j z`ntE*S1DJbuV2ZS;iX$CT4LJt3zi|7yu| z8oddtGGC;)r>fU+ulB>fpW24`=sK*{hJS7{Gfw&fAaWoj#tMV*5dK1RH2z~}i2xc& zt$L-z81HJRg9t}cjGH;edN|6XIg=%(Co&coBeqNJ#94E1n>NDbjH z%3)}!+(V&W_6yaff`oc2CJm^KZ{Dke%0n8@5Dp)(FF^0`|KLrZo53!@G!PIhQjie; zAKzCu!m{!otf`EH832td_pzY_Uid~bKJcssBIY-?LCl~TsCox7xd8P%5g$^koZ_Yj zTjk6$R0pPGZ=MvkslkRTFu9w44(=oSYGY7SGo^Z|3@^Wo`eYhMEQbZTpvwAn8tx#^ zrbR4p3jDWMN0IclsLaG?c(?v-#t(20ctrde`+(h*>PKmi|96o zIYbtuT-uv21P>xJHxK1Qsz`3hcPE|geCLZca_ma0^_QYvnDY@N^fME7dFhNh4NRVX zvAc#%l?E$stDI%36<*bTa@Ko2_I*(4^d#>ny)iE%=aPD)TX|t{@K|u{o=%Hx9GYvO z3rJHhU?X&^;kPkP;w!F_W1=H*6D$0bi}p<6rkY0cdiri@^p7JUN0m(p|8ipY(EkSV z{)-dKL%^x~#Krm_SW*lYr!I=y_}{&{3!bw7*t7V!5&oem{~`N8OMJZl>ik2Wf$;fx z{!N#u^9%pG0pb@z`$zkK(F3jVvy=T}S~%`_FZer#pXd+}fA{~|G(gM(r2o?V_gIPl zO927F0kReNNdC`tn&Ywb5dS_;!QTV(e>5qapauc5e~Atn1RVJP3c6t+AU^z$Xq^jm jD?t9QyA9CG(b)bK8N)$9VEvCs2gE5z3kSvbkMaKj)mpaZ From 1296660a17266a94e788b0dbc940404d1066bbc9 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Thu, 14 Dec 2023 14:33:36 -0500 Subject: [PATCH 066/256] fix notice in post-roll on sponsor application --- templates/sponsors/sponsorship_application_finished.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/sponsors/sponsorship_application_finished.html b/templates/sponsors/sponsorship_application_finished.html index b7bb92953..15fd823c7 100644 --- a/templates/sponsors/sponsorship_application_finished.html +++ b/templates/sponsors/sponsorship_application_finished.html @@ -13,7 +13,7 @@

    Application submitted!


    Thank you for submitting your application to sponsor the PSF ecosystem.

    -

    Our team has been notified and will contact you within 2 business days to discuss next steps.

    +

    Our team has been notified and will contact you within 5 business days to discuss next steps.

    A confirmation has been emailed to {% for item in notified %}{% if forloop.first %}{% else %}{% if forloop.last %} and {% else %}, {% endif %}{% endif %}{{item}}{% endfor %}.

    If you have any questions please respond to the confirmation email or contact sponsors@python.org

    - The Python Software Foundation Sponsorship Team

    From fad5f2b7e4d5e2f08fc7d2e11c2c380bdc60efe0 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Thu, 14 Dec 2023 14:46:07 -0500 Subject: [PATCH 067/256] filtering by current_year where necessary --- sponsors/admin.py | 2 +- sponsors/forms.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/sponsors/admin.py b/sponsors/admin.py index aa3d5408e..ac05a00b8 100644 --- a/sponsors/admin.py +++ b/sponsors/admin.py @@ -258,7 +258,7 @@ class TargetableEmailBenefitsFilter(admin.SimpleListFilter): @cached_property def benefits(self): qs = EmailTargetableConfiguration.objects.all().values_list("benefit_id", flat=True) - benefits = SponsorshipBenefit.objects.filter(id__in=Subquery(qs)) + benefits = SponsorshipBenefit.objects.filter(id__in=Subquery(qs), year=SponsorshipCurrentYear.get_year()) return {str(b.id): b for b in benefits} def lookups(self, request, model_admin): diff --git a/sponsors/forms.py b/sponsors/forms.py index 01d3de4f2..f4c72726a 100644 --- a/sponsors/forms.py +++ b/sponsors/forms.py @@ -127,6 +127,7 @@ def get_package(self): if not pkg_benefits and standalone: # standalone only pkg, _ = SponsorshipPackage.objects.get_or_create( slug="standalone-only", + year=SponsorshipCurrentYear.get_year(), defaults={"name": "Standalone Only", "sponsorship_amount": 0}, ) From 7b14c6c28bd7f8e23a5721e2a9f6a9e2912c2faf Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Thu, 14 Dec 2023 15:32:35 -0500 Subject: [PATCH 068/256] fix deletion of BenefitFeatures --- sponsors/models/benefits.py | 5 ++++- sponsors/models/managers.py | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/sponsors/models/benefits.py b/sponsors/models/benefits.py index 51ec1870e..635b3f6b9 100644 --- a/sponsors/models/benefits.py +++ b/sponsors/models/benefits.py @@ -16,7 +16,7 @@ ######################################## # Benefit features abstract classes -from sponsors.models.managers import BenefitFeatureQuerySet +from sponsors.models.managers import BenefitFeatureQuerySet, BenefitFeatureConfigurationQuerySet ######################################## @@ -307,11 +307,14 @@ class BenefitFeatureConfiguration(PolymorphicModel): Base class for sponsorship benefits configuration. """ + objects = BenefitFeatureQuerySet.as_manager() benefit = models.ForeignKey("sponsors.SponsorshipBenefit", on_delete=models.CASCADE) + non_polymorphic = models.Manager() class Meta: verbose_name = "Benefit Feature Configuration" verbose_name_plural = "Benefit Feature Configurations" + base_manager_name = 'non_polymorphic' @property def benefit_feature_class(self): diff --git a/sponsors/models/managers.py b/sponsors/models/managers.py index 4681532f5..5cb241fc9 100644 --- a/sponsors/models/managers.py +++ b/sponsors/models/managers.py @@ -146,6 +146,15 @@ def provided_assets(self): return self.instance_of(*provided_assets_classes).select_related("sponsor_benefit__sponsorship") +class BenefitFeatureConfigurationQuerySet(PolymorphicQuerySet): + + def delete(self): + if not self.polymorphic_disabled: + return self.non_polymorphic().delete() + else: + return super().delete() + + class GenericAssetQuerySet(PolymorphicQuerySet): def all_assets(self): From 82016f407e8a0faf0936e3667786b687c8aa46b5 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Thu, 14 Dec 2023 15:35:27 -0500 Subject: [PATCH 069/256] missing migration --- .../migrations/0095_auto_20231214_2025.py | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 sponsors/migrations/0095_auto_20231214_2025.py diff --git a/sponsors/migrations/0095_auto_20231214_2025.py b/sponsors/migrations/0095_auto_20231214_2025.py new file mode 100644 index 000000000..e656bf05c --- /dev/null +++ b/sponsors/migrations/0095_auto_20231214_2025.py @@ -0,0 +1,83 @@ +# Generated by Django 2.2.24 on 2023-12-14 20:25 + +from django.db import migrations +import django.db.models.manager + + +class Migration(migrations.Migration): + dependencies = [ + ("sponsors", "0094_sponsorship_locked"), + ] + + operations = [ + migrations.AlterModelOptions( + name="benefitfeatureconfiguration", + options={ + "base_manager_name": "non_polymorphic", + "verbose_name": "Benefit Feature Configuration", + "verbose_name_plural": "Benefit Feature Configurations", + }, + ), + migrations.AlterModelManagers( + name="benefitfeatureconfiguration", + managers=[ + ("non_polymorphic", django.db.models.manager.Manager()), + ], + ), + migrations.AlterModelManagers( + name="emailtargetableconfiguration", + managers=[ + ("non_polymorphic", django.db.models.manager.Manager()), + ("objects", django.db.models.manager.Manager()), + ], + ), + migrations.AlterModelManagers( + name="logoplacementconfiguration", + managers=[ + ("non_polymorphic", django.db.models.manager.Manager()), + ("objects", django.db.models.manager.Manager()), + ], + ), + migrations.AlterModelManagers( + name="providedfileassetconfiguration", + managers=[ + ("non_polymorphic", django.db.models.manager.Manager()), + ("objects", django.db.models.manager.Manager()), + ], + ), + migrations.AlterModelManagers( + name="providedtextassetconfiguration", + managers=[ + ("non_polymorphic", django.db.models.manager.Manager()), + ("objects", django.db.models.manager.Manager()), + ], + ), + migrations.AlterModelManagers( + name="requiredimgassetconfiguration", + managers=[ + ("non_polymorphic", django.db.models.manager.Manager()), + ("objects", django.db.models.manager.Manager()), + ], + ), + migrations.AlterModelManagers( + name="requiredresponseassetconfiguration", + managers=[ + ("non_polymorphic", django.db.models.manager.Manager()), + ("objects", django.db.models.manager.Manager()), + ], + ), + migrations.AlterModelManagers( + name="requiredtextassetconfiguration", + managers=[ + ("non_polymorphic", django.db.models.manager.Manager()), + ("objects", django.db.models.manager.Manager()), + ], + ), + migrations.AlterModelManagers( + name="tieredbenefitconfiguration", + managers=[ + ("non_polymorphic", django.db.models.manager.Manager()), + ("objects", django.db.models.manager.Manager()), + ], + ), + ] From 7ba7d3620d7e16dbfc564cd0cc4cdf5449852b37 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Thu, 14 Dec 2023 16:08:35 -0500 Subject: [PATCH 070/256] missing migration --- .../migrations/0096_auto_20231214_2108.py | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 sponsors/migrations/0096_auto_20231214_2108.py diff --git a/sponsors/migrations/0096_auto_20231214_2108.py b/sponsors/migrations/0096_auto_20231214_2108.py new file mode 100644 index 000000000..11c6dde5b --- /dev/null +++ b/sponsors/migrations/0096_auto_20231214_2108.py @@ -0,0 +1,61 @@ +# Generated by Django 2.2.24 on 2023-12-14 21:08 + +from django.db import migrations +import django.db.models.manager + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0095_auto_20231214_2025'), + ] + + operations = [ + migrations.AlterModelManagers( + name='benefitfeatureconfiguration', + managers=[ + ('objects', django.db.models.manager.Manager()), + ('non_polymorphic', django.db.models.manager.Manager()), + ], + ), + migrations.AlterModelManagers( + name='emailtargetableconfiguration', + managers=[ + ], + ), + migrations.AlterModelManagers( + name='logoplacementconfiguration', + managers=[ + ], + ), + migrations.AlterModelManagers( + name='providedfileassetconfiguration', + managers=[ + ], + ), + migrations.AlterModelManagers( + name='providedtextassetconfiguration', + managers=[ + ], + ), + migrations.AlterModelManagers( + name='requiredimgassetconfiguration', + managers=[ + ], + ), + migrations.AlterModelManagers( + name='requiredresponseassetconfiguration', + managers=[ + ], + ), + migrations.AlterModelManagers( + name='requiredtextassetconfiguration', + managers=[ + ], + ), + migrations.AlterModelManagers( + name='tieredbenefitconfiguration', + managers=[ + ], + ), + ] From 4ef43887cf19fd394ae7dd2ec5d1c0cf5d4d7f84 Mon Sep 17 00:00:00 2001 From: Jessie <70440141+jessiebelle@users.noreply.github.com> Date: Tue, 19 Dec 2023 21:20:39 +0200 Subject: [PATCH 071/256] Sponsorship - adding renewal option for contract generation (#2344) * WIP renewal work * test fix * removing venv added files * tidy and fixup * test fixup after logic changes * Sponsorship renewal review (#2345) * add rewnewal to the admin view for sponsorship * use the sponsorship form directly rather than editing template * include previous effective date in context/review form for renewals * update to real renewal contract * missing migration --------- Co-authored-by: Ee Durbin --- sponsors/admin.py | 1 + sponsors/forms.py | 9 ++++- .../migrations/0097_sponsorship_renewal.py | 18 +++++++++ .../migrations/0098_auto_20231219_1910.py | 18 +++++++++ sponsors/models/sponsorship.py | 13 +++++- sponsors/pdf.py | 10 ++++- sponsors/tests/test_pdf.py | 38 ++++++++++++++++++ sponsors/tests/test_use_cases.py | 18 +++++++++ sponsors/use_cases.py | 3 ++ sponsors/views_admin.py | 6 ++- .../sponsors/admin/approve_application.html | 22 +++++++++- .../admin/renewal-contract-template.docx | Bin 0 -> 9245 bytes 12 files changed, 149 insertions(+), 7 deletions(-) create mode 100644 sponsors/migrations/0097_sponsorship_renewal.py create mode 100644 sponsors/migrations/0098_auto_20231219_1910.py create mode 100644 templates/sponsors/admin/renewal-contract-template.docx diff --git a/sponsors/admin.py b/sponsors/admin.py index ac05a00b8..d6601140f 100644 --- a/sponsors/admin.py +++ b/sponsors/admin.py @@ -402,6 +402,7 @@ class SponsorshipAdmin(ImportExportActionModelAdmin, admin.ModelAdmin): "end_date", "get_contract", "level_name", + "renewal", "overlapped_by", ), }, diff --git a/sponsors/forms.py b/sponsors/forms.py index f4c72726a..8d262b337 100644 --- a/sponsors/forms.py +++ b/sponsors/forms.py @@ -392,6 +392,10 @@ class SponsorshipReviewAdminForm(forms.ModelForm): start_date = forms.DateField(widget=AdminDateWidget(), required=False) end_date = forms.DateField(widget=AdminDateWidget(), required=False) overlapped_by = forms.ModelChoiceField(queryset=Sponsorship.objects.select_related("sponsor", "package"), required=False) + renewal = forms.BooleanField( + help_text="If true, it means the sponsorship is a renewal of a previous sponsorship and will use the renewal template for contracting.", + required=False, + ) def __init__(self, *args, **kwargs): force_required = kwargs.pop("force_required", False) @@ -403,10 +407,12 @@ def __init__(self, *args, **kwargs): self.fields.pop("overlapped_by") # overlapped should never be displayed on approval for field_name in self.fields: self.fields[field_name].required = True + self.fields["renewal"].required = False + class Meta: model = Sponsorship - fields = ["start_date", "end_date", "package", "sponsorship_fee"] + fields = ["start_date", "end_date", "package", "sponsorship_fee", "renewal"] widgets = { 'year': SPONSORSHIP_YEAR_SELECT, } @@ -415,6 +421,7 @@ def clean(self): cleaned_data = super().clean() start_date = cleaned_data.get("start_date") end_date = cleaned_data.get("end_date") + renewal = cleaned_data.get("renewal") if start_date and end_date and end_date <= start_date: raise forms.ValidationError("End date must be greater than start date") diff --git a/sponsors/migrations/0097_sponsorship_renewal.py b/sponsors/migrations/0097_sponsorship_renewal.py new file mode 100644 index 000000000..fdbc347b3 --- /dev/null +++ b/sponsors/migrations/0097_sponsorship_renewal.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.24 on 2023-12-18 16:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0096_auto_20231214_2108'), + ] + + operations = [ + migrations.AddField( + model_name='sponsorship', + name='renewal', + field=models.BooleanField(blank=True, null=True), + ), + ] diff --git a/sponsors/migrations/0098_auto_20231219_1910.py b/sponsors/migrations/0098_auto_20231219_1910.py new file mode 100644 index 000000000..3c466bb75 --- /dev/null +++ b/sponsors/migrations/0098_auto_20231219_1910.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.24 on 2023-12-19 19:10 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0097_sponsorship_renewal'), + ] + + operations = [ + migrations.AlterField( + model_name='sponsorship', + name='renewal', + field=models.BooleanField(blank=True, help_text='If true, it means the sponsorship is a renewal of a previous sponsorship and will use the renewal template for contracting.', null=True), + ), + ] diff --git a/sponsors/models/sponsorship.py b/sponsors/models/sponsorship.py index 8e1d13a63..7443d4d2c 100644 --- a/sponsors/models/sponsorship.py +++ b/sponsors/models/sponsorship.py @@ -135,7 +135,7 @@ class Meta(OrderedModel.Meta): class Sponsorship(models.Model): """ - Represente a sponsorship application by a sponsor. + Represents a sponsorship application by a sponsor. It's responsible to group the set of selected benefits and link it to sponsor """ @@ -182,6 +182,11 @@ class Sponsorship(models.Model): package = models.ForeignKey(SponsorshipPackage, null=True, on_delete=models.SET_NULL) sponsorship_fee = models.PositiveIntegerField(null=True, blank=True) overlapped_by = models.ForeignKey("self", null=True, on_delete=models.SET_NULL) + renewal = models.BooleanField( + null=True, + blank=True, + help_text="If true, it means the sponsorship is a renewal of a previous sponsorship and will use the renewal template for contracting." + ) assets = GenericRelation(GenericAsset) @@ -378,6 +383,12 @@ def next_status(self): } return states_map[self.status] + @property + def previous_effective_date(self): + if len(self.sponsor.sponsorship_set.all().order_by('-year')) > 1: + return self.sponsor.sponsorship_set.all().order_by('-year')[1].start_date + return None + class SponsorshipBenefit(OrderedModel): """ diff --git a/sponsors/pdf.py b/sponsors/pdf.py index 5188b8290..f1b80d911 100644 --- a/sponsors/pdf.py +++ b/sponsors/pdf.py @@ -32,7 +32,9 @@ def _contract_context(contract, **context): "sponsorship": contract.sponsorship, "benefits": _clean_split(contract.benefits_list.raw), "legal_clauses": _clean_split(contract.legal_clauses.raw), + "renewal": contract.sponsorship.renewal, }) + context["previous_effective"] = contract.sponsorship.previous_effective_date if contract.sponsorship.previous_effective_date else "UNKNOWN" return context @@ -49,9 +51,13 @@ def render_contract_to_pdf_file(contract, **context): def _gen_docx_contract(output, contract, **context): - template = os.path.join(settings.TEMPLATES_DIR, "sponsors", "admin", "contract-template.docx") - doc = DocxTemplate(template) context = _contract_context(contract, **context) + renewal = context["renewal"] + if renewal: + template = os.path.join(settings.TEMPLATES_DIR, "sponsors", "admin", "renewal-contract-template.docx") + else: + template = os.path.join(settings.TEMPLATES_DIR, "sponsors", "admin", "contract-template.docx") + doc = DocxTemplate(template) doc.render(context) doc.save(output) return output diff --git a/sponsors/tests/test_pdf.py b/sponsors/tests/test_pdf.py index ec929d05e..2116b7c21 100644 --- a/sponsors/tests/test_pdf.py +++ b/sponsors/tests/test_pdf.py @@ -28,6 +28,8 @@ def setUp(self): "sponsorship": self.contract.sponsorship, "benefits": [], "legal_clauses": [], + "renewal": None, + "previous_effective": "UNKNOWN", } self.template = "sponsors/admin/preview-contract.html" @@ -71,3 +73,39 @@ def test_render_response_with_docx_attachment(self, MockDocxTemplate): response.get("Content-Type"), "application/vnd.openxmlformats-officedocument.wordprocessingml.document" ) + + @patch("sponsors.pdf.DocxTemplate") + def test_render_response_with_docx_attachment__renewal(self, MockDocxTemplate): + renewal_contract = baker.make_recipe("sponsors.tests.empty_contract", sponsorship__start_date=date.today(), + sponsorship__renewal=True) + text = f"{renewal_contract.benefits_list.raw}\n\n**Legal Clauses**\n{renewal_contract.legal_clauses.raw}" + html = render_md(text) + renewal_context = { + "contract": renewal_contract, + "start_date": renewal_contract.sponsorship.start_date, + "start_day_english_suffix": format(self.contract.sponsorship.start_date, "S"), + "sponsor": renewal_contract.sponsorship.sponsor, + "sponsorship": renewal_contract.sponsorship, + "benefits": [], + "legal_clauses": [], + "renewal": True, + "previous_effective": "UNKNOWN", + } + renewal_template = "sponsors/admin/preview-contract.html" + + template = Path(settings.TEMPLATES_DIR) / "sponsors" / "admin" / "renewal-contract-template.docx" + self.assertTrue(template.exists()) + mocked_doc = Mock(DocxTemplate) + MockDocxTemplate.return_value = mocked_doc + + request = Mock(HttpRequest) + response = render_contract_to_docx_response(request, renewal_contract) + + MockDocxTemplate.assert_called_once_with(str(template.resolve())) + mocked_doc.render.assert_called_once_with(renewal_context) + mocked_doc.save.assert_called_once_with(response) + self.assertEqual(response.get("Content-Disposition"), "attachment; filename=contract.docx") + self.assertEqual( + response.get("Content-Type"), + "application/vnd.openxmlformats-officedocument.wordprocessingml.document" + ) diff --git a/sponsors/tests/test_use_cases.py b/sponsors/tests/test_use_cases.py index 433d4950e..3e5e5ad04 100644 --- a/sponsors/tests/test_use_cases.py +++ b/sponsors/tests/test_use_cases.py @@ -118,6 +118,24 @@ def test_update_sponsorship_as_approved_and_create_contract(self): self.assertEqual(self.sponsorship.sponsorship_fee, 100) self.assertEqual(self.sponsorship.package, self.package) self.assertEqual(self.sponsorship.level_name, self.package.name) + self.assertFalse(self.sponsorship.renewal) + + + def test_update_renewal_sponsorship_as_approved_and_create_contract(self): + self.data.update({"renewal": True}) + self.use_case.execute(self.sponsorship, **self.data) + self.sponsorship.refresh_from_db() + + today = timezone.now().date() + self.assertEqual(self.sponsorship.approved_on, today) + self.assertEqual(self.sponsorship.status, Sponsorship.APPROVED) + self.assertTrue(self.sponsorship.contract.pk) + self.assertTrue(self.sponsorship.start_date) + self.assertTrue(self.sponsorship.end_date) + self.assertEqual(self.sponsorship.sponsorship_fee, 100) + self.assertEqual(self.sponsorship.package, self.package) + self.assertEqual(self.sponsorship.level_name, self.package.name) + self.assertEqual(self.sponsorship.renewal, True) def test_send_notifications_using_sponsorship(self): self.use_case.execute(self.sponsorship, **self.data) diff --git a/sponsors/use_cases.py b/sponsors/use_cases.py index 95b2d267e..bbb6f2483 100644 --- a/sponsors/use_cases.py +++ b/sponsors/use_cases.py @@ -55,11 +55,14 @@ def execute(self, sponsorship, start_date, end_date, **kwargs): sponsorship.approve(start_date, end_date) package = kwargs.get("package") fee = kwargs.get("sponsorship_fee") + renewal = kwargs.get("renewal", False) if package: sponsorship.package = package sponsorship.level_name = package.name if fee: sponsorship.sponsorship_fee = fee + if renewal: + sponsorship.renewal = True sponsorship.save() contract = Contract.new(sponsorship) diff --git a/sponsors/views_admin.py b/sponsors/views_admin.py index 8968da1b7..e9a808ccc 100644 --- a/sponsors/views_admin.py +++ b/sponsors/views_admin.py @@ -85,7 +85,11 @@ def approve_sponsorship_view(ModelAdmin, request, pk): ) return redirect(redirect_url) - context = {"sponsorship": sponsorship, "form": form} + context = { + "sponsorship": sponsorship, + "form": form, + "previous_effective": sponsorship.previous_effective_date if sponsorship.previous_effective_date else "UNKNOWN", + } return render(request, "sponsors/admin/approve_application.html", context=context) diff --git a/templates/sponsors/admin/approve_application.html b/templates/sponsors/admin/approve_application.html index 37ce49cdc..42a5f7382 100644 --- a/templates/sponsors/admin/approve_application.html +++ b/templates/sponsors/admin/approve_application.html @@ -2,7 +2,18 @@ {% extends 'admin/change_form.html' %} {% load i18n static sponsors %} -{% block extrastyle %}{{ block.super }}{% endblock %} +{% block extrastyle %} + {{ block.super }} + + +{% endblock %} {% block title %}Accept {{ sponsorship }} | python.org{% endblock %} @@ -33,8 +44,15 @@

    Generate Contract for Signing

    {{ form.media }} {{ form.as_p }} - +

    + + {{ previous_effective }} + The last known contract effective date for this sponsor. This will only impact renewals. If UNKNOWN, you MUST update the resulting docx with the correct effective date. +

    +
    diff --git a/templates/sponsors/admin/renewal-contract-template.docx b/templates/sponsors/admin/renewal-contract-template.docx new file mode 100644 index 0000000000000000000000000000000000000000..97b8d1cc673cb9df49be633c2b7e3e1d114f829e GIT binary patch literal 9245 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 V2m9>85D>`EkFIAoktKgQ`!AfFXAA%U literal 0 HcmV?d00001 From c00f46eee7d64f3a4d4a443bb6754c5047a02d4b Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Tue, 19 Dec 2023 14:49:42 -0500 Subject: [PATCH 072/256] formatting tweaks to the renewal contract --- sponsors/pdf.py | 4 +++- sponsors/tests/test_pdf.py | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/sponsors/pdf.py b/sponsors/pdf.py index f1b80d911..9855beee3 100644 --- a/sponsors/pdf.py +++ b/sponsors/pdf.py @@ -34,7 +34,9 @@ def _contract_context(contract, **context): "legal_clauses": _clean_split(contract.legal_clauses.raw), "renewal": contract.sponsorship.renewal, }) - context["previous_effective"] = contract.sponsorship.previous_effective_date if contract.sponsorship.previous_effective_date else "UNKNOWN" + previous_effective = contract.sponsorship.previous_effective_date + context["previous_effective"] = previous_effective if previous_effective else "UNKNOWN" + context["previous_effective_english_suffix"] = format(previous_effective, "S") if previous_effective else None return context diff --git a/sponsors/tests/test_pdf.py b/sponsors/tests/test_pdf.py index 2116b7c21..e4d140cf2 100644 --- a/sponsors/tests/test_pdf.py +++ b/sponsors/tests/test_pdf.py @@ -30,6 +30,7 @@ def setUp(self): "legal_clauses": [], "renewal": None, "previous_effective": "UNKNOWN", + "previous_effective_english_suffix": None, } self.template = "sponsors/admin/preview-contract.html" @@ -90,6 +91,7 @@ def test_render_response_with_docx_attachment__renewal(self, MockDocxTemplate): "legal_clauses": [], "renewal": True, "previous_effective": "UNKNOWN", + "previous_effective_english_suffix": None, } renewal_template = "sponsors/admin/preview-contract.html" From e8a5c8291368b711894859edf2bd3616cab50cdf Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Tue, 19 Dec 2023 15:02:10 -0500 Subject: [PATCH 073/256] actually add template change --- .../admin/renewal-contract-template.docx | Bin 9245 -> 9323 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/templates/sponsors/admin/renewal-contract-template.docx b/templates/sponsors/admin/renewal-contract-template.docx index 97b8d1cc673cb9df49be633c2b7e3e1d114f829e..3e36801a316f85a4a0484c7b4ed1a227a9fb4285 100644 GIT binary patch delta 6918 zcmZ9R1yCGax3vfNKyY_=x53?+5Zpq7PjL4^f)6@)aEIXTF2RBY2@pKE1REqk{^a}b zt^2;;sp_geU42fUT5GTBs%Ph@9IIf1)RB-00qE%HfRUVfY&rzQksKHg0uy9HYmgVO z>xwApJbI@X+y~ad0BP%1ex=6~v2=bdzirs^>%l*}2?K@Q2?*Tzmd-LSZ-xTo)fZ-0 zW{i0Sh!K&i1t#1*KquCW{fM!YB7#a>I%|=QOyR>|&9)@AB3i~a zlIEOmBYcVZW6aYMyeA>Zv}>e*|*I0{P*bLrhs{?!C~c*Y3Ik>=`rC10_k=PEP2 zyN3P)H3R9T50W4Ik^s-);0`zXY;x%VlqdxCu z8i7T7(#pL6G1Wc8mg}%?`wfssCVYBAi@$i~z5ZlJd+#sf&^Bqm1djHeiihl9kV-*D zRh2V+D+Ogswe8pnzp$EykQ|5JH?j>iN5QKtr|>7FHsF*XfChNTE?V;I=X4%t4*;Z& zhVE-AVC;+l0Bj%v0RQp@_8pNCBI^|P$B#S^Kz{8P_#=0@+=u#XGa}@ zg=~ve7~xlX7V&)0Ch_fe)?)ITeSy`>!fYBQChSUEVpds*H5=FQgcE?=HolkPvRHS+ z)#iKpOl!?tU5|CXV4p0$Lc%$;RvI1|*doeVCvqs-rW}CK%DVqHO-VGwdZgF%kf0P7GIG#f&WWAb&% zv{~!GA}qVg&d1<;>7C;!O}O)gvEP^9@uLd2c4LuErI28JZH4ziU*MZ-w7-gjg}c~5 ze-u~zqxe6A05bsmV-Wngw}Sa25B|wUqYTOz;@^y5p)*6Y7{uU#y#p~VOfwO9c3EdO zs7hq$^Cxfsz5Pvm6TVxeX>{wS6XVs?L>u}W=c=ZwuHW@}b8i~J+KqXx=T=yjZx?q5PH0sb;jDe7Lqe+p<%|w8vpt zxAfEU>II}ET|t8sQ4+nI!CO5VAGmT{7j@Je<*x=N%Mj950`jA`jm{J!O>4ZMA-8rM5E$a^Wmjk?zzl}=TE zjH>x*yf=(u_1IBLiS7Crcf`dEecI*PUWJ};tUxHp+$a-~Ze5m(dgiQOD53PJ7)-+v zpB!~r9^QM{O-6J#+a8~iFu_ERxh|aqR--DlRiPZjNJ=IWyQR)7QpjM-_rm4OOD923 zaVL3k2HwXO0_U`sUhyk(>?@cd$pHM&d4?HFdtCHNrYEVO5%@+$0}akRF4^I!hkcug zIAo**OZ~V-_|{k7+*47!lv;yGO`dz%D70v1=(CP-gNa{zj{Z|wdh<7@8If%xy!eA1`hS}M}K#vT!YKB@ELi-sGIx|@JfFf-tc&%=52 zL`X|Jo`S_Tℜ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 CTDs2w delta 6788 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 From cbc6c143922933a082ad600207ddb75703757fe3 Mon Sep 17 00:00:00 2001 From: Varun Chauhan <43171263+varunhc@users.noreply.github.com> Date: Tue, 19 Dec 2023 14:18:04 -0800 Subject: [PATCH 074/256] updated python issue tracker and pep links (#2318) * updated python issue tracker and pep links * Update templates/base.html Co-authored-by: Hugo van Kemenade --------- Co-authored-by: Hugo van Kemenade --- fixtures/boxes.json | 4 ++-- fixtures/sitetree_menus.json | 2 +- templates/base.html | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fixtures/boxes.json b/fixtures/boxes.json index f7dbeb15e..b0e965011 100644 --- a/fixtures/boxes.json +++ b/fixtures/boxes.json @@ -654,9 +654,9 @@ "created": "2014-11-13T21:49:22.048Z", "updated": "2021-07-29T21:40:21.030Z", "label": "download-dev", - "content": "

    Information about specific ports, and developer info

    \r\n\r\n", + "content": "

    Information about specific ports, and developer info

    \r\n\r\n", "content_markup_type": "html", - "_content_rendered": "

    Information about specific ports, and developer info

    \r\n\r\n" + "_content_rendered": "

    Information about specific ports, and developer info

    \r\n\r\n" } }, { diff --git a/fixtures/sitetree_menus.json b/fixtures/sitetree_menus.json index 70ad3fc7c..f394233ee 100644 --- a/fixtures/sitetree_menus.json +++ b/fixtures/sitetree_menus.json @@ -685,7 +685,7 @@ "fields": { "title": "PEP Index", "hint": "", - "url": "http://python.org/dev/peps/", + "url": "https://peps.python.org", "urlaspattern": false, "tree": 1, "hidden": false, diff --git a/templates/base.html b/templates/base.html index ffa517a91..27daceb50 100644 --- a/templates/base.html +++ b/templates/base.html @@ -86,7 +86,7 @@ + href="https://peps.python.org/peps.rss"> Date: Tue, 2 Jan 2024 15:47:57 +0200 Subject: [PATCH 075/256] Fix for SVG upload in sponsorship application (#2352) * changing imagefield to file field on sponsorupdateform and sponsorshipapplicationform. adding django file validator to these two and the sponsor model * allow png upload * adding test to assert that svg can be uploaded * fix migration --- sponsors/forms.py | 7 +++++-- .../migrations/0099_auto_20231224_1854.py | 19 +++++++++++++++++++ sponsors/models/sponsors.py | 2 ++ sponsors/tests/test_forms.py | 18 ++++++++++++++++++ 4 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 sponsors/migrations/0099_auto_20231224_1854.py diff --git a/sponsors/forms.py b/sponsors/forms.py index 8d262b337..5a31605af 100644 --- a/sponsors/forms.py +++ b/sponsors/forms.py @@ -3,6 +3,7 @@ from django import forms from django.conf import settings from django.contrib.admin.widgets import AdminDateWidget +from django.core.validators import FileExtensionValidator from django.db.models import Q from django.utils import timezone from django.utils.functional import cached_property @@ -225,10 +226,11 @@ class SponsorshipApplicationForm(forms.Form): help_text="For display on our sponsor webpage. High resolution PNG or JPG, smallest dimension no less than 256px", required=False, ) - print_logo = forms.ImageField( + print_logo = forms.FileField( label="Sponsor print logo", help_text="For printed materials, signage, and projection. SVG or EPS", required=False, + validators=[FileExtensionValidator(['eps', 'epsf' 'epsi', 'svg', 'png'])], ) primary_phone = forms.CharField( @@ -557,10 +559,11 @@ class SponsorUpdateForm(forms.ModelForm): help_text="For display on our sponsor webpage. High resolution PNG or JPG, smallest dimension no less than 256px", required=False, ) - print_logo = forms.ImageField( + print_logo = forms.FileField( widget=forms.widgets.FileInput, help_text="For printed materials, signage, and projection. SVG or EPS", required=False, + validators=[FileExtensionValidator(['eps', 'epsf' 'epsi', 'svg', 'png'])], ) def __init__(self, *args, **kwargs): diff --git a/sponsors/migrations/0099_auto_20231224_1854.py b/sponsors/migrations/0099_auto_20231224_1854.py new file mode 100644 index 000000000..d8aaa436c --- /dev/null +++ b/sponsors/migrations/0099_auto_20231224_1854.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.24 on 2023-12-24 18:54 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0098_auto_20231219_1910'), + ] + + operations = [ + migrations.AlterField( + model_name='sponsor', + name='print_logo', + field=models.FileField(blank=True, help_text='For printed materials, signage, and projection. SVG or EPS', null=True, upload_to='sponsor_print_logos', validators=[django.core.validators.FileExtensionValidator(['eps', 'epsfepsi', 'svg', 'png'])], verbose_name='Print logo'), + ), + ] diff --git a/sponsors/models/sponsors.py b/sponsors/models/sponsors.py index 9b4d8fe86..eee7f585e 100644 --- a/sponsors/models/sponsors.py +++ b/sponsors/models/sponsors.py @@ -3,6 +3,7 @@ """ from allauth.account.models import EmailAddress from django.conf import settings +from django.core.validators import FileExtensionValidator from django.db import models from django.core.exceptions import ObjectDoesNotExist from django.template.defaultfilters import slugify @@ -51,6 +52,7 @@ class Sponsor(ContentManageable): ) print_logo = models.FileField( upload_to="sponsor_print_logos", + validators=[FileExtensionValidator(['eps', 'epsf' 'epsi', 'svg', 'png'])], blank=True, null=True, verbose_name="Print logo", diff --git a/sponsors/tests/test_forms.py b/sponsors/tests/test_forms.py index 058e21625..123dc1729 100644 --- a/sponsors/tests/test_forms.py +++ b/sponsors/tests/test_forms.py @@ -1,3 +1,6 @@ +from pathlib import Path + +from django.core.files.uploadedfile import SimpleUploadedFile from model_bakery import baker from django.conf import settings @@ -438,6 +441,21 @@ def test_create_sponsor_with_valid_data_for_non_required_inputs( self.assertEqual(sponsor.landing_page_url, "https://companyx.com") self.assertEqual(sponsor.twitter_handle, "@companyx") + def test_create_sponsor_with_svg_for_print_logo( + self, + ): + tick_svg = Path(settings.STATICFILES_DIRS[0]) / "img"/"sponsors"/"tick.svg" + with tick_svg.open("rb") as fd: + uploaded_svg = SimpleUploadedFile("tick.svg", fd.read()) + self.files["print_logo"] = uploaded_svg + + form = SponsorshipApplicationForm(self.data, self.files) + self.assertTrue(form.is_valid(), form.errors) + + sponsor = form.save() + + self.assertTrue(sponsor.print_logo) + def test_use_previous_user_sponsor(self): contact = baker.make(SponsorContact, user__email="foo@foo.com") self.data = {"sponsor": contact.sponsor.id} From db9d241e2d1f721785dc8df57268e612e09cb146 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Fri, 5 Jan 2024 08:41:41 -0500 Subject: [PATCH 076/256] update sponsor voucher fulfillment for 2024 --- .../create_pycon_vouchers_for_sponsors.py | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py b/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py index f8b99855a..3e3b4973d 100644 --- a/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py +++ b/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py @@ -20,22 +20,26 @@ ) BENEFITS = { - 121: { - "internal_name": "full_conference_passes_2023_code", + 183: { + "internal_name": "full_conference_passes_code_2024", "voucher_type": "SPNS_COMP_", }, - 139: { - "internal_name": "expo_hall_only_passes_2023_code", + 201: { + "internal_name": "expo_hall_only_passes_code_2024", "voucher_type": "SPNS_EXPO_COMP_", }, - 148: { - "internal_name": "additional_full_conference_passes_2023_code", + 208: { + "internal_name": "additional_full_conference_passes_code_2024", "voucher_type": "SPNS_ADDL_DISC_REG_", }, - 166: { - "internal_name": "online_only_conference_passes_2023_code", + 225: { + "internal_name": "online_only_conference_passes_2024", "voucher_type": "SPNS_ONLINE_COMP_", }, + 237: { + "internal_name": "additional_expo_hall_only_passes_2024", + "voucher_type": "SPNS_EXPO_DISC_", + }, } From 9b4deddbd43cf6e5518a72ddcbc4c94c7b6d487f Mon Sep 17 00:00:00 2001 From: Jessie <70440141+jessiebelle@users.noreply.github.com> Date: Tue, 9 Jan 2024 14:16:58 +0200 Subject: [PATCH 077/256] add new incorporation fields to form and sponsor model (#2351) * adding new fields to form and sponsor model * adding new optional fields to update sponsor application form * fix migrations * modifying existing tests to assert new fields are correctly saved * Re-structure and re-order sponsor information form * update and refactor of new_sponsorship_application_form to be usable for editing * remove migration * new migration file added * merge * add migration * fix tests to reflect update in template --------- Co-authored-by: Ee Durbin --- sponsors/forms.py | 11 +- .../migrations/0100_auto_20240107_1054.py | 29 ++++ sponsors/models/sponsors.py | 9 +- sponsors/tests/test_forms.py | 8 +- .../new_sponsorship_application_form.html | 126 +++++++++++++----- templates/users/sponsor_info_update.html | 55 +++++++- users/tests/test_views.py | 2 +- users/views.py | 2 +- 8 files changed, 199 insertions(+), 43 deletions(-) create mode 100644 sponsors/migrations/0100_auto_20240107_1054.py diff --git a/sponsors/forms.py b/sponsors/forms.py index 5a31605af..21258f3b2 100644 --- a/sponsors/forms.py +++ b/sponsors/forms.py @@ -253,10 +253,17 @@ class SponsorshipApplicationForm(forms.Form): state = forms.CharField( label="State/Province/Region", max_length=64, required=False ) + state_of_incorporation = forms.CharField( + label="State of incorporation", help_text="US only, If different than mailing address", max_length=64, required=False + ) postal_code = forms.CharField( label="Zip/Postal Code", max_length=64, required=False ) - country = CountryField().formfield(required=False) + country = CountryField().formfield(required=False, help_text="For mailing/contact purposes") + + country_of_incorporation = CountryField().formfield( + label="Country of incorporation", help_text="For contractual purposes", required=False + ) def __init__(self, *args, **kwargs): self.user = kwargs.pop("user", None) @@ -373,6 +380,8 @@ def save(self): landing_page_url=self.cleaned_data.get("landing_page_url", ""), twitter_handle=self.cleaned_data["twitter_handle"], print_logo=self.cleaned_data.get("print_logo"), + country_of_incorporation=self.cleaned_data.get("country_of_incorporation", ""), + state_of_incorporation=self.cleaned_data.get("state_of_incorporation", ""), ) contacts = [f.save(commit=False) for f in self.contacts_formset.forms] for contact in contacts: diff --git a/sponsors/migrations/0100_auto_20240107_1054.py b/sponsors/migrations/0100_auto_20240107_1054.py new file mode 100644 index 000000000..8bad2bc92 --- /dev/null +++ b/sponsors/migrations/0100_auto_20240107_1054.py @@ -0,0 +1,29 @@ +# Generated by Django 2.2.24 on 2024-01-07 10:54 + +from django.db import migrations, models +import django_countries.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0099_auto_20231224_1854'), + ] + + operations = [ + migrations.AddField( + model_name='sponsor', + name='country_of_incorporation', + field=django_countries.fields.CountryField(blank=True, help_text='For contractual purposes', max_length=2, null=True, verbose_name='Country of incorporation (If different)'), + ), + migrations.AddField( + model_name='sponsor', + name='state_of_incorporation', + field=models.CharField(blank=True, default='', max_length=64, null=True, verbose_name='US only: State of incorporation (If different)'), + ), + migrations.AlterField( + model_name='sponsor', + name='country', + field=django_countries.fields.CountryField(default='', help_text='For mailing/contact purposes', max_length=2), + ), + ] diff --git a/sponsors/models/sponsors.py b/sponsors/models/sponsors.py index eee7f585e..ba0cff83d 100644 --- a/sponsors/models/sponsors.py +++ b/sponsors/models/sponsors.py @@ -73,8 +73,15 @@ class Sponsor(ContentManageable): postal_code = models.CharField( verbose_name="Zip/Postal Code", max_length=64, default="" ) - country = CountryField(default="") + country = CountryField(default="", help_text="For mailing/contact purposes") assets = GenericRelation(GenericAsset) + country_of_incorporation = CountryField( + verbose_name="Country of incorporation (If different)", help_text="For contractual purposes", blank=True, null=True + ) + state_of_incorporation = models.CharField( + verbose_name="US only: State of incorporation (If different)", + max_length=64, blank=True, null=True, default="" + ) class Meta: verbose_name = "sponsor" diff --git a/sponsors/tests/test_forms.py b/sponsors/tests/test_forms.py index 123dc1729..49b0515cd 100644 --- a/sponsors/tests/test_forms.py +++ b/sponsors/tests/test_forms.py @@ -423,14 +423,18 @@ def test_create_sponsor_with_valid_data(self): def test_create_sponsor_with_valid_data_for_non_required_inputs( self, ): + user = baker.make(settings.AUTH_USER_MODEL) + self.data["description"] = "Important company" self.data["landing_page_url"] = "https://companyx.com" self.data["twitter_handle"] = "@companyx" + self.data["country_of_incorporation"] = "US" + self.data["state_of_incorporation"] = "NY" self.files["print_logo"] = get_static_image_file_as_upload( "psf-logo_print.png", "logo_print.png" ) - form = SponsorshipApplicationForm(self.data, self.files) + form = SponsorshipApplicationForm(self.data, self.files, user=user) self.assertTrue(form.is_valid(), form.errors) sponsor = form.save() @@ -440,6 +444,8 @@ def test_create_sponsor_with_valid_data_for_non_required_inputs( self.assertFalse(form.user_with_previous_sponsors) self.assertEqual(sponsor.landing_page_url, "https://companyx.com") self.assertEqual(sponsor.twitter_handle, "@companyx") + self.assertEqual(sponsor.country_of_incorporation, "US") + self.assertEqual(sponsor.state_of_incorporation, "NY") def test_create_sponsor_with_svg_for_print_logo( self, diff --git a/templates/sponsors/new_sponsorship_application_form.html b/templates/sponsors/new_sponsorship_application_form.html index 9f7597650..1610807e8 100644 --- a/templates/sponsors/new_sponsorship_application_form.html +++ b/templates/sponsors/new_sponsorship_application_form.html @@ -2,15 +2,19 @@ {% load boxes widget_tweaks %} {% load humanize %} {% load sponsors %} +{% block page_title %}Sponsorship Information{% endblock %} -{% block page_title %}Submit Sponsorship Information{% endblock %} {% block content %}
    -

    Submit Sponsorship Information

    -
    +{% if sponsor %} +
    +

    Edit {{sponsor}}

    +
    +{% else %} +
    {% if sponsorship_package %}

    You selected the {{ sponsorship_package.name }} package {% if sponsorship_price %}costing ${{ sponsorship_price|intcomma }} USD {% endif %}and the following benefits: @@ -34,6 +38,10 @@

    Submit Sponsorship Information

    | Back to select benefits
    +

    Submit Sponsorship Information

    +{% endif %} + + {% if form.errors %} The form has one or more errors {{ form.non_field_errors }} @@ -53,6 +61,8 @@

    Submit Sponsorship Information

    +

    Basics

    +

    {% render_field form.name %} @@ -62,6 +72,33 @@

    Submit Sponsorship Information

    {% endif %}

    + +
    +
    +

    + + {% render_field form.country_of_incorporation %} + {% if form.country_of_incorporation.help_text %} +
    + {{ form.country_of_incorporation.help_text }} + {% endif %} +

    +
    + +
    +

    + + {% render_field form.state %} + {% if form.state_of_incorporation.help_text %} +
    + {{ form.state_of_incorporation.help_text }} + {% endif %} +

    +
    +
    +

    {% render_field form.description %} @@ -95,14 +132,39 @@

    Submit Sponsorship Information

    -

    - - {% render_field form.country %} - {% if form.country.help_text %} -
    - {{ form.country.help_text }} - {% endif %} -

    +
    +
    +

    + + {% render_field form.web_logo %} + {% if sponsor.web_logo %} +

    Currently: {{ sponsor.web_logo.name }}

    + {% endif %} + {% if form.web_logo.help_text %} +
    + {{ form.web_logo.help_text }} + {% endif %} +

    +
    + +
    +

    + + {% render_field form.print_logo %} + {% if sponsor.print_logo %} +

    Currently: {{ sponsor.print_logo.name }}

    + {% endif %} + {% if form.print_logo.help_text %} +
    + {{ form.print_logo.help_text }} + {% endif %} +

    +
    +
    + +
    + +

    Mailing and Contact

    @@ -167,11 +229,11 @@

    Submit Sponsorship Information

    - - {% render_field form.primary_phone %} - {% if form.primary_phone.help_text %} + + {% render_field form.country %} + {% if form.country.help_text %}
    - {{ form.primary_phone.help_text }} + {{ form.country.help_text }} {% endif %}

    @@ -179,25 +241,14 @@

    Submit Sponsorship Information

    -

    - - {% render_field form.web_logo %} - {% if form.web_logo.help_text %} -
    - {{ form.web_logo.help_text }} - {% endif %} -

    -
    - -
    -

    - - {% render_field form.print_logo %} - {% if form.print_logo.help_text %} -
    - {{ form.print_logo.help_text }} - {% endif %} -

    +

    + + {% render_field form.primary_phone %} + {% if form.primary_phone.help_text %} +
    + {{ form.primary_phone.help_text }} + {% endif %} +

    @@ -216,11 +267,16 @@

    Contacts

    - +{% if sponsor %} +
    + +
    + {% else %}
    + {% endif %}
    {% endblock content %} diff --git a/templates/users/sponsor_info_update.html b/templates/users/sponsor_info_update.html index 3ae2e720c..e1984a28c 100644 --- a/templates/users/sponsor_info_update.html +++ b/templates/users/sponsor_info_update.html @@ -17,6 +17,7 @@ {% block user_content %}

    Edit {{ sponsor }}

    +

    Basics

    {% if form.errors %} The form has one or more errors @@ -36,7 +37,31 @@

    Sponsor Information

    {% endif %} {% render_field form.name %}

    +
    +
    +

    + + {% render_field form.country_of_incorporation %} + {% if form.country_of_incorporation.help_text %} +
    + {{ form.country_of_incorporation.help_text }} + {% endif %} +

    +
    +
    +

    + + {% render_field form.state %} + {% if form.state_of_incorporation.help_text %} +
    + {{ form.state_of_incorporation.help_text }} + {% endif %} +

    +
    +

    @@ -69,16 +94,29 @@

    Sponsor Information

    - +
    +

    {% render_field form.country %} {% if form.country.help_text %} -
    {{ form.country.help_text }} {% endif %}

    +
    +
    +

    + + {% render_field form.country_of_incorporation %} + {% if form.country_of_incorporation.help_text %} +
    + {{ form.country_of_incorporation.help_text }} + {% endif %} +

    +
    +
    @@ -131,8 +169,19 @@

    Sponsor Information

    {{ form.state.help_text }} {% endif %}

    +
    +
    +

    + + {% render_field form.state %} + {% if form.state_of_incorporation.help_text %} +
    + {{ form.state_of_incorporation.help_text }} + {% endif %} +

    +
    -
    diff --git a/users/tests/test_views.py b/users/tests/test_views.py index 952425c98..13c226e5f 100644 --- a/users/tests/test_views.py +++ b/users/tests/test_views.py @@ -489,7 +489,7 @@ def test_display_template_with_sponsor_info(self): response = self.client.get(self.url) context = response.context - self.assertTemplateUsed(response, "users/sponsor_info_update.html") + self.assertTemplateUsed(response, "sponsors/new_sponsorship_application_form.html") self.assertEqual(context["sponsor"], self.sponsor) self.assertIsInstance(context["form"], SponsorUpdateForm) diff --git a/users/views.py b/users/views.py index 517c1419a..c56dbace4 100644 --- a/users/views.py +++ b/users/views.py @@ -264,7 +264,7 @@ def get_context_data(self, *args, **kwargs): @method_decorator(login_required(login_url=settings.LOGIN_URL), name="dispatch") class UpdateSponsorInfoView(UpdateView): object_name = "sponsor" - template_name = 'users/sponsor_info_update.html' + template_name = 'sponsors/new_sponsorship_application_form.html' form_class = SponsorUpdateForm def get_queryset(self): From 04751c86869f9653b65230a7e0028e7d3abd6009 Mon Sep 17 00:00:00 2001 From: Jessie <70440141+jessiebelle@users.noreply.github.com> Date: Mon, 15 Jan 2024 17:24:47 +0200 Subject: [PATCH 078/256] 2342 display only benefits associated with the year of the sponsorship package being edited (#2356) * WIP * WIP * WIP * we finally got there with the qs filter * removing redundant tests * removing unused imports * missed one --- sponsors/admin.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sponsors/admin.py b/sponsors/admin.py index d6601140f..88aff8c57 100644 --- a/sponsors/admin.py +++ b/sponsors/admin.py @@ -246,9 +246,13 @@ def has_delete_permission(self, request, obj=None): return True return obj.open_for_editing - def get_queryset(self, *args, **kwargs): - qs = super().get_queryset(*args, **kwargs) - return qs.select_related("sponsorship_benefit__program", "program") + def get_queryset(self, request): + #filters the available benefits by the benefits for the year of the sponsorship + match = request.resolver_match + sponsorship = self.parent_model.objects.get(pk=match.kwargs["object_id"]) + year = sponsorship.year + + return super().get_queryset(request).filter(sponsorship_benefit__year=year) class TargetableEmailBenefitsFilter(admin.SimpleListFilter): From 0d5432a04dbfb78b582c808856f912b412b1201b Mon Sep 17 00:00:00 2001 From: Seth Michael Larson Date: Wed, 17 Jan 2024 13:18:02 -0600 Subject: [PATCH 079/256] Add support for hosting SPDX-2 SBOMs alongside release artifacts (#2359) --- downloads/api.py | 2 +- .../0010_releasefile_sbom_spdx2_file.py | 18 ++++++++++++++++++ downloads/models.py | 3 +++ downloads/serializers.py | 1 + downloads/templatetags/download_tags.py | 5 +++++ templates/downloads/release_detail.html | 7 +++++++ 6 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 downloads/migrations/0010_releasefile_sbom_spdx2_file.py diff --git a/downloads/api.py b/downloads/api.py index e58023dbf..73eb9b7bf 100644 --- a/downloads/api.py +++ b/downloads/api.py @@ -69,7 +69,7 @@ class Meta(GenericResource.Meta): 'creator', 'last_modified_by', 'os', 'release', 'description', 'is_source', 'url', 'gpg_signature_file', 'md5_sum', 'filesize', 'download_button', 'sigstore_signature_file', - 'sigstore_cert_file', 'sigstore_bundle_file', + 'sigstore_cert_file', 'sigstore_bundle_file', 'sbom_spdx2_file', ] filtering = { 'name': ('exact',), diff --git a/downloads/migrations/0010_releasefile_sbom_spdx2_file.py b/downloads/migrations/0010_releasefile_sbom_spdx2_file.py new file mode 100644 index 000000000..f3a4784e9 --- /dev/null +++ b/downloads/migrations/0010_releasefile_sbom_spdx2_file.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.24 on 2024-01-12 21:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('downloads', '0009_releasefile_sigstore_bundle_file'), + ] + + operations = [ + migrations.AddField( + model_name='releasefile', + name='sbom_spdx2_file', + field=models.URLField(blank=True, help_text='SPDX-2 SBOM URL', verbose_name='SPDX-2 SBOM URL'), + ), + ] diff --git a/downloads/models.py b/downloads/models.py index 6d91534ac..4a9c5781c 100644 --- a/downloads/models.py +++ b/downloads/models.py @@ -332,6 +332,9 @@ class ReleaseFile(ContentManageable, NameSlugModel): sigstore_bundle_file = models.URLField( "Sigstore Bundle URL", blank=True, help_text="Sigstore Bundle URL" ) + sbom_spdx2_file = models.URLField( + "SPDX-2 SBOM URL", blank=True, help_text="SPDX-2 SBOM URL" + ) md5_sum = models.CharField('MD5 Sum', max_length=200, blank=True) filesize = models.IntegerField(default=0) download_button = models.BooleanField(default=False, help_text="Use for the supernav download button for this OS") diff --git a/downloads/serializers.py b/downloads/serializers.py index 67bde5b5c..1ff57049f 100644 --- a/downloads/serializers.py +++ b/downloads/serializers.py @@ -49,4 +49,5 @@ class Meta: 'sigstore_signature_file', 'sigstore_cert_file', 'sigstore_bundle_file', + 'sbom_spdx2_file', ) diff --git a/downloads/templatetags/download_tags.py b/downloads/templatetags/download_tags.py index fb3496787..57004ccb4 100644 --- a/downloads/templatetags/download_tags.py +++ b/downloads/templatetags/download_tags.py @@ -14,3 +14,8 @@ def has_sigstore_materials(files): f.sigstore_bundle_file or f.sigstore_cert_file or f.sigstore_signature_file for f in files ) + + +@register.filter +def has_sbom(files): + return any(f.sbom_spdx2_file for f in files) diff --git a/templates/downloads/release_detail.html b/templates/downloads/release_detail.html index b68b69a66..730b9b273 100644 --- a/templates/downloads/release_detail.html +++ b/templates/downloads/release_detail.html @@ -2,6 +2,7 @@ {% load boxes %} {% load sitetree %} {% load has_sigstore_materials from download_tags %} +{% load has_sbom from download_tags %} {% block body_attributes %}class="python downloads"{% endblock %} @@ -53,6 +54,9 @@

    Files

    {% if release_files|has_sigstore_materials %} Sigstore {% endif %} + {% if release_files|has_sbom %} + SBOM + {% endif %} @@ -72,6 +76,9 @@

    Files

    {% if f.sigstore_signature_file %}SIG{% endif %} {% endif %} {% endif %} + {% if release_files|has_sbom %} + {% if f.sbom_spdx2_file %}SPDX{% endif %} + {% endif %} {% endfor %} From cde08ed7a689d77ce2f723abd9b3681f1b2b3080 Mon Sep 17 00:00:00 2001 From: Seth Michael Larson Date: Wed, 7 Feb 2024 09:22:42 -0600 Subject: [PATCH 080/256] Link to SBOM user documentation from release detail page (#2363) --- templates/downloads/release_detail.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/downloads/release_detail.html b/templates/downloads/release_detail.html index 730b9b273..47ef47ce8 100644 --- a/templates/downloads/release_detail.html +++ b/templates/downloads/release_detail.html @@ -55,7 +55,7 @@

    Files

    Sigstore {% endif %} {% if release_files|has_sbom %} - SBOM + SBOM {% endif %} From 096ac337e1ccef8b2659699885a60b9c71d7fbd7 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Fri, 9 Feb 2024 08:42:26 -0500 Subject: [PATCH 081/256] LinkedIn stuff (#2367) * Adds linkedin to socialize * Adds linkedin to sponsor profile Closes #2365 --- sponsors/forms.py | 6 ++++++ .../0101_sponsor_linked_in_page_url.py | 18 ++++++++++++++++++ sponsors/models/sponsors.py | 6 ++++++ static/sass/style.css | 17 +++++++++++++++++ static/sass/style.scss | 18 ++++++++++++++++++ templates/base.html | 7 ++++--- .../new_sponsorship_application_form.html | 11 +++++++++++ templates/users/sponsor_info_update.html | 12 ++++++++++++ 8 files changed, 92 insertions(+), 3 deletions(-) create mode 100644 sponsors/migrations/0101_sponsor_linked_in_page_url.py diff --git a/sponsors/forms.py b/sponsors/forms.py index 21258f3b2..4ced017c9 100644 --- a/sponsors/forms.py +++ b/sponsors/forms.py @@ -221,6 +221,11 @@ class SponsorshipApplicationForm(forms.Form): help_text="For promotion of your sponsorship on social media.", required=False, ) + linked_in_page_url = forms.URLField( + label="LinkedIn page URL", + help_text="URL for your LinkedIn page.", + required=False, + ) web_logo = forms.ImageField( label="Sponsor web logo", help_text="For display on our sponsor webpage. High resolution PNG or JPG, smallest dimension no less than 256px", @@ -379,6 +384,7 @@ def save(self): description=self.cleaned_data.get("description", ""), landing_page_url=self.cleaned_data.get("landing_page_url", ""), twitter_handle=self.cleaned_data["twitter_handle"], + linked_in_page_url=self.cleaned_data["linked_in_page_url"], print_logo=self.cleaned_data.get("print_logo"), country_of_incorporation=self.cleaned_data.get("country_of_incorporation", ""), state_of_incorporation=self.cleaned_data.get("state_of_incorporation", ""), diff --git a/sponsors/migrations/0101_sponsor_linked_in_page_url.py b/sponsors/migrations/0101_sponsor_linked_in_page_url.py new file mode 100644 index 000000000..61041a08e --- /dev/null +++ b/sponsors/migrations/0101_sponsor_linked_in_page_url.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.24 on 2024-02-09 13:30 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sponsors', '0100_auto_20240107_1054'), + ] + + operations = [ + migrations.AddField( + model_name='sponsor', + name='linked_in_page_url', + field=models.URLField(blank=True, help_text='URL for your LinkedIn page.', null=True, verbose_name='LinkedIn page URL'), + ), + ] diff --git a/sponsors/models/sponsors.py b/sponsors/models/sponsors.py index ba0cff83d..78d5d6e32 100644 --- a/sponsors/models/sponsors.py +++ b/sponsors/models/sponsors.py @@ -44,6 +44,12 @@ class Sponsor(ContentManageable): null=True, verbose_name="Twitter handle", ) + linked_in_page_url = models.URLField( + blank=True, + null=True, + verbose_name="LinkedIn page URL", + help_text="URL for your LinkedIn page." + ) web_logo = models.ImageField( upload_to="sponsor_web_logos", verbose_name="Web logo", diff --git a/static/sass/style.css b/static/sass/style.css index c3d2bb5f9..a58863817 100644 --- a/static/sass/style.css +++ b/static/sass/style.css @@ -3405,6 +3405,23 @@ span.highlighted { .icon-megaphone span, .icon-python-alt span, .icon-pypi span, .icon-news span, .icon-moderate span, .icon-mercurial span, .icon-jobs span, .icon-help span, .icon-download span, .icon-documentation span, .icon-community span, .icon-code span, .icon-close span, .icon-calendar span, .icon-beginner span, .icon-advanced span, .icon-sitemap span, .icon-search span, .icon-search-alt span, .icon-python span, .icon-github span, .icon-get-started span, .icon-feed span, .icon-facebook span, .icon-email span, .icon-arrow-up span, .icon-arrow-right span, .icon-arrow-left span, .icon-arrow-down span, .errorlist:before span, .icon-freenode span, .icon-alert span, .icon-versions span, .icon-twitter span, .icon-thumbs-up span, .icon-thumbs-down span, .icon-text-resize span, .icon-success-stories span, .icon-statistics span, .icon-stack-overflow span, .icon-mastodon span { display: none; } +.fa { + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + margin-right: .5em; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + /* Hide a unicode fallback character when we supply it by default. + * In fonts.scss, we hide the icon and show the fallback when other conditions are not met + */ } + .fa { + display: none; } + /* Keep this at the bottom since it will create a huge set of data */ /* * Would have liked to use Compass' built-in font-face mixin with the inline-font-files() helper, but it seems to be BROKEN in older versions! diff --git a/static/sass/style.scss b/static/sass/style.scss index 2e0ea8981..4fd9a3efd 100644 --- a/static/sass/style.scss +++ b/static/sass/style.scss @@ -2426,6 +2426,24 @@ span.highlighted { */ span { display: none; } } +.fa { + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + margin-right: .5em; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + /* Hide a unicode fallback character when we supply it by default. + * In fonts.scss, we hide the icon and show the fallback when other conditions are not met + */ + span { display: none; } +} /* Keep this at the bottom since it will create a huge set of data */ @import "fonts"; diff --git a/templates/base.html b/templates/base.html index 27daceb50..cfa0f34ce 100644 --- a/templates/base.html +++ b/templates/base.html @@ -41,6 +41,7 @@ {% stylesheet 'style' %} {% stylesheet 'mq' %} + {% stylesheet 'font-awesome' %} {% comment %} {# equivalent to: #} @@ -235,10 +236,10 @@

  • Socialize
  • diff --git a/templates/sponsors/new_sponsorship_application_form.html b/templates/sponsors/new_sponsorship_application_form.html index 1610807e8..c95bdf4ea 100644 --- a/templates/sponsors/new_sponsorship_application_form.html +++ b/templates/sponsors/new_sponsorship_application_form.html @@ -130,6 +130,17 @@

    Basics

    {% endif %}

    + +
    +

    + + {% render_field form.linked_in_page_url%} + {% if form.linked_in_page_url.help_text %} +
    + {{ form.linked_in_page_url.help_text }} + {% endif %} +

    +
    diff --git a/templates/users/sponsor_info_update.html b/templates/users/sponsor_info_update.html index e1984a28c..1312fb782 100644 --- a/templates/users/sponsor_info_update.html +++ b/templates/users/sponsor_info_update.html @@ -93,6 +93,18 @@

    Sponsor Information

    {% endif %}

    + +
    +

    + + {% render_field form.linked_in_page_url%} + {% if form.linked_in_page_url.help_text %} +
    + {{ form.linked_in_page_url.help_text }} + {% endif %} +

    +
    From 8f37034ec1399af8d42a2291c4053e81ea82c39a Mon Sep 17 00:00:00 2001 From: Jon Clements Date: Wed, 14 Feb 2024 11:22:33 +0000 Subject: [PATCH 082/256] Update job_detail.html (#2298) Explicity escape the job description for the meta og:description where the description contains html which can throw off the rendering of the page... See https://www.python.org/jobs/7314/ for example. --- templates/jobs/job_detail.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/jobs/job_detail.html b/templates/jobs/job_detail.html index 82ddd3f58..be073e551 100644 --- a/templates/jobs/job_detail.html +++ b/templates/jobs/job_detail.html @@ -8,7 +8,7 @@ {% block content_attributes %}with-right-sidebar{% endblock %} {% block og_title %}Job: {{ object.job_title }} at {{ object.company_name }}{% endblock %} -{% block og-descript %}{{ object.description|truncatechars:200 }}{% endblock %} +{% block og-descript %}{{ object.description|escape|truncatechars:200 }}{% endblock %} {% block content %} {% load companies %} From bd3f080dbe3f4b53c0f5464b269917ec34754beb Mon Sep 17 00:00:00 2001 From: cfsok <33849525+cfsok@users.noreply.github.com> Date: Wed, 21 Feb 2024 22:53:37 +0900 Subject: [PATCH 083/256] Add DearPyGui to home page (#2362) --- fixtures/boxes.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fixtures/boxes.json b/fixtures/boxes.json index b0e965011..bc3816cc7 100644 --- a/fixtures/boxes.json +++ b/fixtures/boxes.json @@ -174,9 +174,9 @@ "created": "2013-10-28T19:27:20.963Z", "updated": "2022-01-05T15:42:59.645Z", "label": "widget-use-python-for", - "content": "

    Use Python for…

    \r\n

    More

    \r\n\r\n", + "content": "

    Use Python for…

    \r\n

    More

    \r\n\r\n", "content_markup_type": "html", - "_content_rendered": "

    Use Python for…

    \r\n

    More

    \r\n\r\n" + "_content_rendered": "

    Use Python for…

    \r\n

    More

    \r\n\r\n" } }, { From c1b800bc490b770f7cf2ec50d7820c96607dbb8e Mon Sep 17 00:00:00 2001 From: Noelle Leigh <5957867+noelleleigh@users.noreply.github.com> Date: Wed, 21 Feb 2024 08:54:30 -0500 Subject: [PATCH 084/256] `download:download_release_detail` view: Display file sizes with human-readable units (#2354) Make the release file sizes more readable by passing them through the [filesizeformat filter][1]. [1]: https://docs.djangoproject.com/en/2.2/ref/templates/builtins/#filesizeformat --- downloads/tests/base.py | 1 + downloads/tests/test_views.py | 3 +++ templates/downloads/release_detail.html | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/downloads/tests/base.py b/downloads/tests/base.py index e19ffe03a..bcb7905c4 100644 --- a/downloads/tests/base.py +++ b/downloads/tests/base.py @@ -64,6 +64,7 @@ def setUp(self): is_source=True, description='Gzipped source', url='ftp/python/2.7.5/Python-2.7.5.tgz', + filesize=12345678, ) self.draft_release = Release.objects.create( diff --git a/downloads/tests/test_views.py b/downloads/tests/test_views.py index 75fe76693..50270c556 100644 --- a/downloads/tests/test_views.py +++ b/downloads/tests/test_views.py @@ -40,6 +40,9 @@ def test_download_release_detail(self): response = self.client.get(url) self.assertEqual(response.status_code, 200) + with self.subTest("Release file sizes should be human-readable"): + self.assertInHTML("11.8 MB", response.content.decode()) + url = reverse('download:download_release_detail', kwargs={'release_slug': 'fake_slug'}) response = self.client.get(url) self.assertEqual(response.status_code, 404) diff --git a/templates/downloads/release_detail.html b/templates/downloads/release_detail.html index 47ef47ce8..59ffe2d7a 100644 --- a/templates/downloads/release_detail.html +++ b/templates/downloads/release_detail.html @@ -66,7 +66,7 @@

    Files

    {{ f.os.name }} {{ f.description }} {{ f.md5_sum }} - {{ f.filesize }} + {{ f.filesize|filesizeformat }} {% if f.gpg_signature_file %}SIG{% endif %} {% if release_files|has_sigstore_materials %} {% if f.sigstore_bundle_file %} From a4990b711ccd6e34e87d8d4b97169846fba5414f Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Wed, 21 Feb 2024 08:55:08 -0500 Subject: [PATCH 085/256] Move to pandoc for rendering sponsorship contracts (#2343) * Move to pandoc for rendering sponsorship contracts * use renewal template if applicable * consistency * formatting tweaks * bit cleaner names for files * grinding out formatting --- .github/workflows/ci.yml | 12 + Aptfile | 0 Dockerfile | 42 ++- base-requirements.txt | 7 +- pydotorg/settings/base.py | 1 - sponsors/contracts.py | 89 ++++++ sponsors/pandoc_filters/__init__.py | 0 sponsors/pandoc_filters/pagebreak.py | 90 ++++++ sponsors/pdf.py | 78 ----- sponsors/reference.docx | Bin 0 -> 12636 bytes sponsors/tests/test_contracts.py | 39 +++ sponsors/tests/test_pdf.py | 113 ------- sponsors/use_cases.py | 2 +- sponsors/views_admin.py | 2 +- .../sponsors/admin/contract-template.docx | Bin 15199 -> 0 bytes .../admin/contracts/renewal-agreement.md | 119 ++++++++ .../admin/contracts/sponsorship-agreement.md | 209 +++++++++++++ .../sponsors/admin/preview-contract.html | 283 ------------------ .../admin/renewal-contract-template.docx | Bin 9323 -> 0 bytes texlive.packages | 2 + 20 files changed, 605 insertions(+), 483 deletions(-) create mode 100644 Aptfile create mode 100644 sponsors/contracts.py create mode 100644 sponsors/pandoc_filters/__init__.py create mode 100644 sponsors/pandoc_filters/pagebreak.py delete mode 100644 sponsors/pdf.py create mode 100644 sponsors/reference.docx create mode 100644 sponsors/tests/test_contracts.py delete mode 100644 sponsors/tests/test_pdf.py delete mode 100644 templates/sponsors/admin/contract-template.docx create mode 100644 templates/sponsors/admin/contracts/renewal-agreement.md create mode 100644 templates/sponsors/admin/contracts/sponsorship-agreement.md delete mode 100644 templates/sponsors/admin/preview-contract.html delete mode 100644 templates/sponsors/admin/renewal-contract-template.docx create mode 100644 texlive.packages diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 97298ffca..28bfcc5ee 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,6 +17,18 @@ jobs: steps: - name: Check out repository uses: actions/checkout@v2 + - name: Install platform dependencies + run: | + sudo apt -y update + sudo apt -y install --no-install-recommends \ + texlive-latex-base \ + texlive-latex-recommended \ + texlive-plain-generic \ + lmodern + - name: Install pandoc + run: | + wget https://github.com/jgm/pandoc/releases/download/2.17.1.1/pandoc-2.17.1.1-1-amd64.deb + sudo dpkg -i pandoc-2.17.1.1-1-amd64.deb - uses: actions/setup-python@v2 with: python-version: 3.9.16 diff --git a/Aptfile b/Aptfile new file mode 100644 index 000000000..e69de29bb diff --git a/Dockerfile b/Dockerfile index 4d1046a98..f8aca13a2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,47 @@ -FROM python:3.9-bullseye +FROM python:3.9-bookworm ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 + +# By default, Docker has special steps to avoid keeping APT caches in the layers, which +# is good, but in our case, we're going to mount a special cache volume (kept between +# builds), so we WANT the cache to persist. +RUN set -eux; \ + rm -f /etc/apt/apt.conf.d/docker-clean; \ + echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache; + +# Install System level build requirements, this is done before +# everything else because these are rarely ever going to change. +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + set -x \ + && apt-get update \ + && apt-get install --no-install-recommends -y \ + pandoc \ + texlive-latex-base \ + texlive-latex-recommended \ + texlive-fonts-recommended \ + texlive-plain-generic \ + lmodern + +RUN case $(uname -m) in \ + "x86_64") ARCH=amd64 ;; \ + "aarch64") ARCH=arm64 ;; \ + esac \ + && wget --quiet https://github.com/jgm/pandoc/releases/download/2.17.1.1/pandoc-2.17.1.1-1-${ARCH}.deb \ + && dpkg -i pandoc-2.17.1.1-1-${ARCH}.deb + RUN mkdir /code WORKDIR /code + COPY dev-requirements.txt /code/ COPY base-requirements.txt /code/ -RUN pip install -r dev-requirements.txt + +RUN pip --no-cache-dir --disable-pip-version-check install --upgrade pip setuptools wheel + +RUN --mount=type=cache,target=/root/.cache/pip \ + set -x \ + && pip --disable-pip-version-check \ + install \ + -r dev-requirements.txt + COPY . /code/ diff --git a/base-requirements.txt b/base-requirements.txt index 9ddabf236..2495153db 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -44,12 +44,11 @@ django-filter==2.4.0 django-ordered-model==3.4.3 django-widget-tweaks==1.4.8 django-countries==7.2.1 -xhtml2pdf==0.2.5 -django-easy-pdf3==0.1.2 num2words==0.5.10 django-polymorphic==3.0.0 sorl-thumbnail==12.7.0 -docxtpl==0.12.0 -reportlab==3.6.6 django-extensions==3.1.4 django-import-export==2.7.1 + +pypandoc==1.12 +panflute==2.3.0 diff --git a/pydotorg/settings/base.py b/pydotorg/settings/base.py index 25874dd5d..ccbf3acab 100644 --- a/pydotorg/settings/base.py +++ b/pydotorg/settings/base.py @@ -173,7 +173,6 @@ 'ordered_model', 'widget_tweaks', 'django_countries', - 'easy_pdf', 'sorl.thumbnail', 'banners', diff --git a/sponsors/contracts.py b/sponsors/contracts.py new file mode 100644 index 000000000..7e72cde39 --- /dev/null +++ b/sponsors/contracts.py @@ -0,0 +1,89 @@ +import os +import tempfile + +from django.http import HttpResponse +from django.template.loader import render_to_string +from django.utils.dateformat import format + +import pypandoc + +dirname = os.path.dirname(__file__) +DOCXPAGEBREAK_FILTER = os.path.join(dirname, "pandoc_filters/pagebreak.py") +REFERENCE_DOCX = os.path.join(dirname, "reference.docx") + + +def _clean_split(text, separator="\n"): + return [ + t.replace("-", "").strip() + for t in text.split("\n") + if t.replace("-", "").strip() + ] + + +def _contract_context(contract, **context): + start_date = contract.sponsorship.start_date + context.update( + { + "contract": contract, + "start_date": start_date, + "start_day_english_suffix": format(start_date, "S"), + "sponsor": contract.sponsorship.sponsor, + "sponsorship": contract.sponsorship, + "benefits": _clean_split(contract.benefits_list.raw), + "legal_clauses": _clean_split(contract.legal_clauses.raw), + } + ) + previous_effective = contract.sponsorship.previous_effective_date + context["previous_effective"] = previous_effective if previous_effective else "UNKNOWN" + context["previous_effective_english_suffix"] = format(previous_effective, "S") if previous_effective else "UNKNOWN" + return context + + +def render_markdown_from_template(contract, **context): + template = "sponsors/admin/contracts/sponsorship-agreement.md" + if contract.sponsorship.renewal: + template = "sponsors/admin/contracts/renewal-agreement.md" + context = _contract_context(contract, **context) + return render_to_string(template, context) + + +def render_contract_to_pdf_response(request, contract, **context): + response = HttpResponse( + render_contract_to_pdf_file(contract, **context), content_type="application/pdf" + ) + return response + + +def render_contract_to_pdf_file(contract, **context): + with tempfile.NamedTemporaryFile() as docx_file: + with tempfile.NamedTemporaryFile(suffix=".pdf") as pdf_file: + markdown = render_markdown_from_template(contract, **context) + pdf = pypandoc.convert_text( + markdown, "pdf", outputfile=pdf_file.name, format="md" + ) + return pdf_file.read() + + +def render_contract_to_docx_response(request, contract, **context): + response = HttpResponse( + render_contract_to_docx_file(contract, **context), + content_type="application/vnd.openxmlformats-officedocument.wordprocessingml.document", + ) + response[ + "Content-Disposition" + ] = f"attachment; filename={'sponsorship-renewal' if contract.sponsorship.renewal else 'sponsorship-contract'}-{contract.sponsorship.sponsor.name.replace(' ', '-').replace('.', '')}.docx" + return response + + +def render_contract_to_docx_file(contract, **context): + markdown = render_markdown_from_template(contract, **context) + with tempfile.NamedTemporaryFile() as docx_file: + docx = pypandoc.convert_text( + markdown, + "docx", + outputfile=docx_file.name, + format="md", + filters=[DOCXPAGEBREAK_FILTER], + extra_args=[f"--reference-doc", REFERENCE_DOCX], + ) + return docx_file.read() diff --git a/sponsors/pandoc_filters/__init__.py b/sponsors/pandoc_filters/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/sponsors/pandoc_filters/pagebreak.py b/sponsors/pandoc_filters/pagebreak.py new file mode 100644 index 000000000..525b89c57 --- /dev/null +++ b/sponsors/pandoc_filters/pagebreak.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +# ------------------------------------------------------------------------------ +# Source: https://github.com/pandocker/pandoc-docx-pagebreak-py/ +# Revision: c8cddccebb78af75168da000a3d6ac09349bef73 +# ------------------------------------------------------------------------------ +# MIT License +# +# Copyright (c) 2018 pandocker +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# ------------------------------------------------------------------------------ + +""" pandoc-docx-pagebreakpy +Pandoc filter to insert pagebreak as openxml RawBlock +Only for docx output + +Trying to port pandoc-doc-pagebreak +- https://github.com/alexstoick/pandoc-docx-pagebreak +""" + +import panflute as pf + + +class DocxPagebreak(object): + pagebreak = pf.RawBlock("", format="openxml") + sectionbreak = pf.RawBlock("", + format="openxml") + toc = pf.RawBlock(r""" + + + + + + TOC \o "1-3" \h \z \u + + + + + + +""", format="openxml") + + def action(self, elem, doc): + if isinstance(elem, pf.RawBlock): + if elem.text == r"\newpage": + if (doc.format == "docx"): + pf.debug("Page Break") + elem = self.pagebreak + # elif elem.text == r"\newsection": + # if (doc.format == "docx"): + # pf.debug("Section Break") + # elem = self.sectionbreak + # else: + # elem = [] + elif elem.text == r"\toc": + if (doc.format == "docx"): + pf.debug("Table of Contents") + para = [pf.Para(pf.Str("Table"), pf.Space(), pf.Str("of"), pf.Space(), pf.Str("Contents"))] + div = pf.Div(*para, attributes={"custom-style": "TOC Heading"}) + elem = [div, self.toc] + else: + elem = [] + return elem + + +def main(doc=None): + dp = DocxPagebreak() + return pf.run_filter(dp.action, doc=doc) + + +if __name__ == "__main__": + main() diff --git a/sponsors/pdf.py b/sponsors/pdf.py deleted file mode 100644 index 9855beee3..000000000 --- a/sponsors/pdf.py +++ /dev/null @@ -1,78 +0,0 @@ -""" -This module is a wrapper around django-easy-pdf so we can reuse code -""" -import io -import os -from django.conf import settings -from django.http import HttpResponse -from django.utils.dateformat import format - -from docxtpl import DocxTemplate -from easy_pdf.rendering import render_to_pdf_response, render_to_pdf - -from markupfield_helpers.helpers import render_md -from django.utils.html import mark_safe - - -def _clean_split(text, separator='\n'): - return [ - t.replace('-', '').strip() - for t in text.split('\n') - if t.replace('-', '').strip() - ] - - -def _contract_context(contract, **context): - start_date = contract.sponsorship.start_date - context.update({ - "contract": contract, - "start_date": start_date, - "start_day_english_suffix": format(start_date, "S"), - "sponsor": contract.sponsorship.sponsor, - "sponsorship": contract.sponsorship, - "benefits": _clean_split(contract.benefits_list.raw), - "legal_clauses": _clean_split(contract.legal_clauses.raw), - "renewal": contract.sponsorship.renewal, - }) - previous_effective = contract.sponsorship.previous_effective_date - context["previous_effective"] = previous_effective if previous_effective else "UNKNOWN" - context["previous_effective_english_suffix"] = format(previous_effective, "S") if previous_effective else None - return context - - -def render_contract_to_pdf_response(request, contract, **context): - template = "sponsors/admin/preview-contract.html" - context = _contract_context(contract, **context) - return render_to_pdf_response(request, template, context) - - -def render_contract_to_pdf_file(contract, **context): - template = "sponsors/admin/preview-contract.html" - context = _contract_context(contract, **context) - return render_to_pdf(template, context) - - -def _gen_docx_contract(output, contract, **context): - context = _contract_context(contract, **context) - renewal = context["renewal"] - if renewal: - template = os.path.join(settings.TEMPLATES_DIR, "sponsors", "admin", "renewal-contract-template.docx") - else: - template = os.path.join(settings.TEMPLATES_DIR, "sponsors", "admin", "contract-template.docx") - doc = DocxTemplate(template) - doc.render(context) - doc.save(output) - return output - - -def render_contract_to_docx_response(request, contract, **context): - response = HttpResponse(content_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document') - response['Content-Disposition'] = 'attachment; filename=contract.docx' - return _gen_docx_contract(output=response, contract=contract, **context) - - -def render_contract_to_docx_file(contract, **context): - fp = io.BytesIO() - fp = _gen_docx_contract(output=fp, contract=contract, **context) - fp.seek(0) - return fp.read() diff --git a/sponsors/reference.docx b/sponsors/reference.docx new file mode 100644 index 0000000000000000000000000000000000000000..bf094ca4f3f29b535da99c765b735eaee71420d1 GIT binary patch literal 12636 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%0D(b%B@_FB(DPPG z&0-g(r3Rwn9F|ya1EjZf5p!cs^V5e5ZrET>?rO&LZgV<8>y|PaqQ=B8^hbNN#5@lG z0asUMKV77q?P6^*ryGXhe|7wL{4^-TYsU*g{?my6?{RnDL<%&%Rsewdqhdk#28DJ-dJc@MXwm#QOhEI1QdJ= zw+08&iV{+vYD)Ju&N{VUf0P7KmtpWi7ursN&SVQ)f$~RDk1=CqiBf_jvQG~b*O=CK zV3KAQLC4&IfxT~*kvnG%bXdDXpTFaQ-8)tQLGU>*qRLSx*I9R^xi-j4EM;a@4fV_M z=;yL$-Whpw-}3U2q)2lT2nm~`#`MbwIa^}|*lDs`in=xFY-z+XKz5-;T8E>9rKX#g z>-^fmKz7f25wC!%-DGwc6lQ)iXrmfORRo5Eedxs1pSC5{%MOX=wWp!}ubewA;a7+K zx@V-P>}F@;sPoecw@6#F=%S?N!;BwtzIKqtH5W3uX-;nT zlewkvbhrB8XW({gOBU!eI)sOecHd@EhQfxQ&jpbg?wV{`kxqv7J#0Tsi zhakfr$2j}4mb2PWz>AYFt;4HLx36?bs(bBRS4YEs(Ep8C4^55|`XO7b1`U=B- zMjiO^A(Kjq%7+I}B!-|f6P_}{B((Rd0>$Rn5#KY0O*l4aU7y1YX(UsB%r)M08I|3M z`dB?YzXhVZON#HBu7PLuMGVnIKU_AV>8XR-@@=~p^3WTA{0}L0m_50C<_`=PKSVZV zTWzKh2qZ=`^sPMGQD6qlt_e??PMEAqxP`lEo_9UY3Fka{ynMv%8SFvWM^j^U!T-l#<8{R#hl jTK;_ySJ8lg{2wf=ycFc?@B#rre*HCrzeXZ-Kd=55B-B^E literal 0 HcmV?d00001 diff --git a/sponsors/tests/test_contracts.py b/sponsors/tests/test_contracts.py new file mode 100644 index 000000000..c330c13a8 --- /dev/null +++ b/sponsors/tests/test_contracts.py @@ -0,0 +1,39 @@ +from datetime import date +from model_bakery import baker +from unittest.mock import patch, Mock + +from django.http import HttpRequest +from django.test import TestCase +from django.utils.dateformat import format + +from sponsors.contracts import render_contract_to_docx_response + + +class TestRenderContract(TestCase): + def setUp(self): + self.contract = baker.make_recipe("sponsors.tests.empty_contract", sponsorship__start_date=date.today()) + + # DOCX unit test + def test_render_response_with_docx_attachment(self): + request = Mock(HttpRequest) + self.contract.sponsorship.renewal = False + response = render_contract_to_docx_response(request, self.contract) + + self.assertEqual(response.get("Content-Disposition"), "attachment; filename=sponsorship-contract-Sponsor.docx") + self.assertEqual( + response.get("Content-Type"), + "application/vnd.openxmlformats-officedocument.wordprocessingml.document" + ) + + + # DOCX unit test + def test_render_renewal_response_with_docx_attachment(self): + request = Mock(HttpRequest) + self.contract.sponsorship.renewal = True + response = render_contract_to_docx_response(request, self.contract) + + self.assertEqual(response.get("Content-Disposition"), "attachment; filename=sponsorship-renewal-Sponsor.docx") + self.assertEqual( + response.get("Content-Type"), + "application/vnd.openxmlformats-officedocument.wordprocessingml.document" + ) diff --git a/sponsors/tests/test_pdf.py b/sponsors/tests/test_pdf.py deleted file mode 100644 index e4d140cf2..000000000 --- a/sponsors/tests/test_pdf.py +++ /dev/null @@ -1,113 +0,0 @@ -from datetime import date -from docxtpl import DocxTemplate -from markupfield_helpers.helpers import render_md -from model_bakery import baker -from pathlib import Path -from unittest.mock import patch, Mock - -from django.conf import settings -from django.http import HttpResponse, HttpRequest -from django.template.loader import render_to_string -from django.test import TestCase -from django.utils.html import mark_safe -from django.utils.dateformat import format - -from sponsors.pdf import render_contract_to_pdf_file, render_contract_to_pdf_response, render_contract_to_docx_response - - -class TestRenderContract(TestCase): - def setUp(self): - self.contract = baker.make_recipe("sponsors.tests.empty_contract", sponsorship__start_date=date.today()) - text = f"{self.contract.benefits_list.raw}\n\n**Legal Clauses**\n{self.contract.legal_clauses.raw}" - html = render_md(text) - self.context = { - "contract": self.contract, - "start_date": self.contract.sponsorship.start_date, - "start_day_english_suffix": format(self.contract.sponsorship.start_date, "S"), - "sponsor": self.contract.sponsorship.sponsor, - "sponsorship": self.contract.sponsorship, - "benefits": [], - "legal_clauses": [], - "renewal": None, - "previous_effective": "UNKNOWN", - "previous_effective_english_suffix": None, - } - self.template = "sponsors/admin/preview-contract.html" - - # PDF unit tests - @patch("sponsors.pdf.render_to_pdf") - def test_render_pdf_using_django_easy_pdf(self, mock_render): - mock_render.return_value = "pdf content" - - content = render_contract_to_pdf_file(self.contract) - - self.assertEqual(content, "pdf content") - mock_render.assert_called_once_with(self.template, self.context) - - @patch("sponsors.pdf.render_to_pdf_response") - def test_render_response_using_django_easy_pdf(self, mock_render): - response = Mock(HttpResponse) - mock_render.return_value = response - - request = Mock(HttpRequest) - content = render_contract_to_pdf_response(request, self.contract) - - self.assertEqual(content, response) - mock_render.assert_called_once_with(request, self.template, self.context) - - # DOCX unit test - @patch("sponsors.pdf.DocxTemplate") - def test_render_response_with_docx_attachment(self, MockDocxTemplate): - template = Path(settings.TEMPLATES_DIR) / "sponsors" / "admin" / "contract-template.docx" - self.assertTrue(template.exists()) - mocked_doc = Mock(DocxTemplate) - MockDocxTemplate.return_value = mocked_doc - - request = Mock(HttpRequest) - response = render_contract_to_docx_response(request, self.contract) - - MockDocxTemplate.assert_called_once_with(str(template.resolve())) - mocked_doc.render.assert_called_once_with(self.context) - mocked_doc.save.assert_called_once_with(response) - self.assertEqual(response.get("Content-Disposition"), "attachment; filename=contract.docx") - self.assertEqual( - response.get("Content-Type"), - "application/vnd.openxmlformats-officedocument.wordprocessingml.document" - ) - - @patch("sponsors.pdf.DocxTemplate") - def test_render_response_with_docx_attachment__renewal(self, MockDocxTemplate): - renewal_contract = baker.make_recipe("sponsors.tests.empty_contract", sponsorship__start_date=date.today(), - sponsorship__renewal=True) - text = f"{renewal_contract.benefits_list.raw}\n\n**Legal Clauses**\n{renewal_contract.legal_clauses.raw}" - html = render_md(text) - renewal_context = { - "contract": renewal_contract, - "start_date": renewal_contract.sponsorship.start_date, - "start_day_english_suffix": format(self.contract.sponsorship.start_date, "S"), - "sponsor": renewal_contract.sponsorship.sponsor, - "sponsorship": renewal_contract.sponsorship, - "benefits": [], - "legal_clauses": [], - "renewal": True, - "previous_effective": "UNKNOWN", - "previous_effective_english_suffix": None, - } - renewal_template = "sponsors/admin/preview-contract.html" - - template = Path(settings.TEMPLATES_DIR) / "sponsors" / "admin" / "renewal-contract-template.docx" - self.assertTrue(template.exists()) - mocked_doc = Mock(DocxTemplate) - MockDocxTemplate.return_value = mocked_doc - - request = Mock(HttpRequest) - response = render_contract_to_docx_response(request, renewal_contract) - - MockDocxTemplate.assert_called_once_with(str(template.resolve())) - mocked_doc.render.assert_called_once_with(renewal_context) - mocked_doc.save.assert_called_once_with(response) - self.assertEqual(response.get("Content-Disposition"), "attachment; filename=contract.docx") - self.assertEqual( - response.get("Content-Type"), - "application/vnd.openxmlformats-officedocument.wordprocessingml.document" - ) diff --git a/sponsors/use_cases.py b/sponsors/use_cases.py index bbb6f2483..91271ff64 100644 --- a/sponsors/use_cases.py +++ b/sponsors/use_cases.py @@ -3,7 +3,7 @@ from sponsors import notifications from sponsors.models import Sponsorship, Contract, SponsorContact, SponsorEmailNotificationTemplate, SponsorshipBenefit, \ SponsorshipPackage -from sponsors.pdf import render_contract_to_pdf_file, render_contract_to_docx_file +from sponsors.contracts import render_contract_to_pdf_file, render_contract_to_docx_file class BaseUseCaseWithNotifications: diff --git a/sponsors/views_admin.py b/sponsors/views_admin.py index e9a808ccc..fd8631d3f 100644 --- a/sponsors/views_admin.py +++ b/sponsors/views_admin.py @@ -14,7 +14,7 @@ from sponsors.forms import SponsorshipReviewAdminForm, SponsorshipsListForm, SignedSponsorshipReviewAdminForm, \ SendSponsorshipNotificationForm, CloneApplicationConfigForm from sponsors.exceptions import InvalidStatusException -from sponsors.pdf import render_contract_to_pdf_response, render_contract_to_docx_response +from sponsors.contracts import render_contract_to_pdf_response, render_contract_to_docx_response from sponsors.models import Sponsorship, SponsorBenefit, EmailTargetable, SponsorContact, BenefitFeature, \ SponsorshipCurrentYear, SponsorshipBenefit, SponsorshipPackage diff --git a/templates/sponsors/admin/contract-template.docx b/templates/sponsors/admin/contract-template.docx deleted file mode 100644 index 5bdc44525a4d15367bcaad989f5d63ba6c278233..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15199 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 diff --git a/templates/sponsors/admin/contracts/renewal-agreement.md b/templates/sponsors/admin/contracts/renewal-agreement.md new file mode 100644 index 000000000..3a401c9d7 --- /dev/null +++ b/templates/sponsors/admin/contracts/renewal-agreement.md @@ -0,0 +1,119 @@ +--- +title: SPONSORSHIP AGREEMENT RENEWAL +geometry: +- margin=1.25in +font-size: 12pt +pagestyle: empty +header-includes: +- \pagenumbering{gobble} +--- + +**THIS SPONSORSHIP AGREEMENT RENEWAL** (the **"Agreement"**) +is entered into and made effective as of the +{{start_date|date:"j"}}{{start_day_english_suffix}} of {{start_date|date:"F Y"}} +(the **"Effective Date"**), +by and between the **Python Software Foundation** (the **"PSF"**), +a Delaware nonprofit corporation, +and **{{sponsor.name|upper}}** (**"Sponsor"**), +a {{sponsor.state}} corporation. +Each of the PSF and Sponsor are hereinafter sometimes individually +referred to as a **"Party"** and collectively as the **"Parties"**. + +## RECITALS + +**WHEREAS**, the PSF is a tax-exempt charitable organization (EIN 04-3594598) +whose mission 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 (the **"Programs"**); + +**WHEREAS**, Sponsor is {{contract.sponsor_info}}; and + +**WHEREAS**, Sponsor and the PSF previously entered into a Sponsorship Agreement +with the effective date of the +{{ previous_effective|date:"j" }}{{ previous_effective_english_suffix }} of {{ previous_effective|date:"F Y" }} +and a term of one year (the “Sponsorship Agreementâ€). + +**WHEREAS**, Sponsor wishes to renew its support the Programs by making a contribution to the PSF. + +## AGREEMENT + +**NOW, THEREFORE**, in consideration of the foregoing and the mutual covenants contained herein, and for other good and valuable consideration, the receipt and sufficiency of which are hereby acknowledged, the Parties hereto agree to extend and amend the Sponsorship Agreement as follows: + +1. [**Replacement of the Exhibit**]{.underline} Exhibit A to the Sponsorship Agreement is replaced with Exhibit A below. + +1. [**Renewal**]{.underline} Approval and incorporation of this new exhibit with the previous Sponsor Benefits shall be considered written notice by Sponsor to the PSF that you wish to continue the terms of the Sponsorship Agreement for an additional year and to contribute the new Sponsorship Payment specified in Exhibit A, beginning on the Effective Date, as contemplated by Section 6 of the Sponsorship Agreement. + +  + + +### \[Signature Page Follows\] + +::: {.page-break} +\newpage +::: + +## SPONSORSHIP AGREEMENT RENEWAL + +**IN WITNESS WHEREOF**, the Parties hereto have duly executed this **Sponsorship Agreement Renewal** as of the **Effective Date**. + +  + +**PSF**: +**PYTHON SOFTWARE FOUNDATION**, +a Delaware non profit corporation + +  + +By:        ________________________________ +Name:   Loren Crary +Title:     Director of Resource Development + +  + +  + +**SPONSOR**: +**{{sponsor.name|upper}}**, +a {{sponsor.state}} entity + +  + +By:        ________________________________ +Name:   ________________________________ +Title:     ________________________________ + +::: {.page-break} +\newpage +::: + +## SPONSORSHIP AGREEMENT RENEWAL + +### EXHIBIT A + +1. [**Sponsorship**]{.underline} During the Term of this Agreement, in return for the Sponsorship Payment, the PSF agrees to identify and acknowledge Sponsor as a {{sponsorship.year}} {{sponsorship.level_name}} Sponsor of the Programs and of the PSF, in accordance with the United States Internal Revenue Service guidance applicable to qualified sponsorship payments. + + Acknowledgments of appreciation for the Sponsorship Payment may identify and briefly describe Sponsor and its products or product lines in neutral terms and may include Sponsor’s name, logo, well-established slogan, locations, telephone numbers, or website addresses, but such acknowledgments shall not include (a) comparative or qualitative descriptions of Sponsor’s products, services, or facilities; (b) price information or other indications of savings or value associated with Sponsor’s products or services; (c) a call to action; (d) an endorsement; or (e) an inducement to buy, sell, or use Sponsor’s products or services. Any such acknowledgments will be created, or subject to prior review and approval, by the PSF. + + The PSF’s acknowledgment may include the following: + + - [**Display of Logo**]{.underline} The PSF will display Sponsor’s logo and other agreed-upon identifying information on www.python.org, and on any marketing and promotional media made by the PSF in connection with the Programs, solely for the purpose of acknowledging Sponsor as a sponsor of the Programs in a manner (placement, form, content, etc.) reasonably determined by the PSF in its sole discretion. Sponsor agrees to provide all the necessary content and materials for use in connection with such display. + + - Additional acknowledgment as provided in Sponsor Benefits. + +1. [**Sponsorship Payment**]{.underline} The amount of Sponsorship Payment shall be {{sponsorship.verbose_sponsorship_fee|title}} USD ($ {{sponsorship.sponsorship_fee}}). The Sponsorship Payment is due within thirty (30) days of the Effective Date. To the extent that any portion of a payment under this section would not (if made as a Separate payment) be deemed a qualified sponsorship payment under IRC § 513(i), such portion shall be deemed and treated as separate from the qualified sponsorship payment. + +1. [**Receipt of Payment**]{.underline} Sponsor must submit full payment in order to secure Sponsor Benefits. + +1. [**Refunds**]{.underline} The PSF does not offer refunds for sponsorships. The PSF may cancel the event(s) or any part thereof. In that event, the PSF shall determine and refund to Sponsor the proportionate share of the balance of the aggregate Sponsorship fees applicable to event(s) received which remain after deducting all expenses incurred by the PSF. + +1. [**Sponsor Benefits**]{.underline} Sponsor Benefits per the Agreement are: + + 1. Acknowledgement as described under "Sponsorship" above. + +{%for benefit in benefits%} 1. {{benefit}} +{%endfor%} + +{%if legal_clauses%}1. Legal Clauses. Related legal clauses are: + +{%for clause in legal_clauses%} 1. {{clause}} +{%endfor%}{%endif%} diff --git a/templates/sponsors/admin/contracts/sponsorship-agreement.md b/templates/sponsors/admin/contracts/sponsorship-agreement.md new file mode 100644 index 000000000..ee0d91ce3 --- /dev/null +++ b/templates/sponsors/admin/contracts/sponsorship-agreement.md @@ -0,0 +1,209 @@ +--- +title: SPONSORSHIP AGREEMENT +geometry: +- margin=1.25in +font-size: 12pt +pagestyle: empty +header-includes: +- \pagenumbering{gobble} +--- + +**THIS SPONSORSHIP AGREEMENT** (the **"Agreement"**) +is entered into and made effective as of the +{{start_date|date:"j"}}{{start_day_english_suffix}} of {{start_date|date:"F Y"}} +(the **"Effective Date"**), +by and between the **Python Software Foundation** (the **"PSF"**), +a Delaware nonprofit corporation, +and **{{sponsor.name|upper}}** (**"Sponsor"**), +a {{sponsor.state}} corporation. +Each of the PSF and Sponsor are hereinafter sometimes individually +referred to as a **"Party"** and collectively as the **"Parties"**. + +## RECITALS + +**WHEREAS**, the PSF is a tax-exempt charitable organization (EIN 04-3594598) +whose mission 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 (the **"Programs"**); + +**WHEREAS**, Sponsor is {{contract.sponsor_info}}; and + +**WHEREAS**, Sponsor wishes to support the Programs by making a contribution to the PSF. + +## AGREEMENT + +**NOW, THEREFORE**, in consideration of the foregoing and the mutual covenants contained herein, and for other good and valuable consideration, the receipt and sufficiency of which are hereby acknowledged, the Parties hereto agree as follows: + +1. [**Recitals Incorporated**]{.underline}. Each of the above Recitals is incorporated into and is made a part of this Agreement. + +1. [**Exhibits Incorporated by Reference**]{.underline}. All exhibits referenced in this Agreement are incorporated herein as integral parts of this Agreement and shall be considered reiterated herein as fully as if such provisions had been set forth verbatim in this Agreement. + +1. [**Sponsorship Payment**]{.underline} In consideration for the right to sponsor the PSF and its Programs, and to be acknowledged by the PSF as a sponsor in the manner described herein, Sponsor shall make a contribution to the PSF (the "Sponsorship Payment") in the amount shown in Exhibit A. + +1. [**Acknowledgement of Sponsor**]{.underline} In return for the Sponsorship Payment, Sponsor will be entitled to receive the sponsorship package described in Exhibit A attached hereto (the "Sponsor Benefits"). + +1. [**Intellectual Property**]{.underline} The PSF is the sole owner of all right, title, and interest to all the PSF information, including the PSF’s logo, trademarks, trade names, and copyrighted information, unless otherwise provided. + + (a) [Grant of License by the PSF]{.underline} The PSF hereby grants to Sponsor a limited, non- exclusive license to use certain of the PSF’s intellectual property, including the PSF’s name, acronym, and logo (collectively, the "PSF Intellectual Property"), solely in connection with promotion of Sponsor’s sponsorship of the Programs. Sponsor agrees that it shall not use the PSF’s Property in a manner that states or implies that the PSF endorses Sponsor (or Sponsor’s products or services). The PSF retains the right, in its sole and absolute discretion, to review and approve in advance all uses of the PSF Intellectual Property, which approval shall not be unreasonably withheld. + + (a) [Grant of License by Sponsor]{.underline} Sponsor hereby grants to the PSF a limited, non-exclusive license to use certain of Sponsor’s intellectual property, including names, trademarks, and copyrights (collectively, "Sponsor Intellectual Property"), solely to identify Sponsor as a sponsor of the Programs and the PSF. Sponsor retains the right to review and approve in advance all uses of the Sponsor Intellectual Property, which approval shall not be unreasonably withheld. + +1. [**Term**]{.underline} The Term of this Agreement will begin on the Effective Date and continue for a period of one (1) year. The Agreement may be renewed for one (1) year by written notice from Sponsor to the PSF. + +1. [**Termination**]{.underline} The Agreement may be terminated (i) by either Party for any reason upon sixty (60) days prior written notice to the other Party; (ii) if one Party notifies the other Party that the other Party is in material breach of its obligations under this Agreement and such breach (if curable) is not cured with fifteen (15) days of such notice; (iii) if both Parties agree to terminate by mutual written consent; or (iv) if any of Sponsor information is found or is reasonably alleged to violate the rights of a third party. The PSF shall also have the unilateral right to terminate this Agreement at any time if it reasonably determines that it would be detrimental to the reputation and goodwill of the PSF or the Programs to continue to accept or use funds from Sponsor. Upon expiration or termination, no further use may be made by either Party of the other’s name, marks, logo or other intellectual property without the express prior written authorization of the other Party. + +1. [**Code of Conduct**]{.underline} Sponsor and all of its representatives shall conduct themselves at all times in accordance with the Python Software Foundation Code of Conduct (https://www.python.org/psf/conduct) and/or the PyCon Code of Conduct (https://pycon.us/code-of-conduct), as applicable. The PSF reserves the right to eject from any event any Sponsor or representative violating those standards. + +1. [**Deadlines**]{.underline} Company logos, descriptions, banners, advertising pages, tote bag inserts and similar items and information must be provided by the applicable deadlines for inclusion in the promotional materials for the PSF. + +1. [**Assignment of Space**]{.underline} If the Sponsor Benefits in Exhibit A include a booth or other display space, the PSF shall assign display space to Sponsor for the period of the display. Location assignments will be on a first-come, first-served basis and will be made solely at the discretion of the PSF. Failure to use a reserved space will result in penalties (up to 50% of your Sponsorship Payment). + +1. [**Job Postings**]{.underline} Sponsor will ensure that any job postings to be published by the PSF on Sponsor’s behalf comply with all applicable municipal, state, provincial, and federal laws. + +1. [**Representations and Warranties**]{.underline} Each Party represents and warrants for the benefit of the other Party that it has the legal authority to enter into this Agreement and is able to comply with the terms herein. Sponsor represents and warrants for the benefit of the PSF that it has full right and title to the Sponsor Intellectual Property to be provided under this Agreement and is not under any obligation to any party that restricts the Sponsor Intellectual Property or would prevent Sponsor’s performance under this Agreement. + +1. [**Successors and Assigns**]{.underline} This Agreement and all the terms and provisions hereof shall be binding upon and inure to the benefit of the Parties and their respective legal representatives, heirs, successors, and/or assigns. The transfer, or any attempted assignment or transfer, of all or any portion of this Agreement by a Party without the prior written consent of the other Party shall be null and void and of no effect. + +1. [**No Third-Party Beneficiaries**]{.underline} This Agreement is not intended to benefit and shall not be construed to confer upon any person, other than the Parties, any rights, remedies, or other benefits, including but not limited to third-party beneficiary rights. + +1. [**Severability**]{.underline} If any one or more of the provisions of this Agreement shall be held to be invalid, illegal, or unenforceable, the validity, legality, or enforceability of the remaining provisions of this Agreement shall not be affected thereby. To the extent permitted by applicable law, each Party waives any provision of law which renders any provision of this Agreement invalid, illegal, or unenforceable in any respect. + +1. [**Confidential Information**]{.underline} As used herein, "Confidential Information" means all confidential information disclosed by a Party ("Disclosing Party") to the other Party ("Receiving Party"), whether orally or in writing, that is designated as confidential or that reasonably should be understood to be confidential given the nature of the information. Each Party agrees: (a) to observe complete confidentiality with respect to the Confidential Information of the Disclosing Party; (b) not to disclose, or permit any third party or entity access to disclose, the Confidential Information (or any portion thereof) of the Disclosing Party without prior written permission of Disclosing Party; and (c) to ensure that any employees, or any third parties who receive access to the Confidential Information, are advised of the confidential and proprietary nature thereof and are prohibited from disclosing the Confidential Information and using the Confidential Information other than for the benefit of the Receiving Party in accordance with this Agreement. Without limiting the foregoing, each Party shall use the same degree of care that it uses to protect the confidentiality of its own confidential information of like kind, but in no event less than reasonable care. Neither Party shall have any liability with respect to Confidential Information to the extent such information: (w) is or becomes publicly available (other than through a breach of this Agreement); (x) is or becomes available to the Receiving Party on a non-confidential basis, provided that the source of such information was not known by the Receiving Party (after such inquiry as would be reasonable in the circumstances) to be the subject of a confidentiality agreement or other legal or contractual obligation of confidentiality with respect to such information; (y) is developed by the Receiving Party independently and without reference to information provided by the Disclosing Party; or (z) is required to be disclosed by law or court order, provided the Receiving Party gives the Disclosing Party prior notice of such compelled disclosure (to the extent legally permitted) and reasonable assistance, at the Disclosing Party’s cost. + +1. [**Independent Contractors**]{.underline} Nothing contained herein shall constitute or be construed as the creation of any partnership, agency, or joint venture relationship between the Parties. Neither of the Parties shall have the right to obligate or bind the other Party in any manner whatsoever, and nothing herein contained shall give or is intended to give any rights of any kind to any third party. The relationship of the Parties shall be as independent contractors. + +1. [**Indemnification**]{.underline} Sponsor agrees to indemnify and hold harmless the PSF, its officers, directors, employees, and agents, for any and all claims, losses, damages, liabilities, judgments, or settlements, including reasonable attorneys’ fees, costs (including costs associated with any official investigations or inquiries) and other expenses, incurred on account of Sponsor’s acts or omissions in connection with the performance of this Agreement or breach of this Agreement or with respect to the manufacture, marketing, sale, or dissemination of any of Sponsor’s products or services. The PSF shall have no liability to Sponsor with respect to its participation in this Agreement or receipt of the Sponsorship Payment, except for intentional or willful acts of the PSF or its employees or agents. The rights and responsibilities established in this section shall survive indefinitely beyond the term of this Agreement. + +1. [**Notices**]{.underline} All notices or other communications to be given or delivered under the provisions of this Agreement shall be in writing and shall be mailed by certified or registered mail, return receipt requested, or given or delivered by reputable courier, facsimile, or electronic mail to the Party to receive notice at the following addresses or at such other address as any Party may by notice direct in accordance with this Section: + + + If to Sponsor: + + > {{sponsor.primary_contact.name}} + > {{sponsor.name}} + > {{sponsor.mailing_address_line_1}}{%if sponsor.mailing_address_line_2%} + > {{sponsor.mailing_address_line_2 }}{% endif %} + > {{sponsor.city}}, {{sponsor.state}} {{sponsor.postal_code}} {{sponsor.country}} + > Facsimile: {{sponsor.primary_contact.phone}} + > Email: {{sponsor.primary_contact.email}} + +   + + If to the PSF: + + > Deb Nicholson + > Executive Director + > Python Software Foundation + > 9450 SW Gemini Dr. ECM # 90772 + > Beaverton, OR 97008 USA + > Facsimile: +1 (858) 712-8966 + > Email: deb@python.org + +   + + With a copy to: + + > Archer & Greiner, P.C. + > Attention: Noel Fleming + > Three Logan Square + > 1717 Arch Street, Suite 3500 + > Philadelphia, PA 19103 USA + > Facsimile: (215) 963-9999 + > Email: nfleming@archerlaw.com + +   + + Notices given by registered or certified mail shall be deemed as given on the delivery date shown on the return receipt, and notices given in any other manner shall be deemed as given when received. + +1. [**Governing Law; Jurisdiction**]{.underline} This Agreement shall be construed in accordance with the laws of the State of Delaware, without regard to its conflicts of law principles. Jurisdiction and venue for litigation of any dispute, controversy, or claim arising out of or in connection with this Agreement shall be only in a United States federal court in Delaware or a Delaware state court having subject matter jurisdiction. Each of the Parties hereto hereby expressly submits to the personal jurisdiction of the foregoing courts located in Delaware and hereby waives any objection or defense based on personal jurisdiction or venue that might otherwise be asserted to proceedings in such courts. + +1. [**Force Majeure**]{.underline} The PSF shall not be liable for any failure or delay in performing its obligations hereunder if such failure or delay is due in whole or in part to any cause beyond its reasonable control or the reasonable control of its contractors, agents, or suppliers, including, but not limited to, strikes, or other labor disturbances, acts of God, acts of war or terror, floods, sabotage, fire, natural, or other disasters, including pandemics. To the extent the PSF is unable to substantially perform hereunder due to any cause beyond its control as contemplated herein, it may terminate this Agreement as it may decide in its sole discretion. To the extent the PSF so terminates the Agreement, Sponsor releases the PSF and waives any claims for damages or compensation on account of such termination. + +1. [**No Waiver**]{.underline} A waiver of any breach of any provision of this Agreement shall not be deemed a waiver of any repetition of such breach or in any manner affect any other terms of this Agreement. + +1. [**Limitation of Damages**]{.underline} Except as otherwise provided herein, neither Party shall be liable to the other for any consequential, incidental, or punitive damages for any claims arising directly or indirectly out of this Agreement. + +1. [**Cumulative Remedies**]{.underline} All rights and remedies provided in this Agreement are cumulative and not exclusive, and the exercise by either Party of any right or remedy does not preclude the exercise of any other rights or remedies that may now or subsequently be available at law, in equity, by statute, in any other agreement between the Parties, or otherwise. + +1. [**Captions**]{.underline} The captions and headings are included herein for convenience and do not constitute a part of this Agreement. + +1. [**Amendments**]{.underline} No addition to or change in the terms of this Agreement will be binding on any Party unless set forth in writing and executed by both Parties. + +1. [**Counterparts**]{.underline} This Agreement may be executed in one or more counterparts, each of which shall be deemed an original and all of which shall be taken together and deemed to be one instrument. A signed copy of this Agreement delivered by facsimile, electronic mail, or other means of electronic transmission shall be deemed to have the same legal effect as delivery of an original signed copy of this Agreement. + +1. [**Entire Agreement**]{.underline} This Agreement (including the Exhibits) sets forth the entire agreement of the Parties and supersedes all prior oral or written agreements or understandings between the Parties as to the subject matter of this Agreement. Except as otherwise expressly provided herein, neither Party is relying upon any warranties, representations, assurances, or inducements of the other Party. + +  + + +### \[Signature Page Follows\] + +::: {.page-break} +\newpage +::: + +## SPONSORSHIP AGREEMENT + +**IN WITNESS WHEREOF**, the Parties hereto have duly executed this **Sponsorship Agreement** as of the **Effective Date**. + +  + +> **PSF**: +> **PYTHON SOFTWARE FOUNDATION**, +> a Delaware non profit corporation + +  + +> By:        ________________________________ +> Name:   Loren Crary +> Title:     Director of Resource Development + +  + +  + +> **SPONSOR**: +> **{{sponsor.name|upper}}**, +> a {{sponsor.state}} entity + +  + +> By:        ________________________________ +> Name:   ________________________________ +> Title:     ________________________________ + +::: {.page-break} +\newpage +::: + +## SPONSORSHIP AGREEMENT + +### EXHIBIT A + +1. [**Sponsorship**]{.underline} During the Term of this Agreement, in return for the Sponsorship Payment, the PSF agrees to identify and acknowledge Sponsor as a {{sponsorship.year}} {{sponsorship.level_name}} Sponsor of the Programs and of the PSF, in accordance with the United States Internal Revenue Service guidance applicable to qualified sponsorship payments. + + Acknowledgments of appreciation for the Sponsorship Payment may identify and briefly describe Sponsor and its products or product lines in neutral terms and may include Sponsor’s name, logo, well-established slogan, locations, telephone numbers, or website addresses, but such acknowledgments shall not include (a) comparative or qualitative descriptions of Sponsor’s products, services, or facilities; (b) price information or other indications of savings or value associated with Sponsor’s products or services; (c) a call to action; (d) an endorsement; or (e) an inducement to buy, sell, or use Sponsor’s products or services. Any such acknowledgments will be created, or subject to prior review and approval, by the PSF. + + The PSF’s acknowledgment may include the following: + + (a) [**Display of Logo**]{.underline} The PSF will display Sponsor’s logo and other agreed-upon identifying information on www.python.org, and on any marketing and promotional media made by the PSF in connection with the Programs, solely for the purpose of acknowledging Sponsor as a sponsor of the Programs in a manner (placement, form, content, etc.) reasonably determined by the PSF in its sole discretion. Sponsor agrees to provide all the necessary content and materials for use in connection with such display. + + (a) Additional acknowledgment as provided in Sponsor Benefits. + +1. [**Sponsorship Payment**]{.underline} The amount of Sponsorship Payment shall be {{sponsorship.verbose_sponsorship_fee|title}} USD ($ {{sponsorship.sponsorship_fee}}). The Sponsorship Payment is due within thirty (30) days of the Effective Date. To the extent that any portion of a payment under this section would not (if made as a Separate payment) be deemed a qualified sponsorship payment under IRC § 513(i), such portion shall be deemed and treated as separate from the qualified sponsorship payment. + +1. [**Receipt of Payment**]{.underline} Sponsor must submit full payment in order to secure Sponsor Benefits. + +1. [**Refunds**]{.underline} The PSF does not offer refunds for sponsorships. The PSF may cancel the event(s) or any part thereof. In that event, the PSF shall determine and refund to Sponsor the proportionate share of the balance of the aggregate Sponsorship fees applicable to event(s) received which remain after deducting all expenses incurred by the PSF. + +1. [**Sponsor Benefits**]{.underline} Sponsor Benefits per the Agreement are: + + 1. Acknowledgement as described under "Sponsorship" above. + +{%for benefit in benefits%} 1. {{benefit}} +{%endfor%} + +{%if legal_clauses%}1. Legal Clauses. Related legal clauses are: + +{%for clause in legal_clauses%} 1. {{clause}} +{%endfor%}{%endif%} diff --git a/templates/sponsors/admin/preview-contract.html b/templates/sponsors/admin/preview-contract.html deleted file mode 100644 index f89fd02b0..000000000 --- a/templates/sponsors/admin/preview-contract.html +++ /dev/null @@ -1,283 +0,0 @@ -{% extends "easy_pdf/base.html" %} -{% load humanize %} - -{% block extra_style %} - -{% endblock %} - -{% block content %} -

    SPONSORSHIP AGREEMENT

    - -

    THIS SPONSORSHIP AGREEMENT (the “Agreementâ€) is entered into and made -effective as of the {{ start_date|date:"dS" }} day of {{ start_date|date:"F, Y"}} (the “Effective Dateâ€), by and between -Python Software Foundation (the “PSFâ€), a Delaware nonprofit corporation, and {{ sponsor.name|upper }} (“Sponsorâ€), a {{ sponsor.state }} corporation. Each of the PSF and Sponsor are -hereinafter sometimes individually referred to as a “Party†and collectively as the “Partiesâ€.

    - -

    RECITALS

    - -

    WHEREAS, the PSF is a tax-exempt charitable organization (EIN 04-3594598) whose -mission 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 (the -“Programsâ€);

    - -

    WHEREAS, Sponsor is {{ contract.sponsor_info}}; and

    - -

    WHEREAS, Sponsor wishes to support the Programs by making a contribution to the -PSF.

    - -

    AGREEMENT

    - -

    NOW, THEREFORE, in consideration of the foregoing and the mutual covenants -contained herein, and for other good and valuable consideration, the receipt and sufficiency of -which are hereby acknowledged, the Parties hereto agree as follows:

    - -
      -
    1. Recitals Incorporated. Each of the above Recitals is incorporated into and is made a part of this Agreement.
    2. - -
    3. Exhibits Incorporated by Reference. All exhibits referenced in this Agreement are incorporated herein as integral parts of this Agreement and shall be considered reiterated herein as fully as if such provisions had been set forth verbatim in this Agreement.
    4. - -
    5. Sponsorship Payment. In consideration for the right to sponsor the PSF and its Programs, and to be acknowledged by the PSF as a sponsor in the manner described herein, Sponsor shall make a contribution to the PSF (the “Sponsorship Paymentâ€) in the amount shown in Exhibit A.
    6. - -
    7. Acknowledgement of Sponsor. In return for the Sponsorship Payment, Sponsor will be entitled to receive the sponsorship package described in Exhibit A attached hereto (the “Sponsor Benefitsâ€).
    8. - -
    9. Intellectual Property. The PSF is the sole owner of all right, title, and interest to all the PSF information, including the PSF’s logo, trademarks, trade names, and copyrighted information, unless otherwise provided.
    10. - -
        -
      1. Grant of License by the PSF. The PSF hereby grants to Sponsor a limited, non-exclusive license to use certain of the PSF’s intellectual property, including the PSF’s name, acronym, and logo (collectively, the “PSF Intellectual Propertyâ€), solely in connection with promotion of Sponsor’s sponsorship of the Programs. Sponsor agrees that it shall not use the PSF’s Property in a manner that states or implies that the PSF endorses Sponsor (or Sponsor’s products or services). The PSF retains the right, in its sole and absolute discretion, to review and approve in advance all uses of the PSF Intellectual Property, which approval shall not be unreasonably withheld.
      2. - -
      3. Grant of License by Sponsor. Sponsor hereby grants to the PSF a limited, non-exclusive license to use certain of Sponsor’s intellectual property, including names, trademarks, and copyrights (collectively, “Sponsor Intellectual Propertyâ€), solely to identify Sponsor as a sponsor of the Programs and the PSF. Sponsor retains the right to review and approve in advance all uses of the Sponsor Intellectual Property, which approval shall not be unreasonably withheld.
      4. -
      - - -
    11. Term. The Term of this Agreement will begin on {{ start_date|date:"dS, F Y"}} and continue for a period of one (1) year. The Agreement may be renewed for one (1) year by written notice from Sponsor to the PSF.
    12. - -
    13. Termination. The Agreement may be terminated (i) by either Party for any reason upon sixty (60) days prior written notice to the other Party; (ii) if one Party notifies the other Party that the other Party is in material breach of its obligations under this Agreement and such breach (if curable) is not cured with fifteen (15) days of such notice; (iii) if both Parties agree to terminate by mutual written consent; or (iv) if any of Sponsor information is found or is reasonably alleged to violate the rights of a third party. The PSF shall also have the unilateral right to terminate this Agreement at any time if it reasonably determines that it would be detrimental to the reputation and goodwill of the PSF or the Programs to continue to accept or use funds from Sponsor. Upon expiration or termination, no further use may be made by either Party of the other’s name, marks, logo or other intellectual property without the express prior written authorization of the other Party.
    14. - -
    15. Code of Conduct. Sponsor and all of its representatives shall conduct themselves at all times in accordance with the Python Software Foundation Code of Conduct (https://www.python.org/psf/codeofconduct) and/or the PyCon Code of Conduct (https://us.pycon.org/2021/about/code-of-conduct/), as applicable. The PSF reserves the right to eject from any event any Sponsor or representative violating those standards.
    16. - -
    17. Deadlines. Company logos, descriptions, banners, advertising pages, tote bag inserts and similar items and information must be provided by the applicable deadlines for inclusion in the promotional materials for the PSF.
    18. - -
    19. Assignment of Space. If the Sponsor Benefits in Exhibit A include a booth or other display space, the PSF shall assign display space to Sponsor for the period of the display. Location assignments will be on a first-come, first-served basis and will be made solely at the discretion of the PSF. Failure to use a reserved space will result in penalties (up to 50% of your Sponsorship Payment).
    20. - -
    21. Job Postings. Sponsor will ensure that any job postings to be published by the PSF on Sponsor’s behalf comply with all applicable municipal, state, provincial, and federal laws.
    22. - -
    23. Representations and Warranties. Each Party represents and warrants for the benefit of the other Party that it has the legal authority to enter into this Agreement and is able to comply with the terms herein. Sponsor represents and warrants for the benefit of the PSF that it has full right and title to the Sponsor Intellectual Property to be provided under this Agreement and is not under any obligation to any party that restricts the Sponsor Intellectual Property or would prevent Sponsor’s performance under this Agreement.
    24. - -
    25. Successors and Assigns. This Agreement and all the terms and provisions hereof shall be binding upon and inure to the benefit of the Parties and their respective legal representatives, heirs, successors, and/or assigns. The transfer, or any attempted assignment or transfer, of all or any portion of this Agreement by a Party without the prior written consent of the other Party shall be null and void and of no effect.
    26. - -
    27. No Third-Party Beneficiaries. This Agreement is not intended to benefit and shall not be construed to confer upon any person, other than the Parties, any rights, remedies, or other benefits, including but not limited to third-party beneficiary rights.
    28. - -
    29. Severability. If any one or more of the provisions of this Agreement shall be held to be invalid, illegal, or unenforceable, the validity, legality, or enforceability of the remaining provisions of this Agreement shall not be affected thereby. To the extent permitted by applicable law, each Party waives any provision of law which renders any provision of this Agreement invalid, illegal, or unenforceable in any respect.
    30. - -
    31. Confidential Information. As used herein, “Confidential Information†means all confidential information disclosed by a Party (“Disclosing Partyâ€) to the other Party (“Receiving Partyâ€), whether orally or in writing, that is designated as confidential or that reasonably should be understood to be confidential given the nature of the information. Each Party agrees: (a) to observe complete confidentiality with respect to the Confidential Information of the Disclosing Party; (b) not to disclose, or permit any third party or entity access to disclose, the Confidential Information (or any portion thereof) of the Disclosing Party without prior written permission of Disclosing Party; and (c) to ensure that any employees, or any third parties who receive access to the Confidential Information, are advised of the confidential and proprietary nature thereof and are prohibited from disclosing the Confidential Information and using the Confidential Information other than for the benefit of the Receiving Party in accordance with this Agreement. Without limiting the foregoing, each Party shall use the same degree of care that it uses to protect the confidentiality of its own confidential information of like kind, but in no event less than reasonable care. Neither Party shall have any liability with respect to Confidential Information to the extent such information: (w) is or becomes publicly available (other than through a breach of this Agreement); (x) is or becomes available to the Receiving Party on a non-confidential basis, provided that the source of such information was not known by the Receiving Party (after such inquiry as would be reasonable in the circumstances) to be the subject of a confidentiality agreement or other legal or contractual obligation of confidentiality with respect to such information; (y) is developed by the Receiving Party independently and without reference to information provided by the Disclosing Party; or (z) is required to be disclosed by law or court order, provided the Receiving Party gives the Disclosing Party prior notice of such compelled disclosure (to the extent legally permitted) and reasonable assistance, at the Disclosing Party’s cost.
    32. - -
    33. Independent Contractors. Nothing contained herein shall constitute or be construed as the creation of any partnership, agency, or joint venture relationship between the Parties. Neither of the Parties shall have the right to obligate or bind the other Party in any manner whatsoever, and nothing herein contained shall give or is intended to give any rights of any kind to any third party. The relationship of the Parties shall be as independent contractors.
    34. - -
    35. Indemnification. Sponsor agrees to indemnify and hold harmless the PSF, its officers, directors, employees, and agents, for any and all claims, losses, damages, liabilities, judgments, or settlements, including reasonable attorneys’ fees, costs (including costs associated with any official investigations or inquiries) and other expenses, incurred on account of Sponsor’s acts or omissions in connection with the performance of this Agreement or breach of this Agreement or with respect to the manufacture, marketing, sale, or dissemination of any of Sponsor’s products or services. The PSF shall have no liability to Sponsor with respect to its participation in this Agreement or receipt of the Sponsorship Payment, except for intentional or willful acts of the PSF or its employees or agents. The rights and responsibilities established in this section shall survive indefinitely beyond the term of this Agreement.
    36. - -
    37. - Notices. All notices or other communications to be given or delivered under the provisions of this Agreement shall be in writing and shall be mailed by certified or registered mail, return receipt requested, or given or delivered by reputable courier, facsimile, or electronic mail to the Party to receive notice at the following addresses or at such other address as any Party may by notice direct in accordance with this Section: - -
      -
      -

      If to Sponsor:

      -
      -

      {{ sponsor.primary_contact.name }}

      -

      {{ sponsor.name }}

      -

      {{ sponsor.mailing_address_line_1 }}

      - {% if sponsor.mailing_address_line_2 %} -

      {{ sponsor.mailing_address_line_2 }}

      - {% endif %} -

      Facsimile: {{ sponsor.primary_contact.phone }}

      -

      Email: {{ sponsor.primary_contact.email }}

      -
      -

      If to the PSF:

      -
      -

      Ewa Jodlowska

      -

      Executive Director

      -

      Python Software Foundation

      -

      9450 SW Gemini Dr. ECM # 90772

      -

      Beaverton, OR 97008 USA

      -

      Facsimile: +1 (858) 712-8966

      -

      Email: ewa@python.org

      -
      -

      With a copy to:

      -

      Fleming Petenko Law

      -

      1800 John F. Kennedy Blvd

      -

      Suite 904

      -

      Philadelphia, PA 19103 USA

      -

      Facsimile: (267) 422-9864

      -

      Email: info@nonprofitlawllc.com

      -
      -
      -

      Notices given by registered or certified mail shall be deemed as given on the delivery date shown on the return receipt, and notices given in any other manner shall be deemed as given when received.

      -
    38. - -
    39. Governing Law; Jurisdiction. This Agreement shall be construed in accordance with the laws of the State of Delaware, without regard to its conflicts of law principles. Jurisdiction and venue for litigation of any dispute, controversy, or claim arising out of or in connection with this Agreement shall be only in a United States federal court in Delaware or a Delaware state court having subject matter jurisdiction. Each of the Parties hereto hereby expressly submits to the personal jurisdiction of the foregoing courts located in Delaware and hereby waives any objection or defense based on personal jurisdiction or venue that might otherwise be asserted to proceedings in such courts.
    40. - -
    41. Force Majeure. The PSF shall not be liable for any failure or delay in performing its obligations hereunder if such failure or delay is due in whole or in part to any cause beyond its reasonable control or the reasonable control of its contractors, agents, or suppliers, including, but not limited to, strikes, or other labor disturbances, acts of God, acts of war or terror, floods, sabotage, fire, natural, or other disasters, including pandemics. To the extent the PSF is unable to substantially perform hereunder due to any cause beyond its control as contemplated herein, it may terminate this Agreement as it may decide in its sole discretion. To the extent the PSF so terminates the Agreement, Sponsor releases the PSF and waives any claims for damages or compensation on account of such termination.
    42. - -
    43. No Waiver. A waiver of any breach of any provision of this Agreement shall not be deemed a waiver of any repetition of such breach or in any manner affect any other terms of this Agreement.
    44. - -
    45. Limitation of Damages. Except as otherwise provided herein, neither Party shall be liable to the other for any consequential, incidental, or punitive damages for any claims arising directly or indirectly out of this Agreement.
    46. - -
    47. Cumulative Remedies. All rights and remedies provided in this Agreement are cumulative and not exclusive, and the exercise by either Party of any right or remedy does not preclude the exercise of any other rights or remedies that may now or subsequently be available at law, in equity, by statute, in any other agreement between the Parties, or otherwise.
    48. - -
    49. Captions. The captions and headings are included herein for convenience and do not constitute a part of this Agreement.
    50. - -
    51. Amendments. No addition to or change in the terms of this Agreement will be binding on any Party unless set forth in writing and executed by both Parties.
    52. - -
    53. Counterparts. This Agreement may be executed in one or more counterparts, each of which shall be deemed an original and all of which shall be taken together and deemed to be one instrument. A signed copy of this Agreement delivered by facsimile, electronic mail, or other means of electronic transmission shall be deemed to have the same legal effect as delivery of an original signed copy of this Agreement.
    54. - -
    55. Entire Agreement. This Agreement (including the Exhibits) sets forth the entire agreement of the Parties and supersedes all prior oral or written agreements or understandings between the Parties as to the subject matter of this Agreement. Except as otherwise expressly provided herein, neither Party is relying upon any warranties, representations, assurances, or inducements of the other Party.
    56. -
    - -

    [Signature Page Follows]

    -
    - -

    SPONSORSHIP AGREEMENT

    - - -

    IN WITNESS WHEREOF, the Parties hereto have duly executed this __________________ Agreement as of the Effective Date.

    - -
    -

    PSF:

    -

    PYTHON SOFTWARE FOUNDATION,

    -

    a Delaware nonprofit corporation

    - -
    -
    - -

    By: - ___________________________________

    -
    -

    Ewa Jodlowska

    -

    Executive Director

    -
    - -
    -
    - -

    SPONSOR:

    -

    ______________________________________,

    -

    a {{ sponsor.state }} entity.

    -
    -

    By: ___________________________________

    - -
    -
    - -

    SPONSORSHIP AGREEMENT

    - -

    EXHIBIT A

    - -
      -
    1. Sponsorship. During the Term of this Agreement, in return for the Sponsorship Payment, the PSF agrees to identify and acknowledge Sponsor as a {{ start_date|date:'Y' }} {{ sponsorship.level_name }} Sponsor of the Programs and of the PSF, in accordance with the United States Internal Revenue Service guidance applicable to qualified sponsorship payments.
    2. - -

      Acknowledgments of appreciation for the Sponsorship Payment may identify and briefly describe Sponsor and its products or product lines in neutral terms and may include Sponsor’s name, logo, well-established slogan, locations, telephone numbers, or website addresses, but such acknowledgments shall not include (a) comparative or qualitative descriptions of Sponsor’s products, services, or facilities; (b) price information or other indications of savings or value associated with Sponsor’s products or services; (c) a call to action; (d) an endorsement; or (e) an inducement to buy, sell, or use Sponsor’s products or services. Any such acknowledgments will be created, or subject to prior review and approval, by the PSF.

      - -

      The PSF’s acknowledgment may include the following:

      - -
        -
      1. Display of Logo. The PSF will display Sponsor’s logo and other agreed-upon identifying information on www.python.org, and on any marketing and promotional media made by the PSF in connection with the Programs, solely for the purpose of acknowledging Sponsor as a sponsor of the Programs in a manner (placement, form, content, etc.) reasonably determined by the PSF in its sole discretion. Sponsor agrees to provide all the necessary content and materials for use in connection with such display.
      2. - -
      3. [Other use or Acknowledgement.]
      4. -
      - -
    3. Sponsorship Payment. The amount of Sponsorship Payment shall be {{ sponsorship.verbose_sponsorship_fee|title }} USD ($ {{ sponsorship.sponsorship_fee|intcomma }}). The Sponsorship Payment is due within thirty (30) days of the Effective Date. To the extent that any portion of a payment under this section would not (if made as a Separate payment) be deemed a qualified sponsorship payment under IRC § 513(i), such portion shall be deemed and treated as separate from the qualified sponsorship payment.
    4. - -
    5. Receipt of Payment. Sponsor must submit full payment in order to secure Sponsor Benefits.
    6. - -
    7. Refunds. The PSF does not offer refunds for sponsorships. The PSF may cancel the event(s) or any part thereof. In that event, the PSF shall determine and refund to Sponsor the proportionate share of the balance of the aggregate Sponsorship fees applicable to event(s) received which remain after deducting all expenses incurred by the PSF.
    8. - -
    9. Sponsor Benefits. Sponsor Benefits per the Agreement are:
    10. - -
        -
      1. Acknowledgement as described under “Sponsorship†above.
      2. - {% for benefit in benefits %} -
      3. {{ benefit }}
      4. - {% endfor %} -
      - - - {% if legal_clauses %} -
    11. Legal Clauses. Related legal clauses are:
    12. -
        - {% for clause in legal_clauses %} -
      1. {{ clause }}
      2. - {% endfor %} -
      - {% endif %} -
    - -{% endblock %} diff --git a/templates/sponsors/admin/renewal-contract-template.docx b/templates/sponsors/admin/renewal-contract-template.docx deleted file mode 100644 index 3e36801a316f85a4a0484c7b4ed1a227a9fb4285..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9323 zcma)C1yozxwhiuu;_hDD-QC@3X>kg{f;$us?iBY@+@-j?OM&99#hre*|Gj^E@Bi

    E*dJc2N$B6)ouG z9`pTi^LMS+F(X$}pO!fCS%)GHDHfE_P zwo<{g1{v?72%Hcn)>l~Kj9?t8hEbv#4;H(Maj}Ht@t0N;^&6Lc$WeLQ)K8pG*f@u9 zgmjfR=j4@pYYtlzr%>wz>w2J-<$MzQ6id_$tl7*FbVYP15c5C>(H7a5=utC~F;Hwx z`Ypxb(jNCYq$`INWBLk>)jl!LJtE@}1^QEPM}49jd2MJI+fQ62@oOkVDU~~wX z@jZ!VO56~JpGAv{UYasY6%fWPR?H?n_Epz49P%I;y~GN0a~B?4G5j;aTs$`{cEN;E z8Z?0`g(=+}?*dODU2mdomKoO>;?{tZvDLN!2h}XtrwZK;z0cSnz}TNRNWV)3HFDRQ z?#Ad#eZf95bf1bS%Al?Sxqn;jD+QZ!q1|L8Q^p^vU7D84ul55H0_@sWr0;9u?w%05 z(}fwERmHz7XxfYPY%alX!6rk!c7<}MpJQj<>)Nmi3ZqntWf|?H)Q;H%ulUw{zFX|eVxA; z-kGPI;0;NPxYK3*WHx%h@**W*#IjiQJ538<30%?pnh1}#+}WY4Ma^b6BuR0!v3hq6g25C=-dfJ`$ ziBdc%+V;ez0*JZa%E-#`d#9i`z?_8IvI}S&BTcZjeVXI62x2Zkls3Ze6%@E(2>3`< zaZOwthTYH+RBpf&v!x~^%);}uECklqF6lPHm>Z*%9d2wkpJkYot8>kYIXNQBzqstS zd%e4Wdx;$@u5WZI&umEkBO4gMvtjJy2(q>LgOJfm#7-8>z_lNR@ZT3T;9@3g!g=^L zuA`UhARKM`6~nzeDEyBjgGq#xrUW0wOVGZ*wrXU4LkD0)c}2r$`i0m5 zTXIj{+tYo{NBLJKDT`|^YNc^0{Zi(F18LP%s?lb z52g;5K=YSj{m@yoS`s z{1S&xPqt2zCd>j^^O9pSt?`hTqNEZCB!Rwm)*vV_@$a#uZu*sh-$hZGEL=4O3pT#0C8lIkE2PTaIM&Bm>Ic&eky+zib~l*aZ6-6P4$`5M(< zv30c@V(p+&wl2!#pN4fAWufV{>--$li3oj6Ln^m-sSmnsLTlXsu(BW^romB{Fy1&P zZ=`FJ7@H zfX@}`uSgJ70v_6k~Jm=MiNCwadqPa0lIH+{WYF$unwZPNA0 z`&|F4hX3X5YpEvL>8DgX*UY@n*V0Y8_a8ggerfTwRVKDJR7?4^RLkA;sog1N6iAl` zQUEguJE^G0>3!7igU-tJb%NV#4>I_m%M5Xb$n1`q5MKFxoSU(MH)uZA6JK3$;>CxY zD_b1?HE`+q7!5p%F3jx5=a&(OUXjemmmDjUEVO(Y2%hS(eQ{--8r78W=kWB#`X^U@ zDQ|zc@^g)IvM~jMUOf4TXiZ!sa-jQrBJq~`qFugc8HcU3#{nh8kRjg%Z%@Tipbw+@FJj@pQ;^%fpilG+bfy&}^^T01-puNHt;m7&K)BGd}1zbo$_!bHm z`A~HJg@cNa{n`)@IV-$mPGu>6Hu#3V$tbl2v7pX#-9 zhH(L)lFJb*ClABQXnbF77uS;N<)#(64XOC>Z=WOf z8L7dKn~dv=;KMfy1b7aF(NNcR^SP~)rmv)6+GVuIt{@+6G-&QVf-HuET58P?j&P{r zcn%oPfb5GQ#mchaH`q{8`U0B;wlqS}R>mK>im2xfy&oeEGb6NJ4vg4ONY9)j7sTin z5dC5S=>Ag_*#<`FK^g?U#)x-Cy1 z9~)#x_xmoRYOi&s8tz_=Q#rH}I2>2+3LXzF3jqpEcAJ#fbs%txI@sC{`iQ8{Cctv@ z;39t#M%ZESdwzpRfJ(x3M!R2^o$N7ikm+kM$~AhuBnBXo z?Xd~O5Xa}BfFU%R$ak#d1=g>1jJg5LAsw&@#pD*<-f)HiUpiLl-iMZ8y59OR;R7Et z$!(Ciao`ENM2f)CQi0Q7<_13D+ri1x?^&Vc6}^I&U@DQ4s{!MN(V;+2?ie1^a3J4H zRQl3kex~K%MAo%7$n>8-5@uDjH|r zf&5Gv8Nig6S8qYVsfU3V}Pso{i@m3 zBa3oZ;F%3th!HRy0OG5?$z`XQoVW^F4(;oui^}!xknwK33fe?Nyuqy*lEgHJ0XiJm z38X=~?2?Ve??G#JDQR`sY{l3ipO@|Fr$$oF#-Sx=ld4Qym$%p^jDCRmt*RGX!<4OT zdXifd$2Z#1D^JJ$!k4v7yp^4|jxEkPCsN<>$Gyg)P$y(;*^uafg()#DX@B}*3KLr* zBGYj!j+bPYG58X!JfDhWno4eMnh zq8=i^&9fn~onIF^6KB{b3nLe9zb)wA5t?VWSB!0BkYc%HpaqN@kNNhLJ)@Eb+Jezo9?$JDr%QiH0K0!~C0Q2} zWd26RDuq|TFxn2KbC{{^B$6cPNDp~aeoHnasb`08s`8tzMRA=f4h-oUoLLB}}6FcO}t>E*LJ*6BlfX65XH7W z7{?#@Q28}#Y<%6F%H%G=8do91l{&k+3xcQ!v+LyUT!&66Y_-w#l1vV9iC36WBO|UJ zzN$gSH9s@__WEdbE&1mlTA5Q@*VLE+K27>1k1Y`22xJ(YlobpSIJj%_r^X18uF#<$ z!t$3HTgqA)OO>bLb&bvt6VtLnqsTTXu2rfs!tn>a;bg!0zCV=i+uTq+Z&kX03&L~^diWTv{@_Vw=ZN8E@21(DI$JG1jTD_@(cUH5j&4Lft#v$w|yJ2l$g zA6xl(sUzaLw)+-z(+M*?d4!5Mqm&|tU}CjruS6|?a$PZz!~@rMrwycI`q~k z#KSG{A5^LITC@nJ?wCL1hRiDMvo6x5F43;*37T*f@cQXw#OKp`l~dnAq^=gcYn1xQ zM0KpTJ}SK~v~=aBq;})6QBLbYn{2X3A8LuywwU5??pgwIb&mvHIg;2swCB^3AVd&sD^KRq`BpX~ zE@KlTQzMFla?^9WpomQ)Xr`c7NxL*Uu&wvq)NZ*V487mq1+2O<=J~yaSBx}3Y>H0n zKyw|zn{5c6%UwipL9rwZUaIc!W6AfS;s9~SNv~2=>O%<*eZP4OZPU|P_jz=0&YCOQ z_Gr);x~}^H%QZ!o)4p*G`-^)wNTNnqiI%ZP7wsx^Y~0GCveMevwNY4WQdxjd%5()G z2M*&MMhAMXk#O_ZyJN=JUdXiY7{Vv}2T493{WmqJv#p2N_9|HnjPcoJK74pJ|3gIy zM(AqkO}}reZvXnLZ6^PS*$;?eEHQ8&ElFv={fyF&6t#TADnWyb%U{XBL@z26*Hta1 z9qL7gP2B0k>Xx6&vfy0YqAd^Fgsl#=X*r1mW<*>VYy3Gp(ttC8iRF`5%?+2 zt#|8jQ^ohTQD>}jmjkw^RqMkmUCl%W8+%>7sq7VC^QjkSuZjVw5Nu%={_y2-KgRqU z0)2hS7AXOm$C$G1KJLavs}tV?o;)tmPLF6Ntk`3!zNm+bJ=%BTWSbYGEd*xKD z1++?%6y#>$aHPqDOZv(Y4Dg8#sF5fu8F3gVUx+nsE65HZ(vU;1+f(Vs=eQsRrV&=M zNtH?i?O~9-(EwZbHMWVrfRY9{G+uRlr`xY9!m{oTUlEH_9RSe_MHd|`o>X~VbO<^B zlZO4RDb@}948U#33YvDtMkw5V-lm^KBqSVZc)5k20*-2~FQ&Q69sNzF^$k%ge{8Wg zmsv4$J8fFf!YH=nc>GM|8MWk=ngj##cja@Zb2?Mvh(f-02-~$M&N1+M=6pQdQ>}8@ zHdE=3Kz>EpzWrG6TgEot;2p1%xPUO;K$zK}wQ`KkxP36PjopFC=JCe({7 zkRh1>K~f;XWWCB=A!2V-Y_iXg->^WBRCY{ya1^T7o7?r64>uY$0;=k4CsYa}0WLrj zuA|1jk=lFxL6|V0w~@`O>a40s&U0bRShN?4DT^Bi-L{$o4+ksC9cH^wLHx{e`;sj5 zXNtpH_VfXnluxa-AZ^#x8kDcEIg&Y@bZ4EhaJr?X3AW*$3LNQ(ws);FA5PjfXL^UQ zTJ@YAcmn9(t(Qn6H@Vc2yehBmfEo`zylCZJjm2Wrov0CEPC`LhnNXEcikF?Ho!AYs zl3a==g=p&E4ar67S1XZlSH#qpTicp#o0&!Rg*)&+x*l%0qQZ5fwWkbW10CoZm7;KW zE?rhYG}#LXtlRaHX80sywaAqe;zvD}vN0}IwI|L(;rGUl6SrpPaGp^7c+N_Xt;$h( zq)#R~rX;X~0Fe1Ei7a6vxFvF9H5~mG{V{g8T(iY-LWO0&E%uhqEOJ?DGMHWqt?%&g z+LZgNZ5{TO|7CCQVg!wMhkLGAkaVV7)xzQGq_Se-DNdT_;~88w<9Ac}`nBps<|Jkn zB1_)4fnlz9nr*lSZ-dl&>j&EginusO=zs{*Y-kEqzvkLvdWFPJATnK<`B~Z_4%9>! zHBKi>&3Lz?Y8q;KGLr{S&VZwJ#Kz-3$0bK3i$svkAM2;rK1%n+y@BQbWQZxdZ4jrq z!E9p8QWQNjgqeGjN}F}>15fI5^90GonMFMQ0BMKi?~aqZq*@5-f)Wd%t~WfDk(}QvO|4=V%>!45-F*v36kSRd z{7%Z3tu?C=+tf_!^^9U}C&|@Moy|AR`B~|nD!rQMj!-E!-q(r@zUN#mk&@c$0u^mg zTJfm_z&Bl|^f}&jb=|8|jbLu#CdVS7)|*4owG^2R30~!2hp#tK8Cpb*L8gA9UYsag za%I^$DuzK?xmdCj*xK4YIO3**t*$kYZhvfjgnXnfiaU8EdFd;>wjJcfd+xJ7#{W}a z0rlT~1xJvZwW;GvSD{Bs)pmge&3mOhER4kta~f24dgSGhHnI$ww1I{-G|8%ABr=l@&ZoL zt#0FyfZA?s-Ql`E97%FhU)rr$NgN_-rNX=d@e~6&fkh-BRtBlt6&2Z!-%6BGHUucI zJrVJ{-s~xgoa2ekt!t$UGG+BH<12}?sX71~x$$_|*~uDb(hyH%9X4UU*+@G3_<|u-lKe;6~^NxkS7u4K9)88uX_aOLMQl9aCzJt7tj1&%j`POB6(W^g-9i zJ4}_3RYD~?b|iQ9J)Ae%YkpI8h!eq~V7hEj3bv$*kbwv9hN5N#%%DG68h`Q407^Yt z1SKEkya!Vz0XiPNpMlsXPyjYiN}LhqhTrG{@>+jPk-M900Mc2m6tms{DDN2Hg2|<1 zY=YzRxn%tddI8;ogTMBuMfv_T^b?{b${^Pbp=%4p>d+C4!%1LOi{lc6Q@vqzNN20i z)U?ROvzTP1A5*c!;V13+D<@}WIp`cY8vF*S&M@~o`6zR-VvYy#w?+yT%PWpgoz;>T z5ZA?2^w-7&TlYGAoHG!LX#)7)6R*Tq>)~6!sZ=VrH_@aBI=Ddk z1T0;@i7(HDa=d5((Z8j@>!|XZUAP;o;Dho1H7h{EQ6gM&nm96MP6Xcnw4r22z!EH+ z`Rc02PmUArD1z+kMR%$blG?~xR$1!)B%)p(Rt=PXYs!J}OF%w3u*GRW0RUbo{}hmf z{|?Ci*86^M_x(%z8+vZaqe)(SOFsWw{z^`+_#5eI9-CKWY{K(+G7m1%aMB`hTP>Q0$RE_80tpR%OV(P-Z*VA@CnN1d2gm%$r)b7 z1|ub%9u++6dB}CGTwvrk-y!l^-%*O|VCIK|6|Q7_ParU4NuiWCEU#D3SsJ;WiV7Td z84ndwcWXp5XgIhTt(*V8!bwwb9w3yOQ1(EM*fUKz{3>^s*U9t{X15~PKAPyTUQCvb z23PM~M{tYW0tZ1vYHHHuuks7V-Xi0QC9 zA$7r9xdfekkCUINgG&lHmpzkDmzXo_K{?+#X3htj;n8&7&UY;xc@+i;?=QM&ue{7- zpDs2p!n5X+^L+e2v=K8~AV}l=2kSos(~)?2;InrHT?p5vw(p~@p z*vS$fLIhqh)tAePXiy=AsqBqjfq&g@zgITP)T1H*QI-yTw@9vnj;ILaI7sticn257 zK!#cXFh$w64(~RbYL@Mn`zSzl+LX<(S#s7o%0r`?4U4~kuUL~XYx&duU{*j!dwLX+ zGHhS()IL?n4rQ{U1Fe~MW zR)8gu1WcsePBlbAH3#)Fk^j$K>|ICfJUZ*F4hv6Vvu~O(j5AkueYGD-vlHKH1fQeu zAiN3W$2d_@ipJJ&sVYv|+^@{Yk@qP=iY*`wWrB8#djqn`jfLUUty9Q)5YR*A6ZYu2 zZ;&orieTO-dE4l);@6=vfPsJhn6jQ?J2p* zC}*HU`YG1A!x+IZp3~t-)+&UgDt+=vaHAkh1uHcXJ8@vRWoJ|(cQY=bIF5>kIfAKQ zlZza|0{CfKQ}nI5@*ZOfnECAcg1>Tw_PsxYScOZxdn=&F(~QBQB)*pp`{#t_G}}`L zeb!v=1j?2a+&CG^L;(04j#gJac+)07Da9YjNf5q&L%3Q1-F170asVl_7OJF=cf76#ZLQEFcegd+)(t7#EXnNpg zc3b48(B6MvYNTV0H+?wL8Gd_JaN!HzK?$5Vh}e8=ToW_Soh2Cc0RQ1uy{0wb=4!B& zc|(|~ES*rSy~Kz0e%6geEOZ?2^ITiQT{d$1C0Dnk61NZd^bdithgO!#>X|Ad*cYlG zATa@d?#%doL&D3>jKA7%`!xOz{9PM=$zy*S#q&@7uiXoOhyO0-z6j`l+Qf6p{2%zg zsnaQ_AWa}E1<@b9(drNaJc2L%5D|A%_}_bdILUH>`?B%*)c#&4DB@9^JK uz+Wd(o%mnyza-?p3o*ymGZjwy)a`s>Q`g|M! diff --git a/texlive.packages b/texlive.packages new file mode 100644 index 000000000..fc8668ea0 --- /dev/null +++ b/texlive.packages @@ -0,0 +1,2 @@ +xcolor +etoolbox From f3fa1fc16a5202fa3af019240d0285001475f0f9 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Wed, 21 Feb 2024 15:56:08 +0200 Subject: [PATCH 086/256] Prioritise 64-bit downloads over 32-bit (#2311) Co-authored-by: Hugo van Kemenade --- downloads/templatetags/download_tags.py | 34 +++++++++++++++++++++++++ templates/downloads/os_list.html | 5 ++-- templates/downloads/release_detail.html | 3 ++- 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/downloads/templatetags/download_tags.py b/downloads/templatetags/download_tags.py index 57004ccb4..c72f6d58c 100644 --- a/downloads/templatetags/download_tags.py +++ b/downloads/templatetags/download_tags.py @@ -19,3 +19,37 @@ def has_sigstore_materials(files): @register.filter def has_sbom(files): return any(f.sbom_spdx2_file for f in files) + + +@register.filter +def sort_windows(files): + if not files: + return files + + # Put Windows files in preferred order + files = list(files) + windows_files = [] + other_files = [] + for preferred in ( + 'Windows installer (64-bit)', + 'Windows installer (32-bit)', + 'Windows installer (ARM64)', + 'Windows help file', + 'Windows embeddable package (64-bit)', + 'Windows embeddable package (32-bit)', + 'Windows embeddable package (ARM64)', + ): + for file in files: + if file.name == preferred: + windows_files.append(file) + files.remove(file) + break + + # Then append any remaining Windows files + for file in files: + if file.name.startswith('Windows'): + windows_files.append(file) + else: + other_files.append(file) + + return other_files + windows_files diff --git a/templates/downloads/os_list.html b/templates/downloads/os_list.html index 67db5233f..1e0177dca 100644 --- a/templates/downloads/os_list.html +++ b/templates/downloads/os_list.html @@ -1,6 +1,7 @@ {% extends "downloads/base.html" %} {% load boxes %} {% load sitetree %} +{% load sort_windows from download_tags %} {% block body_attributes %}class="python download"{% endblock %} @@ -45,7 +46,7 @@

    Stable Releases

    {% endif %} {% endif %}
      - {% for f in r.files.all %} + {% for f in r.files.all|sort_windows %}
    • Download {{ f.name }}
    • {% empty %}
    • No files for this release.
    • @@ -63,7 +64,7 @@

      Pre-releases

    • {{ r.name }} - {{ r.release_date|date }}
        - {% for f in r.files.all %} + {% for f in r.files.all|sort_windows %}
      • Download {{ f.name }}
      • {% empty %}
      • No files for this release.
      • diff --git a/templates/downloads/release_detail.html b/templates/downloads/release_detail.html index 59ffe2d7a..720887074 100644 --- a/templates/downloads/release_detail.html +++ b/templates/downloads/release_detail.html @@ -3,6 +3,7 @@ {% load sitetree %} {% load has_sigstore_materials from download_tags %} {% load has_sbom from download_tags %} +{% load sort_windows from download_tags %} {% block body_attributes %}class="python downloads"{% endblock %} @@ -60,7 +61,7 @@

        Files

        - {% for f in release_files %} + {% for f in release_files|sort_windows %} {{ f.name }} {{ f.os.name }} From f88599b49d6514168f45920a531823e22d7570d6 Mon Sep 17 00:00:00 2001 From: Dorian Adams <104034366+dorian-adams@users.noreply.github.com> Date: Wed, 21 Feb 2024 08:56:58 -0500 Subject: [PATCH 087/256] Redirect legacy community page (#2319) Use regular expression to redirect all legacy 'community-landing/' paths, including any children. --- pydotorg/urls.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pydotorg/urls.py b/pydotorg/urls.py index 5fc6b3f12..d1496dc03 100644 --- a/pydotorg/urls.py +++ b/pydotorg/urls.py @@ -54,6 +54,7 @@ name='account_change_password'), path('accounts/', include('allauth.urls')), path('box/', include('boxes.urls')), + re_path(r'^community-landing(/.*)?$', RedirectView.as_view(url='/community/', permanent=True)), path('community/', include('community.urls', namespace='community')), path('community/microbit/', TemplateView.as_view(template_name="community/microbit.html"), name='microbit'), path('events/', include('events.urls', namespace='events')), From 94e53dabe52df1195b72ec0ef6d1b84a544176ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 14:57:38 +0100 Subject: [PATCH 088/256] Bump beautifulsoup4 from 4.9.3 to 4.11.2 (#2239) Bumps [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) from 4.9.3 to 4.11.2. --- updated-dependencies: - dependency-name: beautifulsoup4 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index 2495153db..71e52b024 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -16,7 +16,7 @@ python-decouple==3.4 lxml==4.6.3 cssselect==1.1.0 feedparser==6.0.8 -beautifulsoup4==4.9.3 +beautifulsoup4==4.11.2 icalendar==4.0.7 chardet==4.0.0 # TODO: We may drop 'django-imagekit' completely. From af64f12c30a405ed561506d71ad158894f898564 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 15:00:41 +0100 Subject: [PATCH 089/256] Bump lxml from 4.6.3 to 4.9.2 (#2212) Bumps [lxml](https://github.com/lxml/lxml) from 4.6.3 to 4.9.2. - [Release notes](https://github.com/lxml/lxml/releases) - [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt) - [Commits](https://github.com/lxml/lxml/compare/lxml-4.6.3...lxml-4.9.2) --- updated-dependencies: - dependency-name: lxml dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index 71e52b024..06e1990e4 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -13,7 +13,7 @@ psycopg2-binary==2.8.6 python3-openid==3.2.0 python-decouple==3.4 # lxml used by BeautifulSoup. -lxml==4.6.3 +lxml==4.9.2 cssselect==1.1.0 feedparser==6.0.8 beautifulsoup4==4.11.2 From 8209dff476fa67cd2b129c4d9d9f7c82f5177c05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Wed, 21 Feb 2024 15:33:18 +0100 Subject: [PATCH 090/256] Revert "Move to pandoc for rendering sponsorship contracts (#2343)" (#2374) This reverts commit a4990b711ccd6e34e87d8d4b97169846fba5414f. --- .github/workflows/ci.yml | 12 - Aptfile | 0 Dockerfile | 42 +-- base-requirements.txt | 7 +- pydotorg/settings/base.py | 1 + sponsors/contracts.py | 89 ------ sponsors/pandoc_filters/__init__.py | 0 sponsors/pandoc_filters/pagebreak.py | 90 ------ sponsors/pdf.py | 78 +++++ sponsors/reference.docx | Bin 12636 -> 0 bytes sponsors/tests/test_contracts.py | 39 --- sponsors/tests/test_pdf.py | 113 +++++++ sponsors/use_cases.py | 2 +- sponsors/views_admin.py | 2 +- .../sponsors/admin/contract-template.docx | Bin 0 -> 15199 bytes .../admin/contracts/renewal-agreement.md | 119 -------- .../admin/contracts/sponsorship-agreement.md | 209 ------------- .../sponsors/admin/preview-contract.html | 283 ++++++++++++++++++ .../admin/renewal-contract-template.docx | Bin 0 -> 9323 bytes texlive.packages | 2 - 20 files changed, 483 insertions(+), 605 deletions(-) delete mode 100644 Aptfile delete mode 100644 sponsors/contracts.py delete mode 100644 sponsors/pandoc_filters/__init__.py delete mode 100644 sponsors/pandoc_filters/pagebreak.py create mode 100644 sponsors/pdf.py delete mode 100644 sponsors/reference.docx delete mode 100644 sponsors/tests/test_contracts.py create mode 100644 sponsors/tests/test_pdf.py create mode 100644 templates/sponsors/admin/contract-template.docx delete mode 100644 templates/sponsors/admin/contracts/renewal-agreement.md delete mode 100644 templates/sponsors/admin/contracts/sponsorship-agreement.md create mode 100644 templates/sponsors/admin/preview-contract.html create mode 100644 templates/sponsors/admin/renewal-contract-template.docx delete mode 100644 texlive.packages diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 28bfcc5ee..97298ffca 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,18 +17,6 @@ jobs: steps: - name: Check out repository uses: actions/checkout@v2 - - name: Install platform dependencies - run: | - sudo apt -y update - sudo apt -y install --no-install-recommends \ - texlive-latex-base \ - texlive-latex-recommended \ - texlive-plain-generic \ - lmodern - - name: Install pandoc - run: | - wget https://github.com/jgm/pandoc/releases/download/2.17.1.1/pandoc-2.17.1.1-1-amd64.deb - sudo dpkg -i pandoc-2.17.1.1-1-amd64.deb - uses: actions/setup-python@v2 with: python-version: 3.9.16 diff --git a/Aptfile b/Aptfile deleted file mode 100644 index e69de29bb..000000000 diff --git a/Dockerfile b/Dockerfile index f8aca13a2..4d1046a98 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,47 +1,9 @@ -FROM python:3.9-bookworm +FROM python:3.9-bullseye ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 - -# By default, Docker has special steps to avoid keeping APT caches in the layers, which -# is good, but in our case, we're going to mount a special cache volume (kept between -# builds), so we WANT the cache to persist. -RUN set -eux; \ - rm -f /etc/apt/apt.conf.d/docker-clean; \ - echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache; - -# Install System level build requirements, this is done before -# everything else because these are rarely ever going to change. -RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ - set -x \ - && apt-get update \ - && apt-get install --no-install-recommends -y \ - pandoc \ - texlive-latex-base \ - texlive-latex-recommended \ - texlive-fonts-recommended \ - texlive-plain-generic \ - lmodern - -RUN case $(uname -m) in \ - "x86_64") ARCH=amd64 ;; \ - "aarch64") ARCH=arm64 ;; \ - esac \ - && wget --quiet https://github.com/jgm/pandoc/releases/download/2.17.1.1/pandoc-2.17.1.1-1-${ARCH}.deb \ - && dpkg -i pandoc-2.17.1.1-1-${ARCH}.deb - RUN mkdir /code WORKDIR /code - COPY dev-requirements.txt /code/ COPY base-requirements.txt /code/ - -RUN pip --no-cache-dir --disable-pip-version-check install --upgrade pip setuptools wheel - -RUN --mount=type=cache,target=/root/.cache/pip \ - set -x \ - && pip --disable-pip-version-check \ - install \ - -r dev-requirements.txt - +RUN pip install -r dev-requirements.txt COPY . /code/ diff --git a/base-requirements.txt b/base-requirements.txt index 06e1990e4..0badc58eb 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -44,11 +44,12 @@ django-filter==2.4.0 django-ordered-model==3.4.3 django-widget-tweaks==1.4.8 django-countries==7.2.1 +xhtml2pdf==0.2.5 +django-easy-pdf3==0.1.2 num2words==0.5.10 django-polymorphic==3.0.0 sorl-thumbnail==12.7.0 +docxtpl==0.12.0 +reportlab==3.6.6 django-extensions==3.1.4 django-import-export==2.7.1 - -pypandoc==1.12 -panflute==2.3.0 diff --git a/pydotorg/settings/base.py b/pydotorg/settings/base.py index ccbf3acab..25874dd5d 100644 --- a/pydotorg/settings/base.py +++ b/pydotorg/settings/base.py @@ -173,6 +173,7 @@ 'ordered_model', 'widget_tweaks', 'django_countries', + 'easy_pdf', 'sorl.thumbnail', 'banners', diff --git a/sponsors/contracts.py b/sponsors/contracts.py deleted file mode 100644 index 7e72cde39..000000000 --- a/sponsors/contracts.py +++ /dev/null @@ -1,89 +0,0 @@ -import os -import tempfile - -from django.http import HttpResponse -from django.template.loader import render_to_string -from django.utils.dateformat import format - -import pypandoc - -dirname = os.path.dirname(__file__) -DOCXPAGEBREAK_FILTER = os.path.join(dirname, "pandoc_filters/pagebreak.py") -REFERENCE_DOCX = os.path.join(dirname, "reference.docx") - - -def _clean_split(text, separator="\n"): - return [ - t.replace("-", "").strip() - for t in text.split("\n") - if t.replace("-", "").strip() - ] - - -def _contract_context(contract, **context): - start_date = contract.sponsorship.start_date - context.update( - { - "contract": contract, - "start_date": start_date, - "start_day_english_suffix": format(start_date, "S"), - "sponsor": contract.sponsorship.sponsor, - "sponsorship": contract.sponsorship, - "benefits": _clean_split(contract.benefits_list.raw), - "legal_clauses": _clean_split(contract.legal_clauses.raw), - } - ) - previous_effective = contract.sponsorship.previous_effective_date - context["previous_effective"] = previous_effective if previous_effective else "UNKNOWN" - context["previous_effective_english_suffix"] = format(previous_effective, "S") if previous_effective else "UNKNOWN" - return context - - -def render_markdown_from_template(contract, **context): - template = "sponsors/admin/contracts/sponsorship-agreement.md" - if contract.sponsorship.renewal: - template = "sponsors/admin/contracts/renewal-agreement.md" - context = _contract_context(contract, **context) - return render_to_string(template, context) - - -def render_contract_to_pdf_response(request, contract, **context): - response = HttpResponse( - render_contract_to_pdf_file(contract, **context), content_type="application/pdf" - ) - return response - - -def render_contract_to_pdf_file(contract, **context): - with tempfile.NamedTemporaryFile() as docx_file: - with tempfile.NamedTemporaryFile(suffix=".pdf") as pdf_file: - markdown = render_markdown_from_template(contract, **context) - pdf = pypandoc.convert_text( - markdown, "pdf", outputfile=pdf_file.name, format="md" - ) - return pdf_file.read() - - -def render_contract_to_docx_response(request, contract, **context): - response = HttpResponse( - render_contract_to_docx_file(contract, **context), - content_type="application/vnd.openxmlformats-officedocument.wordprocessingml.document", - ) - response[ - "Content-Disposition" - ] = f"attachment; filename={'sponsorship-renewal' if contract.sponsorship.renewal else 'sponsorship-contract'}-{contract.sponsorship.sponsor.name.replace(' ', '-').replace('.', '')}.docx" - return response - - -def render_contract_to_docx_file(contract, **context): - markdown = render_markdown_from_template(contract, **context) - with tempfile.NamedTemporaryFile() as docx_file: - docx = pypandoc.convert_text( - markdown, - "docx", - outputfile=docx_file.name, - format="md", - filters=[DOCXPAGEBREAK_FILTER], - extra_args=[f"--reference-doc", REFERENCE_DOCX], - ) - return docx_file.read() diff --git a/sponsors/pandoc_filters/__init__.py b/sponsors/pandoc_filters/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/sponsors/pandoc_filters/pagebreak.py b/sponsors/pandoc_filters/pagebreak.py deleted file mode 100644 index 525b89c57..000000000 --- a/sponsors/pandoc_filters/pagebreak.py +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -# ------------------------------------------------------------------------------ -# Source: https://github.com/pandocker/pandoc-docx-pagebreak-py/ -# Revision: c8cddccebb78af75168da000a3d6ac09349bef73 -# ------------------------------------------------------------------------------ -# MIT License -# -# Copyright (c) 2018 pandocker -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -# ------------------------------------------------------------------------------ - -""" pandoc-docx-pagebreakpy -Pandoc filter to insert pagebreak as openxml RawBlock -Only for docx output - -Trying to port pandoc-doc-pagebreak -- https://github.com/alexstoick/pandoc-docx-pagebreak -""" - -import panflute as pf - - -class DocxPagebreak(object): - pagebreak = pf.RawBlock("", format="openxml") - sectionbreak = pf.RawBlock("", - format="openxml") - toc = pf.RawBlock(r""" - - - - - - TOC \o "1-3" \h \z \u - - - - - - -""", format="openxml") - - def action(self, elem, doc): - if isinstance(elem, pf.RawBlock): - if elem.text == r"\newpage": - if (doc.format == "docx"): - pf.debug("Page Break") - elem = self.pagebreak - # elif elem.text == r"\newsection": - # if (doc.format == "docx"): - # pf.debug("Section Break") - # elem = self.sectionbreak - # else: - # elem = [] - elif elem.text == r"\toc": - if (doc.format == "docx"): - pf.debug("Table of Contents") - para = [pf.Para(pf.Str("Table"), pf.Space(), pf.Str("of"), pf.Space(), pf.Str("Contents"))] - div = pf.Div(*para, attributes={"custom-style": "TOC Heading"}) - elem = [div, self.toc] - else: - elem = [] - return elem - - -def main(doc=None): - dp = DocxPagebreak() - return pf.run_filter(dp.action, doc=doc) - - -if __name__ == "__main__": - main() diff --git a/sponsors/pdf.py b/sponsors/pdf.py new file mode 100644 index 000000000..9855beee3 --- /dev/null +++ b/sponsors/pdf.py @@ -0,0 +1,78 @@ +""" +This module is a wrapper around django-easy-pdf so we can reuse code +""" +import io +import os +from django.conf import settings +from django.http import HttpResponse +from django.utils.dateformat import format + +from docxtpl import DocxTemplate +from easy_pdf.rendering import render_to_pdf_response, render_to_pdf + +from markupfield_helpers.helpers import render_md +from django.utils.html import mark_safe + + +def _clean_split(text, separator='\n'): + return [ + t.replace('-', '').strip() + for t in text.split('\n') + if t.replace('-', '').strip() + ] + + +def _contract_context(contract, **context): + start_date = contract.sponsorship.start_date + context.update({ + "contract": contract, + "start_date": start_date, + "start_day_english_suffix": format(start_date, "S"), + "sponsor": contract.sponsorship.sponsor, + "sponsorship": contract.sponsorship, + "benefits": _clean_split(contract.benefits_list.raw), + "legal_clauses": _clean_split(contract.legal_clauses.raw), + "renewal": contract.sponsorship.renewal, + }) + previous_effective = contract.sponsorship.previous_effective_date + context["previous_effective"] = previous_effective if previous_effective else "UNKNOWN" + context["previous_effective_english_suffix"] = format(previous_effective, "S") if previous_effective else None + return context + + +def render_contract_to_pdf_response(request, contract, **context): + template = "sponsors/admin/preview-contract.html" + context = _contract_context(contract, **context) + return render_to_pdf_response(request, template, context) + + +def render_contract_to_pdf_file(contract, **context): + template = "sponsors/admin/preview-contract.html" + context = _contract_context(contract, **context) + return render_to_pdf(template, context) + + +def _gen_docx_contract(output, contract, **context): + context = _contract_context(contract, **context) + renewal = context["renewal"] + if renewal: + template = os.path.join(settings.TEMPLATES_DIR, "sponsors", "admin", "renewal-contract-template.docx") + else: + template = os.path.join(settings.TEMPLATES_DIR, "sponsors", "admin", "contract-template.docx") + doc = DocxTemplate(template) + doc.render(context) + doc.save(output) + return output + + +def render_contract_to_docx_response(request, contract, **context): + response = HttpResponse(content_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document') + response['Content-Disposition'] = 'attachment; filename=contract.docx' + return _gen_docx_contract(output=response, contract=contract, **context) + + +def render_contract_to_docx_file(contract, **context): + fp = io.BytesIO() + fp = _gen_docx_contract(output=fp, contract=contract, **context) + fp.seek(0) + return fp.read() diff --git a/sponsors/reference.docx b/sponsors/reference.docx deleted file mode 100644 index bf094ca4f3f29b535da99c765b735eaee71420d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12636 zcmch7WmH{D(qGQyR+uc z)LCb*E&X)w-PK)H-Sx;zfkR+`z`($O$Tu^pgZw7&ujhIWCf1G&^goZKlO2-aOej!m z9vOzo9a@jT7d6?wQudDV`$Ecd&+q&dq3Pp$6xac`g@ ziyM7IJ{cT#X0AEkRyTi^sWaCzFV6*B>=~8~%J##FM&J1)jfm^+rjQ0WOgUa?4l*I) z)VNK7uQytpFg_jm*i32wOFvcD&=k02L_g1ke*tLG;UQ9J_A1xLat!8b=lcSDO)j;2 z@8b%jSk_F&f1DDXc$n=)k8~(SNzrq`K}xxN$uUYpU)EMKM$-8HaskL6CfL78$+6g2 zyzCgr=8YUn5ebdWnD+#gmx6}bcDMoTy?*{U7zl{`|JXsOuO*CajpQ9{?Hn15Y#mJK zKLD+PiaNHPL>Qi{<>nu3sSd(Ofikr{`N^~sCPOPY+B8~O5aS1Jgut4q;W`gKjzkaQ zR6=FU;|?y3LxSjcBB~V8gx7jfS8w{3uySg-s-R);_{SA+F3eyx`6uDfdHovjE_OA z+*;0{pNt9wd~c9q{nz-*p^KMBz|$Spl_v=im#V+?ba>i1FtW+SvTlyzoyeW_U6{;- z<4G--g@98tcTm-}e*}gi=zWrhw_B3j>>Bhq4}qySY+MR>!pPjLQ!&FWaJj^E^uk>+ zCl%y*E8L5CQVm-qtBoO=`P6Q<@A-Jutea^V7eQ_>X~?V-i~B~7GTEzErX0L+6zit) ziMr=Wc+R=~xMum}5WoJ^3{Rk-6Ac0KtlgfBPhRX#K6w( zr$W*d25h>BFq&^^Xp84?Hr=KCgNsyoYb0|TC2UYT#-vQZ!SKku^Su6nLjC8o~Go8JC^$TL@ zySAk<>%l4qx41aQf-f4G5KoApyFR-&UbXiv1zd_`6})l(XR4W9x@9 z99LY6tG@RN+Nq}DrbX{rWf{^*os9{wpP+u~q6bqeO!ie5fPd5l`tQ0ha&~mG1^!aU zXa!s+BSygbaz4!bqB3;!WOXP9xAJY&N-e0PZNE&Yrw8e$lZelRe6mx#Pr@ZA^Qe{$ z3^Y_Abcje4bhb~q917<&K))yX$a#N$@cu~($$0hjZpD_^1Nha;Y!UnCcdgHY z_$0o*_4(`nf1dR}$C#_FgE51-iGi_+1Jlos%8eb9?P5geJ>?OJf0%Uv^DlC4k_NXC z_k-@AtPU67=$FvCxygB{WkR7oLMwJ|&ERjkc6iD%mUpZMbCTR}1Avv`8Vg}lxp^#) zz7^MhGlLtS=_ZM^6mxxGI{(fj&==b(RX~z@I@p9vZF)3L9|p^T-6#{S-?8Hkr9ZPh zE^ajW9Rl8d`o~tVc^h#g+s;ZaV@t$_o4r%V zV*K|Xarib)`FiU!6hF07It;O*|2pcxApS`^X#dfUsjaP(jjfZ3<4^sRsuY?6qL&&qsC*wc3x8)?-F4|+X~Mu1lX-ss$tb-13c@MdIm z-S;Tb#USDg#SafS@esp`=fTm>ak|yF;d+t>J1b);Q^Io2e+Ue0DEY@O|W1_05aRbuT(+*h};)Ti}H#@_=KcmtDZyFPF|9|PwR z^<$LGYbwGqrEGl?#IqT~i4lQFQ@7v-&ebRm22=}^Hw-qjcPyGJ>#R!*KmW0EOQ>5# zZPFY#UJoDkarpplOE#26#=3d~^7L!0dOnqKqLFgub5k#V$>};NM^2S~fr|X;zL5m0 zCUzveCKqF05{hV^g!N$VYKG6Gh|l_A(Tk2kLqsmF{5#)ISI>$7&XiV z|13NY^O6>(lguT~J;+tWw^12X@`qRnQ)#pa`6O;p1TVKl_Z0|z#?TvrRhb6Ef=K-n zT^9{tyZq?u9Ck_1lpWSS!|2HN-q8TMO&*HdW>M%Bq12_qltISffNJpMScs8_EVA3Z zALlH@;B|-k2D{#`1_&DF1Ppqw>ea{+!Ti&ZNB+-{cXV>I{?~XvPM1^Kg*7t;Tp=mwcAhNwboYpH)z_FXbtB%wJ*DDeJ@X24~m+hv1;IB8tFz0@06^J6!G zHktqV5mRv&7hZznu<2Ot%c1_xrO!9})u;Opjt=Wwio{q%gSaP64C;;EUiW>3RZ@kz zlnD{^V_VxLr?PP&^jdWLa&|#m6mJdkrbM;<#rLI{Y)0x~NIE=ebIbU0N+Wi!HHk@v zWr{6a9WevCv9&Lve{5ZT>k%W}Fw%;rU%5HbBbK3od7=*S7w3`rims#QkAaIOIUTCf z>n!wg;WAt=AY62+dbsH|af@g7Li09@N@Y?zBd?G*SGA|JAY>+QCUf zAImN@a&&9Y{PtGJzy?NGPGbzj^)ihhinAAUcDPTvH-D0{-VS_?bSg$gg{-$|^{JuD z#ic<**=lTTM++*VMCM|8RP3UM(zkfZWzCj&^XtLKm?=uM1yePpp0*YM`mpgr9-2~` zG7cH0X|egX`zR8gj%Ev>(S!8exO%3!p;NU)o#1KrnZcVg=O>?S1kR#LRj7}Ub#CncJw zSfY^~r7-^*?0oGjogD6A?Fg9M0hMCI&%NYQxw?w*+4^ z_*Fjk&%ER2Tbb4fgxn!O3JCwCCu_(T?&2&m@IiMKMZy|Nip*zNgh?QZ!>wKuG{||esO$-m^wM~LYl&0B zj;lhGcC#_^$EnrZX62jf0OS#!CsIz=zC&vl+gPgIm6ak#xvM?#kTQ1`#Ue03@k_~be(Bw-@q;9f(ys9EMFMwF2Nc8}rn z5klYuBnq@&#b*hUh#jndS&_&Uw0~RR#C^s`+W_py6NUggsoq#JtrOP{frGx+zAM^Y zHDsDafSTwUF$!*iVeQ7;evzgJh-?R654i+p16udcb?ioEGX`4cqt#BghGo~pzoZ+t zaRc^yfnCKVFQ{LoUke?p)?ZVk)V10V(%Qt9{#aGQ!pCOCowe?k3*oqAj-ZP(vfXL# zxN%>``^ad`mcqYH2-%pKNp3PBZ%UL@Mb65NVRIzcnWlMwQDo0PN94MA_~w~)cp^ly_7?0OzyvA3z8+ev8|FDpD?N}mlo0$ZgV znoZ`&sN=4*i`ERdPrUGuDk5Zikr}u?X5D+Gn%PYfI1_SM?Y=RYLP~NvYNTrP@Tzs2 zG+=I7sqV5Gt|m=4Z=c?1R|*Yv7|8CE<36>pv=2+o-nG-|sX*l-pV9fO$?=#D3vB+|jsf#=x zNX?-5p=*~&aSumG({cru477ArViipPkH*x7~U37 z-$-=!)Nf8L%t7GKL$A}cYP(;nN#zOTa%|$~jj5v&?gtr$uo#H)fo6vpg)rY-Je!|S zX2L4;D#%_0WphA3s#`uFBrLk9+cXt`82Vl5$TzFoSoP;HKr#~De(UEwj+bISv~0O$ zt>6~j;*Kg=H-cjzy}x1J8y3ehVkc$Ik!Apm3WwZ6Ekh>QTr9U5 ze4-c{Q)yg?L(q(*xbnQ@sGYPFZi4ABvj>OukM&FawgHkED1P$>P?@_+?)&vx6^uZWOR)E= z*zciv!a`h7avXyA55HYhs~JoQoElZ4Wy`JYo!eirO&imM@&PwyCn$(8JLO>bK~wv} zM#?_`lHT{d#^)2R#j(bHd5dNJt+txR-%S*e2|Pn>TiU7AGAZSq+Aws4<%77bS|z#4 zD`|?V&{@`1(9SSEEZ}_UC1eE9s=xROryJ~F1}=W=wC|a6ovH?O2$iay0#B*qujW%C z+@0g!UV(^OQp2@ovB=FEcL4dCHMHdTF!|n^W9?$rNJPlcC^}c@lpir=yo4Q0sy)gT z^K>xxkuDrp$@Yx5-JJIlG3tb0wwz;o^u~#Om#924ZISVuy0l!zka~IQnUq;}d=S(# zJASch+#TJhYJ=BGsLLIGIF6UBD(yXOi+!sB1X4|~6$V~)U_8<9(5X+otg*05ywDp4 zU};FfDJqwz0qxo?N}&$p@GZe=UcM53sF8HBOtkji+;DASvx+zV;In_T++|u5GT>f1 z5MD}`M*Jk@bOjd^A*Igrm$GZX`)CDcIMn8c;nfa z$ujym(v_;B)u1;vOxF6=bF7vTv63;XIQVI9A7`NPd3v=g;qnxT}Wl2-`13oXFw zfP*KhC#Y@ALE1zot^xx#*@T9|cu%!91}%T}5HTHtY??m9EYgiHH2Yn9qQ*A~CQK1h z1oU?~xjeECHd+|D9}K-GKFx+RkMk|2{NV05;4Fg!>%{V{^&UfCUr-@TD^0-m*H}eK z{?7Yk#BD~HCg~GYyCnS*=a4H$(w$JfspFu>o9P2}_}9B26ll7oxP7a;C6`x>tjPu$cyPnboY+&nx#a>n_5i07osr z!}xbu*=g~MJpz)X=Vn+~J>ZVf1t}8^nCzH{%HWYIY#jG|CN{)(;=r=i(h>fG5vFD; zijaWmz;&dD0LxJ5pf&mX7IS@WT7J8rr7ujPOmOyM6%+h*{0aOFCo(S*qRnBk9&{Ak z$MXPl7PIBS>*dpjTFlIkhGGuUQ3I@r$M%htbO6;007_7{U*GPAY-HcEas#hz#vDGi zLvIh+hW&Y5*@8`Qb#2?J#~?Dply5}Omc1&1=n0MH`VkUc1PMV9FPU>~$q*Y@l?cI# z=408$^v12TyJtR3)$Hw$uX|&YE6L53rV?yNcmeVJo&NBg06*R6=+AubHD{C$IIQ+d zGq#wR$@^xB1L|ef$Pd#d@Xh4ZvUd3!c3XCDKVGHtx;B!xJG}SkGJ`+W@DMKT_ZWQM z!ac04(2Q&w^Y1%~4s7&tjeKbJ7Ef=$-x2Rl_(3{1>kpa3C%9rf=WtbONmKhS>Qq!D zMkPSX;)itXk!3!w$eYao!Cg(;>-me~ zX-}$EF}57a^@d^0U{0&Cix%5s#0p-DP@_=M`|Y zv*dtV$Gnmm(F>j=vPmVipioXj@evkh7P8iUe$;`jOkX$a zMnMxFDLw~`rsji`npK~nbCOKp!8mLqs5mA)lu5~%pWBcqq9>8K@Zq0nRrI#VBd_5! zxn*E#=>@Y2Q9&1WHUAniM1Q(6t)1yKfHrL}JXK(^G|Xyw=eeM>ZOz*tGb+X0hRXiZ z!O`fmS?*(m9*q_j6V1m67Usk>S&oYfLfS5lP3o6|ii`s)+K6**Df&?#0%zZ_`}G;v zuV-B;(dfT!ZRMC6Lxh2l>V$<^iuSg{Fi!ULbFAitAL_Kqpty&V(!icdLSv)GEmsO@ zNGUcpP){LI9+!OjqH^Rno=zmb?f;@={q^?od#@7dxGh;Nv09R#tM%6sH!o}9Y7%@_ zrReaz8B+Xj%Fmyq$N=~ts6lKXq$ofTQKAKqux7qrrx8qG6HxkFIRB@MiVBe= z2oe0HX9?~FeevAj_F)nUO|R&}yyD~VI{S%d@HW7BtNG`0ly>TKe-*F}H5ib-IzLkF z18`EiLgcXa+}Dmt{L$W@Y6L-l?Hg_M>yAShYW*~{=xf_QA2EsQUMjXV54kS9Xbw=l zJWbBG{q$T4@jhd&P#_?Tn*ZdvekK-vZ85%P7o346HcmhHu#UBt9X9IGTKVPHFFXyO zg$rbA(RPeK7Y$EOM{#=4ErMB*YSBv|#kMTWag@7$*%Gha;zy|Um4<=D29;VaJ(krGxxa2`jTh$E4w(dT*84GF`0?pRudS4v z-kyXIY6%4mjE$Jx6yOKz$g>CTvQGLLO%&^~lla-67OUU)U`UzZs`rWmnIa)KiCzK* zT%nF=8d{rYGB^I)M@67Ui>#TkLJ%nS4`$>5X(^BS+2_#6_sc~R#WX_8QE1T2b|5}cjnbWIo~4l-Dn_i@UmX!9xk%HdL3ffu^8BK?Ohk{3H~VGPKD z4H?z^l)*xDBd#gxhu}X50w#^J_7w09y7i2@SaKWvo~o%Itl8Z-ADuoQLtH6>wz4GC zfeZPD_lTpV;7sxei?iDH_*4czP`7p6jj`i-kKEG)_F7(morT{+cwcx3nrK!=kiWx$ zkdguM3ng^auqw2qi3ccQ(U^qyo%jc|qyF&6U>4WQbh8pi`+`zy>?x#OptV+4ErLIi zBF2{Z@gZ5ItJ1HgNpkw8`npS}n^#D#2R`^c(DMxTEVje9I`=)4buX3OUE!U;;?yj1 z25}Upcn9K@FGLzF91KpI5e$s00>rm-QUMYZ-`>OqD$6&j3N|%oUuF8M(vo)wDIVh*|Qd8V=%S_7uy&qFN>2qgT(LU)i>F|wNMj?T%WCyG$}2pHTWf$&0E3)$fC zNEXy!JuM;YpF*QoLSZR2-L+9YIuFkU&Ag}QJD}yF&bzc$J<$)F($D)C+iux*kf8{> z9-p6g;I(K77*7b&!7a74WW>9f;1r)B+oj(ib3&k}h=$$8DgzoBi9o}4(Ihl-3K8mx zPxLzjJ|V+wZUv);EiIAiEGW_9VYXe4NN!hIKE<7DiVV~k@P?Q6PJ>@fqGZsq93asf zdgp&F&6mn6(Y`rTNN@|1qM$UHK9@xL=2OdK4(X@$=%W`dw={4FK)0V@b$ya9A!mwU$5_nTYGEqK9g4T4%c>z7E%7qti5igQ zsS;HOr;ca?kh`*PNZ)o}Az250)$fV5FBDAq4q+g4Ja$->(8y0-O=do;Qo5*f8uMM~?oC}pKM$#;oDqoWIb^Ke_QFb8Q7SyL^->_mM zd)<*XlHLih4o_Ac01i7|nq+-GUlTH`43U#K)Smy_n6)@zR7>9Km*^B&OO+1w9J zg!G?C4MI%Oo=m9l#L?74^pJkQ3=ONc^z{;AFHI8)Yx4nsqmjqNM9HJQ!(UbeqK^i* z1rUkO_qrDsgsC_U6Jj)6>?(eggO$xe5LL4j(bKTTR)aYUtlxq)ID6Ta+|tz;qCgVr*r0?2{&AR*jj(ypnoy*t%g zY{QCp-kxI)LwePrl|;i@?BduERX>MKko3XC+N)4F5)Y!{!u|#-iA^Q?Yn@1;Ck1+h z>(IIiG^yI+R$+|qT1T?c8^@Y5*%Bfs70k+CD%^T^m<*=|g-*Gl){IR(2>mncA5ra= zJd5w#16Od}7qyOOKFiVQ&{u1S%{ZBE2Ix%1FAYNvDQOM#u;C6C%${;|LBef>FH(p< zDcMU*6fJvZyEYlzsp$G@Ko^v_13*g_jF3g@mXu(=oNfvz3r35z#fPsgB`xDgqbE?t zxm0m0T-?9E(vLdmw8)8sk4pW5=rm}rcv4iHBU(c&wWa!z;4+qxx`zhqJ@($&!W+HZ zbLVu)fMwnMy4Hp&H?w@D6s?fa9uR>sZXE0mm>p6mCPRMxp` z){imHBXNi-QWjb9dGasV3tDR7mCiWISs;txNzrw+WiIpYUsB_Yaf*mD{T7g zJw5<^;iW2&D(sELwe7VPS)a#9ToIzaDGE;A?3lnnYgx7sA(K68)_Q`YauQWMOU{VK zK)EQJ=LMj8HA)QM(bgzQSM0o*qjBw6((*1?Ra?vhP%td6WGz`2vf*K}5RCgGaw`Pq zx`)S~9AaDU=*(I5az6T;ad%?t(}S9+exYqH(3t2I+#H(;WH?W6PA6z^nf!%oJjQh0&WGWie!4(mOL$lf?res+NVQ#-acPDlR_iB}tE zprMI_g^k&-pfzRDa*+|I@AMXxetOIlfoJ(psm`}5eSdUj^1Q5 zCGu$KrNpr;{BWP5$51g>^1_Cj6@#6WHsh2^auOOidt&mL$Ee6tO;WQCSatK86YIAC zNzPg#ILz&(*wy2UmQrdjWM+#T5r@^=;+_nl)O9|pN`nOrRU>sKssh zv3|ph-{fZaIAqIrg{WCg>=@r_(}@Sz{rC3N7WfaeeYCf zwaTrxJlKkAsebz2grYqN+A8sb(2?-(c5X5n!>gS=7jO71zT-|7u;kdAiN}sceQ^$S zn#P^H9F2<5V=VN}p?Icb%WlKMXZb`Wb~M41=HG=yZvVEyRKX27A2l*!r$TbZl(wj0 z$*xiq_${#GJEYaJjK!fO5(RJx4j98>LF1~l&{)|eky9=>F(_A}$>fdVH^}`DVGq17IL7BN~e_|+I z_vFeUU(11Fe_NKp)xBX#qG75nct2NyLB`$U;xs4tTMU4}%h@4EE~0mBu^-xEV#*?# zl+KHb&LxNU&fPR4fgtZ5T8~f03;gFq;RZV&+<#5i@{|3O8T*Z)VB@50U}*h|Hr5iy zYum|)5_tOzH{@ZjUr-d}Q>3c$IV4Noxitx%bAT{(#^C25#@+ z#MRj#Ebv&@fHYZVs&R`pvO1cr-JR=a1-OW{TK(oOp|?@n4)*M)7lTdxBtX|R*MJfu zYlmF*Idfl%R>4HWcw{WYl)&_ZkKfrktc+z(W(zbDcq!qxw&uyhD$Z3z@bsEjw4Bb3 z(Z&U&G3{g!hk7`T~G!>O$*%y0^h zD59e`s|5p*+hHW0uJ4_B=ttLrYdlgm;w~9uFs-k#gnG%ZaH?#$mr6H_Q*cnIzdzP~U{)qVDQ6|vy%E)3Dl)>v) zp4^Fwl$7(88WQr4)DVLItg8P-YW#g|{V#%J+=z`IBZ~j28{C!$Qw}giRe&CtOWGp@m+KvuG;_r7Nw0DUZQvr-?j=I zpw}YH7-x2h{N6ahX6KqCBN1MpM_JPh)nQ%0D(b%B@_FB(DPPG z&0-g(r3Rwn9F|ya1EjZf5p!cs^V5e5ZrET>?rO&LZgV<8>y|PaqQ=B8^hbNN#5@lG z0asUMKV77q?P6^*ryGXhe|7wL{4^-TYsU*g{?my6?{RnDL<%&%Rsewdqhdk#28DJ-dJc@MXwm#QOhEI1QdJ= zw+08&iV{+vYD)Ju&N{VUf0P7KmtpWi7ursN&SVQ)f$~RDk1=CqiBf_jvQG~b*O=CK zV3KAQLC4&IfxT~*kvnG%bXdDXpTFaQ-8)tQLGU>*qRLSx*I9R^xi-j4EM;a@4fV_M z=;yL$-Whpw-}3U2q)2lT2nm~`#`MbwIa^}|*lDs`in=xFY-z+XKz5-;T8E>9rKX#g z>-^fmKz7f25wC!%-DGwc6lQ)iXrmfORRo5Eedxs1pSC5{%MOX=wWp!}ubewA;a7+K zx@V-P>}F@;sPoecw@6#F=%S?N!;BwtzIKqtH5W3uX-;nT zlewkvbhrB8XW({gOBU!eI)sOecHd@EhQfxQ&jpbg?wV{`kxqv7J#0Tsi zhakfr$2j}4mb2PWz>AYFt;4HLx36?bs(bBRS4YEs(Ep8C4^55|`XO7b1`U=B- zMjiO^A(Kjq%7+I}B!-|f6P_}{B((Rd0>$Rn5#KY0O*l4aU7y1YX(UsB%r)M08I|3M z`dB?YzXhVZON#HBu7PLuMGVnIKU_AV>8XR-@@=~p^3WTA{0}L0m_50C<_`=PKSVZV zTWzKh2qZ=`^sPMGQD6qlt_e??PMEAqxP`lEo_9UY3Fka{ynMv%8SFvWM^j^U!T-l#<8{R#hl jTK;_ySJ8lg{2wf=ycFc?@B#rre*HCrzeXZ-Kd=55B-B^E diff --git a/sponsors/tests/test_contracts.py b/sponsors/tests/test_contracts.py deleted file mode 100644 index c330c13a8..000000000 --- a/sponsors/tests/test_contracts.py +++ /dev/null @@ -1,39 +0,0 @@ -from datetime import date -from model_bakery import baker -from unittest.mock import patch, Mock - -from django.http import HttpRequest -from django.test import TestCase -from django.utils.dateformat import format - -from sponsors.contracts import render_contract_to_docx_response - - -class TestRenderContract(TestCase): - def setUp(self): - self.contract = baker.make_recipe("sponsors.tests.empty_contract", sponsorship__start_date=date.today()) - - # DOCX unit test - def test_render_response_with_docx_attachment(self): - request = Mock(HttpRequest) - self.contract.sponsorship.renewal = False - response = render_contract_to_docx_response(request, self.contract) - - self.assertEqual(response.get("Content-Disposition"), "attachment; filename=sponsorship-contract-Sponsor.docx") - self.assertEqual( - response.get("Content-Type"), - "application/vnd.openxmlformats-officedocument.wordprocessingml.document" - ) - - - # DOCX unit test - def test_render_renewal_response_with_docx_attachment(self): - request = Mock(HttpRequest) - self.contract.sponsorship.renewal = True - response = render_contract_to_docx_response(request, self.contract) - - self.assertEqual(response.get("Content-Disposition"), "attachment; filename=sponsorship-renewal-Sponsor.docx") - self.assertEqual( - response.get("Content-Type"), - "application/vnd.openxmlformats-officedocument.wordprocessingml.document" - ) diff --git a/sponsors/tests/test_pdf.py b/sponsors/tests/test_pdf.py new file mode 100644 index 000000000..e4d140cf2 --- /dev/null +++ b/sponsors/tests/test_pdf.py @@ -0,0 +1,113 @@ +from datetime import date +from docxtpl import DocxTemplate +from markupfield_helpers.helpers import render_md +from model_bakery import baker +from pathlib import Path +from unittest.mock import patch, Mock + +from django.conf import settings +from django.http import HttpResponse, HttpRequest +from django.template.loader import render_to_string +from django.test import TestCase +from django.utils.html import mark_safe +from django.utils.dateformat import format + +from sponsors.pdf import render_contract_to_pdf_file, render_contract_to_pdf_response, render_contract_to_docx_response + + +class TestRenderContract(TestCase): + def setUp(self): + self.contract = baker.make_recipe("sponsors.tests.empty_contract", sponsorship__start_date=date.today()) + text = f"{self.contract.benefits_list.raw}\n\n**Legal Clauses**\n{self.contract.legal_clauses.raw}" + html = render_md(text) + self.context = { + "contract": self.contract, + "start_date": self.contract.sponsorship.start_date, + "start_day_english_suffix": format(self.contract.sponsorship.start_date, "S"), + "sponsor": self.contract.sponsorship.sponsor, + "sponsorship": self.contract.sponsorship, + "benefits": [], + "legal_clauses": [], + "renewal": None, + "previous_effective": "UNKNOWN", + "previous_effective_english_suffix": None, + } + self.template = "sponsors/admin/preview-contract.html" + + # PDF unit tests + @patch("sponsors.pdf.render_to_pdf") + def test_render_pdf_using_django_easy_pdf(self, mock_render): + mock_render.return_value = "pdf content" + + content = render_contract_to_pdf_file(self.contract) + + self.assertEqual(content, "pdf content") + mock_render.assert_called_once_with(self.template, self.context) + + @patch("sponsors.pdf.render_to_pdf_response") + def test_render_response_using_django_easy_pdf(self, mock_render): + response = Mock(HttpResponse) + mock_render.return_value = response + + request = Mock(HttpRequest) + content = render_contract_to_pdf_response(request, self.contract) + + self.assertEqual(content, response) + mock_render.assert_called_once_with(request, self.template, self.context) + + # DOCX unit test + @patch("sponsors.pdf.DocxTemplate") + def test_render_response_with_docx_attachment(self, MockDocxTemplate): + template = Path(settings.TEMPLATES_DIR) / "sponsors" / "admin" / "contract-template.docx" + self.assertTrue(template.exists()) + mocked_doc = Mock(DocxTemplate) + MockDocxTemplate.return_value = mocked_doc + + request = Mock(HttpRequest) + response = render_contract_to_docx_response(request, self.contract) + + MockDocxTemplate.assert_called_once_with(str(template.resolve())) + mocked_doc.render.assert_called_once_with(self.context) + mocked_doc.save.assert_called_once_with(response) + self.assertEqual(response.get("Content-Disposition"), "attachment; filename=contract.docx") + self.assertEqual( + response.get("Content-Type"), + "application/vnd.openxmlformats-officedocument.wordprocessingml.document" + ) + + @patch("sponsors.pdf.DocxTemplate") + def test_render_response_with_docx_attachment__renewal(self, MockDocxTemplate): + renewal_contract = baker.make_recipe("sponsors.tests.empty_contract", sponsorship__start_date=date.today(), + sponsorship__renewal=True) + text = f"{renewal_contract.benefits_list.raw}\n\n**Legal Clauses**\n{renewal_contract.legal_clauses.raw}" + html = render_md(text) + renewal_context = { + "contract": renewal_contract, + "start_date": renewal_contract.sponsorship.start_date, + "start_day_english_suffix": format(self.contract.sponsorship.start_date, "S"), + "sponsor": renewal_contract.sponsorship.sponsor, + "sponsorship": renewal_contract.sponsorship, + "benefits": [], + "legal_clauses": [], + "renewal": True, + "previous_effective": "UNKNOWN", + "previous_effective_english_suffix": None, + } + renewal_template = "sponsors/admin/preview-contract.html" + + template = Path(settings.TEMPLATES_DIR) / "sponsors" / "admin" / "renewal-contract-template.docx" + self.assertTrue(template.exists()) + mocked_doc = Mock(DocxTemplate) + MockDocxTemplate.return_value = mocked_doc + + request = Mock(HttpRequest) + response = render_contract_to_docx_response(request, renewal_contract) + + MockDocxTemplate.assert_called_once_with(str(template.resolve())) + mocked_doc.render.assert_called_once_with(renewal_context) + mocked_doc.save.assert_called_once_with(response) + self.assertEqual(response.get("Content-Disposition"), "attachment; filename=contract.docx") + self.assertEqual( + response.get("Content-Type"), + "application/vnd.openxmlformats-officedocument.wordprocessingml.document" + ) diff --git a/sponsors/use_cases.py b/sponsors/use_cases.py index 91271ff64..bbb6f2483 100644 --- a/sponsors/use_cases.py +++ b/sponsors/use_cases.py @@ -3,7 +3,7 @@ from sponsors import notifications from sponsors.models import Sponsorship, Contract, SponsorContact, SponsorEmailNotificationTemplate, SponsorshipBenefit, \ SponsorshipPackage -from sponsors.contracts import render_contract_to_pdf_file, render_contract_to_docx_file +from sponsors.pdf import render_contract_to_pdf_file, render_contract_to_docx_file class BaseUseCaseWithNotifications: diff --git a/sponsors/views_admin.py b/sponsors/views_admin.py index fd8631d3f..e9a808ccc 100644 --- a/sponsors/views_admin.py +++ b/sponsors/views_admin.py @@ -14,7 +14,7 @@ from sponsors.forms import SponsorshipReviewAdminForm, SponsorshipsListForm, SignedSponsorshipReviewAdminForm, \ SendSponsorshipNotificationForm, CloneApplicationConfigForm from sponsors.exceptions import InvalidStatusException -from sponsors.contracts import render_contract_to_pdf_response, render_contract_to_docx_response +from sponsors.pdf import render_contract_to_pdf_response, render_contract_to_docx_response from sponsors.models import Sponsorship, SponsorBenefit, EmailTargetable, SponsorContact, BenefitFeature, \ SponsorshipCurrentYear, SponsorshipBenefit, SponsorshipPackage diff --git a/templates/sponsors/admin/contract-template.docx b/templates/sponsors/admin/contract-template.docx new file mode 100644 index 0000000000000000000000000000000000000000..5bdc44525a4d15367bcaad989f5d63ba6c278233 GIT binary patch literal 15199 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 literal 0 HcmV?d00001 diff --git a/templates/sponsors/admin/contracts/renewal-agreement.md b/templates/sponsors/admin/contracts/renewal-agreement.md deleted file mode 100644 index 3a401c9d7..000000000 --- a/templates/sponsors/admin/contracts/renewal-agreement.md +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: SPONSORSHIP AGREEMENT RENEWAL -geometry: -- margin=1.25in -font-size: 12pt -pagestyle: empty -header-includes: -- \pagenumbering{gobble} ---- - -**THIS SPONSORSHIP AGREEMENT RENEWAL** (the **"Agreement"**) -is entered into and made effective as of the -{{start_date|date:"j"}}{{start_day_english_suffix}} of {{start_date|date:"F Y"}} -(the **"Effective Date"**), -by and between the **Python Software Foundation** (the **"PSF"**), -a Delaware nonprofit corporation, -and **{{sponsor.name|upper}}** (**"Sponsor"**), -a {{sponsor.state}} corporation. -Each of the PSF and Sponsor are hereinafter sometimes individually -referred to as a **"Party"** and collectively as the **"Parties"**. - -## RECITALS - -**WHEREAS**, the PSF is a tax-exempt charitable organization (EIN 04-3594598) -whose mission 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 (the **"Programs"**); - -**WHEREAS**, Sponsor is {{contract.sponsor_info}}; and - -**WHEREAS**, Sponsor and the PSF previously entered into a Sponsorship Agreement -with the effective date of the -{{ previous_effective|date:"j" }}{{ previous_effective_english_suffix }} of {{ previous_effective|date:"F Y" }} -and a term of one year (the “Sponsorship Agreementâ€). - -**WHEREAS**, Sponsor wishes to renew its support the Programs by making a contribution to the PSF. - -## AGREEMENT - -**NOW, THEREFORE**, in consideration of the foregoing and the mutual covenants contained herein, and for other good and valuable consideration, the receipt and sufficiency of which are hereby acknowledged, the Parties hereto agree to extend and amend the Sponsorship Agreement as follows: - -1. [**Replacement of the Exhibit**]{.underline} Exhibit A to the Sponsorship Agreement is replaced with Exhibit A below. - -1. [**Renewal**]{.underline} Approval and incorporation of this new exhibit with the previous Sponsor Benefits shall be considered written notice by Sponsor to the PSF that you wish to continue the terms of the Sponsorship Agreement for an additional year and to contribute the new Sponsorship Payment specified in Exhibit A, beginning on the Effective Date, as contemplated by Section 6 of the Sponsorship Agreement. - -  - - -### \[Signature Page Follows\] - -::: {.page-break} -\newpage -::: - -## SPONSORSHIP AGREEMENT RENEWAL - -**IN WITNESS WHEREOF**, the Parties hereto have duly executed this **Sponsorship Agreement Renewal** as of the **Effective Date**. - -  - -**PSF**: -**PYTHON SOFTWARE FOUNDATION**, -a Delaware non profit corporation - -  - -By:        ________________________________ -Name:   Loren Crary -Title:     Director of Resource Development - -  - -  - -**SPONSOR**: -**{{sponsor.name|upper}}**, -a {{sponsor.state}} entity - -  - -By:        ________________________________ -Name:   ________________________________ -Title:     ________________________________ - -::: {.page-break} -\newpage -::: - -## SPONSORSHIP AGREEMENT RENEWAL - -### EXHIBIT A - -1. [**Sponsorship**]{.underline} During the Term of this Agreement, in return for the Sponsorship Payment, the PSF agrees to identify and acknowledge Sponsor as a {{sponsorship.year}} {{sponsorship.level_name}} Sponsor of the Programs and of the PSF, in accordance with the United States Internal Revenue Service guidance applicable to qualified sponsorship payments. - - Acknowledgments of appreciation for the Sponsorship Payment may identify and briefly describe Sponsor and its products or product lines in neutral terms and may include Sponsor’s name, logo, well-established slogan, locations, telephone numbers, or website addresses, but such acknowledgments shall not include (a) comparative or qualitative descriptions of Sponsor’s products, services, or facilities; (b) price information or other indications of savings or value associated with Sponsor’s products or services; (c) a call to action; (d) an endorsement; or (e) an inducement to buy, sell, or use Sponsor’s products or services. Any such acknowledgments will be created, or subject to prior review and approval, by the PSF. - - The PSF’s acknowledgment may include the following: - - - [**Display of Logo**]{.underline} The PSF will display Sponsor’s logo and other agreed-upon identifying information on www.python.org, and on any marketing and promotional media made by the PSF in connection with the Programs, solely for the purpose of acknowledging Sponsor as a sponsor of the Programs in a manner (placement, form, content, etc.) reasonably determined by the PSF in its sole discretion. Sponsor agrees to provide all the necessary content and materials for use in connection with such display. - - - Additional acknowledgment as provided in Sponsor Benefits. - -1. [**Sponsorship Payment**]{.underline} The amount of Sponsorship Payment shall be {{sponsorship.verbose_sponsorship_fee|title}} USD ($ {{sponsorship.sponsorship_fee}}). The Sponsorship Payment is due within thirty (30) days of the Effective Date. To the extent that any portion of a payment under this section would not (if made as a Separate payment) be deemed a qualified sponsorship payment under IRC § 513(i), such portion shall be deemed and treated as separate from the qualified sponsorship payment. - -1. [**Receipt of Payment**]{.underline} Sponsor must submit full payment in order to secure Sponsor Benefits. - -1. [**Refunds**]{.underline} The PSF does not offer refunds for sponsorships. The PSF may cancel the event(s) or any part thereof. In that event, the PSF shall determine and refund to Sponsor the proportionate share of the balance of the aggregate Sponsorship fees applicable to event(s) received which remain after deducting all expenses incurred by the PSF. - -1. [**Sponsor Benefits**]{.underline} Sponsor Benefits per the Agreement are: - - 1. Acknowledgement as described under "Sponsorship" above. - -{%for benefit in benefits%} 1. {{benefit}} -{%endfor%} - -{%if legal_clauses%}1. Legal Clauses. Related legal clauses are: - -{%for clause in legal_clauses%} 1. {{clause}} -{%endfor%}{%endif%} diff --git a/templates/sponsors/admin/contracts/sponsorship-agreement.md b/templates/sponsors/admin/contracts/sponsorship-agreement.md deleted file mode 100644 index ee0d91ce3..000000000 --- a/templates/sponsors/admin/contracts/sponsorship-agreement.md +++ /dev/null @@ -1,209 +0,0 @@ ---- -title: SPONSORSHIP AGREEMENT -geometry: -- margin=1.25in -font-size: 12pt -pagestyle: empty -header-includes: -- \pagenumbering{gobble} ---- - -**THIS SPONSORSHIP AGREEMENT** (the **"Agreement"**) -is entered into and made effective as of the -{{start_date|date:"j"}}{{start_day_english_suffix}} of {{start_date|date:"F Y"}} -(the **"Effective Date"**), -by and between the **Python Software Foundation** (the **"PSF"**), -a Delaware nonprofit corporation, -and **{{sponsor.name|upper}}** (**"Sponsor"**), -a {{sponsor.state}} corporation. -Each of the PSF and Sponsor are hereinafter sometimes individually -referred to as a **"Party"** and collectively as the **"Parties"**. - -## RECITALS - -**WHEREAS**, the PSF is a tax-exempt charitable organization (EIN 04-3594598) -whose mission 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 (the **"Programs"**); - -**WHEREAS**, Sponsor is {{contract.sponsor_info}}; and - -**WHEREAS**, Sponsor wishes to support the Programs by making a contribution to the PSF. - -## AGREEMENT - -**NOW, THEREFORE**, in consideration of the foregoing and the mutual covenants contained herein, and for other good and valuable consideration, the receipt and sufficiency of which are hereby acknowledged, the Parties hereto agree as follows: - -1. [**Recitals Incorporated**]{.underline}. Each of the above Recitals is incorporated into and is made a part of this Agreement. - -1. [**Exhibits Incorporated by Reference**]{.underline}. All exhibits referenced in this Agreement are incorporated herein as integral parts of this Agreement and shall be considered reiterated herein as fully as if such provisions had been set forth verbatim in this Agreement. - -1. [**Sponsorship Payment**]{.underline} In consideration for the right to sponsor the PSF and its Programs, and to be acknowledged by the PSF as a sponsor in the manner described herein, Sponsor shall make a contribution to the PSF (the "Sponsorship Payment") in the amount shown in Exhibit A. - -1. [**Acknowledgement of Sponsor**]{.underline} In return for the Sponsorship Payment, Sponsor will be entitled to receive the sponsorship package described in Exhibit A attached hereto (the "Sponsor Benefits"). - -1. [**Intellectual Property**]{.underline} The PSF is the sole owner of all right, title, and interest to all the PSF information, including the PSF’s logo, trademarks, trade names, and copyrighted information, unless otherwise provided. - - (a) [Grant of License by the PSF]{.underline} The PSF hereby grants to Sponsor a limited, non- exclusive license to use certain of the PSF’s intellectual property, including the PSF’s name, acronym, and logo (collectively, the "PSF Intellectual Property"), solely in connection with promotion of Sponsor’s sponsorship of the Programs. Sponsor agrees that it shall not use the PSF’s Property in a manner that states or implies that the PSF endorses Sponsor (or Sponsor’s products or services). The PSF retains the right, in its sole and absolute discretion, to review and approve in advance all uses of the PSF Intellectual Property, which approval shall not be unreasonably withheld. - - (a) [Grant of License by Sponsor]{.underline} Sponsor hereby grants to the PSF a limited, non-exclusive license to use certain of Sponsor’s intellectual property, including names, trademarks, and copyrights (collectively, "Sponsor Intellectual Property"), solely to identify Sponsor as a sponsor of the Programs and the PSF. Sponsor retains the right to review and approve in advance all uses of the Sponsor Intellectual Property, which approval shall not be unreasonably withheld. - -1. [**Term**]{.underline} The Term of this Agreement will begin on the Effective Date and continue for a period of one (1) year. The Agreement may be renewed for one (1) year by written notice from Sponsor to the PSF. - -1. [**Termination**]{.underline} The Agreement may be terminated (i) by either Party for any reason upon sixty (60) days prior written notice to the other Party; (ii) if one Party notifies the other Party that the other Party is in material breach of its obligations under this Agreement and such breach (if curable) is not cured with fifteen (15) days of such notice; (iii) if both Parties agree to terminate by mutual written consent; or (iv) if any of Sponsor information is found or is reasonably alleged to violate the rights of a third party. The PSF shall also have the unilateral right to terminate this Agreement at any time if it reasonably determines that it would be detrimental to the reputation and goodwill of the PSF or the Programs to continue to accept or use funds from Sponsor. Upon expiration or termination, no further use may be made by either Party of the other’s name, marks, logo or other intellectual property without the express prior written authorization of the other Party. - -1. [**Code of Conduct**]{.underline} Sponsor and all of its representatives shall conduct themselves at all times in accordance with the Python Software Foundation Code of Conduct (https://www.python.org/psf/conduct) and/or the PyCon Code of Conduct (https://pycon.us/code-of-conduct), as applicable. The PSF reserves the right to eject from any event any Sponsor or representative violating those standards. - -1. [**Deadlines**]{.underline} Company logos, descriptions, banners, advertising pages, tote bag inserts and similar items and information must be provided by the applicable deadlines for inclusion in the promotional materials for the PSF. - -1. [**Assignment of Space**]{.underline} If the Sponsor Benefits in Exhibit A include a booth or other display space, the PSF shall assign display space to Sponsor for the period of the display. Location assignments will be on a first-come, first-served basis and will be made solely at the discretion of the PSF. Failure to use a reserved space will result in penalties (up to 50% of your Sponsorship Payment). - -1. [**Job Postings**]{.underline} Sponsor will ensure that any job postings to be published by the PSF on Sponsor’s behalf comply with all applicable municipal, state, provincial, and federal laws. - -1. [**Representations and Warranties**]{.underline} Each Party represents and warrants for the benefit of the other Party that it has the legal authority to enter into this Agreement and is able to comply with the terms herein. Sponsor represents and warrants for the benefit of the PSF that it has full right and title to the Sponsor Intellectual Property to be provided under this Agreement and is not under any obligation to any party that restricts the Sponsor Intellectual Property or would prevent Sponsor’s performance under this Agreement. - -1. [**Successors and Assigns**]{.underline} This Agreement and all the terms and provisions hereof shall be binding upon and inure to the benefit of the Parties and their respective legal representatives, heirs, successors, and/or assigns. The transfer, or any attempted assignment or transfer, of all or any portion of this Agreement by a Party without the prior written consent of the other Party shall be null and void and of no effect. - -1. [**No Third-Party Beneficiaries**]{.underline} This Agreement is not intended to benefit and shall not be construed to confer upon any person, other than the Parties, any rights, remedies, or other benefits, including but not limited to third-party beneficiary rights. - -1. [**Severability**]{.underline} If any one or more of the provisions of this Agreement shall be held to be invalid, illegal, or unenforceable, the validity, legality, or enforceability of the remaining provisions of this Agreement shall not be affected thereby. To the extent permitted by applicable law, each Party waives any provision of law which renders any provision of this Agreement invalid, illegal, or unenforceable in any respect. - -1. [**Confidential Information**]{.underline} As used herein, "Confidential Information" means all confidential information disclosed by a Party ("Disclosing Party") to the other Party ("Receiving Party"), whether orally or in writing, that is designated as confidential or that reasonably should be understood to be confidential given the nature of the information. Each Party agrees: (a) to observe complete confidentiality with respect to the Confidential Information of the Disclosing Party; (b) not to disclose, or permit any third party or entity access to disclose, the Confidential Information (or any portion thereof) of the Disclosing Party without prior written permission of Disclosing Party; and (c) to ensure that any employees, or any third parties who receive access to the Confidential Information, are advised of the confidential and proprietary nature thereof and are prohibited from disclosing the Confidential Information and using the Confidential Information other than for the benefit of the Receiving Party in accordance with this Agreement. Without limiting the foregoing, each Party shall use the same degree of care that it uses to protect the confidentiality of its own confidential information of like kind, but in no event less than reasonable care. Neither Party shall have any liability with respect to Confidential Information to the extent such information: (w) is or becomes publicly available (other than through a breach of this Agreement); (x) is or becomes available to the Receiving Party on a non-confidential basis, provided that the source of such information was not known by the Receiving Party (after such inquiry as would be reasonable in the circumstances) to be the subject of a confidentiality agreement or other legal or contractual obligation of confidentiality with respect to such information; (y) is developed by the Receiving Party independently and without reference to information provided by the Disclosing Party; or (z) is required to be disclosed by law or court order, provided the Receiving Party gives the Disclosing Party prior notice of such compelled disclosure (to the extent legally permitted) and reasonable assistance, at the Disclosing Party’s cost. - -1. [**Independent Contractors**]{.underline} Nothing contained herein shall constitute or be construed as the creation of any partnership, agency, or joint venture relationship between the Parties. Neither of the Parties shall have the right to obligate or bind the other Party in any manner whatsoever, and nothing herein contained shall give or is intended to give any rights of any kind to any third party. The relationship of the Parties shall be as independent contractors. - -1. [**Indemnification**]{.underline} Sponsor agrees to indemnify and hold harmless the PSF, its officers, directors, employees, and agents, for any and all claims, losses, damages, liabilities, judgments, or settlements, including reasonable attorneys’ fees, costs (including costs associated with any official investigations or inquiries) and other expenses, incurred on account of Sponsor’s acts or omissions in connection with the performance of this Agreement or breach of this Agreement or with respect to the manufacture, marketing, sale, or dissemination of any of Sponsor’s products or services. The PSF shall have no liability to Sponsor with respect to its participation in this Agreement or receipt of the Sponsorship Payment, except for intentional or willful acts of the PSF or its employees or agents. The rights and responsibilities established in this section shall survive indefinitely beyond the term of this Agreement. - -1. [**Notices**]{.underline} All notices or other communications to be given or delivered under the provisions of this Agreement shall be in writing and shall be mailed by certified or registered mail, return receipt requested, or given or delivered by reputable courier, facsimile, or electronic mail to the Party to receive notice at the following addresses or at such other address as any Party may by notice direct in accordance with this Section: - - - If to Sponsor: - - > {{sponsor.primary_contact.name}} - > {{sponsor.name}} - > {{sponsor.mailing_address_line_1}}{%if sponsor.mailing_address_line_2%} - > {{sponsor.mailing_address_line_2 }}{% endif %} - > {{sponsor.city}}, {{sponsor.state}} {{sponsor.postal_code}} {{sponsor.country}} - > Facsimile: {{sponsor.primary_contact.phone}} - > Email: {{sponsor.primary_contact.email}} - -   - - If to the PSF: - - > Deb Nicholson - > Executive Director - > Python Software Foundation - > 9450 SW Gemini Dr. ECM # 90772 - > Beaverton, OR 97008 USA - > Facsimile: +1 (858) 712-8966 - > Email: deb@python.org - -   - - With a copy to: - - > Archer & Greiner, P.C. - > Attention: Noel Fleming - > Three Logan Square - > 1717 Arch Street, Suite 3500 - > Philadelphia, PA 19103 USA - > Facsimile: (215) 963-9999 - > Email: nfleming@archerlaw.com - -   - - Notices given by registered or certified mail shall be deemed as given on the delivery date shown on the return receipt, and notices given in any other manner shall be deemed as given when received. - -1. [**Governing Law; Jurisdiction**]{.underline} This Agreement shall be construed in accordance with the laws of the State of Delaware, without regard to its conflicts of law principles. Jurisdiction and venue for litigation of any dispute, controversy, or claim arising out of or in connection with this Agreement shall be only in a United States federal court in Delaware or a Delaware state court having subject matter jurisdiction. Each of the Parties hereto hereby expressly submits to the personal jurisdiction of the foregoing courts located in Delaware and hereby waives any objection or defense based on personal jurisdiction or venue that might otherwise be asserted to proceedings in such courts. - -1. [**Force Majeure**]{.underline} The PSF shall not be liable for any failure or delay in performing its obligations hereunder if such failure or delay is due in whole or in part to any cause beyond its reasonable control or the reasonable control of its contractors, agents, or suppliers, including, but not limited to, strikes, or other labor disturbances, acts of God, acts of war or terror, floods, sabotage, fire, natural, or other disasters, including pandemics. To the extent the PSF is unable to substantially perform hereunder due to any cause beyond its control as contemplated herein, it may terminate this Agreement as it may decide in its sole discretion. To the extent the PSF so terminates the Agreement, Sponsor releases the PSF and waives any claims for damages or compensation on account of such termination. - -1. [**No Waiver**]{.underline} A waiver of any breach of any provision of this Agreement shall not be deemed a waiver of any repetition of such breach or in any manner affect any other terms of this Agreement. - -1. [**Limitation of Damages**]{.underline} Except as otherwise provided herein, neither Party shall be liable to the other for any consequential, incidental, or punitive damages for any claims arising directly or indirectly out of this Agreement. - -1. [**Cumulative Remedies**]{.underline} All rights and remedies provided in this Agreement are cumulative and not exclusive, and the exercise by either Party of any right or remedy does not preclude the exercise of any other rights or remedies that may now or subsequently be available at law, in equity, by statute, in any other agreement between the Parties, or otherwise. - -1. [**Captions**]{.underline} The captions and headings are included herein for convenience and do not constitute a part of this Agreement. - -1. [**Amendments**]{.underline} No addition to or change in the terms of this Agreement will be binding on any Party unless set forth in writing and executed by both Parties. - -1. [**Counterparts**]{.underline} This Agreement may be executed in one or more counterparts, each of which shall be deemed an original and all of which shall be taken together and deemed to be one instrument. A signed copy of this Agreement delivered by facsimile, electronic mail, or other means of electronic transmission shall be deemed to have the same legal effect as delivery of an original signed copy of this Agreement. - -1. [**Entire Agreement**]{.underline} This Agreement (including the Exhibits) sets forth the entire agreement of the Parties and supersedes all prior oral or written agreements or understandings between the Parties as to the subject matter of this Agreement. Except as otherwise expressly provided herein, neither Party is relying upon any warranties, representations, assurances, or inducements of the other Party. - -  - - -### \[Signature Page Follows\] - -::: {.page-break} -\newpage -::: - -## SPONSORSHIP AGREEMENT - -**IN WITNESS WHEREOF**, the Parties hereto have duly executed this **Sponsorship Agreement** as of the **Effective Date**. - -  - -> **PSF**: -> **PYTHON SOFTWARE FOUNDATION**, -> a Delaware non profit corporation - -  - -> By:        ________________________________ -> Name:   Loren Crary -> Title:     Director of Resource Development - -  - -  - -> **SPONSOR**: -> **{{sponsor.name|upper}}**, -> a {{sponsor.state}} entity - -  - -> By:        ________________________________ -> Name:   ________________________________ -> Title:     ________________________________ - -::: {.page-break} -\newpage -::: - -## SPONSORSHIP AGREEMENT - -### EXHIBIT A - -1. [**Sponsorship**]{.underline} During the Term of this Agreement, in return for the Sponsorship Payment, the PSF agrees to identify and acknowledge Sponsor as a {{sponsorship.year}} {{sponsorship.level_name}} Sponsor of the Programs and of the PSF, in accordance with the United States Internal Revenue Service guidance applicable to qualified sponsorship payments. - - Acknowledgments of appreciation for the Sponsorship Payment may identify and briefly describe Sponsor and its products or product lines in neutral terms and may include Sponsor’s name, logo, well-established slogan, locations, telephone numbers, or website addresses, but such acknowledgments shall not include (a) comparative or qualitative descriptions of Sponsor’s products, services, or facilities; (b) price information or other indications of savings or value associated with Sponsor’s products or services; (c) a call to action; (d) an endorsement; or (e) an inducement to buy, sell, or use Sponsor’s products or services. Any such acknowledgments will be created, or subject to prior review and approval, by the PSF. - - The PSF’s acknowledgment may include the following: - - (a) [**Display of Logo**]{.underline} The PSF will display Sponsor’s logo and other agreed-upon identifying information on www.python.org, and on any marketing and promotional media made by the PSF in connection with the Programs, solely for the purpose of acknowledging Sponsor as a sponsor of the Programs in a manner (placement, form, content, etc.) reasonably determined by the PSF in its sole discretion. Sponsor agrees to provide all the necessary content and materials for use in connection with such display. - - (a) Additional acknowledgment as provided in Sponsor Benefits. - -1. [**Sponsorship Payment**]{.underline} The amount of Sponsorship Payment shall be {{sponsorship.verbose_sponsorship_fee|title}} USD ($ {{sponsorship.sponsorship_fee}}). The Sponsorship Payment is due within thirty (30) days of the Effective Date. To the extent that any portion of a payment under this section would not (if made as a Separate payment) be deemed a qualified sponsorship payment under IRC § 513(i), such portion shall be deemed and treated as separate from the qualified sponsorship payment. - -1. [**Receipt of Payment**]{.underline} Sponsor must submit full payment in order to secure Sponsor Benefits. - -1. [**Refunds**]{.underline} The PSF does not offer refunds for sponsorships. The PSF may cancel the event(s) or any part thereof. In that event, the PSF shall determine and refund to Sponsor the proportionate share of the balance of the aggregate Sponsorship fees applicable to event(s) received which remain after deducting all expenses incurred by the PSF. - -1. [**Sponsor Benefits**]{.underline} Sponsor Benefits per the Agreement are: - - 1. Acknowledgement as described under "Sponsorship" above. - -{%for benefit in benefits%} 1. {{benefit}} -{%endfor%} - -{%if legal_clauses%}1. Legal Clauses. Related legal clauses are: - -{%for clause in legal_clauses%} 1. {{clause}} -{%endfor%}{%endif%} diff --git a/templates/sponsors/admin/preview-contract.html b/templates/sponsors/admin/preview-contract.html new file mode 100644 index 000000000..f89fd02b0 --- /dev/null +++ b/templates/sponsors/admin/preview-contract.html @@ -0,0 +1,283 @@ +{% extends "easy_pdf/base.html" %} +{% load humanize %} + +{% block extra_style %} + +{% endblock %} + +{% block content %} +

        SPONSORSHIP AGREEMENT

        + +

        THIS SPONSORSHIP AGREEMENT (the “Agreementâ€) is entered into and made +effective as of the {{ start_date|date:"dS" }} day of {{ start_date|date:"F, Y"}} (the “Effective Dateâ€), by and between +Python Software Foundation (the “PSFâ€), a Delaware nonprofit corporation, and {{ sponsor.name|upper }} (“Sponsorâ€), a {{ sponsor.state }} corporation. Each of the PSF and Sponsor are +hereinafter sometimes individually referred to as a “Party†and collectively as the “Partiesâ€.

        + +

        RECITALS

        + +

        WHEREAS, the PSF is a tax-exempt charitable organization (EIN 04-3594598) whose +mission 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 (the +“Programsâ€);

        + +

        WHEREAS, Sponsor is {{ contract.sponsor_info}}; and

        + +

        WHEREAS, Sponsor wishes to support the Programs by making a contribution to the +PSF.

        + +

        AGREEMENT

        + +

        NOW, THEREFORE, in consideration of the foregoing and the mutual covenants +contained herein, and for other good and valuable consideration, the receipt and sufficiency of +which are hereby acknowledged, the Parties hereto agree as follows:

        + +
          +
        1. Recitals Incorporated. Each of the above Recitals is incorporated into and is made a part of this Agreement.
        2. + +
        3. Exhibits Incorporated by Reference. All exhibits referenced in this Agreement are incorporated herein as integral parts of this Agreement and shall be considered reiterated herein as fully as if such provisions had been set forth verbatim in this Agreement.
        4. + +
        5. Sponsorship Payment. In consideration for the right to sponsor the PSF and its Programs, and to be acknowledged by the PSF as a sponsor in the manner described herein, Sponsor shall make a contribution to the PSF (the “Sponsorship Paymentâ€) in the amount shown in Exhibit A.
        6. + +
        7. Acknowledgement of Sponsor. In return for the Sponsorship Payment, Sponsor will be entitled to receive the sponsorship package described in Exhibit A attached hereto (the “Sponsor Benefitsâ€).
        8. + +
        9. Intellectual Property. The PSF is the sole owner of all right, title, and interest to all the PSF information, including the PSF’s logo, trademarks, trade names, and copyrighted information, unless otherwise provided.
        10. + +
            +
          1. Grant of License by the PSF. The PSF hereby grants to Sponsor a limited, non-exclusive license to use certain of the PSF’s intellectual property, including the PSF’s name, acronym, and logo (collectively, the “PSF Intellectual Propertyâ€), solely in connection with promotion of Sponsor’s sponsorship of the Programs. Sponsor agrees that it shall not use the PSF’s Property in a manner that states or implies that the PSF endorses Sponsor (or Sponsor’s products or services). The PSF retains the right, in its sole and absolute discretion, to review and approve in advance all uses of the PSF Intellectual Property, which approval shall not be unreasonably withheld.
          2. + +
          3. Grant of License by Sponsor. Sponsor hereby grants to the PSF a limited, non-exclusive license to use certain of Sponsor’s intellectual property, including names, trademarks, and copyrights (collectively, “Sponsor Intellectual Propertyâ€), solely to identify Sponsor as a sponsor of the Programs and the PSF. Sponsor retains the right to review and approve in advance all uses of the Sponsor Intellectual Property, which approval shall not be unreasonably withheld.
          4. +
          + + +
        11. Term. The Term of this Agreement will begin on {{ start_date|date:"dS, F Y"}} and continue for a period of one (1) year. The Agreement may be renewed for one (1) year by written notice from Sponsor to the PSF.
        12. + +
        13. Termination. The Agreement may be terminated (i) by either Party for any reason upon sixty (60) days prior written notice to the other Party; (ii) if one Party notifies the other Party that the other Party is in material breach of its obligations under this Agreement and such breach (if curable) is not cured with fifteen (15) days of such notice; (iii) if both Parties agree to terminate by mutual written consent; or (iv) if any of Sponsor information is found or is reasonably alleged to violate the rights of a third party. The PSF shall also have the unilateral right to terminate this Agreement at any time if it reasonably determines that it would be detrimental to the reputation and goodwill of the PSF or the Programs to continue to accept or use funds from Sponsor. Upon expiration or termination, no further use may be made by either Party of the other’s name, marks, logo or other intellectual property without the express prior written authorization of the other Party.
        14. + +
        15. Code of Conduct. Sponsor and all of its representatives shall conduct themselves at all times in accordance with the Python Software Foundation Code of Conduct (https://www.python.org/psf/codeofconduct) and/or the PyCon Code of Conduct (https://us.pycon.org/2021/about/code-of-conduct/), as applicable. The PSF reserves the right to eject from any event any Sponsor or representative violating those standards.
        16. + +
        17. Deadlines. Company logos, descriptions, banners, advertising pages, tote bag inserts and similar items and information must be provided by the applicable deadlines for inclusion in the promotional materials for the PSF.
        18. + +
        19. Assignment of Space. If the Sponsor Benefits in Exhibit A include a booth or other display space, the PSF shall assign display space to Sponsor for the period of the display. Location assignments will be on a first-come, first-served basis and will be made solely at the discretion of the PSF. Failure to use a reserved space will result in penalties (up to 50% of your Sponsorship Payment).
        20. + +
        21. Job Postings. Sponsor will ensure that any job postings to be published by the PSF on Sponsor’s behalf comply with all applicable municipal, state, provincial, and federal laws.
        22. + +
        23. Representations and Warranties. Each Party represents and warrants for the benefit of the other Party that it has the legal authority to enter into this Agreement and is able to comply with the terms herein. Sponsor represents and warrants for the benefit of the PSF that it has full right and title to the Sponsor Intellectual Property to be provided under this Agreement and is not under any obligation to any party that restricts the Sponsor Intellectual Property or would prevent Sponsor’s performance under this Agreement.
        24. + +
        25. Successors and Assigns. This Agreement and all the terms and provisions hereof shall be binding upon and inure to the benefit of the Parties and their respective legal representatives, heirs, successors, and/or assigns. The transfer, or any attempted assignment or transfer, of all or any portion of this Agreement by a Party without the prior written consent of the other Party shall be null and void and of no effect.
        26. + +
        27. No Third-Party Beneficiaries. This Agreement is not intended to benefit and shall not be construed to confer upon any person, other than the Parties, any rights, remedies, or other benefits, including but not limited to third-party beneficiary rights.
        28. + +
        29. Severability. If any one or more of the provisions of this Agreement shall be held to be invalid, illegal, or unenforceable, the validity, legality, or enforceability of the remaining provisions of this Agreement shall not be affected thereby. To the extent permitted by applicable law, each Party waives any provision of law which renders any provision of this Agreement invalid, illegal, or unenforceable in any respect.
        30. + +
        31. Confidential Information. As used herein, “Confidential Information†means all confidential information disclosed by a Party (“Disclosing Partyâ€) to the other Party (“Receiving Partyâ€), whether orally or in writing, that is designated as confidential or that reasonably should be understood to be confidential given the nature of the information. Each Party agrees: (a) to observe complete confidentiality with respect to the Confidential Information of the Disclosing Party; (b) not to disclose, or permit any third party or entity access to disclose, the Confidential Information (or any portion thereof) of the Disclosing Party without prior written permission of Disclosing Party; and (c) to ensure that any employees, or any third parties who receive access to the Confidential Information, are advised of the confidential and proprietary nature thereof and are prohibited from disclosing the Confidential Information and using the Confidential Information other than for the benefit of the Receiving Party in accordance with this Agreement. Without limiting the foregoing, each Party shall use the same degree of care that it uses to protect the confidentiality of its own confidential information of like kind, but in no event less than reasonable care. Neither Party shall have any liability with respect to Confidential Information to the extent such information: (w) is or becomes publicly available (other than through a breach of this Agreement); (x) is or becomes available to the Receiving Party on a non-confidential basis, provided that the source of such information was not known by the Receiving Party (after such inquiry as would be reasonable in the circumstances) to be the subject of a confidentiality agreement or other legal or contractual obligation of confidentiality with respect to such information; (y) is developed by the Receiving Party independently and without reference to information provided by the Disclosing Party; or (z) is required to be disclosed by law or court order, provided the Receiving Party gives the Disclosing Party prior notice of such compelled disclosure (to the extent legally permitted) and reasonable assistance, at the Disclosing Party’s cost.
        32. + +
        33. Independent Contractors. Nothing contained herein shall constitute or be construed as the creation of any partnership, agency, or joint venture relationship between the Parties. Neither of the Parties shall have the right to obligate or bind the other Party in any manner whatsoever, and nothing herein contained shall give or is intended to give any rights of any kind to any third party. The relationship of the Parties shall be as independent contractors.
        34. + +
        35. Indemnification. Sponsor agrees to indemnify and hold harmless the PSF, its officers, directors, employees, and agents, for any and all claims, losses, damages, liabilities, judgments, or settlements, including reasonable attorneys’ fees, costs (including costs associated with any official investigations or inquiries) and other expenses, incurred on account of Sponsor’s acts or omissions in connection with the performance of this Agreement or breach of this Agreement or with respect to the manufacture, marketing, sale, or dissemination of any of Sponsor’s products or services. The PSF shall have no liability to Sponsor with respect to its participation in this Agreement or receipt of the Sponsorship Payment, except for intentional or willful acts of the PSF or its employees or agents. The rights and responsibilities established in this section shall survive indefinitely beyond the term of this Agreement.
        36. + +
        37. + Notices. All notices or other communications to be given or delivered under the provisions of this Agreement shall be in writing and shall be mailed by certified or registered mail, return receipt requested, or given or delivered by reputable courier, facsimile, or electronic mail to the Party to receive notice at the following addresses or at such other address as any Party may by notice direct in accordance with this Section: + +
          +
          +

          If to Sponsor:

          +
          +

          {{ sponsor.primary_contact.name }}

          +

          {{ sponsor.name }}

          +

          {{ sponsor.mailing_address_line_1 }}

          + {% if sponsor.mailing_address_line_2 %} +

          {{ sponsor.mailing_address_line_2 }}

          + {% endif %} +

          Facsimile: {{ sponsor.primary_contact.phone }}

          +

          Email: {{ sponsor.primary_contact.email }}

          +
          +

          If to the PSF:

          +
          +

          Ewa Jodlowska

          +

          Executive Director

          +

          Python Software Foundation

          +

          9450 SW Gemini Dr. ECM # 90772

          +

          Beaverton, OR 97008 USA

          +

          Facsimile: +1 (858) 712-8966

          +

          Email: ewa@python.org

          +
          +

          With a copy to:

          +

          Fleming Petenko Law

          +

          1800 John F. Kennedy Blvd

          +

          Suite 904

          +

          Philadelphia, PA 19103 USA

          +

          Facsimile: (267) 422-9864

          +

          Email: info@nonprofitlawllc.com

          +
          +
          +

          Notices given by registered or certified mail shall be deemed as given on the delivery date shown on the return receipt, and notices given in any other manner shall be deemed as given when received.

          +
        38. + +
        39. Governing Law; Jurisdiction. This Agreement shall be construed in accordance with the laws of the State of Delaware, without regard to its conflicts of law principles. Jurisdiction and venue for litigation of any dispute, controversy, or claim arising out of or in connection with this Agreement shall be only in a United States federal court in Delaware or a Delaware state court having subject matter jurisdiction. Each of the Parties hereto hereby expressly submits to the personal jurisdiction of the foregoing courts located in Delaware and hereby waives any objection or defense based on personal jurisdiction or venue that might otherwise be asserted to proceedings in such courts.
        40. + +
        41. Force Majeure. The PSF shall not be liable for any failure or delay in performing its obligations hereunder if such failure or delay is due in whole or in part to any cause beyond its reasonable control or the reasonable control of its contractors, agents, or suppliers, including, but not limited to, strikes, or other labor disturbances, acts of God, acts of war or terror, floods, sabotage, fire, natural, or other disasters, including pandemics. To the extent the PSF is unable to substantially perform hereunder due to any cause beyond its control as contemplated herein, it may terminate this Agreement as it may decide in its sole discretion. To the extent the PSF so terminates the Agreement, Sponsor releases the PSF and waives any claims for damages or compensation on account of such termination.
        42. + +
        43. No Waiver. A waiver of any breach of any provision of this Agreement shall not be deemed a waiver of any repetition of such breach or in any manner affect any other terms of this Agreement.
        44. + +
        45. Limitation of Damages. Except as otherwise provided herein, neither Party shall be liable to the other for any consequential, incidental, or punitive damages for any claims arising directly or indirectly out of this Agreement.
        46. + +
        47. Cumulative Remedies. All rights and remedies provided in this Agreement are cumulative and not exclusive, and the exercise by either Party of any right or remedy does not preclude the exercise of any other rights or remedies that may now or subsequently be available at law, in equity, by statute, in any other agreement between the Parties, or otherwise.
        48. + +
        49. Captions. The captions and headings are included herein for convenience and do not constitute a part of this Agreement.
        50. + +
        51. Amendments. No addition to or change in the terms of this Agreement will be binding on any Party unless set forth in writing and executed by both Parties.
        52. + +
        53. Counterparts. This Agreement may be executed in one or more counterparts, each of which shall be deemed an original and all of which shall be taken together and deemed to be one instrument. A signed copy of this Agreement delivered by facsimile, electronic mail, or other means of electronic transmission shall be deemed to have the same legal effect as delivery of an original signed copy of this Agreement.
        54. + +
        55. Entire Agreement. This Agreement (including the Exhibits) sets forth the entire agreement of the Parties and supersedes all prior oral or written agreements or understandings between the Parties as to the subject matter of this Agreement. Except as otherwise expressly provided herein, neither Party is relying upon any warranties, representations, assurances, or inducements of the other Party.
        56. +
        + +

        [Signature Page Follows]

        +
        + +

        SPONSORSHIP AGREEMENT

        + + +

        IN WITNESS WHEREOF, the Parties hereto have duly executed this __________________ Agreement as of the Effective Date.

        + +
        +

        PSF:

        +

        PYTHON SOFTWARE FOUNDATION,

        +

        a Delaware nonprofit corporation

        + +
        +
        + +

        By: + ___________________________________

        +
        +

        Ewa Jodlowska

        +

        Executive Director

        +
        + +
        +
        + +

        SPONSOR:

        +

        ______________________________________,

        +

        a {{ sponsor.state }} entity.

        +
        +

        By: ___________________________________

        + +
        +
        + +

        SPONSORSHIP AGREEMENT

        + +

        EXHIBIT A

        + +
          +
        1. Sponsorship. During the Term of this Agreement, in return for the Sponsorship Payment, the PSF agrees to identify and acknowledge Sponsor as a {{ start_date|date:'Y' }} {{ sponsorship.level_name }} Sponsor of the Programs and of the PSF, in accordance with the United States Internal Revenue Service guidance applicable to qualified sponsorship payments.
        2. + +

          Acknowledgments of appreciation for the Sponsorship Payment may identify and briefly describe Sponsor and its products or product lines in neutral terms and may include Sponsor’s name, logo, well-established slogan, locations, telephone numbers, or website addresses, but such acknowledgments shall not include (a) comparative or qualitative descriptions of Sponsor’s products, services, or facilities; (b) price information or other indications of savings or value associated with Sponsor’s products or services; (c) a call to action; (d) an endorsement; or (e) an inducement to buy, sell, or use Sponsor’s products or services. Any such acknowledgments will be created, or subject to prior review and approval, by the PSF.

          + +

          The PSF’s acknowledgment may include the following:

          + +
            +
          1. Display of Logo. The PSF will display Sponsor’s logo and other agreed-upon identifying information on www.python.org, and on any marketing and promotional media made by the PSF in connection with the Programs, solely for the purpose of acknowledging Sponsor as a sponsor of the Programs in a manner (placement, form, content, etc.) reasonably determined by the PSF in its sole discretion. Sponsor agrees to provide all the necessary content and materials for use in connection with such display.
          2. + +
          3. [Other use or Acknowledgement.]
          4. +
          + +
        3. Sponsorship Payment. The amount of Sponsorship Payment shall be {{ sponsorship.verbose_sponsorship_fee|title }} USD ($ {{ sponsorship.sponsorship_fee|intcomma }}). The Sponsorship Payment is due within thirty (30) days of the Effective Date. To the extent that any portion of a payment under this section would not (if made as a Separate payment) be deemed a qualified sponsorship payment under IRC § 513(i), such portion shall be deemed and treated as separate from the qualified sponsorship payment.
        4. + +
        5. Receipt of Payment. Sponsor must submit full payment in order to secure Sponsor Benefits.
        6. + +
        7. Refunds. The PSF does not offer refunds for sponsorships. The PSF may cancel the event(s) or any part thereof. In that event, the PSF shall determine and refund to Sponsor the proportionate share of the balance of the aggregate Sponsorship fees applicable to event(s) received which remain after deducting all expenses incurred by the PSF.
        8. + +
        9. Sponsor Benefits. Sponsor Benefits per the Agreement are:
        10. + +
            +
          1. Acknowledgement as described under “Sponsorship†above.
          2. + {% for benefit in benefits %} +
          3. {{ benefit }}
          4. + {% endfor %} +
          + + + {% if legal_clauses %} +
        11. Legal Clauses. Related legal clauses are:
        12. +
            + {% for clause in legal_clauses %} +
          1. {{ clause }}
          2. + {% endfor %} +
          + {% endif %} +
        + +{% endblock %} diff --git a/templates/sponsors/admin/renewal-contract-template.docx b/templates/sponsors/admin/renewal-contract-template.docx new file mode 100644 index 0000000000000000000000000000000000000000..3e36801a316f85a4a0484c7b4ed1a227a9fb4285 GIT binary patch literal 9323 zcma)C1yozxwhiuu;_hDD-QC@3X>kg{f;$us?iBY@+@-j?OM&99#hre*|Gj^E@Bi

        E*dJc2N$B6)ouG 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 uz+Wd(o%mnyza-?p3o*ymGZjwy)a`s>Q`g|M! literal 0 HcmV?d00001 diff --git a/texlive.packages b/texlive.packages deleted file mode 100644 index fc8668ea0..000000000 --- a/texlive.packages +++ /dev/null @@ -1,2 +0,0 @@ -xcolor -etoolbox From a7f830a4ffd02988c99a9ef80773c1c9c91b6800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Wed, 21 Feb 2024 15:52:07 +0100 Subject: [PATCH 091/256] Remove stranded from templates/base.html (#2377) This was introduced in #2367. --- templates/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/base.html b/templates/base.html index cfa0f34ce..424df06f6 100644 --- a/templates/base.html +++ b/templates/base.html @@ -236,7 +236,7 @@

      • Socialize
      • " html += "

      " return mark_safe(html) - other_years.short_description = "Other configured years" def clone_application_config(self, request): return views_admin.clone_application_config(self, request) @@ -828,10 +866,12 @@ def get_queryset(self, *args, **kwargs): qs = super().get_queryset(*args, **kwargs) return qs.select_related("sponsorship__sponsor") + @admin.display( + description="Revision" + ) def get_revision(self, obj): return obj.revision if obj.is_draft else "Final" - get_revision.short_description = "Revision" fieldsets = [ ( @@ -899,6 +939,9 @@ def get_readonly_fields(self, request, obj): return readonly_fields + @admin.display( + description="Contract document" + ) def document_link(self, obj): html, url, msg = "---", "", "" @@ -916,8 +959,10 @@ def document_link(self, obj): html = f'{msg}' return mark_safe(html) - document_link.short_description = "Contract document" + @admin.display( + description="Sponsorship" + ) def get_sponsorship_url(self, obj): if not obj.sponsorship: return "---" @@ -925,7 +970,6 @@ def get_sponsorship_url(self, obj): html = f"{obj.sponsorship}" return mark_safe(html) - get_sponsorship_url.short_description = "Sponsorship" def get_urls(self): urls = super().get_urls() @@ -1090,14 +1134,19 @@ def all_sponsorships(self): qs = Sponsorship.objects.all().select_related("package", "sponsor") return {sp.id: sp for sp in qs} + @admin.display( + description="Value" + ) def get_value(self, obj): html = obj.value if obj.value and getattr(obj.value, "url", None): html = f"{obj.value}" return mark_safe(html) - get_value.short_description = "Value" + @admin.display( + description="Associated with" + ) def get_related_object(self, obj): """ Returns the content_object as an URL and performs better because @@ -1115,11 +1164,12 @@ def get_related_object(self, obj): html = f"{content_object}" return mark_safe(html) - get_related_object.short_description = "Associated with" + @admin.action( + description="Export selected" + ) def export_assets_as_zipfile(self, request, queryset): return views_admin.export_assets_as_zipfile(self, request, queryset) - export_assets_as_zipfile.short_description = "Export selected" class GenericAssetChildModelAdmin(PolymorphicChildModelAdmin): diff --git a/sponsors/migrations/0103_alter_benefitfeature_polymorphic_ctype_and_more.py b/sponsors/migrations/0103_alter_benefitfeature_polymorphic_ctype_and_more.py new file mode 100644 index 000000000..e9eb9e3a2 --- /dev/null +++ b/sponsors/migrations/0103_alter_benefitfeature_polymorphic_ctype_and_more.py @@ -0,0 +1,47 @@ +# Generated by Django 4.2.11 on 2024-09-05 17:10 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('sponsors', '0102_auto_20240509_2037'), + ] + + operations = [ + migrations.AlterField( + model_name='benefitfeature', + name='polymorphic_ctype', + field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_%(app_label)s.%(class)s_set+', to='contenttypes.contenttype'), + ), + migrations.AlterField( + model_name='benefitfeatureconfiguration', + name='polymorphic_ctype', + field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_%(app_label)s.%(class)s_set+', to='contenttypes.contenttype'), + ), + migrations.AlterField( + model_name='genericasset', + name='polymorphic_ctype', + field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_%(app_label)s.%(class)s_set+', to='contenttypes.contenttype'), + ), + migrations.AlterField( + model_name='sponsor', + name='creator', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_creator', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='sponsor', + name='last_modified_by', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_modified', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='sponsorshipbenefit', + name='conflicts', + field=models.ManyToManyField(blank=True, help_text='For benefits that conflict with one another,', to='sponsors.sponsorshipbenefit', verbose_name='Conflicts'), + ), + ] diff --git a/sponsors/tests/test_api.py b/sponsors/tests/test_api.py index caabd6aa1..3575e59e6 100644 --- a/sponsors/tests/test_api.py +++ b/sponsors/tests/test_api.py @@ -41,7 +41,7 @@ def tearDown(self): sponsor.print_logo.delete() def test_list_logo_placement_as_expected(self): - response = self.client.get(self.url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(self.url, headers={"authorization": self.authorization}) data = response.json() self.assertEqual(200, response.status_code) @@ -71,7 +71,7 @@ def test_list_logo_placement_as_expected(self): def test_invalid_token(self): Token.objects.all().delete() - response = self.client.get(self.url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(self.url, headers={"authorization": self.authorization}) self.assertEqual(401, response.status_code) def test_superuser_user_have_permission_by_default(self): @@ -79,19 +79,19 @@ def test_superuser_user_have_permission_by_default(self): self.user.is_superuser = True self.user.is_staff = True self.user.save() - response = self.client.get(self.url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(self.url, headers={"authorization": self.authorization}) self.assertEqual(200, response.status_code) def test_staff_have_permission_by_default(self): self.user.user_permissions.remove(self.permission) self.user.is_staff = True self.user.save() - response = self.client.get(self.url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(self.url, headers={"authorization": self.authorization}) self.assertEqual(200, response.status_code) def test_user_must_have_required_permission(self): self.user.user_permissions.remove(self.permission) - response = self.client.get(self.url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(self.url, headers={"authorization": self.authorization}) self.assertEqual(403, response.status_code) def test_filter_sponsorship_by_publisher(self): @@ -99,7 +99,7 @@ def test_filter_sponsorship_by_publisher(self): "publisher": PublisherChoices.PYPI.value, }) url = f"{self.url}?{querystring}" - response = self.client.get(url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(url, headers={"authorization": self.authorization}) data = response.json() self.assertEqual(200, response.status_code) @@ -111,7 +111,7 @@ def test_filter_sponsorship_by_flight(self): "flight": LogoPlacementChoices.SIDEBAR.value, }) url = f"{self.url}?{querystring}" - response = self.client.get(url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(url, headers={"authorization": self.authorization}) data = response.json() self.assertEqual(200, response.status_code) @@ -125,7 +125,7 @@ def test_bad_request_for_invalid_filters(self): "publisher": "invalid-publisher" }) url = f"{self.url}?{querystring}" - response = self.client.get(url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(url, headers={"authorization": self.authorization}) data = response.json() self.assertEqual(400, response.status_code) @@ -162,7 +162,7 @@ def tearDown(self): def test_invalid_token(self): Token.objects.all().delete() - response = self.client.get(self.url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(self.url, headers={"authorization": self.authorization}) self.assertEqual(401, response.status_code) def test_superuser_user_have_permission_by_default(self): @@ -170,30 +170,30 @@ def test_superuser_user_have_permission_by_default(self): self.user.is_superuser = True self.user.is_staff = True self.user.save() - response = self.client.get(self.url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(self.url, headers={"authorization": self.authorization}) self.assertEqual(200, response.status_code) def test_staff_have_permission_by_default(self): self.user.user_permissions.remove(self.permission) self.user.is_staff = True self.user.save() - response = self.client.get(self.url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(self.url, headers={"authorization": self.authorization}) self.assertEqual(200, response.status_code) def test_user_must_have_required_permission(self): self.user.user_permissions.remove(self.permission) - response = self.client.get(self.url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(self.url, headers={"authorization": self.authorization}) self.assertEqual(403, response.status_code) def test_bad_request_if_no_internal_name(self): url = reverse_lazy("assets_list") - response = self.client.get(url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(url, headers={"authorization": self.authorization}) self.assertEqual(400, response.status_code) self.assertIn("internal_name", response.json()) def test_list_assets_by_internal_name(self): # by default exclude assets with no value - response = self.client.get(self.url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(self.url, headers={"authorization": self.authorization}) data = response.json() self.assertEqual(200, response.status_code) self.assertEqual(0, len(data)) @@ -202,7 +202,7 @@ def test_list_assets_by_internal_name(self): self.txt_asset.value = "Text Content" self.txt_asset.save() - response = self.client.get(self.url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(self.url, headers={"authorization": self.authorization}) data = response.json() self.assertEqual(1, len(data)) @@ -216,7 +216,7 @@ def test_list_assets_by_internal_name(self): def test_enable_to_filter_by_assets_with_no_value_via_querystring(self): self.url += "&list_empty=true" - response = self.client.get(self.url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(self.url, headers={"authorization": self.authorization}) data = response.json() self.assertEqual(1, len(data)) @@ -230,7 +230,7 @@ def test_serialize_img_value_as_url_to_image(self): self.img_asset.save() url = reverse_lazy("assets_list") + f"?internal_name={self.img_asset.internal_name}" - response = self.client.get(url, HTTP_AUTHORIZATION=self.authorization) + response = self.client.get(url, headers={"authorization": self.authorization}) data = response.json() self.assertEqual(1, len(data)) diff --git a/successstories/__init__.py b/successstories/__init__.py index e2c2c1446..e69de29bb 100644 --- a/successstories/__init__.py +++ b/successstories/__init__.py @@ -1 +0,0 @@ -default_app_config = 'successstories.apps.SuccessstoriesAppConfig' diff --git a/successstories/admin.py b/successstories/admin.py index fdde8878c..bc15d2d11 100644 --- a/successstories/admin.py +++ b/successstories/admin.py @@ -24,6 +24,8 @@ def get_list_display(self, request): fields = list(super().get_list_display(request)) return fields + ['show_link', 'is_published', 'featured'] + @admin.display( + description='View on site' + ) def show_link(self, obj): return format_html(f'\U0001F517') - show_link.short_description = 'View on site' diff --git a/successstories/migrations/0012_alter_story_creator_alter_story_last_modified_by.py b/successstories/migrations/0012_alter_story_creator_alter_story_last_modified_by.py new file mode 100644 index 000000000..dee246421 --- /dev/null +++ b/successstories/migrations/0012_alter_story_creator_alter_story_last_modified_by.py @@ -0,0 +1,26 @@ +# Generated by Django 4.2.11 on 2024-09-05 17:10 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('successstories', '0011_auto_20220127_1923'), + ] + + operations = [ + migrations.AlterField( + model_name='story', + name='creator', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_creator', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='story', + name='last_modified_by', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_modified', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/successstories/tests/test_models.py b/successstories/tests/test_models.py index de5c0d577..418d27062 100644 --- a/successstories/tests/test_models.py +++ b/successstories/tests/test_models.py @@ -15,12 +15,13 @@ def test_published(self): self.assertEqual(len(Story.objects.published()), 2) def test_draft(self): - self.assertQuerysetEqual(Story.objects.draft(), - [f'']) + draft_stories = Story.objects.draft() + self.assertTrue(all(story.name == 'Fraft Story' for story in draft_stories)) def test_featured(self): - self.assertQuerysetEqual(Story.objects.featured(), - [f'']) + featured_stories = Story.objects.featured() + expected_repr = [f''] + self.assertQuerysetEqual(featured_stories, expected_repr, transform=repr) def test_get_admin_url(self): self.assertEqual(self.story1.get_admin_url(), diff --git a/users/__init__.py b/users/__init__.py index 1bf67ae9c..e69de29bb 100644 --- a/users/__init__.py +++ b/users/__init__.py @@ -1 +0,0 @@ -default_app_config = 'users.apps.UsersAppConfig' diff --git a/users/admin.py b/users/admin.py index 1c003655c..36d7e30f3 100644 --- a/users/admin.py +++ b/users/admin.py @@ -26,7 +26,7 @@ class ApiKeyInline(TastypieApiKeyInline): @admin.register(User) class UserAdmin(BaseUserAdmin): - inlines = BaseUserAdmin.inlines + [ApiKeyInline, MembershipInline] + inlines = BaseUserAdmin.inlines + (ApiKeyInline, MembershipInline,) fieldsets = ( (None, {'fields': ('username', 'password')}), (_('Personal info'), {'fields': ( @@ -44,9 +44,11 @@ class UserAdmin(BaseUserAdmin): def has_add_permission(self, request): return False + @admin.display( + description='Name' + ) def full_name(self, obj): return obj.get_full_name() - full_name.short_description = 'Name' @admin.register(Membership) diff --git a/users/migrations/0015_alter_user_first_name.py b/users/migrations/0015_alter_user_first_name.py new file mode 100644 index 000000000..ac7715204 --- /dev/null +++ b/users/migrations/0015_alter_user_first_name.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.11 on 2024-09-05 17:10 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0014_auto_20210801_2332'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='first_name', + field=models.CharField(blank=True, max_length=150, verbose_name='first name'), + ), + ] diff --git a/users/tests/test_forms.py b/users/tests/test_forms.py index 10ab95e32..897f41d6c 100644 --- a/users/tests/test_forms.py +++ b/users/tests/test_forms.py @@ -2,6 +2,7 @@ from django.test import TestCase from allauth.account.forms import SignupForm +from allauth.account.models import EmailAddress from users.forms import UserProfileForm, MembershipForm @@ -50,14 +51,16 @@ def test_duplicate_username(self): self.assertIn('username', form.errors) def test_duplicate_email(self): - User.objects.create_user('test1', 'test@example.com', 'testpass') + user = User.objects.create_user('test1', 'test@example.com', 'testpass') + EmailAddress.objects.create(user=user, email="test@example.com") - form = SignupForm({ + form = SignupForm(data={ 'username': 'username2', 'email': 'test@example.com', 'password1': 'password', - 'password2': 'password' + 'password2': 'password', }) + self.assertFalse(form.is_valid()) self.assertIn('email', form.errors) @@ -92,13 +95,8 @@ def test_non_ascii_username(self): 'password2': 'password', }) self.assertFalse(form.is_valid()) - self.assertEqual( - form.errors['username'], - [ - 'Enter a valid username. This value may contain only ' - 'English letters, numbers, and @/./+/-/_ characters.' - ] - ) + expected_error = 'Enter a valid username. This value may contain only unaccented lowercase a-z and uppercase A-Z letters, numbers, and @/./+/-/_ characters.' + self.assertIn(expected_error, form.errors['username']) def test_user_membership(self): form = MembershipForm({ diff --git a/users/tests/test_views.py b/users/tests/test_views.py index 13c226e5f..83b8330f9 100644 --- a/users/tests/test_views.py +++ b/users/tests/test_views.py @@ -2,7 +2,7 @@ from django.conf import settings from django.contrib.auth import get_user_model from django.urls import reverse -from django.test import TestCase +from django.test import TestCase, override_settings from sponsors.forms import SponsorUpdateForm, SponsorRequiredAssetsForm from sponsors.models import Sponsorship, RequiredTextAssetConfiguration, SponsorBenefit @@ -11,8 +11,6 @@ from users.factories import UserFactory from users.models import Membership -from ..factories import MembershipFactory - User = get_user_model() @@ -245,7 +243,7 @@ def test_user_duplicate_username_email(self): response, 'A user with that username already exists.' ) self.assertContains( - response, 'A user is already registered with this e-mail address.' + response, 'A user is already registered with this email address.' ) def test_usernames(self): diff --git a/work_groups/__init__.py b/work_groups/__init__.py index ef2fbcce9..e69de29bb 100644 --- a/work_groups/__init__.py +++ b/work_groups/__init__.py @@ -1 +0,0 @@ -default_app_config = 'work_groups.apps.WorkGroupsAppConfig' diff --git a/work_groups/migrations/0005_alter_workgroup_creator_and_more.py b/work_groups/migrations/0005_alter_workgroup_creator_and_more.py new file mode 100644 index 000000000..a316aa482 --- /dev/null +++ b/work_groups/migrations/0005_alter_workgroup_creator_and_more.py @@ -0,0 +1,26 @@ +# Generated by Django 4.2.11 on 2024-09-05 17:10 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('work_groups', '0004_auto_20180705_0352'), + ] + + operations = [ + migrations.AlterField( + model_name='workgroup', + name='creator', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_creator', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='workgroup', + name='last_modified_by', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_modified', to=settings.AUTH_USER_MODEL), + ), + ] From f31053a5604b0d919a2abd66e6b3b5dda018ee21 Mon Sep 17 00:00:00 2001 From: Jacob Coffee Date: Thu, 12 Sep 2024 14:50:47 -0500 Subject: [PATCH 121/256] fix: update `django-storages` version (#2533) --- prod-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prod-requirements.txt b/prod-requirements.txt index a7c4022f1..cdc543952 100644 --- a/prod-requirements.txt +++ b/prod-requirements.txt @@ -4,5 +4,5 @@ raven==6.10.0 # Heroku Whitenoise==6.6.0 # 6.4.0 is first version that supports Django 4.2 -django-storages==1.42.2 # 1.42.2 is first version that supports Django 4.2 +django-storages==1.14.4 # 1.14.4 is first version that supports Django 4.2 boto3==1.26.165 From e89f46d04867e514d2702894b1bd8dcddbebc9e1 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Thu, 12 Sep 2024 16:53:51 -0400 Subject: [PATCH 122/256] Fix static (#2534) * re-encode plugins as utf-8 * upgrade to 4.2.x code for HashedFilesMixin and reapply patches --- custom_storages/storages.py | 84 +++++++++++++++++++++++++------------ static/js/plugins/IE7.js | 3 +- static/js/plugins/IE9.js | 2 +- 3 files changed, 60 insertions(+), 29 deletions(-) mode change 100755 => 100644 static/js/plugins/IE7.js mode change 100755 => 100644 static/js/plugins/IE9.js diff --git a/custom_storages/storages.py b/custom_storages/storages.py index c735fd530..567685603 100644 --- a/custom_storages/storages.py +++ b/custom_storages/storages.py @@ -23,6 +23,21 @@ class PipelineManifestStorage(PipelineMixin, ManifestFilesMixin, StaticFilesStor imports in comments. Ref: https://code.djangoproject.com/ticket/21080 """ + # Skip map files + # https://code.djangoproject.com/ticket/33353#comment:13 + patterns = ( + ( + "*.css", + ( + "(?Purl\\(['\"]{0,1}\\s*(?P.*?)[\"']{0,1}\\))", + ( + "(?P@import\\s*[\"']\\s*(?P.*?)[\"'])", + '@import url("%(url)s")', + ), + ), + ), + ) + def get_comment_blocks(self, content): """ Return a list of (start, end) tuples for each comment block. @@ -32,73 +47,85 @@ def get_comment_blocks(self, content): for match in re.finditer(r'\/\*.*?\*\/', content, flags=re.DOTALL) ] - def url_converter(self, name, hashed_files, template=None, comment_blocks=None): + + def is_in_comment(self, pos, comments): + for start, end in comments: + if start < pos and pos < end: + return True + if pos < start: + return False + return False + + + def url_converter(self, name, hashed_files, template=None, comment_blocks=[]): """ Return the custom URL converter for the given file name. """ - if comment_blocks is None: - comment_blocks = [] - if template is None: template = self.default_template def converter(matchobj): """ Convert the matched URL to a normalized and hashed URL. + This requires figuring out which files the matched URL resolves to and calling the url() method of the storage. """ - matched, url = matchobj.groups() + matches = matchobj.groupdict() + matched = matches["matched"] + url = matches["url"] # Ignore URLs in comments. if self.is_in_comment(matchobj.start(), comment_blocks): return matched # Ignore absolute/protocol-relative and data-uri URLs. - if re.match(r'^[a-z]+:', url): + if re.match(r"^[a-z]+:", url): return matched # Ignore absolute URLs that don't point to a static file (dynamic # CSS / JS?). Note that STATIC_URL cannot be empty. - if url.startswith('/') and not url.startswith(settings.STATIC_URL): + if url.startswith("/") and not url.startswith(settings.STATIC_URL): return matched # Strip off the fragment so a path-like fragment won't interfere. url_path, fragment = urldefrag(url) - if url_path.startswith('/'): + # Ignore URLs without a path + if not url_path: + return matched + + if url_path.startswith("/"): # Otherwise the condition above would have returned prematurely. assert url_path.startswith(settings.STATIC_URL) - target_name = url_path[len(settings.STATIC_URL):] + target_name = url_path[len(settings.STATIC_URL) :] else: # We're using the posixpath module to mix paths and URLs conveniently. - source_name = name if os.sep == '/' else name.replace(os.sep, '/') + source_name = name if os.sep == "/" else name.replace(os.sep, "/") target_name = posixpath.join(posixpath.dirname(source_name), url_path) # Determine the hashed name of the target file with the storage backend. hashed_url = self._url( - self._stored_name, unquote(target_name), - force=True, hashed_files=hashed_files, + self._stored_name, + unquote(target_name), + force=True, + hashed_files=hashed_files, ) - transformed_url = '/'.join(url_path.split('/')[:-1] + hashed_url.split('/')[-1:]) + transformed_url = "/".join( + url_path.split("/")[:-1] + hashed_url.split("/")[-1:] + ) # Restore the fragment that was stripped off earlier. if fragment: - transformed_url += ('?#' if '?#' in url else '#') + fragment + transformed_url += ("?#" if "?#" in url else "#") + fragment # Return the hashed version to the file - return template % unquote(transformed_url) + matches["url"] = unquote(transformed_url) + return template % matches return converter - def is_in_comment(self, pos, comments): - for start, end in comments: - if start < pos and pos < end: - return True - if pos < start: - return False - return False def _post_process(self, paths, adjustable_paths, hashed_files): # Sort the files by directory level @@ -122,7 +149,7 @@ def path_level(name): hashed_name = hashed_files[hash_key] # then get the original's file content.. - if hasattr(original_file, 'seek'): + if hasattr(original_file, "seek"): original_file.seek(0) hashed_file_exists = self.exists(hashed_name) @@ -131,12 +158,14 @@ def path_level(name): # ..to apply each replacement pattern to the content if name in adjustable_paths: old_hashed_name = hashed_name - content = original_file.read().decode(settings.FILE_CHARSET) + content = original_file.read().decode("utf-8") for extension, patterns in self._patterns.items(): if matches_patterns(path, (extension,)): comment_blocks = self.get_comment_blocks(content) for pattern, template in patterns: - converter = self.url_converter(name, hashed_files, template, comment_blocks) + converter = self.url_converter( + name, hashed_files, template, comment_blocks + ) try: content = pattern.sub(converter, content) except ValueError as exc: @@ -145,8 +174,9 @@ def path_level(name): self.delete(hashed_name) # then save the processed result content_file = ContentFile(content.encode()) - # Save intermediate file for reference - saved_name = self._save(hashed_name, content_file) + if self.keep_intermediate_files: + # Save intermediate file for reference + self._save(hashed_name, content_file) hashed_name = self.hashed_name(name, content_file) if self.exists(hashed_name): diff --git a/static/js/plugins/IE7.js b/static/js/plugins/IE7.js old mode 100755 new mode 100644 index ba86e3ae0..2884c7d6b --- a/static/js/plugins/IE7.js +++ b/static/js/plugins/IE7.js @@ -12,7 +12,7 @@ Unknown W Brackets, Benjamin Westfarer, Rob Eberhardt, Bill Edney, Kevin Newman, James Crompton, Matthew Mastracci, Doug Wright, Richard York, Kenneth Kolano, MegaZone, - Thomas Verelst, Mark 'Tarquin' Wilton-Jones, Rainer Åhlfors, + Thomas Verelst, Mark 'Tarquin' Wilton-Jones, Rainer Ã…hlfors, David Zulaica, Ken Kolano, Kevin Newman, Sjoerd Visscher, Ingo Chao */ @@ -2406,3 +2406,4 @@ IE7.loaded = true; })(); })(this, document); + diff --git a/static/js/plugins/IE9.js b/static/js/plugins/IE9.js old mode 100755 new mode 100644 index 4d99fd69e..9a50014ed --- a/static/js/plugins/IE9.js +++ b/static/js/plugins/IE9.js @@ -14,7 +14,7 @@ Unknown W Brackets, Benjamin Westfarer, Rob Eberhardt, Bill Edney, Kevin Newman, James Crompton, Matthew Mastracci, Doug Wright, Richard York, Kenneth Kolano, MegaZone, - Thomas Verelst, Mark 'Tarquin' Wilton-Jones, Rainer Åhlfors, + Thomas Verelst, Mark 'Tarquin' Wilton-Jones, Rainer Ã…hlfors, David Zulaica, Ken Kolano, Kevin Newman, Sjoerd Visscher, Ingo Chao */ From d38d0f5b07cc9f0ccdffd3b934b734ddf093c998 Mon Sep 17 00:00:00 2001 From: partev Date: Thu, 12 Sep 2024 19:30:10 -0400 Subject: [PATCH 123/256] docs: fix the URL for RTD (#2192) Co-authored-by: Jacob Coffee --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fc59b7cdf..5bf04cbc6 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ https://github.com/python/cpython/issues/. * Source code: https://github.com/python/pythondotorg * Issue tracker: https://github.com/python/pythondotorg/issues -* Documentation: https://pythondotorg.readthedocs.org/ +* Documentation: https://pythondotorg.readthedocs.io/ * Mailing list: [pydotorg-www](https://mail.python.org/mailman/listinfo/pydotorg-www) * IRC: `#pydotorg` on Freenode * Staging site: https://staging.python.org/ (`main` branch) From 1037cbb409567c667eb1d6684f22698c65eb5d5f Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Fri, 13 Sep 2024 07:23:39 -0400 Subject: [PATCH 124/256] Upgrade to Python 3.12.6 (#2535) * upgrade to Python 3.12 * update deps * fix syntax in tests --- .github/workflows/ci.yml | 2 +- .python-version | 2 +- Dockerfile | 2 +- Dockerfile.cabotage | 2 +- base-requirements.txt | 8 ++++---- downloads/tests/test_models.py | 6 +++--- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5bd57ab9c..42f8472ea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,7 @@ jobs: sudo dpkg -i pandoc-2.17.1.1-1-amd64.deb - uses: actions/setup-python@v5 with: - python-version: 3.9.16 + python-version: 3.12.6 - name: Cache Python dependencies uses: actions/cache@v4 env: diff --git a/.python-version b/.python-version index 9f3d4c178..35f236d6e 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.9.16 +3.12.6 diff --git a/Dockerfile b/Dockerfile index a3c351f5e..b124c73ce 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.9-bookworm +FROM python:3.12-bookworm ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 diff --git a/Dockerfile.cabotage b/Dockerfile.cabotage index d96e002a7..854e3179e 100644 --- a/Dockerfile.cabotage +++ b/Dockerfile.cabotage @@ -1,4 +1,4 @@ -FROM python:3.9-bullseye +FROM python:3.12-bookworm COPY --from=ewdurbin/nginx-static:1.25.x /usr/bin/nginx /usr/bin/nginx ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 diff --git a/base-requirements.txt b/base-requirements.txt index a86bf74ae..d63743f4b 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -5,11 +5,11 @@ django-apptemplates==1.5 django-admin-interface==0.24.2 django-translation-aliases==0.1.0 Django==4.2.16 -docutils==0.12 -Markdown==3.3.4 +docutils==0.21.2 +Markdown==3.7 cmarkgfm==0.6.0 -Pillow==9.4.0 -psycopg2-binary==2.8.6 +Pillow==10.4.0 +psycopg2-binary==2.9.9 python3-openid==3.2.0 python-decouple==3.4 # lxml used by BeautifulSoup. diff --git a/downloads/tests/test_models.py b/downloads/tests/test_models.py index f27e9517d..d31afae5c 100644 --- a/downloads/tests/test_models.py +++ b/downloads/tests/test_models.py @@ -82,8 +82,8 @@ def test_is_version_at_least(self): release_38 = Release.objects.create(name='Python 3.8.0') self.assertFalse(release_38.is_version_at_least_3_9) - self.assert_(release_38.is_version_at_least_3_5) + self.assertTrue(release_38.is_version_at_least_3_5) release_310 = Release.objects.create(name='Python 3.10.0') - self.assert_(release_310.is_version_at_least_3_9) - self.assert_(release_310.is_version_at_least_3_5) + self.assertTrue(release_310.is_version_at_least_3_9) + self.assertTrue(release_310.is_version_at_least_3_5) From 81e263493683c1457aecb73bdefbf3fab63cd82c Mon Sep 17 00:00:00 2001 From: code-review-doctor <72647856+code-review-doctor@users.noreply.github.com> Date: Fri, 13 Sep 2024 14:24:53 +0300 Subject: [PATCH 125/256] Fix issue avoid-misusing-assert-true found at https://codereview.doctor (#1987) Co-authored-by: Jacob Coffee --- jobs/tests/test_models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jobs/tests/test_models.py b/jobs/tests/test_models.py index 310659165..5a9c5eb8d 100644 --- a/jobs/tests/test_models.py +++ b/jobs/tests/test_models.py @@ -76,7 +76,7 @@ def test_visible_manager(self): j3 = factories.ApprovedJobFactory(expires=past) visible = Job.objects.visible() - self.assertTrue(len(visible), 1) + self.assertEqual(len(visible), 1) self.assertIn(j1, visible) self.assertNotIn(j2, visible) self.assertNotIn(j3, visible) From 55bf06b928bf642e6a320dc21ba4d9dfdff30c0c Mon Sep 17 00:00:00 2001 From: Nwokolo Godwin Chidera Date: Fri, 13 Sep 2024 12:58:24 +0100 Subject: [PATCH 126/256] Update administration.rst (#1712) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update administration.rst Correct Grammatical Error Concerning Purge From Fastly.com Upon Save * Update administration.rst Correct grammatical error as it relates to the 'Jobs' section of the documentation. --------- Co-authored-by: Åukasz Langa Co-authored-by: Jacob Coffee --- docs/source/administration.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/administration.rst b/docs/source/administration.rst index 872222055..6ba820fd8 100644 --- a/docs/source/administration.rst +++ b/docs/source/administration.rst @@ -46,7 +46,7 @@ Pages are individual entire pages of markup content. They are require ``Title`` :Is Published: Controls whether or not the page is visible on the site. :Template Name: By default Pages use the template ``templates/pages/default.html`` to use a different template enter the template path here. -.. note:: Pages are automatically purge from Fastly.com upon save. +.. note:: Pages are automatically purged from Fastly.com upon save. .. _boxes: @@ -82,7 +82,7 @@ Release Files have a checkbox named 'Download button' that determines which bina Jobs ---- -The jobs application is using to display Python jobs on the site. The data items should be fairly self explanatory. There are a couple of things to keep in mind. Logged in users of the site can submit jobs for review. +The jobs application is used to display Python jobs on the site. The data items should be fairly self explanatory. There are a couple of things to keep in mind. Logged in users of the site can submit jobs for review. :Status: Jobs enter the system in 'review' status after the submitter has entered them. Only jobs in the 'approved' state are displayed on the site. :Featured: Featured jobs are displayed more prominently on the landing page. From 3627bc89603350d24ec01841a05e59926096a9a5 Mon Sep 17 00:00:00 2001 From: Levi Zim Date: Fri, 13 Sep 2024 20:00:14 +0800 Subject: [PATCH 127/256] refactor: use grep -E instead of egrep (#2141) Co-authored-by: Jacob Coffee --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index dc296feb4..50585463a 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ default: @$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null\ | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}'\ | sort\ - | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' + | grep -E -v -e '^[^[:alnum:]]' -e '^$@$$' @echo @exit 1 From 019c0629fd98c7ed4005387eb4ece5182995b14f Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Fri, 13 Sep 2024 09:13:25 -0400 Subject: [PATCH 128/256] upgrade allauth (#2555) bypass the migration issue around socialaccount... since we do not use that feature! --- base-requirements.txt | 2 +- pydotorg/settings/base.py | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/base-requirements.txt b/base-requirements.txt index d63743f4b..2ace94a1d 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -36,7 +36,7 @@ requests[security]>=2.26.0 django-honeypot==1.0.4 # 1.0.4 is first version that supports Django 4.2 django-markupfield==2.0.1 -django-allauth==0.57.2 # 0.55.0 is first version that supports Django 4.2 +django-allauth==64.2.1 django-waffle==2.2.1 diff --git a/pydotorg/settings/base.py b/pydotorg/settings/base.py index 9697a6ea8..30dc8de4a 100644 --- a/pydotorg/settings/base.py +++ b/pydotorg/settings/base.py @@ -230,11 +230,6 @@ 'allauth', 'allauth.account', - 'allauth.socialaccount', - #'allauth.socialaccount.providers.facebook', - #'allauth.socialaccount.providers.github', - #'allauth.socialaccount.providers.openid', - #'allauth.socialaccount.providers.twitter', # Tastypie needs the `users` app to be already loaded. 'tastypie', From 68fa4c10105d3bebb3b8b11a9f4d3e1a92e99091 Mon Sep 17 00:00:00 2001 From: Jacob Coffee Date: Fri, 13 Sep 2024 08:24:07 -0500 Subject: [PATCH 129/256] infra: add pr template, codeowners (#2537) --- .github/CODEOWNERS | 2 ++ .github/PULL_REQUEST_TEMPLATE.md | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 .github/CODEOWNERS create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000..de60a5f44 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,2 @@ +# Notify @EWDurbin for all opened Issues and Pull Requests +* @EWDurbin @JacobCoffee diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..fa82b4297 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,19 @@ + +#### Description + +- + + +#### Closes + +- + From 38d9d55bbf1662780de15591eab0ba663bca376c Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Fri, 13 Sep 2024 09:41:19 -0400 Subject: [PATCH 130/256] Check collectstatic (#2554) * add a github action check to ensure collectstatic runs * install prod reqs * fallback to .python-version * explicitly set python-version-file --------- Co-authored-by: Jacob Coffee --- .github/workflows/ci.yml | 2 +- .github/workflows/static.yml | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/static.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 42f8472ea..ed08f4b7f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,7 @@ jobs: sudo dpkg -i pandoc-2.17.1.1-1-amd64.deb - uses: actions/setup-python@v5 with: - python-version: 3.12.6 + python-version-file: '.python-version' - name: Cache Python dependencies uses: actions/cache@v4 env: diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml new file mode 100644 index 000000000..3207b964e --- /dev/null +++ b/.github/workflows/static.yml @@ -0,0 +1,29 @@ +name: Check collectstatic +on: [push, pull_request] +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Check out repository + uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version-file: '.python-version' + - name: Cache Python dependencies + uses: actions/cache@v4 + env: + cache-name: pythondotorg-cache-pip + with: + path: ~/.cache/pip + key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('requirements.txt', '*-requirements.txt') }} + restore-keys: | + ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}- + ${{ runner.os }}-${{ github.job }}- + ${{ runner.os }}- + - name: Install Python dependencies + run: | + pip install -U pip setuptools wheel + pip install -r requirements.txt -r prod-requirements.txt + - name: Run Tests + run: | + DJANGO_SETTINGS_MODULE=pydotorg.settings.static python manage.py collectstatic --noinput From e2188a104f4a6607137fd1be0e93affda45427b4 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Fri, 13 Sep 2024 10:14:43 -0400 Subject: [PATCH 131/256] pin to minor release in Dockerfiles (#2553) * pin to minor release in Dockerfiles * remove runtime.txt file this was just for Heroku... --- Dockerfile | 2 +- Dockerfile.cabotage | 2 +- runtime.txt | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 runtime.txt diff --git a/Dockerfile b/Dockerfile index b124c73ce..c701cd76c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.12-bookworm +FROM python:3.12.6-bookworm ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 diff --git a/Dockerfile.cabotage b/Dockerfile.cabotage index 854e3179e..9bc9d27ad 100644 --- a/Dockerfile.cabotage +++ b/Dockerfile.cabotage @@ -1,4 +1,4 @@ -FROM python:3.12-bookworm +FROM python:3.12.6-bookworm COPY --from=ewdurbin/nginx-static:1.25.x /usr/bin/nginx /usr/bin/nginx ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 diff --git a/runtime.txt b/runtime.txt deleted file mode 100644 index c9cbcea6f..000000000 --- a/runtime.txt +++ /dev/null @@ -1 +0,0 @@ -python-3.9.16 From ee0a7da80a7e031e65027177faa228ed5cd85ed8 Mon Sep 17 00:00:00 2001 From: arunkumarkota Date: Fri, 13 Sep 2024 20:03:22 +0530 Subject: [PATCH 132/256] Update issue tracker link in boxes.json fixture (#2222) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Åukasz Langa Co-authored-by: Jacob Coffee --- fixtures/boxes.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fixtures/boxes.json b/fixtures/boxes.json index bc3816cc7..df66827b5 100644 --- a/fixtures/boxes.json +++ b/fixtures/boxes.json @@ -318,9 +318,9 @@ "created": "2014-02-13T17:37:50.862Z", "updated": "2014-02-16T23:01:04.762Z", "label": "widget-weneedyou", - "content": "

      >>> Python Needs You

      \r\n

      Open source software is made better when users can easily contribute code and documentation to fix bugs and add features. Python strongly encourages community involvement in improving the software. Learn more about how to make Python better for everyone.

      \r\n

      \r\n Contribute to Python\r\n Bug Tracker\r\n

      ", + "content": "

      >>> Python Needs You

      \r\n

      Open source software is made better when users can easily contribute code and documentation to fix bugs and add features. Python strongly encourages community involvement in improving the software. Learn more about how to make Python better for everyone.

      \r\n

      \r\n Contribute to Python\r\n Bug Tracker\r\n

      ", "content_markup_type": "html", - "_content_rendered": "

      >>> Python Needs You

      \r\n

      Open source software is made better when users can easily contribute code and documentation to fix bugs and add features. Python strongly encourages community involvement in improving the software. Learn more about how to make Python better for everyone.

      \r\n

      \r\n Contribute to Python\r\n Bug Tracker\r\n

      " + "_content_rendered": "

      >>> Python Needs You

      \r\n

      Open source software is made better when users can easily contribute code and documentation to fix bugs and add features. Python strongly encourages community involvement in improving the software. Learn more about how to make Python better for everyone.

      \r\n

      \r\n Contribute to Python\r\n Bug Tracker\r\n

      " } }, { From 74e659c33077839657bd702a9eb1ddd678ebc5c4 Mon Sep 17 00:00:00 2001 From: Marc-Andre Lemburg Date: Fri, 13 Sep 2024 18:10:35 +0200 Subject: [PATCH 133/256] Deal with cases where DTEND is not given in the event dict (#2024) Fixes #2021. Co-authored-by: Jacob Coffee --- events/importer.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/events/importer.py b/events/importer.py index e47775060..fe04d35f5 100644 --- a/events/importer.py +++ b/events/importer.py @@ -22,7 +22,13 @@ def import_occurrence(self, event, event_data): # but won't add any timezone information. We will convert them to # aware datetime objects manually. dt_start = extract_date_or_datetime(event_data['DTSTART'].dt) - dt_end = extract_date_or_datetime(event_data['DTEND'].dt) + if 'DTEND' in event_data: + # DTEND is not always set on events, in particular it seems that + # events which have the same start and end time, don't provide + # DTEND. See #2021. + dt_end = extract_date_or_datetime(event_data['DTEND'].dt) + else: + dt_end = dt_start # Let's mark those occurrences as 'all-day'. all_day = ( From 24ce5393c4ee5a7be238926204216bb92f0be7ec Mon Sep 17 00:00:00 2001 From: daniel carvalho <42525687+ddevdan@users.noreply.github.com> Date: Fri, 13 Sep 2024 13:11:48 -0300 Subject: [PATCH 134/256] Fix issue #1988 - This image not being found as "/static/metro-icon-144x144-precomposed.png" (#2216) --- templates/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/base.html b/templates/base.html index b9f3df9c6..578dc1204 100644 --- a/templates/base.html +++ b/templates/base.html @@ -66,7 +66,7 @@ {# Tile icon for Win8 (144x144 + tile color) #} - + From 30f3cb43a843346c22c820ce4f87dea09d852df1 Mon Sep 17 00:00:00 2001 From: Maksudul Haque Date: Fri, 13 Sep 2024 22:24:48 +0600 Subject: [PATCH 135/256] fix: `RecurringRule` and `OccurringRule` model `__str__` method (#2166) * Fix `RecurringRule` and `OccurringRule` model `__str__` method * Update events/models.py * Update events/models.py --------- Co-authored-by: Jacob Coffee --- events/models.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/events/models.py b/events/models.py index 3334ca326..b41d92b22 100644 --- a/events/models.py +++ b/events/models.py @@ -237,7 +237,7 @@ class OccurringRule(RuleMixin, models.Model): def __str__(self): strftime = settings.SHORT_DATETIME_FORMAT - return f'{self.event.title} {date(self.dt_start.strftime, strftime)} - {date(self.dt_end.strftime, strftime)}' + return f'{self.event.title} {date(self.dt_start, strftime)} - {date(self.dt_end, strftime)}' @property def begin(self): @@ -283,8 +283,8 @@ class RecurringRule(RuleMixin, models.Model): all_day = models.BooleanField(default=False) def __str__(self): - strftime = settings.SHORT_DATETIME_FORMAT - return f'{self.event.title} every {timedelta_nice_repr(self.interval)} since {date(self.dt_start.strftime, strftime)}' + return (f'{self.event.title} every {timedelta_nice_repr(self.freq_interval_as_timedelta)} since ' + f'{date(self.dt_start, settings.SHORT_DATETIME_FORMAT)}') def to_rrule(self): return rrule( From 681cf0ed16c4b9fca5be1efd8ef97fc0c97d96cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Sep 2024 11:57:26 -0500 Subject: [PATCH 136/256] Bump feedparser from 6.0.8 to 6.0.11 (#2543) Bumps [feedparser](https://github.com/kurtmckee/feedparser) from 6.0.8 to 6.0.11. - [Changelog](https://github.com/kurtmckee/feedparser/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/kurtmckee/feedparser/compare/6.0.8...6.0.11) --- updated-dependencies: - dependency-name: feedparser dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jacob Coffee --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index 2ace94a1d..be3e772eb 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -15,7 +15,7 @@ python-decouple==3.4 # lxml used by BeautifulSoup. lxml==5.2.2 cssselect==1.1.0 -feedparser==6.0.8 +feedparser==6.0.11 beautifulsoup4==4.11.2 icalendar==4.0.7 chardet==4.0.0 From d55e71b5cae28f7c08825875703163376e5a28c9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Sep 2024 11:58:29 -0500 Subject: [PATCH 137/256] Bump django-widget-tweaks from 1.4.8 to 1.5.0 (#2542) Bumps [django-widget-tweaks](https://github.com/jazzband/django-widget-tweaks) from 1.4.8 to 1.5.0. - [Release notes](https://github.com/jazzband/django-widget-tweaks/releases) - [Changelog](https://github.com/jazzband/django-widget-tweaks/blob/master/CHANGES.rst) - [Commits](https://github.com/jazzband/django-widget-tweaks/compare/1.4.8...1.5.0) --- updated-dependencies: - dependency-name: django-widget-tweaks dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index be3e772eb..67736daed 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -43,7 +43,7 @@ django-waffle==2.2.1 djangorestframework==3.14.0 # 3.14.0 is first version that supports Django 4.1, 4.2 support hasnt been "released" django-filter==2.4.0 django-ordered-model==3.4.3 -django-widget-tweaks==1.4.8 +django-widget-tweaks==1.5.0 django-countries==7.2.1 num2words==0.5.10 django-polymorphic==3.1.0 # 3.1.0 is first version that supports Django 4.0, unsure if it fully supports 4.2 From 241b3b8ef188b626a4f52e56fad4cc0ab3105e05 Mon Sep 17 00:00:00 2001 From: Anuraag-CH <48093039+Anuraag-CH@users.noreply.github.com> Date: Fri, 13 Sep 2024 22:29:47 +0530 Subject: [PATCH 138/256] Remove unused imports in downloads/tests/test_views.py (#2272) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * remove unused import * Remove another unused import in the same file --------- Co-authored-by: Åukasz Langa Co-authored-by: Jacob Coffee --- downloads/tests/test_views.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/downloads/tests/test_views.py b/downloads/tests/test_views.py index e495b9e93..c585fe05c 100644 --- a/downloads/tests/test_views.py +++ b/downloads/tests/test_views.py @@ -5,11 +5,10 @@ from django.urls import reverse from django.test import TestCase, override_settings -from rest_framework.authtoken.models import Token from rest_framework.test import APITestCase from .base import BaseDownloadTests, DownloadMixin -from ..models import OS, Release +from ..models import Release from pages.factories import PageFactory from pydotorg.drf import BaseAPITestCase from users.factories import UserFactory From 3bf4a22a0cdccda65b7527838b5c76e55e23f147 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Sep 2024 12:05:04 -0500 Subject: [PATCH 139/256] Bump beautifulsoup4 from 4.11.2 to 4.12.3 (#2551) Bumps [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) from 4.11.2 to 4.12.3. --- updated-dependencies: - dependency-name: beautifulsoup4 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index 67736daed..4f9c0aa39 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -16,7 +16,7 @@ python-decouple==3.4 lxml==5.2.2 cssselect==1.1.0 feedparser==6.0.11 -beautifulsoup4==4.11.2 +beautifulsoup4==4.12.3 icalendar==4.0.7 chardet==4.0.0 celery[redis]==5.3.6 From 591a1ddcfa201e351fa7b112a4d5dff65ba4dcfe Mon Sep 17 00:00:00 2001 From: Jacob Coffee Date: Fri, 13 Sep 2024 13:29:28 -0500 Subject: [PATCH 140/256] docs(#2480): update readme (#2559) --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 5bf04cbc6..caa261e07 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,14 @@ ### General information -This is the repository and issue tracker for [python.org](https://www.python.org). -The repository for CPython itself is at https://github.com/python/cpython, and the -issue tracker is at https://github.com/python/cpython/issues/. +This is the repository and issue tracker for [python.org](https://www.python.org). -Issues related to [Python's documentation](https://docs.python.org) can be filed in -https://github.com/python/cpython/issues/. +> [!NOTE] +> The repository for CPython itself is at https://github.com/python/cpython, and the +> issue tracker is at https://github.com/python/cpython/issues/. +> +> Similarly, issues related to [Python's documentation](https://docs.python.org) can be filed in +> https://github.com/python/cpython/issues/. ### Contributing @@ -19,5 +21,4 @@ https://github.com/python/cpython/issues/. * Documentation: https://pythondotorg.readthedocs.io/ * Mailing list: [pydotorg-www](https://mail.python.org/mailman/listinfo/pydotorg-www) * IRC: `#pydotorg` on Freenode -* Staging site: https://staging.python.org/ (`main` branch) * License: Apache License From af33d311fc5d58658f8c99084f3b19371c25e919 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Mon, 16 Sep 2024 09:02:04 -0400 Subject: [PATCH 141/256] Remove peps app. (#2552) all peps were moved to peps.python.org, so this machinery is no longer necessary --- peps/__init__.py | 0 peps/apps.py | 6 - peps/converters.py | 262 ----- peps/management/__init__.py | 0 peps/management/commands/__init__.py | 0 peps/management/commands/dump_pep_pages.py | 21 - .../management/commands/generate_pep_pages.py | 143 --- peps/models.py | 1 - peps/templatetags/__init__.py | 0 peps/templatetags/peps.py | 16 - peps/tests/__init__.py | 6 - peps/tests/peps.tar.gz | Bin 46010 -> 0 bytes peps/tests/peps/pep-0000.html | 1030 ----------------- peps/tests/peps/pep-0012.html | 53 - peps/tests/peps/pep-0012.rst | 33 - peps/tests/peps/pep-0525.html | 595 ---------- peps/tests/peps/pep-3001-1.png | Bin 14117 -> 0 bytes peps/tests/peps/pep-3001.html | 140 --- peps/tests/test_commands.py | 56 - peps/tests/test_converters.py | 64 - pydotorg/settings/base.py | 5 - templates/components/pep-widget.html | 19 - templates/python/documentation.html | 3 - templates/python/index.html | 2 - 24 files changed, 2455 deletions(-) delete mode 100644 peps/__init__.py delete mode 100644 peps/apps.py delete mode 100644 peps/converters.py delete mode 100644 peps/management/__init__.py delete mode 100644 peps/management/commands/__init__.py delete mode 100644 peps/management/commands/dump_pep_pages.py delete mode 100644 peps/management/commands/generate_pep_pages.py delete mode 100644 peps/models.py delete mode 100644 peps/templatetags/__init__.py delete mode 100644 peps/templatetags/peps.py delete mode 100644 peps/tests/__init__.py delete mode 100644 peps/tests/peps.tar.gz delete mode 100644 peps/tests/peps/pep-0000.html delete mode 100644 peps/tests/peps/pep-0012.html delete mode 100644 peps/tests/peps/pep-0012.rst delete mode 100644 peps/tests/peps/pep-0525.html delete mode 100644 peps/tests/peps/pep-3001-1.png delete mode 100644 peps/tests/peps/pep-3001.html delete mode 100644 peps/tests/test_commands.py delete mode 100644 peps/tests/test_converters.py delete mode 100644 templates/components/pep-widget.html diff --git a/peps/__init__.py b/peps/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/peps/apps.py b/peps/apps.py deleted file mode 100644 index a59996f2a..000000000 --- a/peps/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class PepsAppConfig(AppConfig): - - name = 'peps' diff --git a/peps/converters.py b/peps/converters.py deleted file mode 100644 index 1d63d7438..000000000 --- a/peps/converters.py +++ /dev/null @@ -1,262 +0,0 @@ -import functools -import datetime -import re -import os - -from bs4 import BeautifulSoup - -from django.conf import settings -from django.core.exceptions import ImproperlyConfigured -from django.core.files import File -from django.db.models import Max - -from pages.models import Page, Image - -PEP_TEMPLATE = 'pages/pep-page.html' -pep_url = lambda num: f'dev/peps/pep-{num}/' - - -def get_peps_last_updated(): - last_update = Page.objects.filter( - path__startswith='dev/peps', - ).aggregate(Max('updated')).get('updated__max') - if last_update is None: - return datetime.datetime( - 1970, 1, 1, tzinfo=datetime.timezone( - datetime.timedelta(0) - ) - ) - return last_update - - -def convert_pep0(artifact_path): - """ - Take existing generated pep-0000.html and convert to something suitable - for a Python.org Page returns the core body HTML necessary only - """ - pep0_path = os.path.join(artifact_path, 'pep-0000.html') - pep0_content = open(pep0_path).read() - data = convert_pep_page(0, pep0_content) - if data is None: - return - return data['content'] - - -def get_pep0_page(artifact_path, commit=True): - """ - Using convert_pep0 above, create a CMS ready pep0 page and return it - - pep0 is used as the directory index, but it's also an actual pep, so we - return both Page objects. - """ - pep0_content = convert_pep0(artifact_path) - if pep0_content is None: - return None, None - pep0_page, _ = Page.objects.get_or_create(path='dev/peps/') - pep0000_page, _ = Page.objects.get_or_create(path='dev/peps/pep-0000/') - for page in [pep0_page, pep0000_page]: - page.content = pep0_content - page.content_markup_type = 'html' - page.title = "PEP 0 -- Index of Python Enhancement Proposals (PEPs)" - page.template_name = PEP_TEMPLATE - - if commit: - page.save() - - return pep0_page, pep0000_page - - -def fix_headers(soup, data): - """ Remove empty or unwanted headers and find our title """ - header_rows = soup.find_all('th') - for t in header_rows: - if 'Version:' in t.text: - if t.next_sibling.text == '$Revision$': - t.parent.extract() - if t.next_sibling.text == '': - t.parent.extract() - if 'Last-Modified:' in t.text: - if '$Date$'in t.next_sibling.text: - t.parent.extract() - if t.next_sibling.text == '': - t.parent.extract() - if t.text == 'Title:': - data['title'] = t.next_sibling.text - if t.text == 'Content-Type:': - t.parent.extract() - if 'Version:' in t.text and 'N/A' in t.next_sibling.text: - t.parent.extract() - - return soup, data - - -def convert_pep_page(pep_number, content): - """ - Handle different formats that pep2html.py outputs - """ - data = { - 'title': None, - } - # Remove leading zeros from PEP number for display purposes - pep_number_humanize = re.sub(r'^0+', '', str(pep_number)) - - if '' in content: - soup = BeautifulSoup(content, 'lxml') - data['title'] = soup.title.text - - if not re.search(r'PEP \d+', data['title']): - data['title'] = 'PEP {} -- {}'.format( - pep_number_humanize, - soup.title.text, - ) - - header = soup.body.find('div', class_="header") - header, data = fix_headers(header, data) - data['header'] = str(header) - - main_content = soup.body.find('div', class_="content") - - data['main_content'] = str(main_content) - data['content'] = ''.join([ - data['header'], - data['main_content'] - ]) - - else: - soup = BeautifulSoup(content, 'lxml') - - soup, data = fix_headers(soup, data) - if not data['title']: - data['title'] = f"PEP {pep_number_humanize} -- " - else: - if not re.search(r'PEP \d+', data['title']): - data['title'] = "PEP {} -- {}".format( - pep_number_humanize, - data['title'], - ) - - data['content'] = str(soup) - - # Fix PEP links - pep_content = BeautifulSoup(data['content'], 'lxml') - body_links = pep_content.find_all("a") - - pep_href_re = re.compile(r'pep-(\d+)\.html') - - for b in body_links: - m = pep_href_re.search(b.attrs['href']) - - # Skip anything not matching 'pep-XXXX.html' - if not m: - continue - - b.attrs['href'] = f'/dev/peps/pep-{m.group(1)}/' - - # Return early if 'html' or 'body' return None. - if pep_content.html is None or pep_content.body is None: - return - - # Strip and tags. - pep_content.html.unwrap() - pep_content.body.unwrap() - - data['content'] = str(pep_content) - return data - - -def get_pep_page(artifact_path, pep_number, commit=True): - """ - Given a pep_number retrieve original PEP source text, rst, or html. - Get or create the associated Page and return it - """ - pep_path = os.path.join(artifact_path, f'pep-{pep_number}.html') - if not os.path.exists(pep_path): - print(f"PEP Path '{pep_path}' does not exist, skipping") - return - - pep_content = convert_pep_page(pep_number, open(pep_path).read()) - if pep_content is None: - return None - pep_rst_source = os.path.join( - artifact_path, f'pep-{pep_number}.rst', - ) - pep_ext = '.rst' if os.path.exists(pep_rst_source) else '.txt' - source_link = 'https://github.com/python/peps/blob/master/pep-{}{}'.format( - pep_number, pep_ext) - pep_content['content'] += """Source: {0}""".format(source_link) - - pep_page, _ = Page.objects.get_or_create(path=pep_url(pep_number)) - - pep_page.title = pep_content['title'] - - pep_page.content = pep_content['content'] - pep_page.content_markup_type = 'html' - pep_page.template_name = PEP_TEMPLATE - - if commit: - pep_page.save() - - return pep_page - - -def add_pep_image(artifact_path, pep_number, path): - image_path = os.path.join(artifact_path, path) - if not os.path.exists(image_path): - print(f"Image Path '{image_path}' does not exist, skipping") - return - - try: - page = Page.objects.get(path=pep_url(pep_number)) - except Page.DoesNotExist: - print(f"Could not find backing PEP {pep_number}") - return - - # Find existing images, we have to loop here as we can't use the ORM - # to query against image__path - existing_images = Image.objects.filter(page=page) - - FOUND = False - for image in existing_images: - if image.image.name.endswith(path): - FOUND = True - break - - if not FOUND: - image = Image(page=page) - - with open(image_path, 'rb') as image_obj: - image.image.save(path, File(image_obj)) - image.save() - - # Old images used to live alongside html, but now they're in different - # places, so update the page accordingly. - soup = BeautifulSoup(page.content.raw, 'lxml') - for img_tag in soup.findAll('img'): - if img_tag['src'] == path: - img_tag['src'] = image.image.url - - page.content.raw = str(soup) - page.save() - - return image - - -def get_peps_rss(artifact_path): - rss_feed = os.path.join(artifact_path, 'peps.rss') - if not os.path.exists(rss_feed): - return - - page, _ = Page.objects.get_or_create( - path="dev/peps/peps.rss", - template_name="pages/raw.html", - ) - - with open(rss_feed) as rss_content: - content = rss_content.read() - - page.content = content - page.is_published = True - page.content_type = "application/rss+xml" - page.save() - - return page diff --git a/peps/management/__init__.py b/peps/management/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/peps/management/commands/__init__.py b/peps/management/commands/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/peps/management/commands/dump_pep_pages.py b/peps/management/commands/dump_pep_pages.py deleted file mode 100644 index 549b8faa4..000000000 --- a/peps/management/commands/dump_pep_pages.py +++ /dev/null @@ -1,21 +0,0 @@ -from django.core import serializers -from django.core.management import BaseCommand - -from pages.models import Page - - -class Command(BaseCommand): - """ - Dump PEP related Pages as indented JSON - """ - help = "Dump PEP related Pages as indented JSON" - - def handle(self, **options): - qs = Page.objects.filter(path__startswith='dev/peps/') - - serializers.serialize( - format='json', - queryset=qs, - indent=4, - stream=self.stdout, - ) diff --git a/peps/management/commands/generate_pep_pages.py b/peps/management/commands/generate_pep_pages.py deleted file mode 100644 index 9f9010584..000000000 --- a/peps/management/commands/generate_pep_pages.py +++ /dev/null @@ -1,143 +0,0 @@ -import re -import os - -from contextlib import ExitStack -from tarfile import TarFile -from tempfile import TemporaryDirectory, TemporaryFile - -import requests - -from django.core.management import BaseCommand -from django.conf import settings - -from dateutil.parser import parse as parsedate - -from peps.converters import ( - get_pep0_page, get_pep_page, add_pep_image, get_peps_rss, get_peps_last_updated -) - -pep_number_re = re.compile(r'pep-(\d+)') - - -class Command(BaseCommand): - """ - Generate CMS Pages from flat file PEP data. - - Run this command AFTER normal RST -> HTML PEP transformation from the PEP - repository has happened. This works on the HTML files created during that - process. - - For verbose output run this with: - - ./manage.py generate_pep_pages --verbosity=2 - """ - help = "Generate PEP Page objects from rendered HTML" - - def is_pep_page(self, path): - return path.startswith('pep-') and path.endswith('.html') - - def is_image(self, path): - # All images are pngs - return path.endswith('.png') - - def handle(self, **options): - verbosity = int(options['verbosity']) - - def verbose(msg): - """ Output wrapper """ - if verbosity > 1: - print(msg) - - verbose("== Starting PEP page generation") - - with ExitStack() as stack: - if settings.PEP_REPO_PATH is not None: - artifacts_path = settings.PEP_REPO_PATH - else: - verbose(f"== Fetching PEP artifact from {settings.PEP_ARTIFACT_URL}") - temp_file = self.get_artifact_tarball(stack) - if not temp_file: - verbose("== No update to artifacts, we're done here!") - return - temp_dir = stack.enter_context(TemporaryDirectory()) - tar_ball = stack.enter_context(TarFile.open(fileobj=temp_file, mode='r:gz')) - tar_ball.extractall(path=temp_dir, numeric_owner=False) - - artifacts_path = os.path.join(temp_dir, 'peps') - - verbose("Generating RSS Feed") - peps_rss = get_peps_rss(artifacts_path) - if not peps_rss: - verbose("Could not find generated RSS feed. Skipping.") - - verbose("Generating PEP0 index page") - pep0_page, _ = get_pep0_page(artifacts_path) - if pep0_page is None: - verbose("HTML version of PEP 0 cannot be generated.") - return - - image_paths = set() - - # Find pep pages - for f in os.listdir(artifacts_path): - - if self.is_image(f): - verbose(f"- Deferring import of image '{f}'") - image_paths.add(f) - continue - - # Skip files we aren't looking for - if not self.is_pep_page(f): - verbose(f"- Skipping non-PEP file '{f}'") - continue - - if 'pep-0000.html' in f: - verbose("- Skipping duplicate PEP0 index") - continue - - verbose(f"Generating PEP Page from '{f}'") - pep_match = pep_number_re.match(f) - if pep_match: - pep_number = pep_match.groups(1)[0] - p = get_pep_page(artifacts_path, pep_number) - if p is None: - verbose( - "- HTML version PEP {!r} cannot be generated.".format( - pep_number - ) - ) - verbose(f"====== Title: '{p.title}'") - else: - verbose(f"- Skipping invalid '{f}'") - - # Find pep images. This needs to happen afterwards, because we need - for img in image_paths: - pep_match = pep_number_re.match(img) - if pep_match: - pep_number = pep_match.groups(1)[0] - verbose("Generating image for PEP {} at '{}'".format( - pep_number, img)) - add_pep_image(artifacts_path, pep_number, img) - else: - verbose(f"- Skipping non-PEP related image '{img}'") - - verbose("== Finished") - - def get_artifact_tarball(self, stack): - artifact_url = settings.PEP_ARTIFACT_URL - if not artifact_url.startswith(('http://', 'https://')): - return stack.enter_context(open(artifact_url, 'rb')) - - peps_last_updated = get_peps_last_updated() - with requests.get(artifact_url, stream=True) as r: - artifact_last_modified = parsedate(r.headers['last-modified']) - if peps_last_updated > artifact_last_modified: - return - - temp_file = stack.enter_context(TemporaryFile()) - for chunk in r.iter_content(chunk_size=8192): - if chunk: - temp_file.write(chunk) - - temp_file.seek(0) - return temp_file diff --git a/peps/models.py b/peps/models.py deleted file mode 100644 index e45cd9cd1..000000000 --- a/peps/models.py +++ /dev/null @@ -1 +0,0 @@ -# Intentially left blank diff --git a/peps/templatetags/__init__.py b/peps/templatetags/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/peps/templatetags/peps.py b/peps/templatetags/peps.py deleted file mode 100644 index 9d90afe24..000000000 --- a/peps/templatetags/peps.py +++ /dev/null @@ -1,16 +0,0 @@ -from django import template - -from pages.models import Page - -register = template.Library() - - -@register.simple_tag -def get_newest_pep_pages(limit=5): - """ Retrieve the most recently added PEPs """ - latest_peps = Page.objects.filter( - path__startswith='dev/peps/', - is_published=True, - ).order_by('-created')[:limit] - - return latest_peps diff --git a/peps/tests/__init__.py b/peps/tests/__init__.py deleted file mode 100644 index 944cc90aa..000000000 --- a/peps/tests/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -import os - -from django.conf import settings - -FAKE_PEP_REPO = os.path.join(settings.BASE, 'peps/tests/peps/') -FAKE_PEP_ARTIFACT = os.path.join(settings.BASE, 'peps/tests/peps.tar.gz') diff --git a/peps/tests/peps.tar.gz b/peps/tests/peps.tar.gz deleted file mode 100644 index edaa86b79a67945ecf960d06657e6453f6657916..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46010 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 K3_LUdSONgDYY=k) diff --git a/peps/tests/peps/pep-0000.html b/peps/tests/peps/pep-0000.html deleted file mode 100644 index c11c027c9..000000000 --- a/peps/tests/peps/pep-0000.html +++ /dev/null @@ -1,1030 +0,0 @@ - - - - - PEP 0 -- Index of Python Enhancement Proposals (PEPs) - - - - - - -
      - - - - - - - - - -
      PEP: 0
      Title: Index of Python Enhancement Proposals (PEPs)
      Version: N/A
      Last-Modified: 2014-09-26
      Author: David Goodger <goodger at python.org>, Barry Warsaw <barry at python.org>
      Status: Active
      Type: Informational
      Created: 13-Jul-2000
      -
      -
      -
      -

      Introduction

      -
      -    This PEP contains the index of all Python Enhancement Proposals,
      -    known as PEPs.  PEP numbers are assigned by the PEP editors, and
      -    once assigned are never changed[1].  The Mercurial history[2] of
      -    the PEP texts represent their historical record.
      -
      -
      -
      -

      Index by Category

      -
      -     num  title                                                   owner
      -     ---  -----                                                   -----
      -
      - Meta-PEPs (PEPs about PEPs or Processes)
      -
      - P     1  PEP Purpose and Guidelines                              Warsaw, Hylton, Goodger, Coghlan
      - P     4  Deprecation of Standard Modules                         von Löwis
      - P     5  Guidelines for Language Evolution                       Prescod
      - P     6  Bug Fix Releases                                        Aahz, Baxter
      - P     7  Style Guide for C Code                                  GvR
      - P     8  Style Guide for Python Code                             GvR, Warsaw, Coghlan
      - P     9  Sample Plaintext PEP Template                           Warsaw
      - P    10  Voting Guidelines                                       Warsaw
      - P    11  Removing support for little used platforms              von Löwis
      - P    12  Sample reStructuredText PEP Template                    Goodger, Warsaw
      -
      - Other Informational PEPs
      -
      - I    20  The Zen of Python                                       Peters
      - I   101  Doing Python Releases 101                               Warsaw, GvR
      - IF  247  API for Cryptographic Hash Functions                    Kuchling
      - IF  248  Python Database API Specification v1.0                  Lemburg
      - IF  249  Python Database API Specification v2.0                  Lemburg
      - I   257  Docstring Conventions                                   Goodger, GvR
      - IF  272  API for Block Encryption Algorithms v1.0                Kuchling
      - I   287  reStructuredText Docstring Format                       Goodger
      - I   290  Code Migration and Modernization                        Hettinger
      - IF  291  Backward Compatibility for the Python 2 Standard ...    Norwitz
      - IF  333  Python Web Server Gateway Interface v1.0                Eby
      - I   373  Python 2.7 Release Schedule                             Peterson
      - I   392  Python 3.2 Release Schedule                             Brandl
      - I   394  The "python" Command on Unix-Like Systems               Staley, Coghlan
      - I   398  Python 3.3 Release Schedule                             Brandl
      - IF  399  Pure Python/C Accelerator Module Compatibility ...      Cannon
      - IF  404  Python 2.8 Un-release Schedule                          Warsaw
      - IA  411  Provisional packages in the Python standard library     Coghlan, Bendersky
      - I   429  Python 3.4 Release Schedule                             Hastings
      - IF  430  Migrating to Python 3 as the default online ...         Coghlan
      - I   434  IDLE Enhancement Exception for All Branches             Rovito, Reedy
      - IA  440  Version Identification and Dependency Specification     Coghlan, Stufft
      - I   478  Python 3.5 Release Schedule                             Hastings
      - IF 3333  Python Web Server Gateway Interface v1.0.1              Eby
      -
      - Accepted PEPs (accepted; may not be implemented yet)
      -
      - SA  345  Metadata for Python Software Packages 1.2               Jones
      - SA  376  Database of Installed Python Distributions              Ziadé
      - SA  425  Compatibility Tags for Built Distributions              Holth
      - SA  427  The Wheel Binary Package Format 1.0                     Holth
      - SA  461  Adding % formatting to bytes and bytearray              Furman
      - SA  471  os.scandir() function -- a better and faster ...        Hoyt
      - SA  477  Backport ensurepip (PEP 453) to Python 2.7              Stufft, Coghlan
      - SA 3121  Extension Module Initialization and Finalization        von Löwis
      -
      - Open PEPs (under consideration)
      -
      - S   381  Mirroring infrastructure for PyPI                       Ziadé, v. Löwis
      - P   387  Backwards Compatibility Policy                          Peterson
      - S   426  Metadata for Python Software Packages 2.0               Coghlan, Holth, Stufft
      - S   431  Time zone support improvements                          Regebro
      - S   432  Simplifying the CPython startup sequence                Coghlan
      - S   436  The Argument Clinic DSL                                 Hastings
      - S   441  Improving Python ZIP Application Support                Holth
      - S   447  Add __getdescriptor__ method to metaclass               Oussoren
      - S   448  Additional Unpacking Generalizations                    Landau
      - I   452  API for Cryptographic Hash Functions v2.0               Kuchling, Heimes
      - S   455  Adding a key-transforming dictionary to collections     Pitrou
      - I   457  Syntax For Positional-Only Parameters                   Hastings
      - S   458  Surviving a Compromise of PyPI                          Kuppusamy, Stufft, Cappos
      - S   459  Standard Metadata Extensions for Python Software ...    Coghlan
      - S   463  Exception-catching expressions                          Angelico
      - S   467  Minor API improvements for binary sequences             Coghlan
      - S   468  Preserving the order of \*\*kwargs in a function.       Snow
      - P   470  Using Multi Index Support for External to PyPI ...      Stufft
      - S   472  Support for indexing with keyword arguments             Borini, Martinot-Lagarde
      - S   473  Adding structured data to built-in exceptions           Kreft
      - S   475  Retry system calls failing with EINTR                   Natali, Stinner
      - S   476  Enabling certificate verification by default for ...    Gaynor
      -
      - Finished PEPs (done, implemented in code repository)
      -
      - SF  100  Python Unicode Integration                              Lemburg
      - SF  201  Lockstep Iteration                                      Warsaw
      - SF  202  List Comprehensions                                     Warsaw
      - SF  203  Augmented Assignments                                   Wouters
      - SF  205  Weak References                                         Drake
      - SF  207  Rich Comparisons                                        GvR, Ascher
      - SF  208  Reworking the Coercion Model                            Schemenauer, Lemburg
      - SF  214  Extended Print Statement                                Warsaw
      - SF  217  Display Hook for Interactive Use                        Zadka
      - SF  218  Adding a Built-In Set Object Type                       Wilson, Hettinger
      - SF  221  Import As                                               Wouters
      - SF  223  Change the Meaning of \x Escapes                        Peters
      - SF  227  Statically Nested Scopes                                Hylton
      - SF  229  Using Distutils to Build Python                         Kuchling
      - SF  230  Warning Framework                                       GvR
      - SF  232  Function Attributes                                     Warsaw
      - SF  234  Iterators                                               Yee, GvR
      - SF  235  Import on Case-Insensitive Platforms                    Peters
      - SF  236  Back to the __future__                                  Peters
      - SF  237  Unifying Long Integers and Integers                     Zadka, GvR
      - SF  238  Changing the Division Operator                          Zadka, GvR
      - SF  241  Metadata for Python Software Packages                   Kuchling
      - SF  250  Using site-packages on Windows                          Moore
      - SF  252  Making Types Look More Like Classes                     GvR
      - SF  253  Subtyping Built-in Types                                GvR
      - SF  255  Simple Generators                                       Schemenauer, Peters, Hetland
      - SF  260  Simplify xrange()                                       GvR
      - SF  261  Support for "wide" Unicode characters                   Prescod
      - SF  263  Defining Python Source Code Encodings                   Lemburg, von Löwis
      - SF  264  Future statements in simulated shells                   Hudson
      - SF  273  Import Modules from Zip Archives                        Ahlstrom
      - SF  274  Dict Comprehensions                                     Warsaw
      - SF  277  Unicode file name support for Windows NT                Hodgson
      - SF  278  Universal Newline Support                               Jansen
      - SF  279  The enumerate() built-in function                       Hettinger
      - SF  282  A Logging System                                        Sajip, Mick
      - SF  285  Adding a bool type                                      GvR
      - SF  289  Generator Expressions                                   Hettinger
      - SF  292  Simpler String Substitutions                            Warsaw
      - SF  293  Codec Error Handling Callbacks                          Dörwald
      - SF  301  Package Index and Metadata for Distutils                Jones
      - SF  302  New Import Hooks                                        JvR, Moore
      - SF  305  CSV File API                                            Altis, Cole, McNamara, Montanaro, Wells
      - SF  307  Extensions to the pickle protocol                       GvR, Peters
      - SF  308  Conditional Expressions                                 GvR, Hettinger
      - SF  309  Partial Function Application                            Harris
      - SF  311  Simplified Global Interpreter Lock Acquisition for ...  Hammond
      - SF  314  Metadata for Python Software Packages v1.1              Kuchling, Jones
      - SF  318  Decorators for Functions and Methods                    Smith
      - SF  322  Reverse Iteration                                       Hettinger
      - SF  324  subprocess - New process module                         Astrand
      - SF  327  Decimal Data Type                                       Batista
      - SF  328  Imports: Multi-Line and Absolute/Relative               Aahz
      - SF  331  Locale-Independent Float/String Conversions             Reis
      - SF  338  Executing modules as scripts                            Coghlan
      - SF  341  Unifying try-except and try-finally                     Brandl
      - SF  342  Coroutines via Enhanced Generators                      GvR, Eby
      - SF  343  The "with" Statement                                    GvR, Coghlan
      - SF  352  Required Superclass for Exceptions                      Cannon, GvR
      - SF  353  Using ssize_t as the index type                         von Löwis
      - SF  357  Allowing Any Object to be Used for Slicing              Oliphant
      - SF  358  The "bytes" Object                                      Schemenauer, GvR
      - SF  362  Function Signature Object                               Cannon, Seo, Selivanov, Hastings
      - SF  366  Main module explicit relative imports                   Coghlan
      - SF  370  Per user site-packages directory                        Heimes
      - SF  371  Addition of the multiprocessing package to the ...      Noller, Oudkerk
      - SF  372  Adding an ordered dictionary to collections             Ronacher, Hettinger
      - SF  378  Format Specifier for Thousands Separator                Hettinger
      - SF  380  Syntax for Delegating to a Subgenerator                 Ewing
      - SF  383  Non-decodable Bytes in System Character Interfaces      v. Löwis
      - SF  384  Defining a Stable ABI                                   v. Löwis
      - SF  389  argparse - New Command Line Parsing Module              Bethard
      - SF  391  Dictionary-Based Configuration For Logging              Sajip
      - SF  393  Flexible String Representation                          v. Löwis
      - SF  397  Python launcher for Windows                             Hammond, v. Löwis
      - SF  405  Python Virtual Environments                             Meyer
      - SF  409  Suppressing exception context                           Furman
      - SF  412  Key-Sharing Dictionary                                  Shannon
      - SF  414  Explicit Unicode Literal for Python 3.3                 Ronacher, Coghlan
      - SF  415  Implement context suppression with exception attributes Peterson
      - SF  417  Including mock in the Standard Library                  Foord
      - SF  418  Add monotonic time, performance counter, and ...        Simpson, Jewett, Turnbull, Stinner
      - SF  420  Implicit Namespace Packages                             Smith
      - SF  421  Adding sys.implementation                               Snow
      - SF  424  A method for exposing a length hint                     Gaynor
      - SF  428  The pathlib module -- object-oriented filesystem paths  Pitrou
      - SF  435  Adding an Enum type to the Python standard library      Warsaw, Bendersky, Furman
      - SF  442  Safe object finalization                                Pitrou
      - SF  443  Single-dispatch generic functions                       Langa
      - SF  445  Add new APIs to customize Python memory allocators      Stinner
      - SF  446  Make newly created file descriptors non-inheritable     Stinner
      - SF  450  Adding A Statistics Module To The Standard Library      D'Aprano
      - SF  451  A ModuleSpec Type for the Import System                 Snow
      - SF  453  Explicit bootstrapping of pip in Python installations   Stufft, Coghlan
      - SF  454  Add a new tracemalloc module to trace Python memory ... Stinner
      - SF  456  Secure and interchangeable hash algorithm               Heimes
      - SF  465  A dedicated infix operator for matrix multiplication    Smith
      - SF  466  Network Security Enhancements for Python 2.7.x          Coghlan
      - SF 3101  Advanced String Formatting                              Talin
      - SF 3102  Keyword-Only Arguments                                  Talin
      - SF 3104  Access to Names in Outer Scopes                         Yee
      - SF 3105  Make print a function                                   Brandl
      - SF 3106  Revamping dict.keys(), .values() and .items()           GvR
      - SF 3107  Function Annotations                                    Winter, Lownds
      - SF 3108  Standard Library Reorganization                         Cannon
      - SF 3109  Raising Exceptions in Python 3000                       Winter
      - SF 3110  Catching Exceptions in Python 3000                      Winter
      - SF 3111  Simple input built-in in Python 3000                    Roberge
      - SF 3112  Bytes literals in Python 3000                           Orendorff
      - SF 3113  Removal of Tuple Parameter Unpacking                    Cannon
      - SF 3114  Renaming iterator.next() to iterator.__next__()         Yee
      - SF 3115  Metaclasses in Python 3000                              Talin
      - SF 3116  New I/O                                                 Stutzbach, GvR, Verdone
      - SF 3118  Revising the buffer protocol                            Oliphant, Banks
      - SF 3119  Introducing Abstract Base Classes                       GvR, Talin
      - SF 3120  Using UTF-8 as the default source encoding              von Löwis
      - SF 3123  Making PyObject_HEAD conform to standard C              von Löwis
      - SF 3127  Integer Literal Support and Syntax                      Maupin
      - SF 3129  Class Decorators                                        Winter
      - SF 3131  Supporting Non-ASCII Identifiers                        von Löwis
      - SF 3132  Extended Iterable Unpacking                             Brandl
      - SF 3134  Exception Chaining and Embedded Tracebacks              Yee
      - SF 3135  New Super                                               Spealman, Delaney, Ryan
      - SF 3137  Immutable Bytes and Mutable Buffer                      GvR
      - SF 3138  String representation in Python 3000                    Ishimoto
      - SF 3141  A Type Hierarchy for Numbers                            Yasskin
      - SF 3144  IP Address Manipulation Library for the Python ...      Moody
      - SF 3147  PYC Repository Directories                              Warsaw
      - SF 3148  futures - execute computations asynchronously           Quinlan
      - SF 3149  ABI version tagged .so files                            Warsaw
      - SF 3151  Reworking the OS and IO exception hierarchy             Pitrou
      - SF 3154  Pickle protocol version 4                               Pitrou
      - SF 3155  Qualified name for classes and functions                Pitrou
      - SF 3156  Asynchronous IO Support Rebooted: the "asyncio" Module  GvR
      -
      - Historical Meta-PEPs and Informational PEPs
      -
      - PF    2  Procedure for Adding New Modules                        Faassen
      - PF   42  Feature Requests                                        Hylton
      - IF  160  Python 1.6 Release Schedule                             Drake
      - IF  200  Python 2.0 Release Schedule                             Hylton
      - IF  226  Python 2.1 Release Schedule                             Hylton
      - IF  251  Python 2.2 Release Schedule                             Warsaw, GvR
      - IF  283  Python 2.3 Release Schedule                             GvR
      - IF  320  Python 2.4 Release Schedule                             Warsaw, Hettinger, Baxter
      - PF  347  Migrating the Python CVS to Subversion                  von Löwis
      - IF  356  Python 2.5 Release Schedule                             Norwitz, GvR, Baxter
      - PF  360  Externally Maintained Packages                          Cannon
      - IF  361  Python 2.6 and 3.0 Release Schedule                     Norwitz, Warsaw
      - PF  374  Choosing a distributed VCS for the Python project       Cannon, Turnbull, Vassalotti, Warsaw, Ochtman
      - IF  375  Python 3.1 Release Schedule                             Peterson
      - PF  385  Migrating from Subversion to Mercurial                  Ochtman, Pitrou, Brandl
      - PA  438  Transitioning to release-file hosting on PyPI           Krekel, Meyer
      - PA  449  Removal of the PyPI Mirror Auto Discovery and ...       Stufft
      - PA  464  Removal of the PyPI Mirror Authenticity API             Stufft
      - PF 3000  Python 3000                                             GvR
      - PF 3002  Procedure for Backwards-Incompatible Changes            Bethard
      - PF 3003  Python Language Moratorium                              Cannon, Noller, GvR
      - PF 3099  Things that will Not Change in Python 3000              Brandl
      - PF 3100  Miscellaneous Python 3.0 Plans                          Cannon
      -
      - Deferred PEPs
      -
      - SD  211  Adding A New Outer Product Operator                     Wilson
      - SD  212  Loop Counter Iteration                                  Schneider-Kamp
      - SD  213  Attribute Access Handlers                               Prescod
      - SD  219  Stackless Python                                        McMillan
      - SD  222  Web Library Enhancements                                Kuchling
      - SD  225  Elementwise/Objectwise Operators                        Zhu, Lielens
      - SD  233  Python Online Help                                      Prescod
      - SD  262  A Database of Installed Python Packages                 Kuchling
      - SD  267  Optimized Access to Module Namespaces                   Hylton
      - SD  269  Pgen Module for Python                                  Riehl
      - SD  280  Optimizing access to globals                            GvR
      - SD  286  Enhanced Argument Tuples                                von Löwis
      - SD  312  Simple Implicit Lambda                                  Suzi, Martelli
      - SD  316  Programming by Contract for Python                      Way
      - SD  323  Copyable Iterators                                      Martelli
      - SD  337  Logging Usage in the Standard Library                   Dubner
      - SD  349  Allow str() to return unicode strings                   Schemenauer
      - SD  368  Standard image protocol and class                       Mastrodomenico
      - ID  396  Module Version Numbers                                  Warsaw
      - SD  400  Deprecate codecs.StreamReader and codecs.StreamWriter   Stinner
      - SD  403  General purpose decorator clause (aka "@in" clause)     Coghlan
      - PD  407  New release cycle and introducing long-term support ... Pitrou, Brandl, Warsaw
      - SD  419  Protecting cleanup statements from interruptions        Colomiets
      - SD  422  Simpler customisation of class creation                 Coghlan, Urban
      - ID  423  Naming conventions and recipes related to packaging     Bryon
      - ID  444  Python Web3 Interface                                   McDonough, Ronacher
      - PD  462  Core development workflow automation for CPython        Coghlan
      - PD  474  Creating forge.python.org                               Coghlan
      - SD  628  Add ``math.tau``                                        Coghlan
      - SD 3124  Overloading, Generic Functions, Interfaces, and ...     Eby
      - SD 3143  Standard daemon process library                         Finney
      - SD 3150  Statement local namespaces (aka "given" clause)         Coghlan
      - SD 3152  Cofunctions                                             Ewing
      -
      - Abandoned, Withdrawn, and Rejected PEPs
      -
      - PW    3  Guidelines for Handling Bug Reports                     Hylton
      - IS  102  Doing Python Micro Releases                             Baxter, Warsaw, GvR
      - SR  204  Range Literals                                          Wouters
      - IW  206  Python Advanced Library                                 Kuchling
      - SW  209  Multi-dimensional Arrays                                Barrett, Oliphant
      - SR  210  Decoupling the Interpreter Loop                         Ascher
      - SS  215  String Interpolation                                    Yee
      - IR  216  Docstring Format                                        Zadka
      - IR  220  Coroutines, Generators, Continuations                   McMillan
      - SR  224  Attribute Docstrings                                    Lemburg
      - SW  228  Reworking Python's Numeric Model                        Zadka, GvR
      - SR  231  __findattr__()                                          Warsaw
      - SR  239  Adding a Rational Type to Python                        Craig, Zadka
      - SR  240  Adding a Rational Literal to Python                     Craig, Zadka
      - SR  242  Numeric Kinds                                           Dubois
      - SW  243  Module Repository Upload Mechanism                      Reifschneider
      - SR  244  The `directive' statement                               von Löwis
      - SR  245  Python Interface Syntax                                 Pelletier
      - SR  246  Object Adaptation                                       Martelli, Evans
      - SR  254  Making Classes Look More Like Types                     GvR
      - SR  256  Docstring Processing System Framework                   Goodger
      - SR  258  Docutils Design Specification                           Goodger
      - SR  259  Omit printing newline after newline                     GvR
      - SR  265  Sorting Dictionaries by Value                           Griffin
      - SW  266  Optimizing Global Variable/Attribute Access             Montanaro
      - SR  268  Extended HTTP functionality and WebDAV                  Stein
      - SR  270  uniq method for list objects                            Petrone
      - SR  271  Prefixing sys.path by command line option               Giacometti
      - SR  275  Switching on Multiple Values                            Lemburg
      - SR  276  Simple Iterator for ints                                Althoff
      - SR  281  Loop Counter Iteration with range and xrange            Hetland
      - SR  284  Integer for-loops                                       Eppstein, Ewing
      - SW  288  Generators Attributes and Exceptions                    Hettinger
      - SR  294  Type Names in the types Module                          Tirosh
      - SR  295  Interpretation of multiline string constants            Koltsov
      - SW  296  Adding a bytes Object Type                              Gilbert
      - SR  297  Support for System Upgrades                             Lemburg
      - SW  298  The Locked Buffer Interface                             Heller
      - SR  299  Special __main__() function in modules                  Epler
      - SR  303  Extend divmod() for Multiple Divisors                   Bellman
      - SW  304  Controlling Generation of Bytecode Files                Montanaro
      - IW  306  How to Change Python's Grammar                          Hudson, Diederich, Coghlan, Peterson
      - SR  310  Reliable Acquisition/Release Pairs                      Hudson, Moore
      - SR  313  Adding Roman Numeral Literals to Python                 Meyer
      - SR  315  Enhanced While Loop                                     Hettinger, Carroll
      - SR  317  Eliminate Implicit Exception Instantiation              Taschuk
      - SR  319  Python Synchronize/Asynchronize Block                   Pelletier
      - SW  321  Date/Time Parsing and Formatting                        Kuchling
      - SR  325  Resource-Release Support for Generators                 Pedroni
      - SR  326  A Case for Top and Bottom Values                        Carlson, Reedy
      - SR  329  Treating Builtins as Constants in the Standard Library  Hettinger
      - SR  330  Python Bytecode Verification                            Pelletier
      - SR  332  Byte vectors and String/Unicode Unification             Montanaro
      - SW  334  Simple Coroutines via SuspendIteration                  Evans
      - SR  335  Overloadable Boolean Operators                          Ewing
      - SR  336  Make None Callable                                      McClelland
      - IW  339  Design of the CPython Compiler                          Cannon
      - SR  340  Anonymous Block Statements                              GvR
      - SS  344  Exception Chaining and Embedded Tracebacks              Yee
      - SW  346  User Defined ("``with``") Statements                    Coghlan
      - SR  348  Exception Reorganization for Python 3.0                 Cannon
      - IR  350  Codetags                                                Elliott
      - SR  351  The freeze protocol                                     Warsaw
      - SS  354  Enumerations in Python                                  Finney
      - SR  355  Path - Object oriented filesystem paths                 Lindqvist
      - SW  359  The "make" Statement                                    Bethard
      - SR  363  Syntax For Dynamic Attribute Access                     North
      - SW  364  Transitioning to the Py3K Standard Library              Warsaw
      - SR  365  Adding the pkg_resources module                         Eby
      - SS  367  New Super                                               Spealman, Delaney
      - SW  369  Post import hooks                                       Heimes
      - SR  377  Allow __enter__() methods to skip the statement body    Coghlan
      - SW  379  Adding an Assignment Expression                         Whitley
      - SR  382  Namespace Packages                                      v. Löwis
      - SS  386  Changing the version comparison module in Distutils     Ziadé
      - SR  390  Static metadata for Distutils                           Ziadé
      - SW  395  Qualified Names for Modules                             Coghlan
      - PR  401  BDFL Retirement                                         Warsaw, Cannon
      - SR  402  Simplified Package Layout and Partitioning              Eby
      - SW  406  Improved Encapsulation of Import State                  Coghlan, Slodkowicz
      - SR  408  Standard library __preview__ package                    Coghlan, Bendersky
      - SR  410  Use decimal.Decimal type for timestamps                 Stinner
      - PW  413  Faster evolution of the Python Standard Library         Coghlan
      - SR  416  Add a frozendict builtin type                           Stinner
      - SS  433  Easier suppression of file descriptor inheritance       Stinner
      - SR  437  A DSL for specifying signatures, annotations and ...    Krah
      - SR  439  Inclusion of implicit pip bootstrap in Python ...       Jones
      - SW  460  Add binary interpolation and formatting                 Pitrou
      - SW  469  Migration of dict iteration code to Python 3            Coghlan
      - SR  666  Reject Foolish Indentation                              Creighton
      - SR  754  IEEE 754 Floating Point Special Values                  Warnes
      - PW 3001  Procedure for reviewing and improving standard ...      Brandl
      - SR 3103  A Switch/Case Statement                                 GvR
      - SR 3117  Postfix type declarations                               Brandl
      - SR 3122  Delineation of the main module                          Cannon
      - SR 3125  Remove Backslash Continuation                           Jewett
      - SR 3126  Remove Implicit String Concatenation                    Jewett, Hettinger
      - SR 3128  BList: A Faster List-like Type                          Stutzbach
      - SR 3130  Access to Current Module/Class/Function                 Jewett
      - SR 3133  Introducing Roles                                       Winter
      - SR 3136  Labeled break and continue                              Chisholm
      - SR 3139  Cleaning out sys and the "interpreter" module           Peterson
      - SR 3140  str(container) should call str(item), not repr(item)    Broytmann, Jewett
      - SR 3142  Add a "while" clause to generator expressions           Britton
      - SW 3145  Asynchronous I/O For subprocess.Popen                   Pruitt, McCreary, Carlson
      - SW 3146  Merging Unladen Swallow into CPython                    Winter, Yasskin, Kleckner
      - SS 3153  Asynchronous IO support                                 Houtven
      -
      -
      -
      -

      Numerical Index

      -
      -     num  title                                                   owner
      -     ---  -----                                                   -----
      - P     1  PEP Purpose and Guidelines                              Warsaw, Hylton, Goodger, Coghlan
      - PF    2  Procedure for Adding New Modules                        Faassen
      - PW    3  Guidelines for Handling Bug Reports                     Hylton
      - P     4  Deprecation of Standard Modules                         von Löwis
      - P     5  Guidelines for Language Evolution                       Prescod
      - P     6  Bug Fix Releases                                        Aahz, Baxter
      - P     7  Style Guide for C Code                                  GvR
      - P     8  Style Guide for Python Code                             GvR, Warsaw, Coghlan
      - P     9  Sample Plaintext PEP Template                           Warsaw
      - P    10  Voting Guidelines                                       Warsaw
      - P    11  Removing support for little used platforms              von Löwis
      - P    12  Sample reStructuredText PEP Template                    Goodger, Warsaw
      -
      - I    20  The Zen of Python                                       Peters
      -
      - PF   42  Feature Requests                                        Hylton
      -
      - SF  100  Python Unicode Integration                              Lemburg
      - I   101  Doing Python Releases 101                               Warsaw, GvR
      - IS  102  Doing Python Micro Releases                             Baxter, Warsaw, GvR
      -
      - IF  160  Python 1.6 Release Schedule                             Drake
      -
      - IF  200  Python 2.0 Release Schedule                             Hylton
      - SF  201  Lockstep Iteration                                      Warsaw
      - SF  202  List Comprehensions                                     Warsaw
      - SF  203  Augmented Assignments                                   Wouters
      - SR  204  Range Literals                                          Wouters
      - SF  205  Weak References                                         Drake
      - IW  206  Python Advanced Library                                 Kuchling
      - SF  207  Rich Comparisons                                        GvR, Ascher
      - SF  208  Reworking the Coercion Model                            Schemenauer, Lemburg
      - SW  209  Multi-dimensional Arrays                                Barrett, Oliphant
      - SR  210  Decoupling the Interpreter Loop                         Ascher
      - SD  211  Adding A New Outer Product Operator                     Wilson
      - SD  212  Loop Counter Iteration                                  Schneider-Kamp
      - SD  213  Attribute Access Handlers                               Prescod
      - SF  214  Extended Print Statement                                Warsaw
      - SS  215  String Interpolation                                    Yee
      - IR  216  Docstring Format                                        Zadka
      - SF  217  Display Hook for Interactive Use                        Zadka
      - SF  218  Adding a Built-In Set Object Type                       Wilson, Hettinger
      - SD  219  Stackless Python                                        McMillan
      - IR  220  Coroutines, Generators, Continuations                   McMillan
      - SF  221  Import As                                               Wouters
      - SD  222  Web Library Enhancements                                Kuchling
      - SF  223  Change the Meaning of \x Escapes                        Peters
      - SR  224  Attribute Docstrings                                    Lemburg
      - SD  225  Elementwise/Objectwise Operators                        Zhu, Lielens
      - IF  226  Python 2.1 Release Schedule                             Hylton
      - SF  227  Statically Nested Scopes                                Hylton
      - SW  228  Reworking Python's Numeric Model                        Zadka, GvR
      - SF  229  Using Distutils to Build Python                         Kuchling
      - SF  230  Warning Framework                                       GvR
      - SR  231  __findattr__()                                          Warsaw
      - SF  232  Function Attributes                                     Warsaw
      - SD  233  Python Online Help                                      Prescod
      - SF  234  Iterators                                               Yee, GvR
      - SF  235  Import on Case-Insensitive Platforms                    Peters
      - SF  236  Back to the __future__                                  Peters
      - SF  237  Unifying Long Integers and Integers                     Zadka, GvR
      - SF  238  Changing the Division Operator                          Zadka, GvR
      - SR  239  Adding a Rational Type to Python                        Craig, Zadka
      - SR  240  Adding a Rational Literal to Python                     Craig, Zadka
      - SF  241  Metadata for Python Software Packages                   Kuchling
      - SR  242  Numeric Kinds                                           Dubois
      - SW  243  Module Repository Upload Mechanism                      Reifschneider
      - SR  244  The `directive' statement                               von Löwis
      - SR  245  Python Interface Syntax                                 Pelletier
      - SR  246  Object Adaptation                                       Martelli, Evans
      - IF  247  API for Cryptographic Hash Functions                    Kuchling
      - IF  248  Python Database API Specification v1.0                  Lemburg
      - IF  249  Python Database API Specification v2.0                  Lemburg
      - SF  250  Using site-packages on Windows                          Moore
      - IF  251  Python 2.2 Release Schedule                             Warsaw, GvR
      - SF  252  Making Types Look More Like Classes                     GvR
      - SF  253  Subtyping Built-in Types                                GvR
      - SR  254  Making Classes Look More Like Types                     GvR
      - SF  255  Simple Generators                                       Schemenauer, Peters, Hetland
      - SR  256  Docstring Processing System Framework                   Goodger
      - I   257  Docstring Conventions                                   Goodger, GvR
      - SR  258  Docutils Design Specification                           Goodger
      - SR  259  Omit printing newline after newline                     GvR
      - SF  260  Simplify xrange()                                       GvR
      - SF  261  Support for "wide" Unicode characters                   Prescod
      - SD  262  A Database of Installed Python Packages                 Kuchling
      - SF  263  Defining Python Source Code Encodings                   Lemburg, von Löwis
      - SF  264  Future statements in simulated shells                   Hudson
      - SR  265  Sorting Dictionaries by Value                           Griffin
      - SW  266  Optimizing Global Variable/Attribute Access             Montanaro
      - SD  267  Optimized Access to Module Namespaces                   Hylton
      - SR  268  Extended HTTP functionality and WebDAV                  Stein
      - SD  269  Pgen Module for Python                                  Riehl
      - SR  270  uniq method for list objects                            Petrone
      - SR  271  Prefixing sys.path by command line option               Giacometti
      - IF  272  API for Block Encryption Algorithms v1.0                Kuchling
      - SF  273  Import Modules from Zip Archives                        Ahlstrom
      - SF  274  Dict Comprehensions                                     Warsaw
      - SR  275  Switching on Multiple Values                            Lemburg
      - SR  276  Simple Iterator for ints                                Althoff
      - SF  277  Unicode file name support for Windows NT                Hodgson
      - SF  278  Universal Newline Support                               Jansen
      - SF  279  The enumerate() built-in function                       Hettinger
      - SD  280  Optimizing access to globals                            GvR
      - SR  281  Loop Counter Iteration with range and xrange            Hetland
      - SF  282  A Logging System                                        Sajip, Mick
      - IF  283  Python 2.3 Release Schedule                             GvR
      - SR  284  Integer for-loops                                       Eppstein, Ewing
      - SF  285  Adding a bool type                                      GvR
      - SD  286  Enhanced Argument Tuples                                von Löwis
      - I   287  reStructuredText Docstring Format                       Goodger
      - SW  288  Generators Attributes and Exceptions                    Hettinger
      - SF  289  Generator Expressions                                   Hettinger
      - I   290  Code Migration and Modernization                        Hettinger
      - IF  291  Backward Compatibility for the Python 2 Standard ...    Norwitz
      - SF  292  Simpler String Substitutions                            Warsaw
      - SF  293  Codec Error Handling Callbacks                          Dörwald
      - SR  294  Type Names in the types Module                          Tirosh
      - SR  295  Interpretation of multiline string constants            Koltsov
      - SW  296  Adding a bytes Object Type                              Gilbert
      - SR  297  Support for System Upgrades                             Lemburg
      - SW  298  The Locked Buffer Interface                             Heller
      - SR  299  Special __main__() function in modules                  Epler
      -
      - SF  301  Package Index and Metadata for Distutils                Jones
      - SF  302  New Import Hooks                                        JvR, Moore
      - SR  303  Extend divmod() for Multiple Divisors                   Bellman
      - SW  304  Controlling Generation of Bytecode Files                Montanaro
      - SF  305  CSV File API                                            Altis, Cole, McNamara, Montanaro, Wells
      - IW  306  How to Change Python's Grammar                          Hudson, Diederich, Coghlan, Peterson
      - SF  307  Extensions to the pickle protocol                       GvR, Peters
      - SF  308  Conditional Expressions                                 GvR, Hettinger
      - SF  309  Partial Function Application                            Harris
      - SR  310  Reliable Acquisition/Release Pairs                      Hudson, Moore
      - SF  311  Simplified Global Interpreter Lock Acquisition for ...  Hammond
      - SD  312  Simple Implicit Lambda                                  Suzi, Martelli
      - SR  313  Adding Roman Numeral Literals to Python                 Meyer
      - SF  314  Metadata for Python Software Packages v1.1              Kuchling, Jones
      - SR  315  Enhanced While Loop                                     Hettinger, Carroll
      - SD  316  Programming by Contract for Python                      Way
      - SR  317  Eliminate Implicit Exception Instantiation              Taschuk
      - SF  318  Decorators for Functions and Methods                    Smith
      - SR  319  Python Synchronize/Asynchronize Block                   Pelletier
      - IF  320  Python 2.4 Release Schedule                             Warsaw, Hettinger, Baxter
      - SW  321  Date/Time Parsing and Formatting                        Kuchling
      - SF  322  Reverse Iteration                                       Hettinger
      - SD  323  Copyable Iterators                                      Martelli
      - SF  324  subprocess - New process module                         Astrand
      - SR  325  Resource-Release Support for Generators                 Pedroni
      - SR  326  A Case for Top and Bottom Values                        Carlson, Reedy
      - SF  327  Decimal Data Type                                       Batista
      - SF  328  Imports: Multi-Line and Absolute/Relative               Aahz
      - SR  329  Treating Builtins as Constants in the Standard Library  Hettinger
      - SR  330  Python Bytecode Verification                            Pelletier
      - SF  331  Locale-Independent Float/String Conversions             Reis
      - SR  332  Byte vectors and String/Unicode Unification             Montanaro
      - IF  333  Python Web Server Gateway Interface v1.0                Eby
      - SW  334  Simple Coroutines via SuspendIteration                  Evans
      - SR  335  Overloadable Boolean Operators                          Ewing
      - SR  336  Make None Callable                                      McClelland
      - SD  337  Logging Usage in the Standard Library                   Dubner
      - SF  338  Executing modules as scripts                            Coghlan
      - IW  339  Design of the CPython Compiler                          Cannon
      - SR  340  Anonymous Block Statements                              GvR
      - SF  341  Unifying try-except and try-finally                     Brandl
      - SF  342  Coroutines via Enhanced Generators                      GvR, Eby
      - SF  343  The "with" Statement                                    GvR, Coghlan
      - SS  344  Exception Chaining and Embedded Tracebacks              Yee
      - SA  345  Metadata for Python Software Packages 1.2               Jones
      - SW  346  User Defined ("``with``") Statements                    Coghlan
      - PF  347  Migrating the Python CVS to Subversion                  von Löwis
      - SR  348  Exception Reorganization for Python 3.0                 Cannon
      - SD  349  Allow str() to return unicode strings                   Schemenauer
      - IR  350  Codetags                                                Elliott
      - SR  351  The freeze protocol                                     Warsaw
      - SF  352  Required Superclass for Exceptions                      Cannon, GvR
      - SF  353  Using ssize_t as the index type                         von Löwis
      - SS  354  Enumerations in Python                                  Finney
      - SR  355  Path - Object oriented filesystem paths                 Lindqvist
      - IF  356  Python 2.5 Release Schedule                             Norwitz, GvR, Baxter
      - SF  357  Allowing Any Object to be Used for Slicing              Oliphant
      - SF  358  The "bytes" Object                                      Schemenauer, GvR
      - SW  359  The "make" Statement                                    Bethard
      - PF  360  Externally Maintained Packages                          Cannon
      - IF  361  Python 2.6 and 3.0 Release Schedule                     Norwitz, Warsaw
      - SF  362  Function Signature Object                               Cannon, Seo, Selivanov, Hastings
      - SR  363  Syntax For Dynamic Attribute Access                     North
      - SW  364  Transitioning to the Py3K Standard Library              Warsaw
      - SR  365  Adding the pkg_resources module                         Eby
      - SF  366  Main module explicit relative imports                   Coghlan
      - SS  367  New Super                                               Spealman, Delaney
      - SD  368  Standard image protocol and class                       Mastrodomenico
      - SW  369  Post import hooks                                       Heimes
      - SF  370  Per user site-packages directory                        Heimes
      - SF  371  Addition of the multiprocessing package to the ...      Noller, Oudkerk
      - SF  372  Adding an ordered dictionary to collections             Ronacher, Hettinger
      - I   373  Python 2.7 Release Schedule                             Peterson
      - PF  374  Choosing a distributed VCS for the Python project       Cannon, Turnbull, Vassalotti, Warsaw, Ochtman
      - IF  375  Python 3.1 Release Schedule                             Peterson
      - SA  376  Database of Installed Python Distributions              Ziadé
      - SR  377  Allow __enter__() methods to skip the statement body    Coghlan
      - SF  378  Format Specifier for Thousands Separator                Hettinger
      - SW  379  Adding an Assignment Expression                         Whitley
      - SF  380  Syntax for Delegating to a Subgenerator                 Ewing
      - S   381  Mirroring infrastructure for PyPI                       Ziadé, v. Löwis
      - SR  382  Namespace Packages                                      v. Löwis
      - SF  383  Non-decodable Bytes in System Character Interfaces      v. Löwis
      - SF  384  Defining a Stable ABI                                   v. Löwis
      - PF  385  Migrating from Subversion to Mercurial                  Ochtman, Pitrou, Brandl
      - SS  386  Changing the version comparison module in Distutils     Ziadé
      - P   387  Backwards Compatibility Policy                          Peterson
      -
      - SF  389  argparse - New Command Line Parsing Module              Bethard
      - SR  390  Static metadata for Distutils                           Ziadé
      - SF  391  Dictionary-Based Configuration For Logging              Sajip
      - I   392  Python 3.2 Release Schedule                             Brandl
      - SF  393  Flexible String Representation                          v. Löwis
      - I   394  The "python" Command on Unix-Like Systems               Staley, Coghlan
      - SW  395  Qualified Names for Modules                             Coghlan
      - ID  396  Module Version Numbers                                  Warsaw
      - SF  397  Python launcher for Windows                             Hammond, v. Löwis
      - I   398  Python 3.3 Release Schedule                             Brandl
      - IF  399  Pure Python/C Accelerator Module Compatibility ...      Cannon
      - SD  400  Deprecate codecs.StreamReader and codecs.StreamWriter   Stinner
      - PR  401  BDFL Retirement                                         Warsaw, Cannon
      - SR  402  Simplified Package Layout and Partitioning              Eby
      - SD  403  General purpose decorator clause (aka "@in" clause)     Coghlan
      - IF  404  Python 2.8 Un-release Schedule                          Warsaw
      - SF  405  Python Virtual Environments                             Meyer
      - SW  406  Improved Encapsulation of Import State                  Coghlan, Slodkowicz
      - PD  407  New release cycle and introducing long-term support ... Pitrou, Brandl, Warsaw
      - SR  408  Standard library __preview__ package                    Coghlan, Bendersky
      - SF  409  Suppressing exception context                           Furman
      - SR  410  Use decimal.Decimal type for timestamps                 Stinner
      - IA  411  Provisional packages in the Python standard library     Coghlan, Bendersky
      - SF  412  Key-Sharing Dictionary                                  Shannon
      - PW  413  Faster evolution of the Python Standard Library         Coghlan
      - SF  414  Explicit Unicode Literal for Python 3.3                 Ronacher, Coghlan
      - SF  415  Implement context suppression with exception attributes Peterson
      - SR  416  Add a frozendict builtin type                           Stinner
      - SF  417  Including mock in the Standard Library                  Foord
      - SF  418  Add monotonic time, performance counter, and ...        Simpson, Jewett, Turnbull, Stinner
      - SD  419  Protecting cleanup statements from interruptions        Colomiets
      - SF  420  Implicit Namespace Packages                             Smith
      - SF  421  Adding sys.implementation                               Snow
      - SD  422  Simpler customisation of class creation                 Coghlan, Urban
      - ID  423  Naming conventions and recipes related to packaging     Bryon
      - SF  424  A method for exposing a length hint                     Gaynor
      - SA  425  Compatibility Tags for Built Distributions              Holth
      - S   426  Metadata for Python Software Packages 2.0               Coghlan, Holth, Stufft
      - SA  427  The Wheel Binary Package Format 1.0                     Holth
      - SF  428  The pathlib module -- object-oriented filesystem paths  Pitrou
      - I   429  Python 3.4 Release Schedule                             Hastings
      - IF  430  Migrating to Python 3 as the default online ...         Coghlan
      - S   431  Time zone support improvements                          Regebro
      - S   432  Simplifying the CPython startup sequence                Coghlan
      - SS  433  Easier suppression of file descriptor inheritance       Stinner
      - I   434  IDLE Enhancement Exception for All Branches             Rovito, Reedy
      - SF  435  Adding an Enum type to the Python standard library      Warsaw, Bendersky, Furman
      - S   436  The Argument Clinic DSL                                 Hastings
      - SR  437  A DSL for specifying signatures, annotations and ...    Krah
      - PA  438  Transitioning to release-file hosting on PyPI           Krekel, Meyer
      - SR  439  Inclusion of implicit pip bootstrap in Python ...       Jones
      - IA  440  Version Identification and Dependency Specification     Coghlan, Stufft
      - S   441  Improving Python ZIP Application Support                Holth
      - SF  442  Safe object finalization                                Pitrou
      - SF  443  Single-dispatch generic functions                       Langa
      - ID  444  Python Web3 Interface                                   McDonough, Ronacher
      - SF  445  Add new APIs to customize Python memory allocators      Stinner
      - SF  446  Make newly created file descriptors non-inheritable     Stinner
      - S   447  Add __getdescriptor__ method to metaclass               Oussoren
      - S   448  Additional Unpacking Generalizations                    Landau
      - PA  449  Removal of the PyPI Mirror Auto Discovery and ...       Stufft
      - SF  450  Adding A Statistics Module To The Standard Library      D'Aprano
      - SF  451  A ModuleSpec Type for the Import System                 Snow
      - I   452  API for Cryptographic Hash Functions v2.0               Kuchling, Heimes
      - SF  453  Explicit bootstrapping of pip in Python installations   Stufft, Coghlan
      - SF  454  Add a new tracemalloc module to trace Python memory ... Stinner
      - S   455  Adding a key-transforming dictionary to collections     Pitrou
      - SF  456  Secure and interchangeable hash algorithm               Heimes
      - I   457  Syntax For Positional-Only Parameters                   Hastings
      - S   458  Surviving a Compromise of PyPI                          Kuppusamy, Stufft, Cappos
      - S   459  Standard Metadata Extensions for Python Software ...    Coghlan
      - SW  460  Add binary interpolation and formatting                 Pitrou
      - SA  461  Adding % formatting to bytes and bytearray              Furman
      - PD  462  Core development workflow automation for CPython        Coghlan
      - S   463  Exception-catching expressions                          Angelico
      - PA  464  Removal of the PyPI Mirror Authenticity API             Stufft
      - SF  465  A dedicated infix operator for matrix multiplication    Smith
      - SF  466  Network Security Enhancements for Python 2.7.x          Coghlan
      - S   467  Minor API improvements for binary sequences             Coghlan
      - S   468  Preserving the order of \*\*kwargs in a function.       Snow
      - SW  469  Migration of dict iteration code to Python 3            Coghlan
      - P   470  Using Multi Index Support for External to PyPI ...      Stufft
      - SA  471  os.scandir() function -- a better and faster ...        Hoyt
      - S   472  Support for indexing with keyword arguments             Borini, Martinot-Lagarde
      - S   473  Adding structured data to built-in exceptions           Kreft
      - PD  474  Creating forge.python.org                               Coghlan
      - S   475  Retry system calls failing with EINTR                   Natali, Stinner
      - S   476  Enabling certificate verification by default for ...    Gaynor
      - SA  477  Backport ensurepip (PEP 453) to Python 2.7              Stufft, Coghlan
      - I   478  Python 3.5 Release Schedule                             Hastings
      -
      - SD  628  Add ``math.tau``                                        Coghlan
      -
      - SR  666  Reject Foolish Indentation                              Creighton
      -
      - SR  754  IEEE 754 Floating Point Special Values                  Warnes
      -
      - PF 3000  Python 3000                                             GvR
      - PW 3001  Procedure for reviewing and improving standard ...      Brandl
      - PF 3002  Procedure for Backwards-Incompatible Changes            Bethard
      - PF 3003  Python Language Moratorium                              Cannon, Noller, GvR
      -
      - PF 3099  Things that will Not Change in Python 3000              Brandl
      - PF 3100  Miscellaneous Python 3.0 Plans                          Cannon
      - SF 3101  Advanced String Formatting                              Talin
      - SF 3102  Keyword-Only Arguments                                  Talin
      - SR 3103  A Switch/Case Statement                                 GvR
      - SF 3104  Access to Names in Outer Scopes                         Yee
      - SF 3105  Make print a function                                   Brandl
      - SF 3106  Revamping dict.keys(), .values() and .items()           GvR
      - SF 3107  Function Annotations                                    Winter, Lownds
      - SF 3108  Standard Library Reorganization                         Cannon
      - SF 3109  Raising Exceptions in Python 3000                       Winter
      - SF 3110  Catching Exceptions in Python 3000                      Winter
      - SF 3111  Simple input built-in in Python 3000                    Roberge
      - SF 3112  Bytes literals in Python 3000                           Orendorff
      - SF 3113  Removal of Tuple Parameter Unpacking                    Cannon
      - SF 3114  Renaming iterator.next() to iterator.__next__()         Yee
      - SF 3115  Metaclasses in Python 3000                              Talin
      - SF 3116  New I/O                                                 Stutzbach, GvR, Verdone
      - SR 3117  Postfix type declarations                               Brandl
      - SF 3118  Revising the buffer protocol                            Oliphant, Banks
      - SF 3119  Introducing Abstract Base Classes                       GvR, Talin
      - SF 3120  Using UTF-8 as the default source encoding              von Löwis
      - SA 3121  Extension Module Initialization and Finalization        von Löwis
      - SR 3122  Delineation of the main module                          Cannon
      - SF 3123  Making PyObject_HEAD conform to standard C              von Löwis
      - SD 3124  Overloading, Generic Functions, Interfaces, and ...     Eby
      - SR 3125  Remove Backslash Continuation                           Jewett
      - SR 3126  Remove Implicit String Concatenation                    Jewett, Hettinger
      - SF 3127  Integer Literal Support and Syntax                      Maupin
      - SR 3128  BList: A Faster List-like Type                          Stutzbach
      - SF 3129  Class Decorators                                        Winter
      - SR 3130  Access to Current Module/Class/Function                 Jewett
      - SF 3131  Supporting Non-ASCII Identifiers                        von Löwis
      - SF 3132  Extended Iterable Unpacking                             Brandl
      - SR 3133  Introducing Roles                                       Winter
      - SF 3134  Exception Chaining and Embedded Tracebacks              Yee
      - SF 3135  New Super                                               Spealman, Delaney, Ryan
      - SR 3136  Labeled break and continue                              Chisholm
      - SF 3137  Immutable Bytes and Mutable Buffer                      GvR
      - SF 3138  String representation in Python 3000                    Ishimoto
      - SR 3139  Cleaning out sys and the "interpreter" module           Peterson
      - SR 3140  str(container) should call str(item), not repr(item)    Broytmann, Jewett
      - SF 3141  A Type Hierarchy for Numbers                            Yasskin
      - SR 3142  Add a "while" clause to generator expressions           Britton
      - SD 3143  Standard daemon process library                         Finney
      - SF 3144  IP Address Manipulation Library for the Python ...      Moody
      - SW 3145  Asynchronous I/O For subprocess.Popen                   Pruitt, McCreary, Carlson
      - SW 3146  Merging Unladen Swallow into CPython                    Winter, Yasskin, Kleckner
      - SF 3147  PYC Repository Directories                              Warsaw
      - SF 3148  futures - execute computations asynchronously           Quinlan
      - SF 3149  ABI version tagged .so files                            Warsaw
      - SD 3150  Statement local namespaces (aka "given" clause)         Coghlan
      - SF 3151  Reworking the OS and IO exception hierarchy             Pitrou
      - SD 3152  Cofunctions                                             Ewing
      - SS 3153  Asynchronous IO support                                 Houtven
      - SF 3154  Pickle protocol version 4                               Pitrou
      - SF 3155  Qualified name for classes and functions                Pitrou
      - SF 3156  Asynchronous IO Support Rebooted: the "asyncio" Module  GvR
      -
      - IF 3333  Python Web Server Gateway Interface v1.0.1              Eby
      -
      -
      -
      -

      Reserved PEP Numbers

      -
      -     num  title                                                   owner
      -     ---  -----                                                   -----
      -     801  RESERVED                                                Warsaw
      -
      -
      -
      -

      Key

      -
      -    S - Standards Track PEP
      -    I - Informational PEP
      -    P - Process PEP
      -
      -    A - Accepted proposal
      -    R - Rejected proposal
      -    W - Withdrawn proposal
      -    D - Deferred proposal
      -    F - Final proposal
      -    A - Active proposal
      -    D - Draft proposal
      -    S - Superseded proposal
      -
      -
      -
      -

      Owners

      -
      -    name                         email address
      -    ----                         -------------
      -    Aahz                         aahz at pythoncraft.com
      -    Ahlstrom, James C.           jim at interet.com
      -    Althoff, Jim                 james_althoff at i2.com
      -    Altis, Kevin                 altis at semi-retired.com
      -    Angelico, Chris              rosuav at gmail.com
      -    Ascher, David                davida at activestate.com
      -    Astrand, Peter               astrand at lysator.liu.se
      -    Banks, Carl                  pythondev at aerojockey.com
      -    Barrett, Paul                barrett at stsci.edu
      -    Batista, Facundo             facundo at taniquetil.com.ar
      -    Baxter, Anthony              anthony at interlink.com.au
      -    Bellman, Thomas              bellman+pep-divmod@lysator.liu.se
      -    Bendersky, Eli               eliben at gmail.com
      -    Bethard, Steven              steven.bethard at gmail.com
      -    Borini, Stefano              
      -    Brandl, Georg                georg at python.org
      -    Britton, Gerald              gerald.britton at gmail.com
      -    Broytmann, Oleg              phd at phd.pp.ru
      -    Bryon, Benoit                benoit at marmelune.net
      -    Cannon, Brett                brett at python.org
      -    Cappos, Justin               jcappos at poly.edu
      -    Carlson, Josiah              jcarlson at uci.edu
      -    Carroll,         W Isaac     icarroll at pobox.com
      -    Chisholm, Matt               matt-python at theory.org
      -    Coghlan, Nick                ncoghlan at gmail.com
      -    Cole, Dave                   djc at object-craft.com.au
      -    Colomiets, Paul              paul at colomiets.name
      -    Craig, Christopher A.        python-pep at ccraig.org
      -    Creighton, Laura             lac at strakt.com
      -    D'Aprano, Steven             steve at pearwood.info
      -    Delaney, Tim                 timothy.c.delaney at gmail.com
      -    Diederich, Jack              jackdied at gmail.com
      -    Dörwald, Walter              walter at livinglogic.de
      -    Drake, Fred L., Jr.          fdrake at acm.org
      -    Dubner, Michael P.           dubnerm at mindless.com
      -    Dubois, Paul F.              paul at pfdubois.com
      -    Eby, P.J.                    pje at telecommunity.com
      -    Eby, Phillip J.              pje at telecommunity.com
      -    Elliott, Micah               mde at tracos.org
      -    Epler, Jeff                  jepler at unpythonic.net
      -    Eppstein, David              eppstein at ics.uci.edu
      -    Evans, Clark C.              cce at clarkevans.com
      -    Ewing, Gregory               greg.ewing at canterbury.ac.nz
      -    Ewing, Greg                  greg.ewing at canterbury.ac.nz
      -    Faassen, Martijn             faassen at infrae.com
      -    Finney, Ben                  ben+python@benfinney.id.au
      -    Foord, Michael               michael at python.org
      -    Furman, Ethan                ethan at stoneleaf.us
      -    Gaynor, Alex                 alex.gaynor at gmail.com
      -    Giacometti, Frédéric B.      fred at arakne.com
      -    Gilbert, Scott               xscottg at yahoo.com
      -    Goodger, David               goodger at python.org
      -    Griffin, Grant               g2 at iowegian.com
      -    Hammond, Mark                mhammond at skippinet.com.au
      -    Harris, Peter                scav at blueyonder.co.uk
      -    Hastings, Larry              larry at hastings.org
      -    Heimes, Christian            christian at python.org
      -    Heller, Thomas               theller at python.net
      -    Hetland, Magnus Lie          magnus at hetland.org
      -    Hettinger, Raymond           python at rcn.com
      -    Hodgson, Neil                neilh at scintilla.org
      -    Holth, Daniel                dholth at gmail.com
      -    Houtven, Laurens Van         _ at lvh.cc
      -    Hoyt, Ben                    benhoyt at gmail.com
      -    Hudson, Michael              mwh at python.net
      -    Hylton, Jeremy               jeremy at alum.mit.edu
      -    Ishimoto, Atsuo              ishimoto--at--gembook.org
      -    Jansen, Jack                 jack at cwi.nl
      -    Jewett, Jim J.               jimjjewett at gmail.com
      -    Jewett, Jim                  jimjjewett at gmail.com
      -    Jones, Richard               richard at python.org
      -    Kleckner, Reid               rnk at mit.edu
      -    Koltsov, Stepan              yozh at mx1.ru
      -    Krah, Stefan                 skrah at bytereef.org
      -    Kreft, Sebastian             skreft at deezer.com
      -    Krekel, Holger               holger at merlinux.eu
      -    Kuchling, A.M.               amk at amk.ca
      -    Kuppusamy, Trishank Karthik  tk47 at students.poly.edu
      -    Landau, Joshua               joshua at landau.ws
      -    Langa, Åukasz                lukasz at langa.pl
      -    Lemburg, Marc-André          mal at lemburg.com
      -    Lielens, Gregory             gregory.lielens at fft.be
      -    Lindqvist, Björn             bjourne at gmail.com
      -    von Löwis, Martin            martin at v.loewis.de
      -    v. Löwis, Martin             martin at v.loewis.de
      -    Lownds, Tony                 tony at lownds.com
      -    Martelli, Alex               aleaxit at gmail.com
      -    Martinot-Lagarde, Joseph     
      -    Mastrodomenico, Lino         l.mastrodomenico at gmail.com
      -    Maupin, Patrick              pmaupin at gmail.com
      -    McClelland, Andrew           eternalsquire at comcast.net
      -    McCreary, Charles R.         
      -    McDonough, Chris             chrism at plope.com
      -    McMillan, Gordon             gmcm at hypernet.com
      -    McNamara, Andrew             andrewm at object-craft.com.au
      -    Meyer, Mike                  mwm at mired.org
      -    Meyer, Carl                  carl at oddbird.net
      -    Mick, Trent                  trentm at activestate.com
      -    Montanaro, Skip              skip at pobox.com
      -    Moody, Peter                 pmoody at google.com
      -    Moore, Paul                  gustav at morpheus.demon.co.uk
      -    Natali, Charles-François     cf.natali at gmail.com
      -    Noller, Jesse                jnoller at gmail.com
      -    North, Ben                   ben at redfrontdoor.org
      -    Norwitz, Neal                nnorwitz at gmail.com
      -    Ochtman, Dirkjan             dirkjan at ochtman.nl
      -    Oliphant, Travis             oliphant at ee.byu.edu
      -    Orendorff, Jason             jason.orendorff at gmail.com
      -    Oudkerk, Richard             r.m.oudkerk at googlemail.com
      -    Oussoren, Ronald             ronaldoussoren at mac.com
      -    Pedroni, Samuele             pedronis at python.org
      -    Pelletier, Michel            michel at users.sourceforge.net
      -    Peters, Tim                  tim at zope.com
      -    Peterson, Benjamin           benjamin at python.org
      -    Petrone, Jason               jp at demonseed.net
      -    Pitrou, Antoine              solipsis at pitrou.net
      -    Prescod, Paul                paul at prescod.net
      -    Pruitt, (James) Eric         
      -    Quinlan, Brian               brian at sweetapp.com
      -    Reedy, Terry                 tjreedy at udel.edu
      -    Regebro, Lennart             regebro at gmail.com
      -    Reifschneider, Sean          jafo-pep at tummy.com
      -    Reis, Christian R.           kiko at async.com.br
      -    Riehl, Jonathan              jriehl at spaceship.com
      -    Roberge, Andre               andre.roberge at gmail.com 
      -    Ronacher, Armin              armin.ronacher at active-4.com
      -    van Rossum, Guido (GvR)      guido at python.org
      -    van Rossum, Just (JvR)       just at letterror.com
      -    Rovito, Todd                 rovitotv at gmail.com
      -    Ryan, Lie                    lie.1296 at gmail.com
      -    Sajip, Vinay                 vinay_sajip at red-dove.com
      -    Schemenauer, Neil            nas at arctrix.com
      -    Schneider-Kamp, Peter        nowonder at nowonder.de
      -    Selivanov, Yury              yselivanov at sprymix.com
      -    Seo, Jiwon                   seojiwon at gmail.com
      -    Shannon, Mark                mark at hotpy.org
      -    Simpson, Cameron             cs at zip.com.au
      -    Slodkowicz, Greg             jergosh at gmail.com
      -    Smith, Nathaniel J.          njs at pobox.com
      -    Smith, Kevin D.              kevin.smith at themorgue.org
      -    Smith, Eric V.               eric at trueblade.com
      -    Snow, Eric                   ericsnowcurrently at gmail.com
      -    Spealman, Calvin             ironfroggy at gmail.com
      -    Staley, Kerrick              mail at kerrickstaley.com
      -    Stein, Greg                  gstein at lyra.org
      -    Stinner, Victor              victor.stinner at gmail.com
      -    Stufft, Donald               donald at stufft.io
      -    Stutzbach, Daniel            daniel at stutzbachenterprises.com
      -    Suzi, Roman                  rnd at onego.ru
      -    Talin                        talin at acm.org
      -    Taschuk, Steven              staschuk at telusplanet.net
      -    Tirosh, Oren                 oren at hishome.net
      -    Turnbull, Stephen J.         stephen at xemacs.org
      -    Urban, Daniel                urban.dani+py@gmail.com
      -    Vassalotti, Alexandre        alexandre at peadrop.com
      -    Verdone, Mike                mike.verdone at gmail.com
      -    Warnes, Gregory R.           gregory_r_warnes at groton.pfizer.com
      -    Warsaw, Barry                barry at python.org
      -    Way, Terence                 terry at wayforward.net
      -    Wells, Cliff                 logiplexsoftware at earthlink.net
      -    Whitley, Jervis              jervisau at gmail.com
      -    Wilson, Greg                 gvwilson at ddj.com
      -    Winter, Collin               collinwinter at google.com
      -    Wouters, Thomas              thomas at python.org
      -    Yasskin, Jeffrey             jyasskin at google.com
      -    Yee, Ka-Ping                 ping at zesty.ca
      -    Zadka, Moshe                 moshez at zadka.site.co.il
      -    Zhu, Huaiyu                  hzhu at users.sourceforge.net
      -    Ziadé, Tarek                 tarek at ziade.org
      -
      -
      -
      -

      References

      -
      -    [1] PEP 1: PEP Purpose and Guidelines
      -    [2] View PEP history online
      -        http://hg.python.org/peps/
      -
      -
      -
      - - diff --git a/peps/tests/peps/pep-0012.html b/peps/tests/peps/pep-0012.html deleted file mode 100644 index e341e82f5..000000000 --- a/peps/tests/peps/pep-0012.html +++ /dev/null @@ -1,53 +0,0 @@ - - --- - - - - - - - - - - - - - - - - - -
      PEP:12
      Title:Sample reStructuredText PEP Template
      Author:David Goodger <goodger at python.org>, -Barry Warsaw <barry at python.org>
      Status:Active
      Type:Process
      Content-Type:text/x-rst
      Created:05-Aug-2002
      Post-History:30-Aug-2002
      -
      -
      -

      Contents

      - -
      -
      -

      Abstract

      -

      This PEP provides a boilerplate or sample template for creating your -own reStructuredText PEPs.

      -
      - - diff --git a/peps/tests/peps/pep-0012.rst b/peps/tests/peps/pep-0012.rst deleted file mode 100644 index 92a90835e..000000000 --- a/peps/tests/peps/pep-0012.rst +++ /dev/null @@ -1,33 +0,0 @@ -PEP: 12 -Title: Sample reStructuredText PEP Template -Author: David Goodger , - Barry Warsaw -Status: Active -Type: Process -Content-Type: text/x-rst -Created: 05-Aug-2002 -Post-History: 30-Aug-2002 - - -Abstract -======== - -This PEP provides a boilerplate or sample template for creating your -own reStructuredText PEPs. - - -Copyright -========= - -This document has been placed in the public domain. - - - -.. - Local Variables: - mode: indented-text - indent-tabs-mode: nil - sentence-end-double-space: t - fill-column: 70 - coding: utf-8 - End: diff --git a/peps/tests/peps/pep-0525.html b/peps/tests/peps/pep-0525.html deleted file mode 100644 index 55a756e0d..000000000 --- a/peps/tests/peps/pep-0525.html +++ /dev/null @@ -1,595 +0,0 @@ - - --- - - - - - - - - - - - - - - - - - - - - - - - - - -
      PEP:525
      Title:Asynchronous Generators
      Version:$Revision$
      Last-Modified:$Date$
      Author:Yury Selivanov <yury at magic.io>
      Discussions-To:<python-dev at python.org>
      Status:Draft
      Type:Standards Track
      Content-Type:text/x-rst
      Created:28-Jul-2016
      Python-Version:3.6
      Post-History:02-Aug-2016
      -
      - -
      -

      Abstract

      -

      PEP 492 introduced support for native coroutines and async/await -syntax to Python 3.5. It is proposed here to extend Python's -asynchronous capabilities by adding support for -asynchronous generators.

      -
      -
      -

      Rationale and Goals

      -

      Regular generators (introduced in PEP 255) enabled an elegant way of -writing complex data producers and have them behave like an iterator.

      -

      However, currently there is no equivalent concept for the asynchronous -iteration protocol (async for). This makes writing asynchronous -data producers unnecessarily complex, as one must define a class that -implements __aiter__ and __anext__ to be able to use it in -an async for statement.

      -

      Essentially, the goals and rationale for PEP 255, applied to the -asynchronous execution case, hold true for this proposal as well.

      -

      Performance is an additional point for this proposal: in our testing of -the reference implementation, asynchronous generators are 2x faster -than an equivalent implemented as an asynchronous iterator.

      -

      As an illustration of the code quality improvement, consider the -following class that prints numbers with a given delay once iterated:

      -
      -class Ticker:
      -    """Yield numbers from 0 to `to` every `delay` seconds."""
      -
      -    def __init__(self, delay, to):
      -        self.delay = delay
      -        self.i = 0
      -        self.to = to
      -
      -    def __aiter__(self):
      -        return self
      -
      -    async def __anext__(self):
      -        i = self.i
      -        if i >= self.to:
      -            raise StopAsyncIteration
      -        self.i += 1
      -        if i:
      -            await asyncio.sleep(self.delay)
      -        return i
      -
      -

      The same can be implemented as a much simpler asynchronous generator:

      -
      -async def ticker(delay, to):
      -    """Yield numbers from 0 to `to` every `delay` seconds."""
      -    for i in range(to):
      -        yield i
      -        await asyncio.sleep(delay)
      -
      -
      -
      -

      Specification

      -

      This proposal introduces the concept of asynchronous generators to -Python.

      -

      This specification presumes knowledge of the implementation of -generators and coroutines in Python (PEP 342, PEP 380 and PEP 492).

      -
      -

      Asynchronous Generators

      -

      A Python generator is any function containing one or more yield -expressions:

      -
      -def func():            # a function
      -    return
      -
      -def genfunc():         # a generator function
      -    yield
      -
      -

      We propose to use the same approach to define -asynchronous generators:

      -
      -async def coro():      # a coroutine function
      -    await smth()
      -
      -async def asyncgen():  # an asynchronous generator function
      -    await smth()
      -    yield 42
      -
      -

      The result of calling an asynchronous generator function is -an asynchronous generator object, which implements the asynchronous -iteration protocol defined in PEP 492.

      -

      It is a SyntaxError to have a non-empty return statement in an -asynchronous generator.

      -
      -
      -

      Support for Asynchronous Iteration Protocol

      -

      The protocol requires two special methods to be implemented:

      -
        -
      1. An __aiter__ method returning an asynchronous iterator.
      2. -
      3. An __anext__ method returning an awaitable object, which uses -StopIteration exception to "yield" values, and -StopAsyncIteration exception to signal the end of the iteration.
      4. -
      -

      Asynchronous generators define both of these methods. Let's manually -iterate over a simple asynchronous generator:

      -
      -async def genfunc():
      -    yield 1
      -    yield 2
      -
      -gen = genfunc()
      -
      -assert gen.__aiter__() is gen
      -
      -assert await gen.__anext__() == 1
      -assert await gen.__anext__() == 2
      -
      -await gen.__anext__()  # This line will raise StopAsyncIteration.
      -
      -
      -
      -

      Finalization

      -

      PEP 492 requires an event loop or a scheduler to run coroutines. -Because asynchronous generators are meant to be used from coroutines, -they also require an event loop to run and finalize them.

      -

      Asynchronous generators can have try..finally blocks, as well as -async with. It is important to provide a guarantee that, even -when partially iterated, and then garbage collected, generators can -be safely finalized. For example:

      -
      -async def square_series(con, to):
      -    async with con.transaction():
      -        cursor = con.cursor(
      -            'SELECT generate_series(0, $1) AS i', to)
      -        async for row in cursor:
      -            yield row['i'] ** 2
      -
      -async for i in square_series(con, 1000):
      -    if i == 100:
      -        break
      -
      -

      The above code defines an asynchronous generator that uses -async with to iterate over a database cursor in a transaction. -The generator is then iterated over with async for, which interrupts -the iteration at some point.

      -

      The square_series() generator will then be garbage collected, -and without a mechanism to asynchronously close the generator, Python -interpreter would not be able to do anything.

      -

      To solve this problem we propose to do the following:

      -
        -
      1. Implement an aclose method on asynchronous generators -returning a special awaitable. When awaited it -throws a GeneratorExit into the suspended generator and -iterates over it until either a GeneratorExit or -a StopAsyncIteration occur.

        -

        This is very similar to what the close() method does to regular -Python generators, except that an event loop is required to execute -aclose().

        -
      2. -
      3. Raise a RuntimeError, when an asynchronous generator executes -a yield expression in its finally block (using await -is fine, though):

        -
        -async def gen():
        -    try:
        -        yield
        -    finally:
        -        await asyncio.sleep(1)   # Can use 'await'.
        -
        -        yield                    # Cannot use 'yield',
        -                                 # this line will trigger a
        -                                 # RuntimeError.
        -
        -
      4. -
      5. Add two new methods to the sys module: -set_asyncgen_finalizer() and get_asyncgen_finalizer().

        -
      6. -
      -

      The idea behind sys.set_asyncgen_finalizer() is to allow event -loops to handle generators finalization, so that the end user -does not need to care about the finalization problem, and it just -works.

      -

      When an asynchronous generator is iterated for the first time, -it stores a reference to the current finalizer. If there is none, -a RuntimeError is raised. This provides a strong guarantee that -every asynchronous generator object will always have a finalizer -installed by the correct event loop.

      -

      When an asynchronous generator is about to be garbage collected, -it calls its cached finalizer. The assumption is that the finalizer -will schedule an aclose() call with the loop that was active -when the iteration started.

      -

      For instance, here is how asyncio is modified to allow safe -finalization of asynchronous generators:

      -
      -# asyncio/base_events.py
      -
      -class BaseEventLoop:
      -
      -    def run_forever(self):
      -        ...
      -        old_finalizer = sys.get_asyncgen_finalizer()
      -        sys.set_asyncgen_finalizer(self._finalize_asyncgen)
      -        try:
      -            ...
      -        finally:
      -            sys.set_asyncgen_finalizer(old_finalizer)
      -            ...
      -
      -    def _finalize_asyncgen(self, gen):
      -        self.create_task(gen.aclose())
      -
      -

      sys.set_asyncgen_finalizer() is thread-specific, so several event -loops running in parallel threads can use it safely.

      -
      -
      -

      Asynchronous Generator Object

      -

      The object is modeled after the standard Python generator object. -Essentially, the behaviour of asynchronous generators is designed -to replicate the behaviour of synchronous generators, with the only -difference in that the API is asynchronous.

      -

      The following methods and properties are defined:

      -
        -
      1. agen.__aiter__(): Returns agen.

        -
      2. -
      3. agen.__anext__(): Returns an awaitable, that performs one -asynchronous generator iteration when awaited.

        -
      4. -
      5. agen.asend(val): Returns an awaitable, that pushes the -val object in the agen generator. When the agen has -not yet been iterated, val must be None.

        -

        Example:

        -
        -async def gen():
        -    await asyncio.sleep(0.1)
        -    v = yield 42
        -    print(v)
        -    await asyncio.sleep(0.2)
        -
        -g = gen()
        -
        -await g.asend(None)      # Will return 42 after sleeping
        -                         # for 0.1 seconds.
        -
        -await g.asend('hello')   # Will print 'hello' and
        -                         # raise StopAsyncIteration
        -                         # (after sleeping for 0.2 seconds.)
        -
        -
      6. -
      7. agen.athrow(typ, [val, [tb]]): Returns an awaitable, that -throws an exception into the agen generator.

        -

        Example:

        -
        -async def gen():
        -    try:
        -        await asyncio.sleep(0.1)
        -        yield 'hello'
        -    except ZeroDivisionError:
        -        await asyncio.sleep(0.2)
        -        yield 'world'
        -
        -g = gen()
        -v = await g.asend(None)
        -print(v)                # Will print 'hello' after
        -                        # sleeping for 0.1 seconds.
        -
        -v = await g.athrow(ZeroDivisionError)
        -print(v)                # Will print 'world' after
        -                        $ sleeping 0.2 seconds.
        -
        -
      8. -
      9. agen.aclose(): Returns an awaitable, that throws a -GeneratorExit exception into the generator. The awaitable can -either return a yielded value, if agen handled the exception, -or agen will be closed and the exception will propagate back -to the caller.

        -
      10. -
      11. agen.__name__ and agen.__qualname__: readable and writable -name and qualified name attributes.

        -
      12. -
      13. agen.ag_await: The object that agen is currently awaiting -on, or None. This is similar to the currently available -gi_yieldfrom for generators and cr_await for coroutines.

        -
      14. -
      15. agen.ag_frame, agen.ag_running, and agen.ag_code: -defined in the same way as similar attributes of standard generators.

        -
      16. -
      -

      StopIteration and StopAsyncIteration are not propagated out of -asynchronous generators, and are replaced with a RuntimeError.

      -
      -
      -

      Implementation Details

      -

      Asynchronous generator object (PyAsyncGenObject) shares the -struct layout with PyGenObject. In addition to that, the -reference implementation introduces three new objects:

      -
        -
      1. PyAsyncGenASend: the awaitable object that implements -__anext__ and asend() methods.
      2. -
      3. PyAsyncGenAThrow: the awaitable object that implements -athrow() and aclose() methods.
      4. -
      5. _PyAsyncGenWrappedValue: every directly yielded object from an -asynchronous generator is implicitly boxed into this structure. This -is how the generator implementation can separate objects that are -yielded using regular iteration protocol from objects that are -yielded using asynchronous iteration protocol.
      6. -
      -

      PyAsyncGenASend and PyAsyncGenAThrow are awaitables (they have -__await__ methods returning self) and are coroutine-like objects -(implementing __iter__, __next__, send() and throw() -methods). Essentially, they control how asynchronous generators are -iterated:

      -pep-0525-1.png -
      -

      PyAsyncGenASend and PyAsyncGenAThrow

      -

      PyAsyncGenASend is a coroutine-like object that drives __anext__ -and asend() methods and implements the asynchronous iteration -protocol.

      -

      agen.asend(val) and agen.__anext__() return instances of -PyAsyncGenASend (which hold references back to the parent -agen object.)

      -

      The data flow is defined as follows:

      -
        -
      1. When PyAsyncGenASend.send(val) is called for the first time, -val is pushed to the parent agen object (using existing -facilities of PyGenObject.)

        -

        Subsequent iterations over the PyAsyncGenASend objects, push -None to agen.

        -

        When a _PyAsyncGenWrappedValue object is yielded, it -is unboxed, and a StopIteration exception is raised with the -unwrapped value as an argument.

        -
      2. -
      3. When PyAsyncGenASend.throw(*exc) is called for the first time, -*exc is throwed into the parent agen object.

        -

        Subsequent iterations over the PyAsyncGenASend objects, push -None to agen.

        -

        When a _PyAsyncGenWrappedValue object is yielded, it -is unboxed, and a StopIteration exception is raised with the -unwrapped value as an argument.

        -
      4. -
      5. return statements in asynchronous generators raise -StopAsyncIteration exception, which is propagated through -PyAsyncGenASend.send() and PyAsyncGenASend.throw() methods.

        -
      6. -
      -

      PyAsyncGenAThrow is very similar to PyAsyncGenASend. The only -difference is that PyAsyncGenAThrow.send(), when called first time, -throws an exception into the parent agen object (instead of pushing -a value into it.)

      -
      -
      -
      -

      New Standard Library Functions and Types

      -
        -
      1. types.AsyncGeneratorType -- type of asynchronous generator -object.
      2. -
      3. sys.set_asyncgen_finalizer() and sys.get_asyncgen_finalizer() -methods to set up asynchronous generators finalizers in event loops.
      4. -
      5. inspect.isasyncgen() and inspect.isasyncgenfunction() -introspection functions.
      6. -
      -
      -
      -

      Backwards Compatibility

      -

      The proposal is fully backwards compatible.

      -

      In Python 3.5 it is a SyntaxError to define an async def -function with a yield expression inside, therefore it's safe to -introduce asynchronous generators in 3.6.

      -
      -
      -
      -

      Performance

      -
      -

      Regular Generators

      -

      There is no performance degradation for regular generators. -The following micro benchmark runs at the same speed on CPython with -and without asynchronous generators:

      -
      -def gen():
      -    i = 0
      -    while i < 100000000:
      -        yield i
      -        i += 1
      -
      -list(gen())
      -
      -
      -
      -

      Improvements over asynchronous iterators

      -

      The following micro-benchmark shows that asynchronous generators -are about 2.3x faster than asynchronous iterators implemented in -pure Python:

      -
      -N = 10 ** 7
      -
      -async def agen():
      -    for i in range(N):
      -        yield i
      -
      -class AIter:
      -    def __init__(self):
      -        self.i = 0
      -
      -    def __aiter__(self):
      -        return self
      -
      -    async def __anext__(self):
      -        i = self.i
      -        if i >= N:
      -            raise StopAsyncIteration
      -        self.i += 1
      -        return i
      -
      -
      -
      -
      -

      Design Considerations

      -
      -

      aiter() and anext() builtins

      -

      Originally, PEP 492 defined __aiter__ as a method that should -return an awaitable object, resulting in an asynchronous iterator.

      -

      However, in CPython 3.5.2, __aiter__ was redefined to return -asynchronous iterators directly. To avoid breaking backwards -compatibility, it was decided that Python 3.6 will support both -ways: __aiter__ can still return an awaitable with -a DeprecationWarning being issued.

      -

      Because of this dual nature of __aiter__ in Python 3.6, we cannot -add a synchronous implementation of aiter() built-in. Therefore, -it is proposed to wait until Python 3.7.

      -
      -
      -

      Asynchronous list/dict/set comprehensions

      -

      Syntax for asynchronous comprehensions is unrelated to the asynchronous -generators machinery, and should be considered in a separate PEP.

      -
      -
      -

      Asynchronous yield from

      -

      While it is theoretically possible to implement yield from support -for asynchronous generators, it would require a serious redesign of the -generators implementation.

      -

      yield from is also less critical for asynchronous generators, since -there is no need provide a mechanism of implementing another coroutines -protocol on top of coroutines. And to compose asynchronous generators a -simple async for loop can be used:

      -
      -async def g1():
      -    yield 1
      -    yield 2
      -
      -async def g2():
      -    async for v in g1():
      -        yield v
      -
      -
      -
      -

      Why the asend() and athrow() methods are necessary

      -

      They make it possible to implement concepts similar to -contextlib.contextmanager using asynchronous generators. -For instance, with the proposed design, it is possible to implement -the following pattern:

      -
      -@async_context_manager
      -async def ctx():
      -    await open()
      -    try:
      -        yield
      -    finally:
      -        await close()
      -
      -async with ctx():
      -    await ...
      -
      -

      Another reason is that it is possible to push data and throw exceptions -into asynchronous generators using the object returned from -__anext__ object, but it is hard to do that correctly. Adding -explicit asend() and athrow() will pave a safe way to -accomplish that.

      -

      In terms of implementation, asend() is a slightly more generic -version of __anext__, and athrow() is very similar to -aclose(). Therefore having these methods defined for asynchronous -generators does not add any extra complexity.

      -
      -
      -
      -

      Example

      -

      A working example with the current reference implementation (will -print numbers from 0 to 9 with one second delay):

      -
      -async def ticker(delay, to):
      -    for i in range(to):
      -        yield i
      -        await asyncio.sleep(delay)
      -
      -
      -async def run():
      -    async for i in ticker(1, 10):
      -        print(i)
      -
      -
      -import asyncio
      -loop = asyncio.get_event_loop()
      -try:
      -    loop.run_until_complete(run())
      -finally:
      -    loop.close()
      -
      -
      -
      -

      Implementation

      -

      The complete reference implementation is available at [1].

      -
      - - - diff --git a/peps/tests/peps/pep-3001-1.png b/peps/tests/peps/pep-3001-1.png deleted file mode 100644 index 7f63aea5041e88f26907237a7131f989a0c975e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14117 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 ngzX&X`Tj - --- - - - - - - - - - - - - - - - - - - - - - -
      PEP:3001
      Title:Procedure for reviewing and improving standard library modules
      Version:$Revision$
      Last-Modified:$Date$
      Author:Georg Brandl <georg at python.org>
      Status:Withdrawn
      Type:Process
      Content-Type:text/x-rst
      Created:05-Apr-2006
      Post-History:
      -
      - -
      -

      Abstract

      -

      This PEP describes a procedure for reviewing and improving standard -library modules, especially those written in Python, making them ready -for Python 3000. There can be different steps of refurbishing, each -of which is described in a section below. Of course, not every step -has to be performed for every module.

      -
      -
      -

      Removal of obsolete modules

      -

      All modules marked as deprecated in 2.x versions should be removed for -Python 3000. The same applies to modules which are seen as obsolete today, -but are too widely used to be deprecated or removed. Python 3000 is the -big occasion to get rid of them. pep-3001-1.png

      -

      There will have to be a document listing all removed modules, together -with information on possible substitutes or alternatives. This infor- -mation will also have to be provided by the python3warn.py porting -helper script mentioned in PEP XXX.

      -
      -
      -

      Renaming modules

      -

      There are proposals for a "great stdlib renaming" introducing a hierarchic -library namespace or a top-level package from which to import standard -modules. That possibility aside, some modules' names are known to have -been chosen unwisely, a mistake which could never be corrected in the 2.x -series. Examples are names like "StringIO" or "Cookie". For Python 3000, -there will be the possibility to give those modules less confusing and -more conforming names.

      -

      Of course, each rename will have to be stated in the documentation of -the respective module and perhaps in the global document of Step 1. -Additionally, the python3warn.py script will recognize the old module -names and notify the user accordingly.

      -

      If the name change is made in time for another release of the Python 2.x -series, it is worth considering to introduce the new name in the 2.x -branch to ease transition.

      -
      -
      -

      Code cleanup

      -

      As most library modules written in Python have not been touched except -for bug fixes, following the policy of never changing a running system, -many of them may contain code that is not up to the newest language -features and could be rewritten in a more concise, modern Python.

      -

      PyChecker should run cleanly over the library. With a carefully tuned -configuration file, PyLint should also emit as few warnings as possible.

      -

      As long as these changes don't change the module's interface and behavior, -no documentation updates are necessary.

      -
      -
      -

      Enhancement of test and documentation coverage

      -

      Code coverage by unit tests varies greatly between modules. Each test -suite should be checked for completeness, and the remaining classic tests -should be converted to PyUnit (or whatever new shiny testing framework -comes with Python 3000, perhaps py.test?).

      -

      It should also be verified that each publicly visible function has a -meaningful docstring which ideally contains several doctests.

      -

      No documentation changes are necessary for enhancing test coverage.

      -
      -
      -

      Unification of module metadata

      -

      This is a small and probably not very important step. There have been -various attempts at providing author, version and similar metadata in -modules (such as a "__version__" global). Those could be standardized -and used throughout the library.

      -

      No documentation changes are necessary for this step, too.

      -
      -
      -

      Backwards incompatible bug fixes

      -

      Over the years, many bug reports have been filed which complained about -bugs in standard library modules, but have subsequently been closed as -"Won't fix" since a fix would have introduced a major incompatibility -which was not acceptable in the Python 2.x series. In Python 3000, the -fix can be applied if the interface per se is still acceptable.

      -

      Each slight behavioral change caused by such fixes must be mentioned in -the documentation, perhaps in a "Changed in Version 3.0" paragraph.

      -
      -
      -

      Interface changes

      -

      The last and most disruptive change is the overhaul of a module's public -interface. If a module's interface is to be changed, a justification -should be made beforehand, or a PEP should be written.

      -

      The change must be fully documented as "New in Version 3.0", and the -python3warn.py script must know about it.

      -
      -
      -

      References

      -

      None yet.

      -
      - - diff --git a/peps/tests/test_commands.py b/peps/tests/test_commands.py deleted file mode 100644 index 2579a5f99..000000000 --- a/peps/tests/test_commands.py +++ /dev/null @@ -1,56 +0,0 @@ -import io - -from bs4 import BeautifulSoup - -from django.test import TestCase, override_settings -from django.conf import settings -from django.core import serializers -from django.core.management import call_command - -import responses - -from pages.models import Image - -from . import FAKE_PEP_ARTIFACT - - -PEP_ARTIFACT_URL = 'https://example.net/fake-peps.tar.gz' - - -@override_settings(PEP_ARTIFACT_URL=PEP_ARTIFACT_URL) -class PEPManagementCommandTests(TestCase): - - def setUp(self): - responses.add( - responses.GET, - PEP_ARTIFACT_URL, - headers={'Last-Modified': 'Sun, 24 Feb 2019 18:01:42 GMT'}, - stream=True, - content_type='application/x-tar', - status=200, - body=open(FAKE_PEP_ARTIFACT, 'rb'), - ) - - @responses.activate - def test_generate_pep_pages_real_with_remote_artifact(self): - call_command('generate_pep_pages') - - @override_settings(PEP_ARTIFACT_URL=FAKE_PEP_ARTIFACT) - def test_generate_pep_pages_real_with_local_artifact(self): - call_command('generate_pep_pages') - - @responses.activate - def test_image_generated(self): - call_command('generate_pep_pages') - img = Image.objects.get(page__path='dev/peps/pep-3001/') - soup = BeautifulSoup(img.page.content.raw, 'lxml') - self.assertIn(settings.MEDIA_URL, soup.find('img')['src']) - - @responses.activate - def test_dump_pep_pages(self): - call_command('generate_pep_pages') - stdout = io.StringIO() - call_command('dump_pep_pages', stdout=stdout) - output = stdout.getvalue() - result = list(serializers.deserialize('json', output)) - self.assertGreater(len(result), 0) diff --git a/peps/tests/test_converters.py b/peps/tests/test_converters.py deleted file mode 100644 index 833bf7c0e..000000000 --- a/peps/tests/test_converters.py +++ /dev/null @@ -1,64 +0,0 @@ -from django.test import TestCase, override_settings -from django.core.exceptions import ImproperlyConfigured -from django.test.utils import captured_stdout - -from peps.converters import get_pep0_page, get_pep_page, add_pep_image - -from . import FAKE_PEP_REPO - - -class PEPConverterTests(TestCase): - - def test_source_link(self): - pep = get_pep_page(FAKE_PEP_REPO, '0525') - self.assertEqual(pep.title, 'PEP 525 -- Asynchronous Generators') - self.assertIn( - 'Source: https://github.com/python/peps/blob/master/pep-0525.txt', - pep.content.rendered - ) - - def test_source_link_rst(self): - pep = get_pep_page(FAKE_PEP_REPO, '0012') - self.assertEqual(pep.title, 'PEP 12 -- Sample reStructuredText PEP Template') - self.assertIn( - 'Source: https://github.com/python/peps/blob/master/pep-0012.rst', - pep.content.rendered - ) - - def test_invalid_pep_number(self): - with captured_stdout() as stdout: - get_pep_page(FAKE_PEP_REPO, '9999999') - self.assertRegex( - stdout.getvalue(), - r"PEP Path '(.*)9999999(.*)' does not exist, skipping" - ) - - def test_add_image_not_found(self): - with captured_stdout() as stdout: - add_pep_image(FAKE_PEP_REPO, '0525', '/path/that/does/not/exist') - self.assertRegex( - stdout.getvalue(), - r"Image Path '(.*)/path/that/does/not/exist(.*)' does not exist, skipping" - ) - - def test_html_do_not_prettify(self): - pep = get_pep_page(FAKE_PEP_REPO, '3001') - self.assertEqual( - pep.title, - 'PEP 3001 -- Procedure for reviewing and improving standard library modules' - ) - self.assertIn( - 'Title:' - 'Procedure for reviewing and improving ' - 'standard library modules\n', - pep.content.rendered - ) - - def test_strip_html_and_body_tags(self): - pep = get_pep_page(FAKE_PEP_REPO, '0525') - self.assertNotIn('', pep.content.rendered) - self.assertNotIn('', pep.content.rendered) - self.assertNotIn('', pep.content.rendered) - self.assertNotIn('', pep.content.rendered) diff --git a/pydotorg/settings/base.py b/pydotorg/settings/base.py index 30dc8de4a..2c392b355 100644 --- a/pydotorg/settings/base.py +++ b/pydotorg/settings/base.py @@ -222,7 +222,6 @@ 'minutes', 'nominations', 'pages', - 'peps', 'sponsors', 'successstories', 'users', @@ -285,10 +284,6 @@ ### Registration mailing lists MAILING_LIST_PSF_MEMBERS = "psf-members-announce-request@python.org" -### PEP Repo Location -PEP_REPO_PATH = None -PEP_ARTIFACT_URL = 'https://pythondotorg-assets-staging.s3.amazonaws.com/fake-peps.tar.gz' - ### Fastly ### FASTLY_API_KEY = False # Set to Fastly API key in production to allow pages to # be purged on save diff --git a/templates/components/pep-widget.html b/templates/components/pep-widget.html deleted file mode 100644 index bba29ea2d..000000000 --- a/templates/components/pep-widget.html +++ /dev/null @@ -1,19 +0,0 @@ -{% load peps %} -
      - -

      - >>> Python Enhancement Proposals (PEPs): The future of Python is discussed here. - -

      - - - {# This isn't that awesome, commenting out for now #} - {% comment %} - {% get_newest_pep_pages as peps %} - - {% endcomment %} -
      \ No newline at end of file diff --git a/templates/python/documentation.html b/templates/python/documentation.html index 7db3662d2..e301b0010 100644 --- a/templates/python/documentation.html +++ b/templates/python/documentation.html @@ -106,7 +106,4 @@

      P

    - - {% include 'components/pep-widget.html' %} - {% endblock content %} diff --git a/templates/python/index.html b/templates/python/index.html index ac8b191df..753a53407 100644 --- a/templates/python/index.html +++ b/templates/python/index.html @@ -85,8 +85,6 @@
    - {% include 'components/pep-widget.html' %} - {% include 'components/psf-widget.html' %} {% endblock content %} From 552229a495fc79990cc311d85080efdecfd652c1 Mon Sep 17 00:00:00 2001 From: Jacob Coffee Date: Mon, 16 Sep 2024 08:05:48 -0500 Subject: [PATCH 142/256] feat(#639): update wording for job tech -> type (#2557) --- ...pe_options_alter_job_job_types_and_more.py | 27 +++++++++++++++++++ jobs/models.py | 8 +++--- 2 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 jobs/migrations/0022_alter_jobtype_options_alter_job_job_types_and_more.py diff --git a/jobs/migrations/0022_alter_jobtype_options_alter_job_job_types_and_more.py b/jobs/migrations/0022_alter_jobtype_options_alter_job_job_types_and_more.py new file mode 100644 index 000000000..4013f2376 --- /dev/null +++ b/jobs/migrations/0022_alter_jobtype_options_alter_job_job_types_and_more.py @@ -0,0 +1,27 @@ +# Generated by Django 4.2.16 on 2024-09-13 17:30 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('jobs', '0021_alter_job_creator_alter_job_last_modified_by_and_more'), + ] + + operations = [ + migrations.AlterModelOptions( + name='jobtype', + options={'ordering': ('name',), 'verbose_name': 'job types', 'verbose_name_plural': 'job types'}, + ), + migrations.AlterField( + model_name='job', + name='job_types', + field=models.ManyToManyField(blank=True, limit_choices_to={'active': True}, related_name='jobs', to='jobs.jobtype', verbose_name='Job types'), + ), + migrations.AlterField( + model_name='job', + name='other_job_type', + field=models.CharField(blank=True, max_length=100, verbose_name='Other job types'), + ), + ] diff --git a/jobs/models.py b/jobs/models.py index 54722873d..8b232fb93 100644 --- a/jobs/models.py +++ b/jobs/models.py @@ -30,8 +30,8 @@ class JobType(NameSlugModel): objects = JobTypeQuerySet.as_manager() class Meta: - verbose_name = 'job technologies' - verbose_name_plural = 'job technologies' + verbose_name = 'job types' + verbose_name_plural = 'job types' ordering = ('name', ) @@ -59,11 +59,11 @@ class Job(ContentManageable): JobType, related_name='jobs', blank=True, - verbose_name='Job technologies', + verbose_name='Job types', limit_choices_to={'active': True}, ) other_job_type = models.CharField( - verbose_name='Other job technologies', + verbose_name='Other job types', max_length=100, blank=True, ) From 7eac3351ee0827dc7f4a311d1164e56b141f3e2a Mon Sep 17 00:00:00 2001 From: Jacob Coffee Date: Mon, 16 Sep 2024 08:06:55 -0500 Subject: [PATCH 143/256] feat(#2492): use newest compose command (#2558) --- Makefile | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 50585463a..bd4291bbe 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ default: .state/docker-build-web: Dockerfile dev-requirements.txt base-requirements.txt # Build web container for this project - docker-compose build --force-rm web + docker compose build --force-rm web # Mark the state so we don't rebuild this needlessly. mkdir -p .state && touch .state/docker-build-web @@ -24,35 +24,35 @@ default: .state/db-initialized: .state/docker-build-web .state/db-migrated # Load all fixtures - docker-compose run --rm web ./manage.py loaddata fixtures/*.json + docker compose run --rm web ./manage.py loaddata fixtures/*.json # Mark the state so we don't rebuild this needlessly. mkdir -p .state && touch .state/db-initialized serve: .state/db-initialized - docker-compose up --remove-orphans + docker compose up --remove-orphans migrations: .state/db-initialized # Run Django makemigrations - docker-compose run --rm web ./manage.py makemigrations + docker compose run --rm web ./manage.py makemigrations migrate: .state/docker-build-web # Run Django migrate - docker-compose run --rm web ./manage.py migrate + docker compose run --rm web ./manage.py migrate manage: .state/db-initialized # Run Django manage to accept arbitrary arguments - docker-compose run --rm web ./manage.py $(filter-out $@,$(MAKECMDGOALS)) + docker compose run --rm web ./manage.py $(filter-out $@,$(MAKECMDGOALS)) shell: .state/db-initialized - docker-compose run --rm web ./manage.py shell + docker compose run --rm web ./manage.py shell clean: - docker-compose down -v + docker compose down -v rm -f .state/docker-build-web .state/db-initialized .state/db-migrated test: .state/db-initialized - docker-compose run --rm web ./manage.py test + docker compose run --rm web ./manage.py test docker_shell: .state/db-initialized - docker-compose run --rm web /bin/bash + docker compose run --rm web /bin/bash From 4aa0d26fc41ab98642f30722b4b94677f494ca2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 10:44:14 -0500 Subject: [PATCH 144/256] Bump panflute from 2.3.0 to 2.3.1 (#2563) Bumps [panflute](https://github.com/sergiocorreia/panflute) from 2.3.0 to 2.3.1. - [Release notes](https://github.com/sergiocorreia/panflute/releases) - [Commits](https://github.com/sergiocorreia/panflute/commits) --- updated-dependencies: - dependency-name: panflute dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index 4f9c0aa39..680685cfc 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -52,5 +52,5 @@ django-extensions==3.1.4 django-import-export==2.7.1 pypandoc==1.12 -panflute==2.3.0 +panflute==2.3.1 Unidecode==1.3.8 From 0969d7213ee012331fa05b12ca35c87fa60a4eb2 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Mon, 16 Sep 2024 11:45:02 -0400 Subject: [PATCH 145/256] Pages: Also purge trailing slash (#2565) Fastly purge requests are sensitive to trailing slash, so to ensure we get the result we want we should also purge that. --- pages/models.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pages/models.py b/pages/models.py index 9b67997e1..c3973ce68 100644 --- a/pages/models.py +++ b/pages/models.py @@ -137,6 +137,8 @@ def purge_fastly_cache(sender, instance, **kwargs): Requires settings.FASTLY_API_KEY being set """ purge_url(f'/{instance.path}') + if not instance.path.endswith('/'): + purge_url(f'/{instance.path}/') def page_image_path(instance, filename): From 1795b1f27dba8b40c27c82675411a8ba4978563b Mon Sep 17 00:00:00 2001 From: Jacob Coffee Date: Mon, 16 Sep 2024 11:00:00 -0500 Subject: [PATCH 146/256] feat: add ngwaf (#2527) * feat: add ngwaf with successful tfplan * docs: update to latest var name * chore: apply formatting * feat: make ngwaf bits enabled via var * fix: use var fvor activation * fix: fix invalid syntax * fix: fix invalid syntax again * chore: use service account * chore: cleanup cruft * fix: apply patch for dynamic dynamic things * Update infra/cdn/README.md * Update infra/cdn/README.md --- infra/.terraform.lock.hcl | 22 +++++++++++++ infra/cdn/README.md | 28 ++++++++++++++-- infra/cdn/main.tf | 69 +++++++++++++++++++++++++++++++++++++++ infra/cdn/ngwaf.tf | 49 +++++++++++++++++++++++++++ infra/cdn/providers.tf | 8 +++++ infra/cdn/variables.tf | 36 +++++++++++++++++++- infra/cdn/versions.tf | 4 +++ infra/main.tf | 18 +++++++--- infra/variables.tf | 7 +++- 9 files changed, 233 insertions(+), 8 deletions(-) create mode 100644 infra/cdn/ngwaf.tf diff --git a/infra/.terraform.lock.hcl b/infra/.terraform.lock.hcl index 165cd9357..5844f52bd 100644 --- a/infra/.terraform.lock.hcl +++ b/infra/.terraform.lock.hcl @@ -22,3 +22,25 @@ provider "registry.terraform.io/fastly/fastly" { "zh:ec8d899cafd925d3492f00c6523c90599aebc43c1373ad4bd6c55f12d2376230", ] } + +provider "registry.terraform.io/signalsciences/sigsci" { + version = "3.3.0" + constraints = "3.3.0" + hashes = [ + "h1:DIoFVzfofY8lQSxFTw9wmQQC28PPMq+5l3xbPNw9gLc=", + "zh:07c25e1cca9c13314429a8430c2e999ad94c7d5e2f2a11501ee2608182387e61", + "zh:07daf79b672f3e0bec7b48e3ac8dcdeec02af06b10d653bd8158a74236b0746b", + "zh:1e24a050c3d3571ec3224c4bb5c82635caf636e707b5993a1cc97c9a1f19fa8f", + "zh:24293ae24b3de13bda8512c47967f01814724805396a1bfbfbfc56f5627615cc", + "zh:2cc6ba7a38d9854146d1d05f4b7a2f8e18a33c1267b768506cbe37168dad01dc", + "zh:42065bfee0cfde04096d6140c65379253359bed49b481a97aff70aa65bf568b3", + "zh:6f7f4d96967dfd92f098b57647d396679b70d92548db6d100c4dc8723569d175", + "zh:a2e4431f045cef16ed152c0d1f8a377b6468351b775ad1ca7ce3fe74fb874be2", + "zh:b0ed1cb03d6f191fe211f10bb59ef8daed6f89e3d99136e7bb5d38f2ac72fa45", + "zh:b61ea18442a65d27b97dd1cd43bdd8d0a56c2b4b8db6355480e89f8507c6782a", + "zh:c31bb2f50ac2a636758f93afec0b9d173be6d7d7476f9e250b4554e70c6d8d82", + "zh:cb7337f7b4678ad7ece28741069c07ce5601d2a103a9667db568cf10ed0ee5a2", + "zh:d521a7dac51733aebb0905e25b8f7c1279d83c06136e87826e010c667528fd3e", + "zh:ef791688acee3b8b1191b3c6dc54dabf69612dbfb666720280b492ce348a3a06", + ] +} diff --git a/infra/cdn/README.md b/infra/cdn/README.md index 6ebe5a637..a667f63db 100644 --- a/infra/cdn/README.md +++ b/infra/cdn/README.md @@ -29,5 +29,29 @@ N/A ## Requirements Tested on -- Tested on Terraform 1.8.5 -- Fastly provider 5.13.0 \ No newline at end of file +- Tested on Terraform 1.9.5 +- Fastly provider 5.13.0 + +# Fastly's NGWAF + +This module also conditionally can set up the Fastly Next-Gen Web Application Firewall (NGWAF) +for our Fastly services related to python.org / test.python.org. + +## Usage + +```hcl +module "fastly_production" { + source = "./cdn" + + ... + activate_ngwaf_service = true + ... +} +``` + +## Requirements + +Tested on +- Terraform 1.9.5 +- Fastly provider 5.13.0 +- SigSci provider 3.3.0 \ No newline at end of file diff --git a/infra/cdn/main.tf b/infra/cdn/main.tf index 12d1fbba4..eb6c6858c 100644 --- a/infra/cdn/main.tf +++ b/infra/cdn/main.tf @@ -342,4 +342,73 @@ resource "fastly_service_vcl" "python_org" { response = "Forbidden" status = 403 } + + dynamic "dictionary" { + for_each = var.activate_ngwaf_service ? [1] : [] + content { + name = var.edge_security_dictionary + } + } + + dynamic "dynamicsnippet" { + for_each = var.activate_ngwaf_service ? [1] : [] + content { + name = "ngwaf_config_init" + type = "init" + priority = 0 + } + } + + dynamic "dynamicsnippet" { + for_each = var.activate_ngwaf_service ? [1] : [] + content { + name = "ngwaf_config_miss" + type = "miss" + priority = 9000 + } + } + + dynamic "dynamicsnippet" { + for_each = var.activate_ngwaf_service ? [1] : [] + content { + name = "ngwaf_config_pass" + type = "pass" + priority = 9000 + } + } + + dynamic "dynamicsnippet" { + for_each = var.activate_ngwaf_service ? [1] : [] + content { + name = "ngwaf_config_deliver" + type = "deliver" + priority = 9000 + } + } + + lifecycle { + ignore_changes = [ + product_enablement, + ] + } +} + +output "service_id" { + value = fastly_service_vcl.python_org.id + description = "The ID of the Fastly service" +} + +output "backend_address" { + value = var.backend_address + description = "The backend address for the service." +} + +output "service_name" { + value = var.name + description = "The name of the Fastly service" +} + +output "domain" { + value = var.domain + description = "The domain of the Fastly service" } diff --git a/infra/cdn/ngwaf.tf b/infra/cdn/ngwaf.tf new file mode 100644 index 000000000..8ca3a61f6 --- /dev/null +++ b/infra/cdn/ngwaf.tf @@ -0,0 +1,49 @@ +resource "fastly_service_dictionary_items" "edge_security_dictionary_items" { + count = var.activate_ngwaf_service ? 1 : 0 + service_id = fastly_service_vcl.python_org.id + dictionary_id = one([for d in fastly_service_vcl.python_org.dictionary : d.dictionary_id if d.name == var.edge_security_dictionary]) + items = { + Enabled : "100" + } +} + +resource "fastly_service_dynamic_snippet_content" "ngwaf_config_snippets" { + for_each = var.activate_ngwaf_service ? toset(["init", "miss", "pass", "deliver"]) : [] + service_id = fastly_service_vcl.python_org.id + snippet_id = one([for d in fastly_service_vcl.python_org.dynamicsnippet : d.snippet_id if d.name == "ngwaf_config_${each.key}"]) + content = "### Terraform managed ngwaf_config_${each.key}" + manage_snippets = false +} + +# NGWAF Edge Deployment on SignalSciences.net +resource "sigsci_edge_deployment" "ngwaf_edge_site_service" { + count = var.activate_ngwaf_service ? 1 : 0 + provider = sigsci.firewall + site_short_name = var.ngwaf_site_name +} + +resource "sigsci_edge_deployment_service" "ngwaf_edge_service_link" { + count = var.activate_ngwaf_service ? 1 : 0 + provider = sigsci.firewall + site_short_name = var.ngwaf_site_name + fastly_sid = fastly_service_vcl.python_org.id + activate_version = var.activate_ngwaf_service + percent_enabled = 100 + depends_on = [ + sigsci_edge_deployment.ngwaf_edge_site_service, + fastly_service_vcl.python_org, + fastly_service_dictionary_items.edge_security_dictionary_items, + fastly_service_dynamic_snippet_content.ngwaf_config_snippets, + ] +} + +resource "sigsci_edge_deployment_service_backend" "ngwaf_edge_service_backend_sync" { + count = var.activate_ngwaf_service ? 1 : 0 + provider = sigsci.firewall + site_short_name = var.ngwaf_site_name + fastly_sid = fastly_service_vcl.python_org.id + fastly_service_vcl_active_version = fastly_service_vcl.python_org.active_version + depends_on = [ + sigsci_edge_deployment_service.ngwaf_edge_service_link, + ] +} diff --git a/infra/cdn/providers.tf b/infra/cdn/providers.tf index 201f5de4a..bdee7a807 100644 --- a/infra/cdn/providers.tf +++ b/infra/cdn/providers.tf @@ -2,3 +2,11 @@ provider "fastly" { alias = "cdn" api_key = var.fastly_key } + +provider "sigsci" { + alias = "firewall" + corp = var.ngwaf_corp_name + email = var.ngwaf_email + auth_token = var.ngwaf_token + fastly_api_key = var.fastly_key +} diff --git a/infra/cdn/variables.tf b/infra/cdn/variables.tf index 4cbf6db6e..5c1be4562 100644 --- a/infra/cdn/variables.tf +++ b/infra/cdn/variables.tf @@ -40,4 +40,38 @@ variable "backend_address" { variable "default_ttl" { type = number description = "The default TTL for the service." -} \ No newline at end of file +} + +## NGWAF +variable "activate_ngwaf_service" { + type = bool + description = "Whether to activate the NGWAF service." +} +variable "edge_security_dictionary" { + type = string + description = "The dictionary name for the Edge Security product." + default = "" +} +variable "ngwaf_corp_name" { + type = string + description = "Corp name for NGWAF" + default = "python" +} +variable "ngwaf_site_name" { + type = string + description = "Site SHORT name for NGWAF" + + validation { + condition = can(regex("^(test|stage|prod)$", var.ngwaf_site_name)) + error_message = "'ngwaf_site_name' must be one of the following: test, stage, or prod" + } +} +variable "ngwaf_email" { + type = string + description = "Email address associated with the token for the NGWAF API." +} +variable "ngwaf_token" { + type = string + description = "Secret token for the NGWAF API." + sensitive = true +} diff --git a/infra/cdn/versions.tf b/infra/cdn/versions.tf index da9c01f79..f8c137ba6 100644 --- a/infra/cdn/versions.tf +++ b/infra/cdn/versions.tf @@ -4,5 +4,9 @@ terraform { source = "fastly/fastly" version = "5.13.0" } + sigsci = { + source = "signalsciences/sigsci" + version = "3.3.0" + } } } diff --git a/infra/main.tf b/infra/main.tf index b3ec26a77..90c2ba9c5 100644 --- a/infra/main.tf +++ b/infra/main.tf @@ -12,15 +12,20 @@ module "fastly_production" { fastly_key = var.FASTLY_API_KEY fastly_header_token = var.FASTLY_HEADER_TOKEN s3_logging_keys = var.fastly_s3_logging + + ngwaf_site_name = "prod" + ngwaf_email = "infrastructure-staff@python.org" + ngwaf_token = var.ngwaf_token + activate_ngwaf_service = false } module "fastly_staging" { source = "./cdn" - name = "test.python.org" - domain = "test.python.org" - subdomain = "www.test.python.org" - extra_domains = ["www.test.python.org"] + name = "test.python.org" + domain = "test.python.org" + subdomain = "www.test.python.org" + extra_domains = ["www.test.python.org"] # TODO: adjust to test-pythondotorg when done testing NGWAF backend_address = "pythondotorg.ingress.us-east-2.psfhosted.computer" default_ttl = 3600 @@ -29,4 +34,9 @@ module "fastly_staging" { fastly_key = var.FASTLY_API_KEY fastly_header_token = var.FASTLY_HEADER_TOKEN s3_logging_keys = var.fastly_s3_logging + + ngwaf_site_name = "test" + ngwaf_email = "infrastructure-staff@python.org" + ngwaf_token = var.ngwaf_token + activate_ngwaf_service = true } diff --git a/infra/variables.tf b/infra/variables.tf index ec23b23ec..33fc1dda5 100644 --- a/infra/variables.tf +++ b/infra/variables.tf @@ -17,4 +17,9 @@ variable "fastly_s3_logging" { type = map(string) description = "S3 bucket keys for Fastly logging" sensitive = true -} \ No newline at end of file +} +variable "ngwaf_token" { + type = string + description = "Secret token for the NGWAF API." + sensitive = true +} From 097df08265800240d092645328f271dfad3582a5 Mon Sep 17 00:00:00 2001 From: Jacob Coffee Date: Mon, 16 Sep 2024 12:13:12 -0500 Subject: [PATCH 147/256] fix: recreate dictionary each run (#2568) * fix: recreate dictionary each run * Update infra/cdn/main.tf --- infra/cdn/main.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/cdn/main.tf b/infra/cdn/main.tf index eb6c6858c..c50888e3f 100644 --- a/infra/cdn/main.tf +++ b/infra/cdn/main.tf @@ -347,6 +347,7 @@ resource "fastly_service_vcl" "python_org" { for_each = var.activate_ngwaf_service ? [1] : [] content { name = var.edge_security_dictionary + force_destroy = true } } From edee24abe775f9ac7133134a9fe16b8adbe11254 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Tue, 17 Sep 2024 11:38:35 -0400 Subject: [PATCH 148/256] add a name for the ngwaf edge dictionary (#2579) --- infra/cdn/variables.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/cdn/variables.tf b/infra/cdn/variables.tf index 5c1be4562..ec0a11a83 100644 --- a/infra/cdn/variables.tf +++ b/infra/cdn/variables.tf @@ -50,7 +50,7 @@ variable "activate_ngwaf_service" { variable "edge_security_dictionary" { type = string description = "The dictionary name for the Edge Security product." - default = "" + default = "Edge_Security" } variable "ngwaf_corp_name" { type = string From 2856d9cc906b1f5f35debe00f19b0e9887947b0f Mon Sep 17 00:00:00 2001 From: Jacob Coffee Date: Tue, 17 Sep 2024 11:03:47 -0500 Subject: [PATCH 149/256] infra: activate by default (#2580) * infra: activate by default * Update infra/cdn/main.tf --- infra/cdn/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/cdn/main.tf b/infra/cdn/main.tf index c50888e3f..e7aa77108 100644 --- a/infra/cdn/main.tf +++ b/infra/cdn/main.tf @@ -4,7 +4,7 @@ resource "fastly_service_vcl" "python_org" { http3 = false stale_if_error = false stale_if_error_ttl = 43200 - activate = false + activate = true domain { name = var.domain From 6b4c6815f06313ba84b7f5bb1d787faa14c4ff6d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Sep 2024 14:49:59 -0500 Subject: [PATCH 150/256] Bump django-ordered-model from 3.4.3 to 3.7.4 (#2544) Bumps [django-ordered-model](https://github.com/django-ordered-model/django-ordered-model) from 3.4.3 to 3.7.4. - [Release notes](https://github.com/django-ordered-model/django-ordered-model/releases) - [Changelog](https://github.com/django-ordered-model/django-ordered-model/blob/master/CHANGES.md) - [Commits](https://github.com/django-ordered-model/django-ordered-model/compare/3.4.3...3.7.4) --- updated-dependencies: - dependency-name: django-ordered-model dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jacob Coffee --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index 680685cfc..f616b8cb6 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -42,7 +42,7 @@ django-waffle==2.2.1 djangorestframework==3.14.0 # 3.14.0 is first version that supports Django 4.1, 4.2 support hasnt been "released" django-filter==2.4.0 -django-ordered-model==3.4.3 +django-ordered-model==3.7.4 django-widget-tweaks==1.5.0 django-countries==7.2.1 num2words==0.5.10 From 306a73df3c120664031670a47b04c3d8cc56c8c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Sep 2024 15:08:46 -0500 Subject: [PATCH 151/256] Bump num2words from 0.5.10 to 0.5.13 (#2574) Bumps [num2words](https://github.com/savoirfairelinux/num2words) from 0.5.10 to 0.5.13. - [Release notes](https://github.com/savoirfairelinux/num2words/releases) - [Changelog](https://github.com/savoirfairelinux/num2words/blob/master/CHANGES.rst) - [Commits](https://github.com/savoirfairelinux/num2words/compare/v0.5.10...v0.5.13) --- updated-dependencies: - dependency-name: num2words dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index f616b8cb6..d8b1295c9 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -45,7 +45,7 @@ django-filter==2.4.0 django-ordered-model==3.7.4 django-widget-tweaks==1.5.0 django-countries==7.2.1 -num2words==0.5.10 +num2words==0.5.13 django-polymorphic==3.1.0 # 3.1.0 is first version that supports Django 4.0, unsure if it fully supports 4.2 sorl-thumbnail==12.7.0 django-extensions==3.1.4 From e4883ee2b48b7ba8e9dd72166b1006ffbeb8917e Mon Sep 17 00:00:00 2001 From: Jacob Coffee Date: Wed, 18 Sep 2024 13:22:40 -0500 Subject: [PATCH 152/256] feat(#1612): add rss feed for latest downloads (#2569) * feat: add rss feed for latest downloads * Update downloads/views.py * fix: query DB for releas * fix: query DB for releas * chore: add missing types * fix: update naive datetime, remove staticmethod * fix: remove staticmethod chore: apply formatting and ruuuuuff * chore: no logging needed after working * tests: add them * chore: address code reviews * chore: remove unused imports * chore: remove unused code * chore: remove unused code * fix: purge cdn cache * revert: put the code back, john --- downloads/models.py | 1 + downloads/tests/test_views.py | 42 ++++++++++++++++++++++++++++++ downloads/urls.py | 1 + downloads/views.py | 49 +++++++++++++++++++++++++++++++++++ 4 files changed, 93 insertions(+) diff --git a/downloads/models.py b/downloads/models.py index 4a9c5781c..4576afb2f 100644 --- a/downloads/models.py +++ b/downloads/models.py @@ -272,6 +272,7 @@ def purge_fastly_download_pages(sender, instance, **kwargs): if instance.is_published: # Purge our common pages purge_url('/downloads/') + purge_url('/downloads/feed.rss') purge_url('/downloads/latest/python2/') purge_url('/downloads/latest/python3/') purge_url('/downloads/macos/') diff --git a/downloads/tests/test_views.py b/downloads/tests/test_views.py index c585fe05c..b559a2adc 100644 --- a/downloads/tests/test_views.py +++ b/downloads/tests/test_views.py @@ -554,3 +554,45 @@ def test_filter_release_file_delete_by_release(self): headers={"authorization": self.Authorization} ) self.assertEqual(response.status_code, 405) + +class ReleaseFeedTests(BaseDownloadTests): + """Tests for the downloads/feed.rss endpoint. + + Content is ensured via setUp in BaseDownloadTests. + """ + + url = reverse("downloads:feed") + + + def test_endpoint_reachable(self) -> None: + response = self.client.get(self.url) + self.assertEqual(response.status_code, 200) + + def test_feed_content(self) -> None: + """Ensure feed content is as expected. + + Some things we want to check: + - Feed title, description, pubdate + - Feed items (releases) are in the correct order + - We get the expected number of releases (10) + """ + response = self.client.get(self.url) + content = response.content.decode() + + self.assertIn("Python 2.7.5", content) + self.assertIn("Python 3.10", content) + # Published but hidden show up in the API and thus the feed + self.assertIn("Python 0.0.0", content) + + # No unpublished releases + self.assertNotIn("Python 9.7.2", content) + + # Pre-releases are shown + self.assertIn("Python 3.9.90", content) + + def test_feed_item_count(self) -> None: + response = self.client.get(self.url) + content = response.content.decode() + + # In BaseDownloadTests, we create 5 releases, 4 of which are published, 1 of those published are hidden.. + self.assertEqual(content.count(""), 4) diff --git a/downloads/urls.py b/downloads/urls.py index d64f0a1ad..f553caeaa 100644 --- a/downloads/urls.py +++ b/downloads/urls.py @@ -9,4 +9,5 @@ path('release//', views.DownloadReleaseDetail.as_view(), name='download_release_detail'), path('/', views.DownloadOSList.as_view(), name='download_os_list'), path('', views.DownloadHome.as_view(), name='download'), + path("feed.rss", views.ReleaseFeed(), name="feed"), ] diff --git a/downloads/views.py b/downloads/views.py index 746845402..92e851545 100644 --- a/downloads/views.py +++ b/downloads/views.py @@ -1,7 +1,14 @@ +from typing import Any + +from datetime import datetime + from django.db.models import Prefetch from django.urls import reverse +from django.utils import timezone from django.views.generic import DetailView, TemplateView, ListView, RedirectView from django.http import Http404 +from django.contrib.syndication.views import Feed +from django.utils.feedgenerator import Rss201rev2Feed from .models import OS, Release, ReleaseFile @@ -147,3 +154,45 @@ def get_context_data(self, **kwargs): ) return context + + +class ReleaseFeed(Feed): + """Generate an RSS feed of the latest Python releases. + + .. note:: It may seem like these are unused methods, but the superclass uses them + using Django's Syndication framework. + Docs: https://docs.djangoproject.com/en/4.2/ref/contrib/syndication/ + """ + + feed_type = Rss201rev2Feed + title = "Python Releases" + description = "Latest Python releases from Python.org" + + @staticmethod + def link() -> str: + """Return the URL to the main downloads page.""" + return reverse("downloads:download") + + def items(self) -> list[dict[str, Any]]: + """Return the latest Python releases.""" + return Release.objects.filter(is_published=True).order_by("-release_date")[:10] + + def item_title(self, item: Release) -> str: + """Return the release name as the item title.""" + return item.name + + def item_description(self, item: Release) -> str: + """Return the release version and release date as the item description.""" + return f"Version: {item.version}, Release Date: {item.release_date}" + + def item_pubdate(self, item: Release) -> datetime | None: + """Return the release date as the item publication date.""" + if item.release_date: + if timezone.is_naive(item.release_date): + return timezone.make_aware(item.release_date) + return item.release_date + return None + + def item_guid(self, item: Release) -> str: + """Return a unique ID for the item based on DB record.""" + return str(item.pk) From 993d52deed99ae6a808ff3f70ebdbcb78dd000f3 Mon Sep 17 00:00:00 2001 From: Jacob Coffee Date: Wed, 18 Sep 2024 13:25:12 -0500 Subject: [PATCH 153/256] infra: update templates to new form style, add config links (#2571) * infra: update templates to new form style, add config links * fix: update links * chore: casing * chore: no caps! --- .github/ISSUE_TEMPLATE/BUG.yml | 119 ++++++++++++++++++++++ .github/ISSUE_TEMPLATE/DOCS.yml | 23 +++++ .github/ISSUE_TEMPLATE/REQUEST.yml | 66 ++++++++++++ .github/ISSUE_TEMPLATE/bug_report.md | 45 -------- .github/ISSUE_TEMPLATE/config.yml | 14 +++ .github/ISSUE_TEMPLATE/feature_request.md | 27 ----- 6 files changed, 222 insertions(+), 72 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/BUG.yml create mode 100644 .github/ISSUE_TEMPLATE/DOCS.yml create mode 100644 .github/ISSUE_TEMPLATE/REQUEST.yml delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml new file mode 100644 index 000000000..9adc2b03a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -0,0 +1,119 @@ +name: "Bug Report" +description: Report a bug with pyton.org website to help us improve +title: "Bug: " +labels: ["bug", "Triage Required"] + +body: + - type: markdown + attributes: + value: | + This is the repository and issue tracker for the https://www.pyton.org website. + + If you're looking to file an issue with CPython itself, please click here: [CPython Issues](https://github.com/python/cpython/issues/new/choose). + + Issues related to [Python's documentation](https://docs.python.org) can also be filed [here](https://github.com/python/cpython/issues/new?assignees=&labels=docs&template=documentation.md). + + - type: textarea + id: description + attributes: + label: "Describe the bug" + description: A clear and concise description of what the bug is. + validations: + required: true + + - type: textarea + id: reproduction + attributes: + label: "To Reproduce" + description: Steps to reproduce the behavior + placeholder: | + 1. Go to '...' + 2. Click on '....' + 3. Scroll down to '....' + 4. See error + validations: + required: true + + - type: textarea + id: expected + attributes: + label: "Expected behavior" + description: A clear and concise description of what you expected to happen. + validations: + required: true + + - type: input + id: reprod-url + attributes: + label: "URL to the issue" + description: Please enter the URL to provide a reproduction of the issue, if applicable + placeholder: ex. https://python.org/my-issue/here + validations: + required: false + + - type: textarea + id: screenshot + attributes: + label: "Screenshots" + description: If applicable, add screenshots to help explain your problem. + value: | + "![SCREENSHOT_DESCRIPTION](SCREENSHOT_LINK.png)" + render: bash + validations: + required: false + + - type: dropdown + id: browsers + attributes: + label: "Browsers" + description: What browsers are you seeing the problem on? + multiple: true + options: + - Firefox + - Chrome + - Safari + - Microsoft Edge + - Other + validations: + required: true + + - type: dropdown + id: os + attributes: + label: "Operating System" + description: What operating system are you using? + options: + - Windows + - macOS + - Linux + - iOS + - Android + - Other + validations: + required: true + + - type: input + id: version + attributes: + label: "Browser Version" + description: What version of the browser are you using? + placeholder: "e.g. 22" + validations: + required: false + + - type: textarea + id: logs + attributes: + label: "Relevant log output" + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: shell + validations: + required: false + + - type: textarea + id: additional + attributes: + label: "Additional context" + description: Add any other context about the problem here. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/DOCS.yml b/.github/ISSUE_TEMPLATE/DOCS.yml new file mode 100644 index 000000000..df7a2c231 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/DOCS.yml @@ -0,0 +1,23 @@ +name: "Documentation Update" +description: Create an issue for documentation changes +title: "Docs: <title>" +labels: ["documentation"] + +body: + - type: markdown + attributes: + value: | + This is the repository and issue tracker for the https://www.pyton.org website. + + If you're looking to file an issue with CPython itself, please click here: [CPython Issues](https://github.com/python/cpython/issues/new/choose). + + Issues related to [Python's documentation](https://docs.python.org) can also be filed [here](https://github.com/python/cpython/issues/new?assignees=&labels=docs&template=documentation.md). + + - type: textarea + id: summary + attributes: + label: "Summary" + description: Provide a brief summary of your request + placeholder: We need to update the documentation to include information about... + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/REQUEST.yml b/.github/ISSUE_TEMPLATE/REQUEST.yml new file mode 100644 index 000000000..144ad75c1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/REQUEST.yml @@ -0,0 +1,66 @@ +name: "Feature Request" +description: Suggest an idea for www.pyton.org +title: "Enhancement: <title>" +labels: ["enhancement"] + +body: + - type: markdown + attributes: + value: | + This is the repository and issue tracker for the https://www.pyton.org website. + + If you're looking to file an issue with CPython itself, please click here: [CPython Issues](https://github.com/python/cpython/issues/new/choose). + + Issues related to [Python's documentation](https://docs.python.org) can also be filed [here](https://github.com/python/cpython/issues/new?assignees=&labels=docs&template=documentation.md). + + - type: textarea + id: problem + attributes: + label: "Is your feature request related to a problem? Please describe." + description: A clear and concise description of what the problem is. + placeholder: Ex. I'm always frustrated when [...] + validations: + required: true + + - type: textarea + id: solution + attributes: + label: "Describe the solution you'd like" + description: A clear and concise description of what you want to happen. + placeholder: Ex. It would be great if [...] + validations: + required: true + + - type: textarea + id: basic_example + attributes: + label: "Basic Example" + description: Provide some basic examples of your feature request. + placeholder: Describe how your feature would work with a simple example. + validations: + required: false + + - type: textarea + id: alternatives + attributes: + label: "Describe alternatives you've considered" + description: A clear and concise description of any alternative solutions or features you've considered. + validations: + required: false + + - type: textarea + id: drawbacks + attributes: + label: "Drawbacks and Impact" + description: What are the drawbacks or impacts of your feature request? + placeholder: Describe any potential drawbacks or impacts of implementing this feature. + validations: + required: false + + - type: textarea + id: additional_context + attributes: + label: "Additional context" + description: Add any other context or screenshots about the feature request here. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index c958c11a4..000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -name: Bug report -about: Report a bug with Python.org website to help us improve ---- - -<!-- -This is the repository and issue tracker for https://www.python.org -website. - -If you're looking to file an issue with CPython itself, please go to -https://github.com/python/cpython/issues/new/choose - -Issues related to Python's documentation (https://docs.python.org) can -also be filed at https://github.com/python/cpython/issues/new?assignees=&labels=docs&template=documentation.md. ---> - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] - -**Additional context** -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..cd8c31d2a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,14 @@ +blank_issues_enabled: false +contact_links: + - name: CPython Documentation + url: https://docs.python.org/ + about: Official CPython documentation - please check here before opening an issue. + - name: Python Website + url: https://python.org/ + about: For all things Python + - name: PyPI Issues / Support + url: https://github.com/pypi/support + about: For issues with PyPI itself, PyPI accounts, or with packages hosted on PyPI. + - name: CPython Issues + url: https://github.com/python/cpython/issues + about: For issues with the CPython interpreter itself. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 514274e5f..000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for www.python.org ---- - -<!-- -This is the repository and issue tracker for https://www.python.org -website. - -If you're looking to file an issue with CPython itself, please go to -https://github.com/python/cpython/issues/new/choose - -Issues related to Python's documentation (https://docs.python.org) can -also be filed at https://github.com/python/cpython/issues/new?assignees=&labels=docs&template=documentation.md. ---> - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. Ex. It would be great if [...] - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. From bbaa2a1e8161481a50de57163ef88e9ced2ec7ab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Sep 2024 15:38:37 -0500 Subject: [PATCH 154/256] Bump celery[redis] from 5.3.6 to 5.4.0 (#2550) Bumps [celery[redis]](https://github.com/celery/celery) from 5.3.6 to 5.4.0. - [Release notes](https://github.com/celery/celery/releases) - [Changelog](https://github.com/celery/celery/blob/main/Changelog.rst) - [Commits](https://github.com/celery/celery/compare/v5.3.6...v5.4.0) --- updated-dependencies: - dependency-name: celery[redis] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index d8b1295c9..fc018561c 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -19,7 +19,7 @@ feedparser==6.0.11 beautifulsoup4==4.12.3 icalendar==4.0.7 chardet==4.0.0 -celery[redis]==5.3.6 +celery[redis]==5.4.0 django-celery-beat==2.5.0 # TODO: We may drop 'django-imagekit' completely. django-imagekit==5.0 # 5.0 is first version that supports Django 4.2 From 7e414b5e0a7b10d8db7f7ee1b9e57c3db9939d03 Mon Sep 17 00:00:00 2001 From: Jacob Coffee <jacob@z7x.org> Date: Wed, 18 Sep 2024 15:40:31 -0500 Subject: [PATCH 155/256] feat: add new download feed to base head (#2587) --- templates/base.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/templates/base.html b/templates/base.html index 578dc1204..a1cfba788 100644 --- a/templates/base.html +++ b/templates/base.html @@ -96,6 +96,8 @@ href="https://feeds.feedburner.com/PythonSoftwareFoundationNews"> <link rel="alternate" type="application/rss+xml" title="Python Insider" href="https://feeds.feedburner.com/PythonInsider"> + <link rel="alternate" type="application/rss+xml" title="Python Releases" + href="https://www.python.org/downloads/feed.rss"> {% comment %} No support for these yet... From dc57cd2963c43e6c007c7ce5be9f68b67d6a05bb Mon Sep 17 00:00:00 2001 From: Jacob Coffee <jacob@z7x.org> Date: Wed, 18 Sep 2024 15:50:00 -0500 Subject: [PATCH 156/256] fix: guid must be a full URL, use item link url (#2588) --- downloads/views.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/downloads/views.py b/downloads/views.py index 92e851545..6a7f9d95e 100644 --- a/downloads/views.py +++ b/downloads/views.py @@ -192,7 +192,3 @@ def item_pubdate(self, item: Release) -> datetime | None: return timezone.make_aware(item.release_date) return item.release_date return None - - def item_guid(self, item: Release) -> str: - """Return a unique ID for the item based on DB record.""" - return str(item.pk) From 51c5b5de88c607d8fdaf0c1c463a36c234489bf4 Mon Sep 17 00:00:00 2001 From: Jacob Coffee <jacob@z7x.org> Date: Thu, 19 Sep 2024 16:04:40 -0500 Subject: [PATCH 157/256] fix: display active events, fix time not displaying for some events (#2556) * fix: display active events, fix time not displaying for some events * test: passing events view tests * style: different icon * Update views.py Co-authored-by: Ee Durbin <ewdurbin@gmail.com> --------- Co-authored-by: Ee Durbin <ewdurbin@gmail.com> --- events/models.py | 11 ++- events/tests/test_views.py | 61 +++++++++++++-- events/views.py | 23 ++++-- templates/events/event_list.html | 123 ++++++++++++++++++++----------- 4 files changed, 161 insertions(+), 57 deletions(-) diff --git a/events/models.py b/events/models.py index b41d92b22..1f2ab2cb0 100644 --- a/events/models.py +++ b/events/models.py @@ -211,8 +211,15 @@ def previous_time(self): return None @property - def next_or_previous_time(self): - return self.next_time or self.previous_time + def next_or_previous_time(self) -> models.Model: + """Return the next or previous time of the event OR the occurring rule.""" + if next_time := self.next_time: + return next_time + + if previous_time := self.previous_time: + return previous_time + + return self.occurring_rule if hasattr(self, "occurring_rule") else None @property def is_past(self): diff --git a/events/tests/test_views.py b/events/tests/test_views.py index 691817036..1291252a5 100644 --- a/events/tests/test_views.py +++ b/events/tests/test_views.py @@ -35,11 +35,50 @@ def setUpTestData(cls): finish=cls.now - datetime.timedelta(days=1), ) + # Future event + cls.future_event = Event.objects.create(title='Future Event', creator=cls.user, calendar=cls.calendar, featured=True) + RecurringRule.objects.create( + event=cls.future_event, + begin=cls.now + datetime.timedelta(days=1), + finish=cls.now + datetime.timedelta(days=2), + ) + + # Happening now event + cls.current_event = Event.objects.create(title='Current Event', creator=cls.user, calendar=cls.calendar) + RecurringRule.objects.create( + event=cls.current_event, + begin=cls.now - datetime.timedelta(hours=1), + finish=cls.now + datetime.timedelta(hours=1), + ) + + # Just missed event + cls.just_missed_event = Event.objects.create(title='Just Missed Event', creator=cls.user, calendar=cls.calendar) + RecurringRule.objects.create( + event=cls.just_missed_event, + begin=cls.now - datetime.timedelta(hours=3), + finish=cls.now - datetime.timedelta(hours=1), + ) + + # Past event + cls.past_event = Event.objects.create(title='Past Event', creator=cls.user, calendar=cls.calendar) + RecurringRule.objects.create( + event=cls.past_event, + begin=cls.now - datetime.timedelta(days=2), + finish=cls.now - datetime.timedelta(days=1), + ) + def test_events_homepage(self): url = reverse('events:events') response = self.client.get(url) + events = response.context['object_list'] + event_titles = [event.title for event in events] + self.assertEqual(response.status_code, 200) - self.assertEqual(len(response.context['object_list']), 1) + self.assertEqual(len(events), 6) + + self.assertIn('Future Event', event_titles) + self.assertIn('Current Event', event_titles) + self.assertIn('Past Event', event_titles) def test_calendar_list(self): calendars_count = Calendar.objects.count() @@ -54,7 +93,7 @@ def test_event_list(self): response = self.client.get(url) self.assertEqual(response.status_code, 200) - self.assertEqual(len(response.context['object_list']), 1) + self.assertEqual(len(response.context['object_list']), 3) url = reverse('events:event_list_past', kwargs={"calendar_slug": 'unexisting'}) response = self.client.get(url) @@ -66,7 +105,7 @@ def test_event_list_past(self): response = self.client.get(url) self.assertEqual(response.status_code, 200) - self.assertEqual(len(response.context['object_list']), 1) + self.assertEqual(len(response.context['object_list']), 4) def test_event_list_category(self): category = EventCategory.objects.create( @@ -114,7 +153,7 @@ def test_event_list_date(self): response = self.client.get(url) self.assertEqual(response.status_code, 200) self.assertEqual(response.context['object'], dt.date()) - self.assertEqual(len(response.context['object_list']), 2) + self.assertEqual(len(response.context['object_list']), 6) def test_eventlocation_list(self): venue = EventLocation.objects.create( @@ -150,12 +189,20 @@ def test_event_detail(self): self.assertEqual(self.event, response.context['object']) def test_upcoming_tag(self): - self.assertEqual(len(get_events_upcoming()), 1) - self.assertEqual(len(get_events_upcoming(only_featured=True)), 0) + self.assertEqual(len(get_events_upcoming()), 3) + self.assertEqual(len(get_events_upcoming(only_featured=True)), 1) self.rule.begin = self.now - datetime.timedelta(days=3) self.rule.finish = self.now - datetime.timedelta(days=2) self.rule.save() - self.assertEqual(len(get_events_upcoming()), 0) + self.assertEqual(len(get_events_upcoming()), 2) + + def test_context_data(self): + url = reverse("events:events") + response = self.client.get(url) + + self.assertIn("events_just_missed", response.context) + self.assertIn("upcoming_events", response.context) + self.assertIn("events_now", response.context) class EventSubmitTests(TestCase): diff --git a/events/views.py b/events/views.py index 2490626e3..56df88dcb 100644 --- a/events/views.py +++ b/events/views.py @@ -40,10 +40,21 @@ def get_context_data(self, **kwargs): class EventHomepage(ListView): """ Main Event Landing Page """ - template_name = 'events/event_list.html' + template_name = "events/event_list.html" - def get_queryset(self): - return Event.objects.for_datetime(timezone.now()).order_by('occurring_rule__dt_start') + def get_queryset(self) -> Event: + """Queryset to return all events, ordered by START date.""" + return Event.objects.all().order_by("-occurring_rule__dt_start") + + def get_context_data(self, **kwargs: dict) -> dict: + """Add more ctx, specifically events that are happening now, just missed, and upcoming.""" + context = super().get_context_data(**kwargs) + context["events_just_missed"] = Event.objects.until_datetime(timezone.now())[:2] + context["upcoming_events"] = Event.objects.for_datetime(timezone.now()) + context["events_now"] = Event.objects.filter( + occurring_rule__dt_start__lte=timezone.now(), + occurring_rule__dt_end__gte=timezone.now())[:2] + return context class EventDetail(DetailView): @@ -68,11 +79,13 @@ def get_context_data(self, **kwargs): class EventList(EventListBase): def get_queryset(self): - return Event.objects.for_datetime(timezone.now()).filter(calendar__slug=self.kwargs['calendar_slug']).order_by('occurring_rule__dt_start') + return Event.objects.for_datetime(timezone.now()).filter(calendar__slug=self.kwargs['calendar_slug']).order_by( + 'occurring_rule__dt_start') def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context['events_today'] = Event.objects.until_datetime(timezone.now()).filter(calendar__slug=self.kwargs['calendar_slug'])[:2] + context['events_today'] = Event.objects.until_datetime(timezone.now()).filter( + calendar__slug=self.kwargs['calendar_slug'])[:2] context['calendar'] = get_object_or_404(Calendar, slug=self.kwargs['calendar_slug']) return context diff --git a/templates/events/event_list.html b/templates/events/event_list.html index bbfb764d2..8d7b0d60f 100644 --- a/templates/events/event_list.html +++ b/templates/events/event_list.html @@ -8,73 +8,110 @@ {% block header_content %} {% if featured %} - <div class="featured-event"> + <div class="featured-event"> - <h2 class="welcome-message">Featured Python Event</h2> + <h2 class="welcome-message">Featured Python Event</h2> - <h1 class="call-to-action">{{ featured.title|striptags }}</h1> + <h1 class="call-to-action">{{ featured.title|striptags }}</h1> - <p class="event-date"><time datetime="{{ featured.next_datetime.dt_start|date:'c' }}"> - {{ featured.next_datetime.dt_start|date:"l, F d, Y" }} - </time></p> - <p class="excerpt">{{ featured.description.rendered|striptags|truncatewords:"60" }} <a class="readmore" href="{{ featured.get_absolute_url }}">Read more</a></p> - </div> + <p class="event-date"> + <time datetime="{{ featured.next_datetime.dt_start|date:'c' }}"> + {{ featured.next_datetime.dt_start|date:"l, F d, Y" }} + </time> + </p> + <p class="excerpt">{{ featured.description.rendered|striptags|truncatewords:"60" }} <a class="readmore" + href="{{ featured.get_absolute_url }}">Read + more</a></p> + </div> {% endif %} {% endblock header_content %} - -{# Based on python/events.html #} - {% block content %} - {% if calendar %} + {% if calendar %} <header class="article-header"> <h3>from the {{ calendar.name }}</h3> </header> - {% endif %} + {% endif %} - <div class="most-recent-events"> + <div class="most-recent-events"> + {% if events_now %} <div class="shrubbery"> - <h2 class="widget-title"><span aria-hidden="true" class="icon-calendar"></span>Upcoming Events</h2> - {% if page_obj.has_next %} - <p class="give-me-more"><a href="?page={{ page_obj.next_page_number }}" title="More Events">More</a></p> - {% endif %} + <h2 class="widget-title"><span aria-hidden="true" class="icon-alert"></span>Happening Now</h2> <ul class="list-recent-events menu"> - {% for object in object_list %} + {% for object in events_now %} + <li> + <h3 class="event-title"><a + href="{{ object.get_absolute_url }}">{{ object.title|striptags }}</a></h3> + <p> + {% with object.occurring_rule as next_time %} + {% include "events/includes/time_tag.html" %} + {% endwith %} + + {% if object.venue %} + <span class="event-location">{% if object.venue.url %} + <a href="{{ object.venue.url }}">{% endif %}{{ object.venue.name }} + {% if object.venue.url %}</a>{% endif %}{% if object.venue.address %}, + {{ object.venue.address }}{% endif %}</span> + {% endif %} + </p> + </li> + {% endfor %} + </ul> + </div> + {% endif %} + + <div class="shrubbery"> + <h2 class="widget-title"><span aria-hidden="true" class="icon-calendar"></span>Upcoming Events</h2> + {% if page_obj.has_next %} + <p class="give-me-more"><a href="?page={{ page_obj.next_page_number }}" title="More Events">More</a></p> + {% endif %} + <ul class="list-recent-events menu"> + {% for object in upcoming_events %} <li> - <h3 class="event-title"><a href="{{ object.get_absolute_url }}">{{ object.title|striptags }}</a></h3> + <h3 class="event-title"><a href="{{ object.get_absolute_url }}">{{ object.title|striptags }}</a> + </h3> <p> {% with object.next_time as next_time %} - {% include "events/includes/time_tag.html" %} + {% include "events/includes/time_tag.html" %} {% endwith %} {% if object.venue %} - <span class="event-location">{% if object.venue.url %}<a href="{{ object.venue.url }}">{% endif %}{{ object.venue.name }}{% if object.venue.url %}</a>{% endif %}{% if object.venue.address %}, {{ object.venue.address }}{% endif %}</span> + <span class="event-location">{% if object.venue.url %} + <a href="{{ object.venue.url }}">{% endif %}{{ object.venue.name }} + {% if object.venue.url %}</a>{% endif %}{% if object.venue.address %}, + {{ object.venue.address }}{% endif %}</span> {% endif %} </p> </li> {% endfor %} - </ul> - </div> - - {% if events_today %} - <h3 class="widget-title just-missed">You just missed...</h3> - <ul class="list-recent-events menu"> - {% for object in events_today %} - <li> - <h3 class="event-title"><a href="{{ object.get_absolute_url }}">{{ object.title|striptags }}</a></h3> - <p> - {% with object.previous_time as next_time %} - {% include "events/includes/time_tag.html" %} - {% endwith %} - - {% if object.venue %} - <span class="event-location">{% if object.venue.url %}<a href="{{ object.venue.url }}">{% endif %}{{ object.venue.name }}{% if object.venue.url %}</a>{% endif %}{% if object.venue.address %}, {{ object.venue.address }}{% endif %}</span> - {% endif %} - </p> - </li> - {% endfor %} </ul> - {% endif %} </div> + + {% if events_just_missed %} + <div class="shrubbery"> + <h3 class="widget-title just-missed">You just missed...</h3> + <ul class="list-recent-events menu"> + {% for object in events_just_missed %} + <li> + <h3 class="event-title"><a + href="{{ object.get_absolute_url }}">{{ object.title|striptags }}</a></h3> + <p> + {% with object.previous_time as next_time %} + {% include "events/includes/time_tag.html" %} + {% endwith %} + + {% if object.venue %} + <span class="event-location">{% if object.venue.url %} + <a href="{{ object.venue.url }}">{% endif %}{{ object.venue.name }} + {% if object.venue.url %}</a>{% endif %}{% if object.venue.address %}, + {{ object.venue.address }}{% endif %}</span> + {% endif %} + </p> + </li> + {% endfor %} + </ul> + </div> + {% endif %} + </div> {% endblock content %} From 5fdcbb2ec277c52109f184f09569958e2e33c91c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Sep 2024 21:28:19 +0000 Subject: [PATCH 158/256] Bump django-admin-interface from 0.24.2 to 0.28.9 (#2589) Bumps [django-admin-interface](https://github.com/fabiocaccamo/django-admin-interface) from 0.24.2 to 0.28.9. - [Release notes](https://github.com/fabiocaccamo/django-admin-interface/releases) - [Changelog](https://github.com/fabiocaccamo/django-admin-interface/blob/main/CHANGELOG.md) - [Commits](https://github.com/fabiocaccamo/django-admin-interface/compare/0.24.2...0.28.9) --- updated-dependencies: - dependency-name: django-admin-interface dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jacob Coffee <jacob@z7x.org> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index fc018561c..2b777de51 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -2,7 +2,7 @@ dj-database-url==0.5.0 django-pipeline==3.0.0 # 3.0.0 is first version that supports Django 4.2 django-sitetree==1.18.0 # >=1.17.1 is (?) first version that supports Django 4.2 django-apptemplates==1.5 -django-admin-interface==0.24.2 +django-admin-interface==0.28.9 django-translation-aliases==0.1.0 Django==4.2.16 docutils==0.21.2 From a13d00adabac7f817164455af11d26dbaffd5e7e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Sep 2024 17:38:17 -0500 Subject: [PATCH 159/256] Bump django-pipeline from 3.0.0 to 3.1.0 (#2549) Bumps [django-pipeline](https://github.com/jazzband/django-pipeline) from 3.0.0 to 3.1.0. - [Release notes](https://github.com/jazzband/django-pipeline/releases) - [Changelog](https://github.com/jazzband/django-pipeline/blob/master/HISTORY.rst) - [Commits](https://github.com/jazzband/django-pipeline/compare/3.0.0...3.1.0) --- updated-dependencies: - dependency-name: django-pipeline dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index 2b777de51..fc681bce5 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -1,5 +1,5 @@ dj-database-url==0.5.0 -django-pipeline==3.0.0 # 3.0.0 is first version that supports Django 4.2 +django-pipeline==3.1.0 # 3.0.0 is first version that supports Django 4.2 django-sitetree==1.18.0 # >=1.17.1 is (?) first version that supports Django 4.2 django-apptemplates==1.5 django-admin-interface==0.28.9 From fa18e78c393babc44f911e6c67516f6011f6463e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 Sep 2024 09:05:36 -0500 Subject: [PATCH 160/256] Bump factory-boy from 3.2.1 to 3.3.1 (#2548) Bumps [factory-boy](https://github.com/FactoryBoy/factory_boy) from 3.2.1 to 3.3.1. - [Changelog](https://github.com/FactoryBoy/factory_boy/blob/master/docs/changelog.rst) - [Commits](https://github.com/FactoryBoy/factory_boy/compare/3.2.1...3.3.1) --- updated-dependencies: - dependency-name: factory-boy dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dev-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-requirements.txt b/dev-requirements.txt index 8d61d0f9d..1ee11a333 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -2,7 +2,7 @@ # Required for running tests -factory-boy==3.2.1 +factory-boy==3.3.1 Faker==0.8.1 tblib==1.7.0 responses==0.13.3 From 3fa351b168942274c48158cb370e2371e843c1a8 Mon Sep 17 00:00:00 2001 From: Jacob Coffee <jacob@z7x.org> Date: Fri, 20 Sep 2024 10:02:09 -0500 Subject: [PATCH 161/256] fix(frontend): add help text to story form (#2594) * fix(frontend): add help text to story form Closes #2364 * chore: source migration * fix: use meta class overrides instead * feat: linkify --- successstories/forms.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/successstories/forms.py b/successstories/forms.py index f623001b0..45ec1dfd3 100644 --- a/successstories/forms.py +++ b/successstories/forms.py @@ -24,6 +24,10 @@ class Meta: labels = { 'name': 'Story name', } + help_texts = { + "content": "Note: Submissions in <a href='https://www.markdownguide.org/basic-syntax/'>Markdown</a> " + "are strongly preferred and can be processed faster.", + } def clean_name(self): name = self.cleaned_data.get('name') From f2e763cc62cb894c26b4bc39b328ac70752db96b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 Sep 2024 12:49:37 -0500 Subject: [PATCH 162/256] Bump python-decouple from 3.4 to 3.8 (#2596) Bumps [python-decouple](https://github.com/henriquebastos/python-decouple) from 3.4 to 3.8. - [Release notes](https://github.com/henriquebastos/python-decouple/releases) - [Changelog](https://github.com/HBNetwork/python-decouple/blob/master/CHANGELOG.md) - [Commits](https://github.com/henriquebastos/python-decouple/compare/v3.4...v3.8) --- updated-dependencies: - dependency-name: python-decouple dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jacob Coffee <jacob@z7x.org> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index fc681bce5..ed65c1acf 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -11,7 +11,7 @@ cmarkgfm==0.6.0 Pillow==10.4.0 psycopg2-binary==2.9.9 python3-openid==3.2.0 -python-decouple==3.4 +python-decouple==3.8 # lxml used by BeautifulSoup. lxml==5.2.2 cssselect==1.1.0 From ccbc9e42488f2bf6c12831c5e12d31f5eec4c2a7 Mon Sep 17 00:00:00 2001 From: Jacob Coffee <jacob@z7x.org> Date: Mon, 23 Sep 2024 07:14:45 -0500 Subject: [PATCH 163/256] deps: no mo boto (#2598) --- .github/dependabot.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 427010ca9..dbe4b843c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -16,6 +16,10 @@ updates: - 0.13.0 - 0.13.1 - 0.13.2 + - dependency-name: "boto3" + - dependency-name: "boto3-stubs" + - dependency-name: "botocore" + - dependency-name: "botocore-stubs" - dependency-name: lxml versions: - 4.6.2 From c8a87b747fb257fb16725c66641dcd694a116eac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 13:10:46 -0500 Subject: [PATCH 164/256] Bump django-tastypie from 0.14.6 to 0.14.7 (#2602) Bumps [django-tastypie](https://github.com/django-tastypie/django-tastypie) from 0.14.6 to 0.14.7. - [Release notes](https://github.com/django-tastypie/django-tastypie/releases) - [Commits](https://github.com/django-tastypie/django-tastypie/compare/v0.14.6...v0.14.7) --- updated-dependencies: - dependency-name: django-tastypie dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index ed65c1acf..d3400104f 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -26,7 +26,7 @@ django-imagekit==5.0 # 5.0 is first version that supports Django 4.2 django-haystack==3.2.1 elasticsearch>=7,<8 # TODO: 0.14.0 only supports Django 1.8 and 1.11. -django-tastypie==0.14.6 # 0.14.6 is first version that supports Django 4.2 +django-tastypie==0.14.7 # 0.14.6 is first version that supports Django 4.2 pytz==2021.1 python-dateutil==2.8.2 From a84a53a7fee93bd74f9db51179935c1d3e59103c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Sep 2024 09:20:01 -0500 Subject: [PATCH 165/256] Bump cssselect from 1.1.0 to 1.2.0 (#2606) Bumps [cssselect](https://github.com/scrapy/cssselect) from 1.1.0 to 1.2.0. - [Changelog](https://github.com/scrapy/cssselect/blob/master/CHANGES) - [Commits](https://github.com/scrapy/cssselect/compare/v1.1.0...v1.2.0) --- updated-dependencies: - dependency-name: cssselect dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index d3400104f..4877f78c3 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -14,7 +14,7 @@ python3-openid==3.2.0 python-decouple==3.8 # lxml used by BeautifulSoup. lxml==5.2.2 -cssselect==1.1.0 +cssselect==1.2.0 feedparser==6.0.11 beautifulsoup4==4.12.3 icalendar==4.0.7 From 70a7ef6b363f7621082d03901fc16951561a07f2 Mon Sep 17 00:00:00 2001 From: Mike Fiedler <miketheman@gmail.com> Date: Tue, 24 Sep 2024 10:32:57 -0400 Subject: [PATCH 166/256] chores & docs: clean up some inaccuracies in getting started (#2600) * chore: remove obsolete version entry from compose Currently raises a warning: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion Signed-off-by: Mike Fiedler <miketheman@gmail.com> * docs: staging site does not exist Signed-off-by: Mike Fiedler <miketheman@gmail.com> * docs: format the link to be clickable Signed-off-by: Mike Fiedler <miketheman@gmail.com> * docs: use what's currently in docker-compose.yml Signed-off-by: Mike Fiedler <miketheman@gmail.com> * docs: remove version specificity Signed-off-by: Mike Fiedler <miketheman@gmail.com> --------- Signed-off-by: Mike Fiedler <miketheman@gmail.com> --- docker-compose.yml | 2 -- docs/source/index.rst | 1 - docs/source/install.md | 6 +++--- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 4406c0ff5..1f5ea36b4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: "3.9" - services: postgres: image: postgres:15.3-bullseye diff --git a/docs/source/index.rst b/docs/source/index.rst index 76a201828..cfde87586 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -10,7 +10,6 @@ General information :Issue tracker: https://github.com/python/pythondotorg/issues :Mailing list: pydotorg-www_ :IRC: ``#pydotorg`` on Freenode -:Staging site: https://staging.python.org/ (``main`` branch) :Production configuration: https://github.com/python/psf-salt :GitHub Actions: .. image:: https://github.com/python/pythondotorg/actions/workflows/ci.yml/badge.svg diff --git a/docs/source/install.md b/docs/source/install.md index d6c29d295..c91d1bd59 100644 --- a/docs/source/install.md +++ b/docs/source/install.md @@ -55,7 +55,7 @@ web_1 | Starting development server at http://0.0.0.0:8000/ web_1 | Quit the server with CONTROL-C. ``` -You can view these results in your local web browser at: `http://localhost:8000` +You can view these results in your local web browser at: <http://localhost:8000> To reset your local environment, run: @@ -88,7 +88,7 @@ This is a simple wrapper around running `python manage.py` in the container, all Manual setup ------------ -First, install [PostgreSQL](https://www.postgresql.org/download/) on your machine and run it. *pythondotorg* currently uses Postgres 10.21. +First, install [PostgreSQL](https://www.postgresql.org/download/) on your machine and run it. *pythondotorg* currently uses Postgres 15.x. Then clone the repository: @@ -99,7 +99,7 @@ $ git clone git://github.com/python/pythondotorg.git Then create a virtual environment: ``` -$ python3.9 -m venv venv +$ python3 -m venv venv ``` And then you'll need to install dependencies. You don't need to use `pip3` inside a Python 3 virtual environment: From c33a664718193fb8216bbfe121f038c6acb011af Mon Sep 17 00:00:00 2001 From: Nwokolo Godwin Chidera <nwokolo.godwin.chidera@gmail.com> Date: Thu, 26 Sep 2024 22:55:03 +0100 Subject: [PATCH 167/256] fix(#1701): Events page displays year for events scheduled to start or end at a future year (#2500) * Add Methods To Check If Event Starts And Ends This Year * Set Up Templates For Querying Start And End Years Passed variables to the time_tag template [time_tag.html] that checks if an event was scheduled to start or end with the current year. * Insert New Test Data And Update test_views.py More events are created to test particular scenarios of events especially events set to start or end at a future year. * Time Tag Now Shows Year For Events With Details Not Within The Current Year The time tag now displays the year when an event will occur. This is only for events that have been scheduled to start or end in at a future year. The accompanying functional tests have also been included. * Move All Test Data To Functional Test All test data concerning the provision of data to serve the functional tests have been moved to the functional test. As it improves readability. All other test data at test_views.py was reset to accommodate for the reduction in number of test data instances. * Functional Test For Displaying Year Of Event For Future Events Now Implemented With Unit Tests * Remove Functional Test For Displaying Year Of Future Event Since the current CI at the main branch does not support selenium [web driver] operations, the functional test which depends on selenium to run has been removed. * Handle Case When Call To Next Event Returns None * Fix Erroneous Addition To Dev Requirements This error was introduced in 115af08e7ce529e2e9298d93a98aacf77bb007af * Refactor Tests For Relevant Year String Rendering At Events Page - Updated the test methods `test_scheduled_to_start_this_year_method` and `test_scheduled_to_end_this_year_method` to better reflect event scheduling edge cases. - Added assertions to verify when events are not scheduled to start or end within the current year. - Utilize `unittest.mock` to clamp down datetime-sensitive tests. --------- Co-authored-by: Jacob Coffee <jacob@z7x.org> --- events/models.py | 14 ++++++ events/tests/test_models.py | 61 ++++++++++++++++++++++++- events/tests/test_views.py | 60 +++++++++++++++++++++--- templates/events/event_list.html | 12 ++++- templates/events/includes/time_tag.html | 31 ++++++++++++- 5 files changed, 167 insertions(+), 11 deletions(-) diff --git a/events/models.py b/events/models.py index 1f2ab2cb0..017b919f3 100644 --- a/events/models.py +++ b/events/models.py @@ -181,6 +181,20 @@ def next_time(self): except IndexError: return None + def is_scheduled_to_start_this_year(self) -> bool: + if self.next_time: + current_year: int = timezone.now().year + if self.next_time.dt_start.year == current_year: + return True + return False + + def is_scheduled_to_end_this_year(self) -> bool: + if self.next_time: + current_year: int = timezone.now().year + if self.next_time.dt_end.year == current_year: + return True + return False + @property def previous_time(self): now = timezone.now() diff --git a/events/tests/test_models.py b/events/tests/test_models.py index 0f3bafe76..3d0938280 100644 --- a/events/tests/test_models.py +++ b/events/tests/test_models.py @@ -1,4 +1,6 @@ import datetime +from types import SimpleNamespace +from unittest.mock import patch from django.contrib.auth import get_user_model from django.test import TestCase @@ -62,7 +64,6 @@ def test_recurring_event(self): self.assertEqual(self.event.next_time.dt_start, recurring_time_dtstart) self.assertTrue(rt.valid_dt_end()) - rt.begin = now - datetime.timedelta(days=5) rt.finish = now - datetime.timedelta(days=3) rt.save() @@ -186,3 +187,61 @@ def test_event_previous_event(self): # 'Event.previous_event' can return None if there is no # OccurringRule or RecurringRule found. self.assertIsNone(self.event.previous_event) + + def test_scheduled_to_start_this_year_method(self): + test_datetime = SimpleNamespace( + now=lambda: timezone.datetime(timezone.now().year, + 6, 1, tzinfo=timezone.now().tzinfo) + ) + + with patch("django.utils.timezone", new=test_datetime) as mock_timezone: + with patch("events.models.timezone", new=test_datetime): + now = seconds_resolution(mock_timezone.now()) + + occurring_time_dtstart = now + datetime.timedelta(days=1) + OccurringRule.objects.create( + event=self.event, + dt_start=occurring_time_dtstart, + dt_end=occurring_time_dtstart + datetime.timedelta(days=3) + ) + self.assertTrue(self.event.is_scheduled_to_start_this_year()) + + OccurringRule.objects.get(event=self.event).delete() + + event_not_scheduled_to_start_this_year_occurring_time_dtstart = now + datetime.timedelta(days=365) + OccurringRule.objects.create( + event=self.event, + dt_start=event_not_scheduled_to_start_this_year_occurring_time_dtstart, + dt_end=event_not_scheduled_to_start_this_year_occurring_time_dtstart + datetime.timedelta(days=3) + ) + + self.assertFalse(self.event.is_scheduled_to_start_this_year()) + + def test_scheduled_to_end_this_year_method(self): + test_datetime = SimpleNamespace( + now=lambda: timezone.datetime(timezone.now().year, + 6, 1, tzinfo=timezone.now().tzinfo) + ) + + with patch("django.utils.timezone", new=test_datetime) as mock_timezone: + with patch("events.models.timezone", new=test_datetime): + now = seconds_resolution(mock_timezone.now()) + occurring_time_dtstart = now + datetime.timedelta(days=1) + + OccurringRule.objects.create( + event=self.event, + dt_start=occurring_time_dtstart, + dt_end=occurring_time_dtstart + ) + + self.assertTrue(self.event.is_scheduled_to_end_this_year()) + + OccurringRule.objects.get(event=self.event).delete() + + OccurringRule.objects.create( + event=self.event, + dt_start=now, + dt_end=now + datetime.timedelta(days=365) + ) + + self.assertFalse(self.event.is_scheduled_to_end_this_year()) diff --git a/events/tests/test_views.py b/events/tests/test_views.py index 1291252a5..34ca27831 100644 --- a/events/tests/test_views.py +++ b/events/tests/test_views.py @@ -6,7 +6,7 @@ from django.test import TestCase from django.utils import timezone -from ..models import Calendar, Event, EventCategory, EventLocation, RecurringRule +from ..models import Calendar, Event, EventCategory, EventLocation, RecurringRule, OccurringRule from ..templatetags.events import get_events_upcoming from users.factories import UserFactory @@ -18,6 +18,11 @@ def setUpTestData(cls): cls.calendar = Calendar.objects.create(creator=cls.user, slug="test-calendar") cls.event = Event.objects.create(creator=cls.user, calendar=cls.calendar) cls.event_past = Event.objects.create(title='Past Event', creator=cls.user, calendar=cls.calendar) + cls.event_single_day = Event.objects.create(title="Single Day Event", creator=cls.user, calendar=cls.calendar) + cls.event_starts_at_future_year = Event.objects.create(title='Event Starting Following Year', + creator=cls.user, calendar=cls.calendar) + cls.event_ends_at_future_year = Event.objects.create(title='Event Ending Following Year', + creator=cls.user, calendar=cls.calendar) cls.now = timezone.now() @@ -34,7 +39,6 @@ def setUpTestData(cls): begin=cls.now - datetime.timedelta(days=2), finish=cls.now - datetime.timedelta(days=1), ) - # Future event cls.future_event = Event.objects.create(title='Future Event', creator=cls.user, calendar=cls.calendar, featured=True) RecurringRule.objects.create( @@ -67,6 +71,22 @@ def setUpTestData(cls): finish=cls.now - datetime.timedelta(days=1), ) + cls.rule_single_day = OccurringRule.objects.create( + event=cls.event_single_day, + dt_start=recurring_time_dtstart, + dt_end=recurring_time_dtstart + ) + cls.rule_future_start_year = OccurringRule.objects.create( + event=cls.event_starts_at_future_year, + dt_start=recurring_time_dtstart + datetime.timedelta(weeks=52), + dt_end=recurring_time_dtstart + datetime.timedelta(weeks=53), + ) + cls.rule_future_end_year = OccurringRule.objects.create( + event=cls.event_ends_at_future_year, + dt_start=recurring_time_dtstart, + dt_end=recurring_time_dtend + datetime.timedelta(weeks=52) + ) + def test_events_homepage(self): url = reverse('events:events') response = self.client.get(url) @@ -74,11 +94,13 @@ def test_events_homepage(self): event_titles = [event.title for event in events] self.assertEqual(response.status_code, 200) - self.assertEqual(len(events), 6) + self.assertEqual(len(events), 9) self.assertIn('Future Event', event_titles) self.assertIn('Current Event', event_titles) self.assertIn('Past Event', event_titles) + self.assertIn('Event Starting Following Year', event_titles) + self.assertIn('Event Ending Following Year', event_titles) def test_calendar_list(self): calendars_count = Calendar.objects.count() @@ -93,7 +115,7 @@ def test_event_list(self): response = self.client.get(url) self.assertEqual(response.status_code, 200) - self.assertEqual(len(response.context['object_list']), 3) + self.assertEqual(len(response.context['object_list']), 6) url = reverse('events:event_list_past', kwargs={"calendar_slug": 'unexisting'}) response = self.client.get(url) @@ -189,12 +211,21 @@ def test_event_detail(self): self.assertEqual(self.event, response.context['object']) def test_upcoming_tag(self): - self.assertEqual(len(get_events_upcoming()), 3) + self.assertEqual(len(get_events_upcoming()), 5) self.assertEqual(len(get_events_upcoming(only_featured=True)), 1) self.rule.begin = self.now - datetime.timedelta(days=3) self.rule.finish = self.now - datetime.timedelta(days=2) self.rule.save() - self.assertEqual(len(get_events_upcoming()), 2) + self.assertEqual(len(get_events_upcoming()), 5) + + def test_event_starting_future_year_displays_relevant_year(self): + event = self.event_starts_at_future_year + url = reverse('events:events') + response = self.client.get(url) + self.assertIn( + f'<span id="start-{event.id}">', + response.content.decode() + ) def test_context_data(self): url = reverse("events:events") @@ -204,6 +235,23 @@ def test_context_data(self): self.assertIn("upcoming_events", response.context) self.assertIn("events_now", response.context) + def test_event_ending_future_year_displays_relevant_year(self): + event = self.event_ends_at_future_year + url = reverse('events:events') + response = self.client.get(url) + self.assertIn( + f'<span id="end-{event.id}">', + response.content.decode() + ) + + def test_events_scheduled_current_year_does_not_display_current_year(self): + event = self.event_single_day + url = reverse('events:events') + response = self.client.get(url) + self.assertIn( # start date + f'<span id="start-{event.id}" class="say-no-more">', + response.content.decode() + ) class EventSubmitTests(TestCase): event_submit_url = reverse_lazy('events:event_submit') diff --git a/templates/events/event_list.html b/templates/events/event_list.html index 8d7b0d60f..c4d14321e 100644 --- a/templates/events/event_list.html +++ b/templates/events/event_list.html @@ -73,7 +73,11 @@ <h3 class="event-title"><a href="{{ object.get_absolute_url }}">{{ object.title| </h3> <p> {% with object.next_time as next_time %} - {% include "events/includes/time_tag.html" %} + {% with object.is_scheduled_to_start_this_year as scheduled_start_this_year %} + {% with object.is_scheduled_to_end_this_year as scheduled_end_this_year %} + {% include "events/includes/time_tag.html" %} + {% endwith %} + {% endwith %} {% endwith %} {% if object.venue %} @@ -98,7 +102,11 @@ <h3 class="event-title"><a href="{{ object.get_absolute_url }}">{{ object.title|striptags }}</a></h3> <p> {% with object.previous_time as next_time %} - {% include "events/includes/time_tag.html" %} + {% with object.is_scheduled_to_start_this_year as scheduled_start_this_year %} + {% with object.is_scheduled_to_end_this_year as scheduled_end_this_year %} + {% include "events/includes/time_tag.html" %} + {% endwith %} + {% endwith %} {% endwith %} {% if object.venue %} diff --git a/templates/events/includes/time_tag.html b/templates/events/includes/time_tag.html index 078fcf1dc..90bc4491b 100644 --- a/templates/events/includes/time_tag.html +++ b/templates/events/includes/time_tag.html @@ -1,5 +1,32 @@ {% if next_time.single_day %} -<time datetime="{{ next_time.dt_start|date:'c' }}">{{ next_time.dt_start|date:"d N" }}<span class="say-no-more"> {{ next_time.dt_start|date:"Y" }}</span>{% if not next_time.all_day %} {{ next_time.dt_start|date:"fA"|lower }} {{ next_time.dt_start|date:"e" }}{% if next_time.valid_dt_end %} – {{ next_time.dt_end|date:"fA"|lower }} {{ next_time.dt_end|date:"e" }}{% endif %}{% endif %}</time> + <time datetime="{{ next_time.dt_start|date:'c' }}">{{ next_time.dt_start|date:"d N" }} + <span id="start-{{ object.id }}"{% if scheduled_start_this_year %} class="say-no-more"{% endif %}> + {{ next_time.dt_start|date:"Y" }} + </span> + + <span id="start-{{ object.id }}"{% if scheduled_end_this_year %} class="say-no-more"{% endif %}> + {{ next_time.dt_start|date:"Y" }} + </span> + + {% if not next_time.all_day %} + {{ next_time.dt_start|date:"fA"|lower }} {{ next_time.dt_start|date:"e" }} + {% if next_time.valid_dt_end %} – {{ next_time.dt_end|date:"fA"|lower }} + {{ next_time.dt_end|date:"e" }} + {% endif %} + {% endif %} + </time> {% else %} -<time datetime="{{ next_time.dt_start|date:'c' }}">{{ next_time.dt_start|date:"d N" }}{% if next_time.valid_dt_end %} – {{ next_time.dt_end|date:"d N" }}{% endif %} <span class="say-no-more"> {{ next_time.dt_end|date:"Y" }}</span></time> + <time datetime="{{ next_time.dt_start|date:'c' }}">{{ next_time.dt_start|date:"d N" }} + <span id="start-{{ object.id }}"{% if scheduled_start_this_year %} class="say-no-more"{% endif %}> + {{ next_time.dt_start|date:"Y" }} + </span> + + {% if next_time.valid_dt_end %} – + {{ next_time.dt_end|date:"d N" }} + {% endif %} + + <span id="end-{{ object.id }}"{% if scheduled_end_this_year %} class="say-no-more"{% endif %}> + {{ next_time.dt_end|date:"Y" }} + </span> + </time> {% endif %} \ No newline at end of file From 9e4d888b4dc58cf9e4f35ea33c4f50c7ba9e91c6 Mon Sep 17 00:00:00 2001 From: Jacob Coffee <jacob@z7x.org> Date: Fri, 27 Sep 2024 09:28:38 -0500 Subject: [PATCH 168/256] infra: enable the waf (#2613) --- infra/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/main.tf b/infra/main.tf index 90c2ba9c5..d5865970f 100644 --- a/infra/main.tf +++ b/infra/main.tf @@ -16,7 +16,7 @@ module "fastly_production" { ngwaf_site_name = "prod" ngwaf_email = "infrastructure-staff@python.org" ngwaf_token = var.ngwaf_token - activate_ngwaf_service = false + activate_ngwaf_service = true } module "fastly_staging" { From 2ad65677a9bb6c87f049a7541014175e2851adca Mon Sep 17 00:00:00 2001 From: Jacob Coffee <jacob@z7x.org> Date: Fri, 27 Sep 2024 09:42:11 -0500 Subject: [PATCH 169/256] fix(infra): use new site names (#2614) --- infra/cdn/variables.tf | 4 ++-- infra/main.tf | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/cdn/variables.tf b/infra/cdn/variables.tf index ec0a11a83..969d51e77 100644 --- a/infra/cdn/variables.tf +++ b/infra/cdn/variables.tf @@ -62,8 +62,8 @@ variable "ngwaf_site_name" { description = "Site SHORT name for NGWAF" validation { - condition = can(regex("^(test|stage|prod)$", var.ngwaf_site_name)) - error_message = "'ngwaf_site_name' must be one of the following: test, stage, or prod" + condition = can(regex("^(pythondotorg-test|pythondotorg-prod)$", var.ngwaf_site_name)) + error_message = "'ngwaf_site_name' must be one of the following: pythondotorg-test, or pythondotorg-prod" } } variable "ngwaf_email" { diff --git a/infra/main.tf b/infra/main.tf index d5865970f..58159f6cf 100644 --- a/infra/main.tf +++ b/infra/main.tf @@ -13,7 +13,7 @@ module "fastly_production" { fastly_header_token = var.FASTLY_HEADER_TOKEN s3_logging_keys = var.fastly_s3_logging - ngwaf_site_name = "prod" + ngwaf_site_name = "pythondotorg-prod" ngwaf_email = "infrastructure-staff@python.org" ngwaf_token = var.ngwaf_token activate_ngwaf_service = true @@ -35,7 +35,7 @@ module "fastly_staging" { fastly_header_token = var.FASTLY_HEADER_TOKEN s3_logging_keys = var.fastly_s3_logging - ngwaf_site_name = "test" + ngwaf_site_name = "pythondotorg-test" ngwaf_email = "infrastructure-staff@python.org" ngwaf_token = var.ngwaf_token activate_ngwaf_service = true From 89ae28c589583b48a7b2f227721aec6cbe7ca942 Mon Sep 17 00:00:00 2001 From: Mike Fiedler <miketheman@gmail.com> Date: Fri, 27 Sep 2024 11:11:57 -0400 Subject: [PATCH 170/256] chore: avoid running Actions twice on PR (#2615) * chore: avoid running Actions twice on PR Refs: https://github.com/orgs/community/discussions/57827#discussioncomment-6579237 * chore: run once --- .github/workflows/ci.yml | 2 ++ .github/workflows/static.yml | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ed08f4b7f..4328adf50 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,6 +2,8 @@ name: CI on: [push, pull_request] jobs: test: + # Avoid running CI more than once on pushes to main repo open PRs + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name runs-on: ubuntu-latest services: postgres: diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 3207b964e..d29c620ee 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -1,7 +1,9 @@ name: Check collectstatic on: [push, pull_request] jobs: - test: + collectstatic: + # Avoid running CI more than once on pushes to main repo open PRs + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name runs-on: ubuntu-latest steps: - name: Check out repository From a9fab67cb08fde08a160ed8f164beaa5d0d8b12c Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Mon, 30 Sep 2024 14:17:37 -0400 Subject: [PATCH 171/256] add a static container for handling local frontend dev (#2619) * add a static container for handling local frontend dev * resulting css files --- Dockerfile.static | 10 + Gemfile | 6 +- Gemfile.lock | 19 +- bin/static | 3 + docker-compose.yml | 7 + static/sass/mq.css | 362 +++++++++++----------- static/sass/no-mq.css | 323 +++++++++----------- static/sass/style.css | 677 ++++++++++++++++++++---------------------- 8 files changed, 679 insertions(+), 728 deletions(-) create mode 100644 Dockerfile.static create mode 100755 bin/static diff --git a/Dockerfile.static b/Dockerfile.static new file mode 100644 index 000000000..94d806cb8 --- /dev/null +++ b/Dockerfile.static @@ -0,0 +1,10 @@ +FROM ruby:2.7.8-bullseye AS static + +RUN mkdir /code +WORKDIR /code + +COPY Gemfile Gemfile.lock /code/ + +RUN bundle install + +COPY . /code diff --git a/Gemfile b/Gemfile index 1b175cfc6..c96d2b85e 100644 --- a/Gemfile +++ b/Gemfile @@ -1,9 +1,9 @@ source "https://rubygems.org" group :media do - gem "compass", "~>0.12.2" - gem "sass", "~>3.2.5" - gem "susy", "~>1.0.5" + gem "compass", "~>0.12.7" + gem "sass", "~>3.2.19" + gem "susy", "~>1.0.9" end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index a7bcf92d3..040bac565 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,16 +1,16 @@ GEM remote: https://rubygems.org/ specs: - chunky_png (1.2.7) - compass (0.12.2) + chunky_png (1.4.0) + compass (0.12.7) chunky_png (~> 1.2) fssm (>= 0.2.7) - sass (~> 3.1) + sass (~> 3.2.19) foreman (0.61.0) thor (>= 0.13.6) fssm (0.2.10) - sass (3.2.6) - susy (1.0.5) + sass (3.2.19) + susy (1.0.9) compass (>= 0.12.2) sass (>= 3.2.0) thor (0.17.0) @@ -19,7 +19,10 @@ PLATFORMS ruby DEPENDENCIES - compass (~> 0.12.2) + compass (~> 0.12.7) foreman (~> 0.61.0) - sass (~> 3.2.5) - susy (~> 1.0.5) + sass (~> 3.2.19) + susy (~> 1.0.9) + +BUNDLED WITH + 2.1.4 diff --git a/bin/static b/bin/static new file mode 100755 index 000000000..0aea623f8 --- /dev/null +++ b/bin/static @@ -0,0 +1,3 @@ +#!/bin/bash +cd static +bundle exec sass --compass --scss -I $(dirname $(dirname $(gem which susy))) --trace --watch sass:sass diff --git a/docker-compose.yml b/docker-compose.yml index 1f5ea36b4..0d5bd0bfd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,6 +20,13 @@ services: test: ["CMD", "redis-cli","ping"] interval: 1s + static: + command: bin/static + build: + dockerfile: Dockerfile.static + volumes: + - .:/code + web: build: . image: pythondotorg:docker-compose diff --git a/static/sass/mq.css b/static/sass/mq.css index d08ec4338..38c68317a 100644 --- a/static/sass/mq.css +++ b/static/sass/mq.css @@ -177,7 +177,7 @@ .slides, .flex-control-nav, .flex-direction-nav {margin: 0; padding: 0; list-style: none;} */ -/* FlexSlider Necessary Styles + /* FlexSlider Necessary Styles .flexslider {margin: 0; padding: 0;} .flexslider .slides > li {display: none; -webkit-backface-visibility: hidden;} /* Hide the slides before the JS is loaded. Avoids image jumping .flexslider .slides img {width: 100%; display: block;} @@ -554,20 +554,20 @@ html[xmlns] .slides { display: block; } .no-touch .main-navigation .subnav { min-width: 100%; display: none; + -webkit-transition: all 0s ease; -moz-transition: all 0s ease; -o-transition: all 0s ease; - -webkit-transition: all 0s ease; transition: all 0s ease; } .touch .main-navigation .subnav { top: 120%; display: none; opacity: 0; + -webkit-transition: opacity 0.25s ease-in-out; -moz-transition: opacity 0.25s ease-in-out; -o-transition: opacity 0.25s ease-in-out; - -webkit-transition: opacity 0.25s ease-in-out; transition: opacity 0.25s ease-in-out; - -moz-box-shadow: 0 0.25em 0.75em rgba(0, 0, 0, 0.6); -webkit-box-shadow: 0 0.25em 0.75em rgba(0, 0, 0, 0.6); + -moz-box-shadow: 0 0.25em 0.75em rgba(0, 0, 0, 0.6); box-shadow: 0 0.25em 0.75em rgba(0, 0, 0, 0.6); } .touch .main-navigation .subnav:before { position: absolute; @@ -582,16 +582,16 @@ html[xmlns] .slides { display: block; } .no-touch .main-navigation .element-1:hover .subnav, .no-touch .main-navigation .element-1:focus .subnav, .no-touch .main-navigation .element-2:hover .subnav, .no-touch .main-navigation .element-2:focus .subnav, .no-touch .main-navigation .element-3:hover .subnav, .no-touch .main-navigation .element-3:focus .subnav, .no-touch .main-navigation .element-4:hover .subnav, .no-touch .main-navigation .element-4:focus .subnav { left: 0; display: initial; + -webkit-transition-delay: 0.25s; -moz-transition-delay: 0.25s; -o-transition-delay: 0.25s; - -webkit-transition-delay: 0.25s; transition-delay: 0.25s; } .no-touch .main-navigation .element-5:hover .subnav, .no-touch .main-navigation .element-5:focus .subnav, .no-touch .main-navigation .element-6:hover .subnav, .no-touch .main-navigation .element-6:focus .subnav, .no-touch .main-navigation .element-7:hover .subnav, .no-touch .main-navigation .element-7:focus .subnav, .no-touch .main-navigation .element-8:hover .subnav, .no-touch .main-navigation .element-8:focus .subnav, .no-touch .main-navigation .last:hover .subnav, .no-touch .main-navigation .last:focus .subnav { right: 0; display: initial; + -webkit-transition-delay: 0.25s; -moz-transition-delay: 0.25s; -o-transition-delay: 0.25s; - -webkit-transition-delay: 0.25s; transition-delay: 0.25s; } .touch .main-navigation .element-1, .touch .main-navigation .element-2, .touch .main-navigation .element-3, .touch .main-navigation .element-4 { /* Position the pointer element */ } @@ -620,11 +620,13 @@ html[xmlns] .slides { display: block; } display: block; clear: both; text-align: center; + -webkit-border-radius: 8px 8px 0 0; -moz-border-radius: 8px 8px 0 0; - -webkit-border-radius: 8px; + -ms-border-radius: 8px 8px 0 0; + -o-border-radius: 8px 8px 0 0; border-radius: 8px 8px 0 0; - -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); } .no-touch .main-navigation .tier-1 { float: left; @@ -657,8 +659,8 @@ html[xmlns] .slides { display: block; } .no-touch .main-navigation .tier-2 > a { border-right: 1px solid rgba(255, 255, 255, 0.8); } .no-touch .main-navigation .subnav { - -moz-box-shadow: 0 0.5em 0.5em rgba(0, 0, 0, 0.3); -webkit-box-shadow: 0 0.5em 0.5em rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 0.5em 0.5em rgba(0, 0, 0, 0.3); box-shadow: 0 0.5em 0.5em rgba(0, 0, 0, 0.3); } /* Shorten the amount of blue space under the nav on inner pages */ @@ -717,25 +719,27 @@ html[xmlns] .slides { display: block; } display: block; opacity: 1; border-top: 0; - -moz-box-shadow: none; -webkit-box-shadow: none; + -moz-box-shadow: none; box-shadow: none; } /* TO DO: With Javascript, look for a left-right swipe action and also trigger the menu to open */ .touch #touchnav-wrapper { + -webkit-transition: -webkit-transform 300ms ease; -moz-transition: -moz-transform 300ms ease; -o-transition: -o-transform 300ms ease; - -webkit-transition: -webkit-transform 300ms ease; transition: transform 300ms ease; + -webkit-transform: translate3d(0, 0, 0); -moz-transform: translate3d(0, 0, 0); -ms-transform: translate3d(0, 0, 0); - -webkit-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); -webkit-backface-visibility: hidden; } .touch .show-sidemenu #touchnav-wrapper { + -webkit-transform: translate3d(260px, 0, 0); -moz-transform: translate3d(260px, 0, 0); -ms-transform: translate3d(260px, 0, 0); - -webkit-transform: translate3d(260px, 0, 0); + -o-transform: translate3d(260px, 0, 0); transform: translate3d(260px, 0, 0); } /* Simple Column Structure */ @@ -784,9 +788,9 @@ html[xmlns] .slides { display: block; } border-color: transparent; } .search-field { + -webkit-transition: width 0.3s ease-in-out; -moz-transition: width 0.3s ease-in-out; -o-transition: width 0.3s ease-in-out; - -webkit-transition: width 0.3s ease-in-out; transition: width 0.3s ease-in-out; } .search-field:focus { @@ -841,11 +845,10 @@ html[xmlns] .slides { display: block; } background-color: #2d618c; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF3776AB', endColorstr='#FF2D618C'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIzMCUiIHN0b3AtY29sb3I9IiMzNzc2YWIiLz48c3RvcCBvZmZzZXQ9Ijk1JSIgc3RvcC1jb2xvcj0iIzJkNjE4YyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(30%, #3776ab), color-stop(95%, #2d618c)); - background-image: -moz-linear-gradient(#3776ab 30%, #2d618c 95%); background-image: -webkit-linear-gradient(#3776ab 30%, #2d618c 95%); + background-image: -moz-linear-gradient(#3776ab 30%, #2d618c 95%); + background-image: -o-linear-gradient(#3776ab 30%, #2d618c 95%); background-image: linear-gradient(#3776ab 30%, #2d618c 95%); border-top: 1px solid #629ccd; border-bottom: 1px solid #18334b; @@ -862,15 +865,14 @@ html[xmlns] .slides { display: block; } border-bottom: 1px solid transparent; letter-spacing: 0.01em; } .python-navigation .tier-1 > a:hover, .python-navigation .tier-1 > a:focus, .python-navigation .tier-1 > a .tier-1:hover > a { - color: #fff; + color: white; background-color: #2d618c; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF326B9C', endColorstr='#FF2D618C'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiMzMjZiOWMiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzJkNjE4YyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #326b9c), color-stop(90%, #2d618c)); - background-image: -moz-linear-gradient(#326b9c 10%, #2d618c 90%); background-image: -webkit-linear-gradient(#326b9c 10%, #2d618c 90%); + background-image: -moz-linear-gradient(#326b9c 10%, #2d618c 90%); + background-image: -o-linear-gradient(#326b9c 10%, #2d618c 90%); background-image: linear-gradient(#326b9c 10%, #2d618c 90%); border-top: 1px solid #3776ab; border-bottom: 1px solid #2d618c; } @@ -879,14 +881,13 @@ html[xmlns] .slides { display: block; } background-color: #d6e5f2; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFBBD4E9', endColorstr='#FFD6E5F2'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNiYmQ0ZTkiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2Q2ZTVmMiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #bbd4e9), color-stop(90%, #d6e5f2)); - background-image: -moz-linear-gradient(#bbd4e9 10%, #d6e5f2 90%); background-image: -webkit-linear-gradient(#bbd4e9 10%, #d6e5f2 90%); + background-image: -moz-linear-gradient(#bbd4e9 10%, #d6e5f2 90%); + background-image: -o-linear-gradient(#bbd4e9 10%, #d6e5f2 90%); background-image: linear-gradient(#bbd4e9 10%, #d6e5f2 90%); - -moz-box-shadow: inset 0 0 20px rgba(55, 118, 171, 0.15); -webkit-box-shadow: inset 0 0 20px rgba(55, 118, 171, 0.15); + -moz-box-shadow: inset 0 0 20px rgba(55, 118, 171, 0.15); box-shadow: inset 0 0 20px rgba(55, 118, 171, 0.15); /*modernizr*/ } .touch .python-navigation .subnav:before { @@ -901,27 +902,25 @@ html[xmlns] .slides { display: block; } .python-navigation .tier-2:last-child > a { border-bottom: 1px solid rgba(55, 118, 171, 0.25); } .python-navigation .current_item { - color: #fff; + color: white; background-color: #244e71; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF2B5B84', endColorstr='#FF244E71'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiMyYjViODQiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzI0NGU3MSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #2b5b84), color-stop(90%, #244e71)); - background-image: -moz-linear-gradient(#2b5b84 10%, #244e71 90%); background-image: -webkit-linear-gradient(#2b5b84 10%, #244e71 90%); + background-image: -moz-linear-gradient(#2b5b84 10%, #244e71 90%); + background-image: -o-linear-gradient(#2b5b84 10%, #244e71 90%); background-image: linear-gradient(#2b5b84 10%, #244e71 90%); } .python-navigation .super-navigation { - color: #666; + color: #666666; border: 1px solid #89b4d9; background-color: #d6e5f2; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFCFDFE', endColorstr='#FFD6E5F2'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmY2ZkZmUiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2Q2ZTVmMiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #fcfdfe), color-stop(90%, #d6e5f2)); - background-image: -moz-linear-gradient(#fcfdfe 10%, #d6e5f2 90%); background-image: -webkit-linear-gradient(#fcfdfe 10%, #d6e5f2 90%); + background-image: -moz-linear-gradient(#fcfdfe 10%, #d6e5f2 90%); + background-image: -o-linear-gradient(#fcfdfe 10%, #d6e5f2 90%); background-image: linear-gradient(#fcfdfe 10%, #d6e5f2 90%); } .python-navigation .super-navigation a:not(.button) { color: #3776ab; } @@ -932,18 +931,17 @@ html[xmlns] .slides { display: block; } background-color: #646565; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF78797A', endColorstr='#FF646565'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIzMCUiIHN0b3AtY29sb3I9IiM3ODc5N2EiLz48c3RvcCBvZmZzZXQ9Ijk1JSIgc3RvcC1jb2xvcj0iIzY0NjU2NSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(30%, #78797a), color-stop(95%, #646565)); - background-image: -moz-linear-gradient(#78797a 30%, #646565 95%); background-image: -webkit-linear-gradient(#78797a 30%, #646565 95%); + background-image: -moz-linear-gradient(#78797a 30%, #646565 95%); + background-image: -o-linear-gradient(#78797a 30%, #646565 95%); background-image: linear-gradient(#78797a 30%, #646565 95%); border-top: 1px solid #9e9fa0; border-bottom: 1px solid #39393a; /*a*/ } .psf-navigation .tier-1 { border-top: 1px solid #929393; - border-right: 1px solid #5f6060; + border-right: 1px solid #5f5f60; border-bottom: 1px solid #454647; border-left: 1px solid #929393; } .psf-navigation .tier-1 > a { @@ -953,15 +951,14 @@ html[xmlns] .slides { display: block; } border-bottom: 1px solid transparent; letter-spacing: 0.01em; } .psf-navigation .tier-1 > a:hover, .psf-navigation .tier-1 > a:focus, .psf-navigation .tier-1 > a .tier-1:hover > a { - color: #fff; + color: white; background-color: #646565; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF6E6F70', endColorstr='#FF646565'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiM2ZTZmNzAiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzY0NjU2NSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #6e6f70), color-stop(90%, #646565)); - background-image: -moz-linear-gradient(#6e6f70 10%, #646565 90%); background-image: -webkit-linear-gradient(#6e6f70 10%, #646565 90%); + background-image: -moz-linear-gradient(#6e6f70 10%, #646565 90%); + background-image: -o-linear-gradient(#6e6f70 10%, #646565 90%); background-image: linear-gradient(#6e6f70 10%, #646565 90%); border-top: 1px solid #78797a; border-bottom: 1px solid #646565; } @@ -970,14 +967,13 @@ html[xmlns] .slides { display: block; } background-color: #ececec; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFDADADA', endColorstr='#FFECECEC'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNkYWRhZGEiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2VjZWNlYyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #dadada), color-stop(90%, #ececec)); - background-image: -moz-linear-gradient(#dadada 10%, #ececec 90%); background-image: -webkit-linear-gradient(#dadada 10%, #ececec 90%); + background-image: -moz-linear-gradient(#dadada 10%, #ececec 90%); + background-image: -o-linear-gradient(#dadada 10%, #ececec 90%); background-image: linear-gradient(#dadada 10%, #ececec 90%); - -moz-box-shadow: inset 0 0 20px rgba(120, 121, 122, 0.15); -webkit-box-shadow: inset 0 0 20px rgba(120, 121, 122, 0.15); + -moz-box-shadow: inset 0 0 20px rgba(120, 121, 122, 0.15); box-shadow: inset 0 0 20px rgba(120, 121, 122, 0.15); /*modernizr*/ } .touch .psf-navigation .subnav:before { @@ -992,27 +988,25 @@ html[xmlns] .slides { display: block; } .psf-navigation .tier-2:last-child > a { border-bottom: 1px solid rgba(120, 121, 122, 0.25); } .psf-navigation .current_item { - color: #fff; + color: white; background-color: #525353; *zoom: 1; - filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF5F6060', endColorstr='#FF525353'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiM1ZjYwNjAiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzUyNTM1MyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #5f6060), color-stop(90%, #525353)); - background-image: -moz-linear-gradient(#5f6060 10%, #525353 90%); - background-image: -webkit-linear-gradient(#5f6060 10%, #525353 90%); - background-image: linear-gradient(#5f6060 10%, #525353 90%); } + filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF5F5F60', endColorstr='#FF525353'); + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #5f5f60), color-stop(90%, #525353)); + background-image: -webkit-linear-gradient(#5f5f60 10%, #525353 90%); + background-image: -moz-linear-gradient(#5f5f60 10%, #525353 90%); + background-image: -o-linear-gradient(#5f5f60 10%, #525353 90%); + background-image: linear-gradient(#5f5f60 10%, #525353 90%); } .psf-navigation .super-navigation { - color: #666; + color: #666666; border: 1px solid #b8b9b9; background-color: #ececec; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FFECECEC'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2VjZWNlYyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffffff), color-stop(90%, #ececec)); - background-image: -moz-linear-gradient(#ffffff 10%, #ececec 90%); background-image: -webkit-linear-gradient(#ffffff 10%, #ececec 90%); + background-image: -moz-linear-gradient(#ffffff 10%, #ececec 90%); + background-image: -o-linear-gradient(#ffffff 10%, #ececec 90%); background-image: linear-gradient(#ffffff 10%, #ececec 90%); } .psf-navigation .super-navigation a:not(.button) { color: #78797a; } @@ -1023,13 +1017,12 @@ html[xmlns] .slides { display: block; } background-color: #ffc91a; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFD343', endColorstr='#FFFFC91A'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIzMCUiIHN0b3AtY29sb3I9IiNmZmQzNDMiLz48c3RvcCBvZmZzZXQ9Ijk1JSIgc3RvcC1jb2xvcj0iI2ZmYzkxYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(30%, #ffd343), color-stop(95%, #ffc91a)); - background-image: -moz-linear-gradient(#ffd343 30%, #ffc91a 95%); background-image: -webkit-linear-gradient(#ffd343 30%, #ffc91a 95%); + background-image: -moz-linear-gradient(#ffd343 30%, #ffc91a 95%); + background-image: -o-linear-gradient(#ffd343 30%, #ffc91a 95%); background-image: linear-gradient(#ffd343 30%, #ffc91a 95%); - border-top: 1px solid #ffe590; + border-top: 1px solid #ffe58f; border-bottom: 1px solid #c39500; /*a*/ } .docs-navigation .tier-1 { @@ -1038,21 +1031,20 @@ html[xmlns] .slides { display: block; } border-bottom: 1px solid #dca900; border-left: 1px solid #ffdf76; } .docs-navigation .tier-1 > a { - color: #333; + color: #333333; background-color: transparent; border-top: 1px solid transparent; border-bottom: 1px solid transparent; letter-spacing: 0.01em; } .docs-navigation .tier-1 > a:hover, .docs-navigation .tier-1 > a:focus, .docs-navigation .tier-1 > a .tier-1:hover > a { - color: #fff; + color: white; background-color: #ffc91a; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFCE2F', endColorstr='#FFFFC91A'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmNlMmYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZmYzkxYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffce2f), color-stop(90%, #ffc91a)); - background-image: -moz-linear-gradient(#ffce2f 10%, #ffc91a 90%); background-image: -webkit-linear-gradient(#ffce2f 10%, #ffc91a 90%); + background-image: -moz-linear-gradient(#ffce2f 10%, #ffc91a 90%); + background-image: -o-linear-gradient(#ffce2f 10%, #ffc91a 90%); background-image: linear-gradient(#ffce2f 10%, #ffc91a 90%); border-top: 1px solid #ffd343; border-bottom: 1px solid #ffc91a; } @@ -1061,14 +1053,13 @@ html[xmlns] .slides { display: block; } background-color: white; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FFFFFFFF'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffffff), color-stop(90%, #ffffff)); - background-image: -moz-linear-gradient(#ffffff 10%, #ffffff 90%); background-image: -webkit-linear-gradient(#ffffff 10%, #ffffff 90%); + background-image: -moz-linear-gradient(#ffffff 10%, #ffffff 90%); + background-image: -o-linear-gradient(#ffffff 10%, #ffffff 90%); background-image: linear-gradient(#ffffff 10%, #ffffff 90%); - -moz-box-shadow: inset 0 0 20px rgba(255, 211, 67, 0.15); -webkit-box-shadow: inset 0 0 20px rgba(255, 211, 67, 0.15); + -moz-box-shadow: inset 0 0 20px rgba(255, 211, 67, 0.15); box-shadow: inset 0 0 20px rgba(255, 211, 67, 0.15); /*modernizr*/ } .touch .docs-navigation .subnav:before { @@ -1083,42 +1074,39 @@ html[xmlns] .slides { display: block; } .docs-navigation .tier-2:last-child > a { border-bottom: 1px solid rgba(255, 211, 67, 0.25); } .docs-navigation .current_item { - color: #fff; - background-color: #f6bc00; + color: white; + background-color: #f5bc00; *zoom: 1; - filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFC710', endColorstr='#FFF6BC00'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmM3MTAiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2Y2YmMwMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffc710), color-stop(90%, #f6bc00)); - background-image: -moz-linear-gradient(#ffc710 10%, #f6bc00 90%); - background-image: -webkit-linear-gradient(#ffc710 10%, #f6bc00 90%); - background-image: linear-gradient(#ffc710 10%, #f6bc00 90%); } + filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFC710', endColorstr='#FFF5BC00'); + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffc710), color-stop(90%, #f5bc00)); + background-image: -webkit-linear-gradient(#ffc710 10%, #f5bc00 90%); + background-image: -moz-linear-gradient(#ffc710 10%, #f5bc00 90%); + background-image: -o-linear-gradient(#ffc710 10%, #f5bc00 90%); + background-image: linear-gradient(#ffc710 10%, #f5bc00 90%); } .docs-navigation .super-navigation { - color: #666; - border: 1px solid #fff1c3; + color: #666666; + border: 1px solid #fff1c2; background-color: white; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FFFFFFFF'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffffff), color-stop(90%, #ffffff)); - background-image: -moz-linear-gradient(#ffffff 10%, #ffffff 90%); background-image: -webkit-linear-gradient(#ffffff 10%, #ffffff 90%); + background-image: -moz-linear-gradient(#ffffff 10%, #ffffff 90%); + background-image: -o-linear-gradient(#ffffff 10%, #ffffff 90%); background-image: linear-gradient(#ffffff 10%, #ffffff 90%); } .docs-navigation .super-navigation a:not(.button) { color: #ffd343; } .docs-navigation .super-navigation h4 { - color: #ffcd2a; } + color: #ffcd29; } .pypl-navigation { background-color: #6c9238; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF82B043', endColorstr='#FF6C9238'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIzMCUiIHN0b3AtY29sb3I9IiM4MmIwNDMiLz48c3RvcCBvZmZzZXQ9Ijk1JSIgc3RvcC1jb2xvcj0iIzZjOTIzOCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(30%, #82b043), color-stop(95%, #6c9238)); - background-image: -moz-linear-gradient(#82b043 30%, #6c9238 95%); background-image: -webkit-linear-gradient(#82b043 30%, #6c9238 95%); + background-image: -moz-linear-gradient(#82b043 30%, #6c9238 95%); + background-image: -o-linear-gradient(#82b043 30%, #6c9238 95%); background-image: linear-gradient(#82b043 30%, #6c9238 95%); border-top: 1px solid #a6ca75; border-bottom: 1px solid #3e5420; @@ -1135,15 +1123,14 @@ html[xmlns] .slides { display: block; } border-bottom: 1px solid transparent; letter-spacing: 0.01em; } .pypl-navigation .tier-1 > a:hover, .pypl-navigation .tier-1 > a:focus, .pypl-navigation .tier-1 > a .tier-1:hover > a { - color: #fff; + color: white; background-color: #6c9238; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF77A13D', endColorstr='#FF6C9238'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiM3N2ExM2QiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzZjOTIzOCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #77a13d), color-stop(90%, #6c9238)); - background-image: -moz-linear-gradient(#77a13d 10%, #6c9238 90%); background-image: -webkit-linear-gradient(#77a13d 10%, #6c9238 90%); + background-image: -moz-linear-gradient(#77a13d 10%, #6c9238 90%); + background-image: -o-linear-gradient(#77a13d 10%, #6c9238 90%); background-image: linear-gradient(#77a13d 10%, #6c9238 90%); border-top: 1px solid #82b043; border-bottom: 1px solid #6c9238; } @@ -1152,14 +1139,13 @@ html[xmlns] .slides { display: block; } background-color: #eef5e4; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFDDEBCA', endColorstr='#FFEEF5E4'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNkZGViY2EiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2VlZjVlNCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ddebca), color-stop(90%, #eef5e4)); - background-image: -moz-linear-gradient(#ddebca 10%, #eef5e4 90%); background-image: -webkit-linear-gradient(#ddebca 10%, #eef5e4 90%); + background-image: -moz-linear-gradient(#ddebca 10%, #eef5e4 90%); + background-image: -o-linear-gradient(#ddebca 10%, #eef5e4 90%); background-image: linear-gradient(#ddebca 10%, #eef5e4 90%); - -moz-box-shadow: inset 0 0 20px rgba(130, 176, 67, 0.15); -webkit-box-shadow: inset 0 0 20px rgba(130, 176, 67, 0.15); + -moz-box-shadow: inset 0 0 20px rgba(130, 176, 67, 0.15); box-shadow: inset 0 0 20px rgba(130, 176, 67, 0.15); /*modernizr*/ } .touch .pypl-navigation .subnav:before { @@ -1174,27 +1160,25 @@ html[xmlns] .slides { display: block; } .pypl-navigation .tier-2:last-child > a { border-bottom: 1px solid rgba(130, 176, 67, 0.25); } .pypl-navigation .current_item { - color: #fff; + color: white; background-color: #59792e; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF678B35', endColorstr='#FF59792E'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiM2NzhiMzUiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzU5NzkyZSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #678b35), color-stop(90%, #59792e)); - background-image: -moz-linear-gradient(#678b35 10%, #59792e 90%); background-image: -webkit-linear-gradient(#678b35 10%, #59792e 90%); + background-image: -moz-linear-gradient(#678b35 10%, #59792e 90%); + background-image: -o-linear-gradient(#678b35 10%, #59792e 90%); background-image: linear-gradient(#678b35 10%, #59792e 90%); } .pypl-navigation .super-navigation { - color: #666; + color: #666666; border: 1px solid #bed99a; background-color: #eef5e4; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FFEEF5E4'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2VlZjVlNCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffffff), color-stop(90%, #eef5e4)); - background-image: -moz-linear-gradient(#ffffff 10%, #eef5e4 90%); background-image: -webkit-linear-gradient(#ffffff 10%, #eef5e4 90%); + background-image: -moz-linear-gradient(#ffffff 10%, #eef5e4 90%); + background-image: -o-linear-gradient(#ffffff 10%, #eef5e4 90%); background-image: linear-gradient(#ffffff 10%, #eef5e4 90%); } .pypl-navigation .super-navigation a:not(.button) { color: #82b043; } @@ -1205,11 +1189,10 @@ html[xmlns] .slides { display: block; } background-color: #8b5792; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFA06BA7', endColorstr='#FF8B5792'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIzMCUiIHN0b3AtY29sb3I9IiNhMDZiYTciLz48c3RvcCBvZmZzZXQ9Ijk1JSIgc3RvcC1jb2xvcj0iIzhiNTc5MiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(30%, #a06ba7), color-stop(95%, #8b5792)); - background-image: -moz-linear-gradient(#a06ba7 30%, #8b5792 95%); background-image: -webkit-linear-gradient(#a06ba7 30%, #8b5792 95%); + background-image: -moz-linear-gradient(#a06ba7 30%, #8b5792 95%); + background-image: -o-linear-gradient(#a06ba7 30%, #8b5792 95%); background-image: linear-gradient(#a06ba7 30%, #8b5792 95%); border-top: 1px solid #bf9bc4; border-bottom: 1px solid #58375c; @@ -1226,15 +1209,14 @@ html[xmlns] .slides { display: block; } border-bottom: 1px solid transparent; letter-spacing: 0.01em; } .jobs-navigation .tier-1 > a:hover, .jobs-navigation .tier-1 > a:focus, .jobs-navigation .tier-1 > a .tier-1:hover > a { - color: #fff; + color: white; background-color: #8b5792; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF985F9F', endColorstr='#FF8B5792'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiM5ODVmOWYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzhiNTc5MiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #985f9f), color-stop(90%, #8b5792)); - background-image: -moz-linear-gradient(#985f9f 10%, #8b5792 90%); background-image: -webkit-linear-gradient(#985f9f 10%, #8b5792 90%); + background-image: -moz-linear-gradient(#985f9f 10%, #8b5792 90%); + background-image: -o-linear-gradient(#985f9f 10%, #8b5792 90%); background-image: linear-gradient(#985f9f 10%, #8b5792 90%); border-top: 1px solid #a06ba7; border-bottom: 1px solid #8b5792; } @@ -1243,14 +1225,13 @@ html[xmlns] .slides { display: block; } background-color: #fcfbfd; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFEEE5EF', endColorstr='#FFFCFBFD'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNlZWU1ZWYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZjZmJmZCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #eee5ef), color-stop(90%, #fcfbfd)); - background-image: -moz-linear-gradient(#eee5ef 10%, #fcfbfd 90%); background-image: -webkit-linear-gradient(#eee5ef 10%, #fcfbfd 90%); + background-image: -moz-linear-gradient(#eee5ef 10%, #fcfbfd 90%); + background-image: -o-linear-gradient(#eee5ef 10%, #fcfbfd 90%); background-image: linear-gradient(#eee5ef 10%, #fcfbfd 90%); - -moz-box-shadow: inset 0 0 20px rgba(160, 107, 167, 0.15); -webkit-box-shadow: inset 0 0 20px rgba(160, 107, 167, 0.15); + -moz-box-shadow: inset 0 0 20px rgba(160, 107, 167, 0.15); box-shadow: inset 0 0 20px rgba(160, 107, 167, 0.15); /*modernizr*/ } .touch .jobs-navigation .subnav:before { @@ -1265,27 +1246,25 @@ html[xmlns] .slides { display: block; } .jobs-navigation .tier-2:last-child > a { border-bottom: 1px solid rgba(160, 107, 167, 0.25); } .jobs-navigation .current_item { - color: #fff; + color: white; background-color: #764a7c; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF85538C', endColorstr='#FF764A7C'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiM4NTUzOGMiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzc2NGE3YyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #85538c), color-stop(90%, #764a7c)); - background-image: -moz-linear-gradient(#85538c 10%, #764a7c 90%); background-image: -webkit-linear-gradient(#85538c 10%, #764a7c 90%); + background-image: -moz-linear-gradient(#85538c 10%, #764a7c 90%); + background-image: -o-linear-gradient(#85538c 10%, #764a7c 90%); background-image: linear-gradient(#85538c 10%, #764a7c 90%); } .jobs-navigation .super-navigation { - color: #666; + color: #666666; border: 1px solid #d3bbd7; background-color: #fcfbfd; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FFFCFBFD'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZjZmJmZCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffffff), color-stop(90%, #fcfbfd)); - background-image: -moz-linear-gradient(#ffffff 10%, #fcfbfd 90%); background-image: -webkit-linear-gradient(#ffffff 10%, #fcfbfd 90%); + background-image: -moz-linear-gradient(#ffffff 10%, #fcfbfd 90%); + background-image: -o-linear-gradient(#ffffff 10%, #fcfbfd 90%); background-image: linear-gradient(#ffffff 10%, #fcfbfd 90%); } .jobs-navigation .super-navigation a:not(.button) { color: #a06ba7; } @@ -1296,11 +1275,10 @@ html[xmlns] .slides { display: block; } background-color: #9e4650; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFB55863', endColorstr='#FF9E4650'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIzMCUiIHN0b3AtY29sb3I9IiNiNTU4NjMiLz48c3RvcCBvZmZzZXQ9Ijk1JSIgc3RvcC1jb2xvcj0iIzllNDY1MCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(30%, #b55863), color-stop(95%, #9e4650)); - background-image: -moz-linear-gradient(#b55863 30%, #9e4650 95%); background-image: -webkit-linear-gradient(#b55863 30%, #9e4650 95%); + background-image: -moz-linear-gradient(#b55863 30%, #9e4650 95%); + background-image: -o-linear-gradient(#b55863 30%, #9e4650 95%); background-image: linear-gradient(#b55863 30%, #9e4650 95%); border-top: 1px solid #cc8d95; border-bottom: 1px solid #622b32; @@ -1317,15 +1295,14 @@ html[xmlns] .slides { display: block; } border-bottom: 1px solid transparent; letter-spacing: 0.01em; } .shop-navigation .tier-1 > a:hover, .shop-navigation .tier-1 > a:focus, .shop-navigation .tier-1 > a .tier-1:hover > a { - color: #fff; + color: white; background-color: #9e4650; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFAC4C58', endColorstr='#FF9E4650'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNhYzRjNTgiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzllNDY1MCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ac4c58), color-stop(90%, #9e4650)); - background-image: -moz-linear-gradient(#ac4c58 10%, #9e4650 90%); background-image: -webkit-linear-gradient(#ac4c58 10%, #9e4650 90%); + background-image: -moz-linear-gradient(#ac4c58 10%, #9e4650 90%); + background-image: -o-linear-gradient(#ac4c58 10%, #9e4650 90%); background-image: linear-gradient(#ac4c58 10%, #9e4650 90%); border-top: 1px solid #b55863; border-bottom: 1px solid #9e4650; } @@ -1334,14 +1311,13 @@ html[xmlns] .slides { display: block; } background-color: #fbf7f8; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFF1DEE0', endColorstr='#FFFBF7F8'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmMWRlZTAiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZiZjdmOCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #f1dee0), color-stop(90%, #fbf7f8)); - background-image: -moz-linear-gradient(#f1dee0 10%, #fbf7f8 90%); background-image: -webkit-linear-gradient(#f1dee0 10%, #fbf7f8 90%); + background-image: -moz-linear-gradient(#f1dee0 10%, #fbf7f8 90%); + background-image: -o-linear-gradient(#f1dee0 10%, #fbf7f8 90%); background-image: linear-gradient(#f1dee0 10%, #fbf7f8 90%); - -moz-box-shadow: inset 0 0 20px rgba(181, 88, 99, 0.15); -webkit-box-shadow: inset 0 0 20px rgba(181, 88, 99, 0.15); + -moz-box-shadow: inset 0 0 20px rgba(181, 88, 99, 0.15); box-shadow: inset 0 0 20px rgba(181, 88, 99, 0.15); /*modernizr*/ } .touch .shop-navigation .subnav:before { @@ -1356,27 +1332,25 @@ html[xmlns] .slides { display: block; } .shop-navigation .tier-2:last-child > a { border-bottom: 1px solid rgba(181, 88, 99, 0.25); } .shop-navigation .current_item { - color: #fff; + color: white; background-color: #853b44; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF97434D', endColorstr='#FF853B44'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiM5NzQzNGQiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzg1M2I0NCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #97434d), color-stop(90%, #853b44)); - background-image: -moz-linear-gradient(#97434d 10%, #853b44 90%); background-image: -webkit-linear-gradient(#97434d 10%, #853b44 90%); + background-image: -moz-linear-gradient(#97434d 10%, #853b44 90%); + background-image: -o-linear-gradient(#97434d 10%, #853b44 90%); background-image: linear-gradient(#97434d 10%, #853b44 90%); } .shop-navigation .super-navigation { - color: #666; + color: #666666; border: 1px solid #dcb0b6; background-color: #fbf7f8; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FFFBF7F8'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZiZjdmOCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffffff), color-stop(90%, #fbf7f8)); - background-image: -moz-linear-gradient(#ffffff 10%, #fbf7f8 90%); background-image: -webkit-linear-gradient(#ffffff 10%, #fbf7f8 90%); + background-image: -moz-linear-gradient(#ffffff 10%, #fbf7f8 90%); + background-image: -o-linear-gradient(#ffffff 10%, #fbf7f8 90%); background-image: linear-gradient(#ffffff 10%, #fbf7f8 90%); } .shop-navigation .super-navigation a:not(.button) { color: #b55863; } @@ -1394,7 +1368,7 @@ html[xmlns] .slides { display: block; } width: 65.95745%; float: right; margin-right: 0; - #margin-left: -20px; } + *margin-left: -20px; } .main-content.with-right-sidebar { width: 65.95745%; float: left; @@ -1415,13 +1389,13 @@ html[xmlns] .slides { display: block; } width: 31.91489%; float: right; margin-right: 0; - #margin-left: -20px; } + *margin-left: -20px; } .left-sidebar .small-widget, .left-sidebar .medium-widget, .left-sidebar .triple-widget, .right-sidebar .small-widget, .right-sidebar .medium-widget, .right-sidebar .triple-widget { float: none; width: auto; margin-right: auto; - #margin-left: auto; } + *margin-left: auto; } /* Widgets in main content */ .row { @@ -1495,15 +1469,15 @@ html[xmlns] .slides { display: block; } .listing-company-category:before { content: "Category: "; - color: #666; } + color: #666666; } .listing-job-title:before { content: "Title: "; - color: #666; } + color: #666666; } .listing-job-type:before { content: "Looking for: "; - color: #666; } + color: #666666; } .release-number, .release-date, @@ -1556,8 +1530,8 @@ html[xmlns] .slides { display: block; } overflow: hidden; *zoom: 1; } .previous-next a { - -moz-box-sizing: border-box; -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; box-sizing: border-box; } .previous-next .prev-button { width: 48.93617%; @@ -1567,7 +1541,7 @@ html[xmlns] .slides { display: block; } width: 48.93617%; float: right; margin-right: 0; - #margin-left: -20px; } + *margin-left: -20px; } /* Footer */ .main-footer .jump-link { @@ -1613,7 +1587,7 @@ html[xmlns] .slides { display: block; } margin: 0.875em 0; } .search-field { - background: #fff; + background: white; padding: .4em .5em .3em; margin-right: .5em; width: 11em; } @@ -1659,37 +1633,38 @@ html[xmlns] .slides { display: block; } right: 2.6em; white-space: nowrap; padding: .4em .75em .35em; - color: #999; + color: #999999; background-color: #1f1f1f; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF333333', endColorstr='#FF1F1F1F'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiMzMzMzMzMiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzFmMWYxZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #333333), color-stop(90%, #1f1f1f)); - background-image: -moz-linear-gradient(#333333 10%, #1f1f1f 90%); background-image: -webkit-linear-gradient(#333333 10%, #1f1f1f 90%); + background-image: -moz-linear-gradient(#333333 10%, #1f1f1f 90%); + background-image: -o-linear-gradient(#333333 10%, #1f1f1f 90%); background-image: linear-gradient(#333333 10%, #1f1f1f 90%); - border-top: 1px solid #444; - border-right: 1px solid #444; - border-bottom: 1px solid #444; - border-left: 1px solid #444; - -moz-border-radius: 6px; + border-top: 1px solid #444444; + border-right: 1px solid #444444; + border-bottom: 1px solid #444444; + border-left: 1px solid #444444; -webkit-border-radius: 6px; + -moz-border-radius: 6px; + -ms-border-radius: 6px; + -o-border-radius: 6px; border-radius: 6px; - -moz-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.05); -webkit-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.05); box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.05); - -moz-transition: opacity 0.25s ease-in-out, top 0s linear 0.25s; - -o-transition: opacity 0.25s ease-in-out, top 0s linear 0.25s; -webkit-transition: opacity 0.25s ease-in-out, top 0s linear; -webkit-transition-delay: 0s, 0.25s; + -moz-transition: opacity 0.25s ease-in-out, top 0s linear 0.25s; + -o-transition: opacity 0.25s ease-in-out, top 0s linear 0.25s; transition: opacity 0.25s ease-in-out, top 0s linear 0.25s; } .flexslide .launch-shell .button:hover .message { opacity: 1; top: 0; + -webkit-transition: opacity 0.25s ease-in-out, top 0s linear; -moz-transition: opacity 0.25s ease-in-out, top 0s linear; -o-transition: opacity 0.25s ease-in-out, top 0s linear; - -webkit-transition: opacity 0.25s ease-in-out, top 0s linear; transition: opacity 0.25s ease-in-out, top 0s linear; } .introduction { @@ -1718,24 +1693,24 @@ html[xmlns] .slides { display: block; } padding-top: 1em; } .about-banner { - background: 120% 0 no-repeat url('../img/landing-about.png?1576869008') transparent; + background: 120% 0 no-repeat url('../img/landing-about.png?1646853871') transparent; min-height: 345px; padding-bottom: 3.5em; margin-bottom: -2.5em; } .download-for-current-os { - background: 130% 0 no-repeat url('../img/landing-downloads.png?1576869008') transparent; + background: 130% 0 no-repeat url('../img/landing-downloads.png?1646853871') transparent; min-height: 345px; padding-bottom: 4em; margin-bottom: -3em; } .documentation-banner { - background: 130% 0 no-repeat url('../img/landing-docs.png?1576869008') transparent; + background: 130% 0 no-repeat url('../img/landing-docs.png?1646853871') transparent; padding-bottom: 1em; } .community-banner { text-align: left; - background: 110% 0 no-repeat url('../img/landing-community.png?1576869008') transparent; + background: 110% 0 no-repeat url('../img/landing-community.png?1646853871') transparent; min-height: 345px; padding-bottom: 2em; margin-bottom: -1.25em; } @@ -1789,7 +1764,7 @@ html[xmlns] .slides { display: block; } width: 74.46809%; float: right; margin-right: 0; - #margin-left: -20px; } + *margin-left: -20px; } .main-content.with-right-sidebar { width: 74.46809%; float: left; @@ -1806,7 +1781,7 @@ html[xmlns] .slides { display: block; } width: 23.40426%; float: right; margin-right: 0; - #margin-left: -20px; } + *margin-left: -20px; } .featured-success-story { /*blockquote*/ } @@ -1839,7 +1814,7 @@ html[xmlns] .slides { display: block; } right: 1em; width: 210px; height: 210px; - background: top left no-repeat url('../img/python-logo-large.png?1576869008') transparent; } + background: top left no-repeat url('../img/python-logo-large.png?1646853871') transparent; } .psf-widget .widget-title, .psf-widget p, .python-needs-you-widget .widget-title, .python-needs-you-widget p { margin-right: 34.04255%; } @@ -1871,7 +1846,7 @@ html[xmlns] .slides { display: block; } width: 48.93617%; float: right; margin-right: 0; - #margin-left: -20px; + *margin-left: -20px; text-align: right; clear: none; } .list-recent-jobs .listing-actions { @@ -1887,14 +1862,14 @@ html[xmlns] .slides { display: block; } float: left; margin-right: 2.12766%; } .listing-company .listing-company-name a:hover:after, .listing-company .listing-company-name a:focus:after { - color: #666; + color: #666666; content: " View Details"; font-size: .75em; } .listing-company .listing-location { width: 40.42553%; float: right; margin-right: 0; - #margin-left: -20px; + *margin-left: -20px; text-align: right; } .job-meta { @@ -1907,7 +1882,7 @@ html[xmlns] .slides { display: block; } width: 48.93617%; float: right; margin-right: 0; - #margin-left: -20px; } + *margin-left: -20px; } /* Forms that are wide enough to have labels and input fields side by side */ .wide-form ul { @@ -2030,20 +2005,20 @@ html[xmlns] .slides { display: block; } .no-touch .main-navigation .subnav { min-width: 100%; display: none; + -webkit-transition: all 0s ease; -moz-transition: all 0s ease; -o-transition: all 0s ease; - -webkit-transition: all 0s ease; transition: all 0s ease; } .touch .main-navigation .subnav { top: 120%; display: none; opacity: 0; + -webkit-transition: opacity 0.25s ease-in-out; -moz-transition: opacity 0.25s ease-in-out; -o-transition: opacity 0.25s ease-in-out; - -webkit-transition: opacity 0.25s ease-in-out; transition: opacity 0.25s ease-in-out; - -moz-box-shadow: 0 0.25em 0.75em rgba(0, 0, 0, 0.6); -webkit-box-shadow: 0 0.25em 0.75em rgba(0, 0, 0, 0.6); + -moz-box-shadow: 0 0.25em 0.75em rgba(0, 0, 0, 0.6); box-shadow: 0 0.25em 0.75em rgba(0, 0, 0, 0.6); } .touch .main-navigation .subnav:before { position: absolute; @@ -2058,16 +2033,16 @@ html[xmlns] .slides { display: block; } .no-touch .main-navigation .element-1:hover .subnav, .no-touch .main-navigation .element-1:focus .subnav, .no-touch .main-navigation .element-2:hover .subnav, .no-touch .main-navigation .element-2:focus .subnav, .no-touch .main-navigation .element-3:hover .subnav, .no-touch .main-navigation .element-3:focus .subnav, .no-touch .main-navigation .element-4:hover .subnav, .no-touch .main-navigation .element-4:focus .subnav { left: 0; display: initial; + -webkit-transition-delay: 0.25s; -moz-transition-delay: 0.25s; -o-transition-delay: 0.25s; - -webkit-transition-delay: 0.25s; transition-delay: 0.25s; } .no-touch .main-navigation .element-5:hover .subnav, .no-touch .main-navigation .element-5:focus .subnav, .no-touch .main-navigation .element-6:hover .subnav, .no-touch .main-navigation .element-6:focus .subnav, .no-touch .main-navigation .element-7:hover .subnav, .no-touch .main-navigation .element-7:focus .subnav, .no-touch .main-navigation .element-8:hover .subnav, .no-touch .main-navigation .element-8:focus .subnav, .no-touch .main-navigation .last:hover .subnav, .no-touch .main-navigation .last:focus .subnav { right: 0; display: initial; + -webkit-transition-delay: 0.25s; -moz-transition-delay: 0.25s; -o-transition-delay: 0.25s; - -webkit-transition-delay: 0.25s; transition-delay: 0.25s; } .touch .main-navigation .element-1, .touch .main-navigation .element-2, .touch .main-navigation .element-3, .touch .main-navigation .element-4 { /* Position the pointer element */ } @@ -2096,11 +2071,13 @@ html[xmlns] .slides { display: block; } display: block; text-align: center; font-size: 1.125em; - -moz-border-radius: 8px; -webkit-border-radius: 8px; + -moz-border-radius: 8px; + -ms-border-radius: 8px; + -o-border-radius: 8px; border-radius: 8px; - -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); } .no-touch .main-navigation .menu { text-align: center; } @@ -2188,7 +2165,7 @@ html[xmlns] .slides { display: block; } /*.subnav li*/ .super-navigation { - color: #666; + color: #666666; position: absolute; /* relative to the containing LI */ top: 0; @@ -2215,7 +2192,7 @@ html[xmlns] .slides { display: block; } line-height: 1.25em; margin-bottom: 0; } .super-navigation p.date-posted { - color: #666; + color: #666666; font-size: 0.625em !important; font-style: italic; } .super-navigation p.excert { @@ -2287,7 +2264,7 @@ html[xmlns] .slides { display: block; } .text { /* Make the intro/first paragraphs slightly larger? */ } .text > p:first-of-type { - color: #666; + color: #666666; font-size: 1.125em; line-height: 1.6875; margin-bottom: 1.25em; } @@ -2417,7 +2394,7 @@ html[xmlns] .slides { display: block; } .home-slideshow .flex-direction-nav .flex-prev, .home-slideshow .flex-direction-nav .flex-next { top: 40%; font-size: 1.5em; - filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false); + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); opacity: 1; } .home-slideshow .flex-direction-nav .flex-prev { left: -.75em; } @@ -2471,25 +2448,27 @@ html[xmlns] .slides { display: block; } display: block; opacity: 1; border-top: 0; - -moz-box-shadow: none; -webkit-box-shadow: none; + -moz-box-shadow: none; box-shadow: none; } /* TO DO: With Javascript, look for a left-right swipe action and also trigger the menu to open */ .touch #touchnav-wrapper { + -webkit-transition: -webkit-transform 300ms ease; -moz-transition: -moz-transform 300ms ease; -o-transition: -o-transform 300ms ease; - -webkit-transition: -webkit-transform 300ms ease; transition: transform 300ms ease; + -webkit-transform: translate3d(0, 0, 0); -moz-transform: translate3d(0, 0, 0); -ms-transform: translate3d(0, 0, 0); - -webkit-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); -webkit-backface-visibility: hidden; } .touch .show-sidemenu #touchnav-wrapper { + -webkit-transform: translate3d(260px, 0, 0); -moz-transform: translate3d(260px, 0, 0); -ms-transform: translate3d(260px, 0, 0); - -webkit-transform: translate3d(260px, 0, 0); + -o-transform: translate3d(260px, 0, 0); transform: translate3d(260px, 0, 0); } } /* - - - Larger than 1024px - - - */ @media (min-width: 64em) { @@ -2585,7 +2564,6 @@ html[xmlns] .slides { display: block; } */ @-ms-viewport { width: device-width; } + @viewport { width: device-width; } - -/*# sourceMappingURL=mq.css.map */ diff --git a/static/sass/no-mq.css b/static/sass/no-mq.css index 283fffa7b..0565a60dd 100644 --- a/static/sass/no-mq.css +++ b/static/sass/no-mq.css @@ -177,7 +177,7 @@ .slides, .flex-control-nav, .flex-direction-nav {margin: 0; padding: 0; list-style: none;} */ -/* FlexSlider Necessary Styles + /* FlexSlider Necessary Styles .flexslider {margin: 0; padding: 0;} .flexslider .slides > li {display: none; -webkit-backface-visibility: hidden;} /* Hide the slides before the JS is loaded. Avoids image jumping .flexslider .slides img {width: 100%; display: block;} @@ -505,9 +505,9 @@ a.button { border-color: transparent; } .search-field { + -webkit-transition: width 0.3s ease-in-out; -moz-transition: width 0.3s ease-in-out; -o-transition: width 0.3s ease-in-out; - -webkit-transition: width 0.3s ease-in-out; transition: width 0.3s ease-in-out; } .search-field:focus { @@ -562,11 +562,10 @@ a.button { background-color: #2d618c; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF3776AB', endColorstr='#FF2D618C'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIzMCUiIHN0b3AtY29sb3I9IiMzNzc2YWIiLz48c3RvcCBvZmZzZXQ9Ijk1JSIgc3RvcC1jb2xvcj0iIzJkNjE4YyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(30%, #3776ab), color-stop(95%, #2d618c)); - background-image: -moz-linear-gradient(#3776ab 30%, #2d618c 95%); background-image: -webkit-linear-gradient(#3776ab 30%, #2d618c 95%); + background-image: -moz-linear-gradient(#3776ab 30%, #2d618c 95%); + background-image: -o-linear-gradient(#3776ab 30%, #2d618c 95%); background-image: linear-gradient(#3776ab 30%, #2d618c 95%); border-top: 1px solid #629ccd; border-bottom: 1px solid #18334b; @@ -583,15 +582,14 @@ a.button { border-bottom: 1px solid transparent; letter-spacing: 0.01em; } .python-navigation .tier-1 > a:hover, .python-navigation .tier-1 > a:focus, .python-navigation .tier-1 > a .tier-1:hover > a { - color: #fff; + color: white; background-color: #2d618c; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF326B9C', endColorstr='#FF2D618C'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiMzMjZiOWMiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzJkNjE4YyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #326b9c), color-stop(90%, #2d618c)); - background-image: -moz-linear-gradient(#326b9c 10%, #2d618c 90%); background-image: -webkit-linear-gradient(#326b9c 10%, #2d618c 90%); + background-image: -moz-linear-gradient(#326b9c 10%, #2d618c 90%); + background-image: -o-linear-gradient(#326b9c 10%, #2d618c 90%); background-image: linear-gradient(#326b9c 10%, #2d618c 90%); border-top: 1px solid #3776ab; border-bottom: 1px solid #2d618c; } @@ -600,14 +598,13 @@ a.button { background-color: #d6e5f2; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFBBD4E9', endColorstr='#FFD6E5F2'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNiYmQ0ZTkiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2Q2ZTVmMiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #bbd4e9), color-stop(90%, #d6e5f2)); - background-image: -moz-linear-gradient(#bbd4e9 10%, #d6e5f2 90%); background-image: -webkit-linear-gradient(#bbd4e9 10%, #d6e5f2 90%); + background-image: -moz-linear-gradient(#bbd4e9 10%, #d6e5f2 90%); + background-image: -o-linear-gradient(#bbd4e9 10%, #d6e5f2 90%); background-image: linear-gradient(#bbd4e9 10%, #d6e5f2 90%); - -moz-box-shadow: inset 0 0 20px rgba(55, 118, 171, 0.15); -webkit-box-shadow: inset 0 0 20px rgba(55, 118, 171, 0.15); + -moz-box-shadow: inset 0 0 20px rgba(55, 118, 171, 0.15); box-shadow: inset 0 0 20px rgba(55, 118, 171, 0.15); /*modernizr*/ } .touch .python-navigation .subnav:before { @@ -622,27 +619,25 @@ a.button { .python-navigation .tier-2:last-child > a { border-bottom: 1px solid rgba(55, 118, 171, 0.25); } .python-navigation .current_item { - color: #fff; + color: white; background-color: #244e71; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF2B5B84', endColorstr='#FF244E71'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiMyYjViODQiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzI0NGU3MSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #2b5b84), color-stop(90%, #244e71)); - background-image: -moz-linear-gradient(#2b5b84 10%, #244e71 90%); background-image: -webkit-linear-gradient(#2b5b84 10%, #244e71 90%); + background-image: -moz-linear-gradient(#2b5b84 10%, #244e71 90%); + background-image: -o-linear-gradient(#2b5b84 10%, #244e71 90%); background-image: linear-gradient(#2b5b84 10%, #244e71 90%); } .python-navigation .super-navigation { - color: #666; + color: #666666; border: 1px solid #89b4d9; background-color: #d6e5f2; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFCFDFE', endColorstr='#FFD6E5F2'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmY2ZkZmUiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2Q2ZTVmMiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #fcfdfe), color-stop(90%, #d6e5f2)); - background-image: -moz-linear-gradient(#fcfdfe 10%, #d6e5f2 90%); background-image: -webkit-linear-gradient(#fcfdfe 10%, #d6e5f2 90%); + background-image: -moz-linear-gradient(#fcfdfe 10%, #d6e5f2 90%); + background-image: -o-linear-gradient(#fcfdfe 10%, #d6e5f2 90%); background-image: linear-gradient(#fcfdfe 10%, #d6e5f2 90%); } .python-navigation .super-navigation a:not(.button) { color: #3776ab; } @@ -653,18 +648,17 @@ a.button { background-color: #646565; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF78797A', endColorstr='#FF646565'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIzMCUiIHN0b3AtY29sb3I9IiM3ODc5N2EiLz48c3RvcCBvZmZzZXQ9Ijk1JSIgc3RvcC1jb2xvcj0iIzY0NjU2NSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(30%, #78797a), color-stop(95%, #646565)); - background-image: -moz-linear-gradient(#78797a 30%, #646565 95%); background-image: -webkit-linear-gradient(#78797a 30%, #646565 95%); + background-image: -moz-linear-gradient(#78797a 30%, #646565 95%); + background-image: -o-linear-gradient(#78797a 30%, #646565 95%); background-image: linear-gradient(#78797a 30%, #646565 95%); border-top: 1px solid #9e9fa0; border-bottom: 1px solid #39393a; /*a*/ } .psf-navigation .tier-1 { border-top: 1px solid #929393; - border-right: 1px solid #5f6060; + border-right: 1px solid #5f5f60; border-bottom: 1px solid #454647; border-left: 1px solid #929393; } .psf-navigation .tier-1 > a { @@ -674,15 +668,14 @@ a.button { border-bottom: 1px solid transparent; letter-spacing: 0.01em; } .psf-navigation .tier-1 > a:hover, .psf-navigation .tier-1 > a:focus, .psf-navigation .tier-1 > a .tier-1:hover > a { - color: #fff; + color: white; background-color: #646565; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF6E6F70', endColorstr='#FF646565'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiM2ZTZmNzAiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzY0NjU2NSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #6e6f70), color-stop(90%, #646565)); - background-image: -moz-linear-gradient(#6e6f70 10%, #646565 90%); background-image: -webkit-linear-gradient(#6e6f70 10%, #646565 90%); + background-image: -moz-linear-gradient(#6e6f70 10%, #646565 90%); + background-image: -o-linear-gradient(#6e6f70 10%, #646565 90%); background-image: linear-gradient(#6e6f70 10%, #646565 90%); border-top: 1px solid #78797a; border-bottom: 1px solid #646565; } @@ -691,14 +684,13 @@ a.button { background-color: #ececec; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFDADADA', endColorstr='#FFECECEC'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNkYWRhZGEiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2VjZWNlYyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #dadada), color-stop(90%, #ececec)); - background-image: -moz-linear-gradient(#dadada 10%, #ececec 90%); background-image: -webkit-linear-gradient(#dadada 10%, #ececec 90%); + background-image: -moz-linear-gradient(#dadada 10%, #ececec 90%); + background-image: -o-linear-gradient(#dadada 10%, #ececec 90%); background-image: linear-gradient(#dadada 10%, #ececec 90%); - -moz-box-shadow: inset 0 0 20px rgba(120, 121, 122, 0.15); -webkit-box-shadow: inset 0 0 20px rgba(120, 121, 122, 0.15); + -moz-box-shadow: inset 0 0 20px rgba(120, 121, 122, 0.15); box-shadow: inset 0 0 20px rgba(120, 121, 122, 0.15); /*modernizr*/ } .touch .psf-navigation .subnav:before { @@ -713,27 +705,25 @@ a.button { .psf-navigation .tier-2:last-child > a { border-bottom: 1px solid rgba(120, 121, 122, 0.25); } .psf-navigation .current_item { - color: #fff; + color: white; background-color: #525353; *zoom: 1; - filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF5F6060', endColorstr='#FF525353'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiM1ZjYwNjAiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzUyNTM1MyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #5f6060), color-stop(90%, #525353)); - background-image: -moz-linear-gradient(#5f6060 10%, #525353 90%); - background-image: -webkit-linear-gradient(#5f6060 10%, #525353 90%); - background-image: linear-gradient(#5f6060 10%, #525353 90%); } + filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF5F5F60', endColorstr='#FF525353'); + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #5f5f60), color-stop(90%, #525353)); + background-image: -webkit-linear-gradient(#5f5f60 10%, #525353 90%); + background-image: -moz-linear-gradient(#5f5f60 10%, #525353 90%); + background-image: -o-linear-gradient(#5f5f60 10%, #525353 90%); + background-image: linear-gradient(#5f5f60 10%, #525353 90%); } .psf-navigation .super-navigation { - color: #666; + color: #666666; border: 1px solid #b8b9b9; background-color: #ececec; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FFECECEC'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2VjZWNlYyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffffff), color-stop(90%, #ececec)); - background-image: -moz-linear-gradient(#ffffff 10%, #ececec 90%); background-image: -webkit-linear-gradient(#ffffff 10%, #ececec 90%); + background-image: -moz-linear-gradient(#ffffff 10%, #ececec 90%); + background-image: -o-linear-gradient(#ffffff 10%, #ececec 90%); background-image: linear-gradient(#ffffff 10%, #ececec 90%); } .psf-navigation .super-navigation a:not(.button) { color: #78797a; } @@ -744,13 +734,12 @@ a.button { background-color: #ffc91a; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFD343', endColorstr='#FFFFC91A'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIzMCUiIHN0b3AtY29sb3I9IiNmZmQzNDMiLz48c3RvcCBvZmZzZXQ9Ijk1JSIgc3RvcC1jb2xvcj0iI2ZmYzkxYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(30%, #ffd343), color-stop(95%, #ffc91a)); - background-image: -moz-linear-gradient(#ffd343 30%, #ffc91a 95%); background-image: -webkit-linear-gradient(#ffd343 30%, #ffc91a 95%); + background-image: -moz-linear-gradient(#ffd343 30%, #ffc91a 95%); + background-image: -o-linear-gradient(#ffd343 30%, #ffc91a 95%); background-image: linear-gradient(#ffd343 30%, #ffc91a 95%); - border-top: 1px solid #ffe590; + border-top: 1px solid #ffe58f; border-bottom: 1px solid #c39500; /*a*/ } .docs-navigation .tier-1 { @@ -759,21 +748,20 @@ a.button { border-bottom: 1px solid #dca900; border-left: 1px solid #ffdf76; } .docs-navigation .tier-1 > a { - color: #333; + color: #333333; background-color: transparent; border-top: 1px solid transparent; border-bottom: 1px solid transparent; letter-spacing: 0.01em; } .docs-navigation .tier-1 > a:hover, .docs-navigation .tier-1 > a:focus, .docs-navigation .tier-1 > a .tier-1:hover > a { - color: #fff; + color: white; background-color: #ffc91a; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFCE2F', endColorstr='#FFFFC91A'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmNlMmYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZmYzkxYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffce2f), color-stop(90%, #ffc91a)); - background-image: -moz-linear-gradient(#ffce2f 10%, #ffc91a 90%); background-image: -webkit-linear-gradient(#ffce2f 10%, #ffc91a 90%); + background-image: -moz-linear-gradient(#ffce2f 10%, #ffc91a 90%); + background-image: -o-linear-gradient(#ffce2f 10%, #ffc91a 90%); background-image: linear-gradient(#ffce2f 10%, #ffc91a 90%); border-top: 1px solid #ffd343; border-bottom: 1px solid #ffc91a; } @@ -782,14 +770,13 @@ a.button { background-color: white; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FFFFFFFF'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffffff), color-stop(90%, #ffffff)); - background-image: -moz-linear-gradient(#ffffff 10%, #ffffff 90%); background-image: -webkit-linear-gradient(#ffffff 10%, #ffffff 90%); + background-image: -moz-linear-gradient(#ffffff 10%, #ffffff 90%); + background-image: -o-linear-gradient(#ffffff 10%, #ffffff 90%); background-image: linear-gradient(#ffffff 10%, #ffffff 90%); - -moz-box-shadow: inset 0 0 20px rgba(255, 211, 67, 0.15); -webkit-box-shadow: inset 0 0 20px rgba(255, 211, 67, 0.15); + -moz-box-shadow: inset 0 0 20px rgba(255, 211, 67, 0.15); box-shadow: inset 0 0 20px rgba(255, 211, 67, 0.15); /*modernizr*/ } .touch .docs-navigation .subnav:before { @@ -804,42 +791,39 @@ a.button { .docs-navigation .tier-2:last-child > a { border-bottom: 1px solid rgba(255, 211, 67, 0.25); } .docs-navigation .current_item { - color: #fff; - background-color: #f6bc00; + color: white; + background-color: #f5bc00; *zoom: 1; - filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFC710', endColorstr='#FFF6BC00'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmM3MTAiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2Y2YmMwMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffc710), color-stop(90%, #f6bc00)); - background-image: -moz-linear-gradient(#ffc710 10%, #f6bc00 90%); - background-image: -webkit-linear-gradient(#ffc710 10%, #f6bc00 90%); - background-image: linear-gradient(#ffc710 10%, #f6bc00 90%); } + filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFC710', endColorstr='#FFF5BC00'); + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffc710), color-stop(90%, #f5bc00)); + background-image: -webkit-linear-gradient(#ffc710 10%, #f5bc00 90%); + background-image: -moz-linear-gradient(#ffc710 10%, #f5bc00 90%); + background-image: -o-linear-gradient(#ffc710 10%, #f5bc00 90%); + background-image: linear-gradient(#ffc710 10%, #f5bc00 90%); } .docs-navigation .super-navigation { - color: #666; - border: 1px solid #fff1c3; + color: #666666; + border: 1px solid #fff1c2; background-color: white; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FFFFFFFF'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffffff), color-stop(90%, #ffffff)); - background-image: -moz-linear-gradient(#ffffff 10%, #ffffff 90%); background-image: -webkit-linear-gradient(#ffffff 10%, #ffffff 90%); + background-image: -moz-linear-gradient(#ffffff 10%, #ffffff 90%); + background-image: -o-linear-gradient(#ffffff 10%, #ffffff 90%); background-image: linear-gradient(#ffffff 10%, #ffffff 90%); } .docs-navigation .super-navigation a:not(.button) { color: #ffd343; } .docs-navigation .super-navigation h4 { - color: #ffcd2a; } + color: #ffcd29; } .pypl-navigation { background-color: #6c9238; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF82B043', endColorstr='#FF6C9238'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIzMCUiIHN0b3AtY29sb3I9IiM4MmIwNDMiLz48c3RvcCBvZmZzZXQ9Ijk1JSIgc3RvcC1jb2xvcj0iIzZjOTIzOCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(30%, #82b043), color-stop(95%, #6c9238)); - background-image: -moz-linear-gradient(#82b043 30%, #6c9238 95%); background-image: -webkit-linear-gradient(#82b043 30%, #6c9238 95%); + background-image: -moz-linear-gradient(#82b043 30%, #6c9238 95%); + background-image: -o-linear-gradient(#82b043 30%, #6c9238 95%); background-image: linear-gradient(#82b043 30%, #6c9238 95%); border-top: 1px solid #a6ca75; border-bottom: 1px solid #3e5420; @@ -856,15 +840,14 @@ a.button { border-bottom: 1px solid transparent; letter-spacing: 0.01em; } .pypl-navigation .tier-1 > a:hover, .pypl-navigation .tier-1 > a:focus, .pypl-navigation .tier-1 > a .tier-1:hover > a { - color: #fff; + color: white; background-color: #6c9238; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF77A13D', endColorstr='#FF6C9238'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiM3N2ExM2QiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzZjOTIzOCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #77a13d), color-stop(90%, #6c9238)); - background-image: -moz-linear-gradient(#77a13d 10%, #6c9238 90%); background-image: -webkit-linear-gradient(#77a13d 10%, #6c9238 90%); + background-image: -moz-linear-gradient(#77a13d 10%, #6c9238 90%); + background-image: -o-linear-gradient(#77a13d 10%, #6c9238 90%); background-image: linear-gradient(#77a13d 10%, #6c9238 90%); border-top: 1px solid #82b043; border-bottom: 1px solid #6c9238; } @@ -873,14 +856,13 @@ a.button { background-color: #eef5e4; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFDDEBCA', endColorstr='#FFEEF5E4'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNkZGViY2EiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2VlZjVlNCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ddebca), color-stop(90%, #eef5e4)); - background-image: -moz-linear-gradient(#ddebca 10%, #eef5e4 90%); background-image: -webkit-linear-gradient(#ddebca 10%, #eef5e4 90%); + background-image: -moz-linear-gradient(#ddebca 10%, #eef5e4 90%); + background-image: -o-linear-gradient(#ddebca 10%, #eef5e4 90%); background-image: linear-gradient(#ddebca 10%, #eef5e4 90%); - -moz-box-shadow: inset 0 0 20px rgba(130, 176, 67, 0.15); -webkit-box-shadow: inset 0 0 20px rgba(130, 176, 67, 0.15); + -moz-box-shadow: inset 0 0 20px rgba(130, 176, 67, 0.15); box-shadow: inset 0 0 20px rgba(130, 176, 67, 0.15); /*modernizr*/ } .touch .pypl-navigation .subnav:before { @@ -895,27 +877,25 @@ a.button { .pypl-navigation .tier-2:last-child > a { border-bottom: 1px solid rgba(130, 176, 67, 0.25); } .pypl-navigation .current_item { - color: #fff; + color: white; background-color: #59792e; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF678B35', endColorstr='#FF59792E'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiM2NzhiMzUiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzU5NzkyZSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #678b35), color-stop(90%, #59792e)); - background-image: -moz-linear-gradient(#678b35 10%, #59792e 90%); background-image: -webkit-linear-gradient(#678b35 10%, #59792e 90%); + background-image: -moz-linear-gradient(#678b35 10%, #59792e 90%); + background-image: -o-linear-gradient(#678b35 10%, #59792e 90%); background-image: linear-gradient(#678b35 10%, #59792e 90%); } .pypl-navigation .super-navigation { - color: #666; + color: #666666; border: 1px solid #bed99a; background-color: #eef5e4; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FFEEF5E4'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2VlZjVlNCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffffff), color-stop(90%, #eef5e4)); - background-image: -moz-linear-gradient(#ffffff 10%, #eef5e4 90%); background-image: -webkit-linear-gradient(#ffffff 10%, #eef5e4 90%); + background-image: -moz-linear-gradient(#ffffff 10%, #eef5e4 90%); + background-image: -o-linear-gradient(#ffffff 10%, #eef5e4 90%); background-image: linear-gradient(#ffffff 10%, #eef5e4 90%); } .pypl-navigation .super-navigation a:not(.button) { color: #82b043; } @@ -926,11 +906,10 @@ a.button { background-color: #8b5792; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFA06BA7', endColorstr='#FF8B5792'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIzMCUiIHN0b3AtY29sb3I9IiNhMDZiYTciLz48c3RvcCBvZmZzZXQ9Ijk1JSIgc3RvcC1jb2xvcj0iIzhiNTc5MiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(30%, #a06ba7), color-stop(95%, #8b5792)); - background-image: -moz-linear-gradient(#a06ba7 30%, #8b5792 95%); background-image: -webkit-linear-gradient(#a06ba7 30%, #8b5792 95%); + background-image: -moz-linear-gradient(#a06ba7 30%, #8b5792 95%); + background-image: -o-linear-gradient(#a06ba7 30%, #8b5792 95%); background-image: linear-gradient(#a06ba7 30%, #8b5792 95%); border-top: 1px solid #bf9bc4; border-bottom: 1px solid #58375c; @@ -947,15 +926,14 @@ a.button { border-bottom: 1px solid transparent; letter-spacing: 0.01em; } .jobs-navigation .tier-1 > a:hover, .jobs-navigation .tier-1 > a:focus, .jobs-navigation .tier-1 > a .tier-1:hover > a { - color: #fff; + color: white; background-color: #8b5792; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF985F9F', endColorstr='#FF8B5792'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiM5ODVmOWYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzhiNTc5MiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #985f9f), color-stop(90%, #8b5792)); - background-image: -moz-linear-gradient(#985f9f 10%, #8b5792 90%); background-image: -webkit-linear-gradient(#985f9f 10%, #8b5792 90%); + background-image: -moz-linear-gradient(#985f9f 10%, #8b5792 90%); + background-image: -o-linear-gradient(#985f9f 10%, #8b5792 90%); background-image: linear-gradient(#985f9f 10%, #8b5792 90%); border-top: 1px solid #a06ba7; border-bottom: 1px solid #8b5792; } @@ -964,14 +942,13 @@ a.button { background-color: #fcfbfd; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFEEE5EF', endColorstr='#FFFCFBFD'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNlZWU1ZWYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZjZmJmZCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #eee5ef), color-stop(90%, #fcfbfd)); - background-image: -moz-linear-gradient(#eee5ef 10%, #fcfbfd 90%); background-image: -webkit-linear-gradient(#eee5ef 10%, #fcfbfd 90%); + background-image: -moz-linear-gradient(#eee5ef 10%, #fcfbfd 90%); + background-image: -o-linear-gradient(#eee5ef 10%, #fcfbfd 90%); background-image: linear-gradient(#eee5ef 10%, #fcfbfd 90%); - -moz-box-shadow: inset 0 0 20px rgba(160, 107, 167, 0.15); -webkit-box-shadow: inset 0 0 20px rgba(160, 107, 167, 0.15); + -moz-box-shadow: inset 0 0 20px rgba(160, 107, 167, 0.15); box-shadow: inset 0 0 20px rgba(160, 107, 167, 0.15); /*modernizr*/ } .touch .jobs-navigation .subnav:before { @@ -986,27 +963,25 @@ a.button { .jobs-navigation .tier-2:last-child > a { border-bottom: 1px solid rgba(160, 107, 167, 0.25); } .jobs-navigation .current_item { - color: #fff; + color: white; background-color: #764a7c; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF85538C', endColorstr='#FF764A7C'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiM4NTUzOGMiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzc2NGE3YyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #85538c), color-stop(90%, #764a7c)); - background-image: -moz-linear-gradient(#85538c 10%, #764a7c 90%); background-image: -webkit-linear-gradient(#85538c 10%, #764a7c 90%); + background-image: -moz-linear-gradient(#85538c 10%, #764a7c 90%); + background-image: -o-linear-gradient(#85538c 10%, #764a7c 90%); background-image: linear-gradient(#85538c 10%, #764a7c 90%); } .jobs-navigation .super-navigation { - color: #666; + color: #666666; border: 1px solid #d3bbd7; background-color: #fcfbfd; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FFFCFBFD'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZjZmJmZCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffffff), color-stop(90%, #fcfbfd)); - background-image: -moz-linear-gradient(#ffffff 10%, #fcfbfd 90%); background-image: -webkit-linear-gradient(#ffffff 10%, #fcfbfd 90%); + background-image: -moz-linear-gradient(#ffffff 10%, #fcfbfd 90%); + background-image: -o-linear-gradient(#ffffff 10%, #fcfbfd 90%); background-image: linear-gradient(#ffffff 10%, #fcfbfd 90%); } .jobs-navigation .super-navigation a:not(.button) { color: #a06ba7; } @@ -1017,11 +992,10 @@ a.button { background-color: #9e4650; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFB55863', endColorstr='#FF9E4650'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIzMCUiIHN0b3AtY29sb3I9IiNiNTU4NjMiLz48c3RvcCBvZmZzZXQ9Ijk1JSIgc3RvcC1jb2xvcj0iIzllNDY1MCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(30%, #b55863), color-stop(95%, #9e4650)); - background-image: -moz-linear-gradient(#b55863 30%, #9e4650 95%); background-image: -webkit-linear-gradient(#b55863 30%, #9e4650 95%); + background-image: -moz-linear-gradient(#b55863 30%, #9e4650 95%); + background-image: -o-linear-gradient(#b55863 30%, #9e4650 95%); background-image: linear-gradient(#b55863 30%, #9e4650 95%); border-top: 1px solid #cc8d95; border-bottom: 1px solid #622b32; @@ -1038,15 +1012,14 @@ a.button { border-bottom: 1px solid transparent; letter-spacing: 0.01em; } .shop-navigation .tier-1 > a:hover, .shop-navigation .tier-1 > a:focus, .shop-navigation .tier-1 > a .tier-1:hover > a { - color: #fff; + color: white; background-color: #9e4650; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFAC4C58', endColorstr='#FF9E4650'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNhYzRjNTgiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzllNDY1MCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ac4c58), color-stop(90%, #9e4650)); - background-image: -moz-linear-gradient(#ac4c58 10%, #9e4650 90%); background-image: -webkit-linear-gradient(#ac4c58 10%, #9e4650 90%); + background-image: -moz-linear-gradient(#ac4c58 10%, #9e4650 90%); + background-image: -o-linear-gradient(#ac4c58 10%, #9e4650 90%); background-image: linear-gradient(#ac4c58 10%, #9e4650 90%); border-top: 1px solid #b55863; border-bottom: 1px solid #9e4650; } @@ -1055,14 +1028,13 @@ a.button { background-color: #fbf7f8; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFF1DEE0', endColorstr='#FFFBF7F8'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmMWRlZTAiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZiZjdmOCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #f1dee0), color-stop(90%, #fbf7f8)); - background-image: -moz-linear-gradient(#f1dee0 10%, #fbf7f8 90%); background-image: -webkit-linear-gradient(#f1dee0 10%, #fbf7f8 90%); + background-image: -moz-linear-gradient(#f1dee0 10%, #fbf7f8 90%); + background-image: -o-linear-gradient(#f1dee0 10%, #fbf7f8 90%); background-image: linear-gradient(#f1dee0 10%, #fbf7f8 90%); - -moz-box-shadow: inset 0 0 20px rgba(181, 88, 99, 0.15); -webkit-box-shadow: inset 0 0 20px rgba(181, 88, 99, 0.15); + -moz-box-shadow: inset 0 0 20px rgba(181, 88, 99, 0.15); box-shadow: inset 0 0 20px rgba(181, 88, 99, 0.15); /*modernizr*/ } .touch .shop-navigation .subnav:before { @@ -1077,27 +1049,25 @@ a.button { .shop-navigation .tier-2:last-child > a { border-bottom: 1px solid rgba(181, 88, 99, 0.25); } .shop-navigation .current_item { - color: #fff; + color: white; background-color: #853b44; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF97434D', endColorstr='#FF853B44'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiM5NzQzNGQiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzg1M2I0NCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #97434d), color-stop(90%, #853b44)); - background-image: -moz-linear-gradient(#97434d 10%, #853b44 90%); background-image: -webkit-linear-gradient(#97434d 10%, #853b44 90%); + background-image: -moz-linear-gradient(#97434d 10%, #853b44 90%); + background-image: -o-linear-gradient(#97434d 10%, #853b44 90%); background-image: linear-gradient(#97434d 10%, #853b44 90%); } .shop-navigation .super-navigation { - color: #666; + color: #666666; border: 1px solid #dcb0b6; background-color: #fbf7f8; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FFFBF7F8'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZiZjdmOCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffffff), color-stop(90%, #fbf7f8)); - background-image: -moz-linear-gradient(#ffffff 10%, #fbf7f8 90%); background-image: -webkit-linear-gradient(#ffffff 10%, #fbf7f8 90%); + background-image: -moz-linear-gradient(#ffffff 10%, #fbf7f8 90%); + background-image: -o-linear-gradient(#ffffff 10%, #fbf7f8 90%); background-image: linear-gradient(#ffffff 10%, #fbf7f8 90%); } .shop-navigation .super-navigation a:not(.button) { color: #b55863; } @@ -1115,7 +1085,7 @@ a.button { width: 65.95745%; float: right; margin-right: 0; - #margin-left: -20px; } + *margin-left: -20px; } .main-content.with-right-sidebar { width: 65.95745%; float: left; @@ -1136,13 +1106,13 @@ a.button { width: 31.91489%; float: right; margin-right: 0; - #margin-left: -20px; } + *margin-left: -20px; } .left-sidebar .small-widget, .left-sidebar .medium-widget, .left-sidebar .triple-widget, .right-sidebar .small-widget, .right-sidebar .medium-widget, .right-sidebar .triple-widget { float: none; width: auto; margin-right: auto; - #margin-left: auto; } + *margin-left: auto; } /* Widgets in main content */ .row { @@ -1216,15 +1186,15 @@ a.button { .listing-company-category:before { content: "Category: "; - color: #666; } + color: #666666; } .listing-job-title:before { content: "Title: "; - color: #666; } + color: #666666; } .listing-job-type:before { content: "Looking for: "; - color: #666; } + color: #666666; } .release-number, .release-date, @@ -1277,8 +1247,8 @@ a.button { overflow: hidden; *zoom: 1; } .previous-next a { - -moz-box-sizing: border-box; -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; box-sizing: border-box; } .previous-next .prev-button { width: 48.93617%; @@ -1288,7 +1258,7 @@ a.button { width: 48.93617%; float: right; margin-right: 0; - #margin-left: -20px; } + *margin-left: -20px; } /* Footer */ .main-footer .jump-link { @@ -1328,7 +1298,7 @@ a.button { margin: 0.875em 0; } .search-field { - background: #fff; + background: white; padding: .4em .5em .3em; margin-right: .5em; width: 11em; } @@ -1374,37 +1344,38 @@ a.button { right: 2.6em; white-space: nowrap; padding: .4em .75em .35em; - color: #999; + color: #999999; background-color: #1f1f1f; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF333333', endColorstr='#FF1F1F1F'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiMzMzMzMzMiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzFmMWYxZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #333333), color-stop(90%, #1f1f1f)); - background-image: -moz-linear-gradient(#333333 10%, #1f1f1f 90%); background-image: -webkit-linear-gradient(#333333 10%, #1f1f1f 90%); + background-image: -moz-linear-gradient(#333333 10%, #1f1f1f 90%); + background-image: -o-linear-gradient(#333333 10%, #1f1f1f 90%); background-image: linear-gradient(#333333 10%, #1f1f1f 90%); - border-top: 1px solid #444; - border-right: 1px solid #444; - border-bottom: 1px solid #444; - border-left: 1px solid #444; - -moz-border-radius: 6px; + border-top: 1px solid #444444; + border-right: 1px solid #444444; + border-bottom: 1px solid #444444; + border-left: 1px solid #444444; -webkit-border-radius: 6px; + -moz-border-radius: 6px; + -ms-border-radius: 6px; + -o-border-radius: 6px; border-radius: 6px; - -moz-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.05); -webkit-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.05); box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.05); - -moz-transition: opacity 0.25s ease-in-out, top 0s linear 0.25s; - -o-transition: opacity 0.25s ease-in-out, top 0s linear 0.25s; -webkit-transition: opacity 0.25s ease-in-out, top 0s linear; -webkit-transition-delay: 0s, 0.25s; + -moz-transition: opacity 0.25s ease-in-out, top 0s linear 0.25s; + -o-transition: opacity 0.25s ease-in-out, top 0s linear 0.25s; transition: opacity 0.25s ease-in-out, top 0s linear 0.25s; } .flexslide .launch-shell .button:hover .message { opacity: 1; top: 0; + -webkit-transition: opacity 0.25s ease-in-out, top 0s linear; -moz-transition: opacity 0.25s ease-in-out, top 0s linear; -o-transition: opacity 0.25s ease-in-out, top 0s linear; - -webkit-transition: opacity 0.25s ease-in-out, top 0s linear; transition: opacity 0.25s ease-in-out, top 0s linear; } .introduction { @@ -1433,24 +1404,24 @@ a.button { padding-top: 1em; } .about-banner { - background: 120% 0 no-repeat url('../img/landing-about.png?1576869008') transparent; + background: 120% 0 no-repeat url('../img/landing-about.png?1646853871') transparent; min-height: 345px; padding-bottom: 3.5em; margin-bottom: -2.5em; } .download-for-current-os { - background: 130% 0 no-repeat url('../img/landing-downloads.png?1576869008') transparent; + background: 130% 0 no-repeat url('../img/landing-downloads.png?1646853871') transparent; min-height: 345px; padding-bottom: 4em; margin-bottom: -3em; } .documentation-banner { - background: 130% 0 no-repeat url('../img/landing-docs.png?1576869008') transparent; + background: 130% 0 no-repeat url('../img/landing-docs.png?1646853871') transparent; padding-bottom: 1em; } .community-banner { text-align: left; - background: 110% 0 no-repeat url('../img/landing-community.png?1576869008') transparent; + background: 110% 0 no-repeat url('../img/landing-community.png?1646853871') transparent; min-height: 345px; padding-bottom: 2em; margin-bottom: -1.25em; } @@ -1504,7 +1475,7 @@ a.button { width: 74.46809%; float: right; margin-right: 0; - #margin-left: -20px; } + *margin-left: -20px; } .main-content.with-right-sidebar { width: 74.46809%; float: left; @@ -1521,7 +1492,7 @@ a.button { width: 23.40426%; float: right; margin-right: 0; - #margin-left: -20px; } + *margin-left: -20px; } .featured-success-story { /*blockquote*/ } @@ -1554,7 +1525,7 @@ a.button { right: 1em; width: 210px; height: 210px; - background: top left no-repeat url('../img/python-logo-large.png?1576869008') transparent; } + background: top left no-repeat url('../img/python-logo-large.png?1646853871') transparent; } .psf-widget .widget-title, .psf-widget p, .python-needs-you-widget .widget-title, .python-needs-you-widget p { margin-right: 34.04255%; } @@ -1586,7 +1557,7 @@ a.button { width: 48.93617%; float: right; margin-right: 0; - #margin-left: -20px; + *margin-left: -20px; text-align: right; clear: none; } .list-recent-jobs .listing-actions { @@ -1602,14 +1573,14 @@ a.button { float: left; margin-right: 2.12766%; } .listing-company .listing-company-name a:hover:after, .listing-company .listing-company-name a:focus:after { - color: #666; + color: #666666; content: " View Details"; font-size: .75em; } .listing-company .listing-location { width: 40.42553%; float: right; margin-right: 0; - #margin-left: -20px; + *margin-left: -20px; text-align: right; } .job-meta { @@ -1622,7 +1593,7 @@ a.button { width: 48.93617%; float: right; margin-right: 0; - #margin-left: -20px; } + *margin-left: -20px; } /* Forms that are wide enough to have labels and input fields side by side */ .wide-form ul { @@ -1725,20 +1696,20 @@ a.button { .no-touch .main-navigation .subnav { min-width: 100%; display: none; + -webkit-transition: all 0s ease; -moz-transition: all 0s ease; -o-transition: all 0s ease; - -webkit-transition: all 0s ease; transition: all 0s ease; } .touch .main-navigation .subnav { top: 120%; display: none; opacity: 0; + -webkit-transition: opacity 0.25s ease-in-out; -moz-transition: opacity 0.25s ease-in-out; -o-transition: opacity 0.25s ease-in-out; - -webkit-transition: opacity 0.25s ease-in-out; transition: opacity 0.25s ease-in-out; - -moz-box-shadow: 0 0.25em 0.75em rgba(0, 0, 0, 0.6); -webkit-box-shadow: 0 0.25em 0.75em rgba(0, 0, 0, 0.6); + -moz-box-shadow: 0 0.25em 0.75em rgba(0, 0, 0, 0.6); box-shadow: 0 0.25em 0.75em rgba(0, 0, 0, 0.6); } .touch .main-navigation .subnav:before { position: absolute; @@ -1753,16 +1724,16 @@ a.button { .no-touch .main-navigation .element-1:hover .subnav, .no-touch .main-navigation .element-1:focus .subnav, .no-touch .main-navigation .element-2:hover .subnav, .no-touch .main-navigation .element-2:focus .subnav, .no-touch .main-navigation .element-3:hover .subnav, .no-touch .main-navigation .element-3:focus .subnav, .no-touch .main-navigation .element-4:hover .subnav, .no-touch .main-navigation .element-4:focus .subnav { left: 0; display: initial; + -webkit-transition-delay: 0.25s; -moz-transition-delay: 0.25s; -o-transition-delay: 0.25s; - -webkit-transition-delay: 0.25s; transition-delay: 0.25s; } .no-touch .main-navigation .element-5:hover .subnav, .no-touch .main-navigation .element-5:focus .subnav, .no-touch .main-navigation .element-6:hover .subnav, .no-touch .main-navigation .element-6:focus .subnav, .no-touch .main-navigation .element-7:hover .subnav, .no-touch .main-navigation .element-7:focus .subnav, .no-touch .main-navigation .element-8:hover .subnav, .no-touch .main-navigation .element-8:focus .subnav, .no-touch .main-navigation .last:hover .subnav, .no-touch .main-navigation .last:focus .subnav { right: 0; display: initial; + -webkit-transition-delay: 0.25s; -moz-transition-delay: 0.25s; -o-transition-delay: 0.25s; - -webkit-transition-delay: 0.25s; transition-delay: 0.25s; } .touch .main-navigation .element-1, .touch .main-navigation .element-2, .touch .main-navigation .element-3, .touch .main-navigation .element-4 { /* Position the pointer element */ } @@ -1791,11 +1762,13 @@ a.button { display: block; text-align: center; font-size: 1.125em; - -moz-border-radius: 8px; -webkit-border-radius: 8px; + -moz-border-radius: 8px; + -ms-border-radius: 8px; + -o-border-radius: 8px; border-radius: 8px; - -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); } .no-touch .main-navigation .menu { text-align: center; } @@ -1883,7 +1856,7 @@ a.button { /*.subnav li*/ .super-navigation { - color: #666; + color: #666666; position: absolute; /* relative to the containing LI */ top: 0; @@ -1910,7 +1883,7 @@ a.button { line-height: 1.25em; margin-bottom: 0; } .super-navigation p.date-posted { - color: #666; + color: #666666; font-size: 0.625em !important; font-style: italic; } .super-navigation p.excert { @@ -1982,7 +1955,7 @@ a.button { .text { /* Make the intro/first paragraphs slightly larger? */ } .text > p:first-of-type { - color: #666; + color: #666666; font-size: 1.125em; line-height: 1.6875; margin-bottom: 1.25em; } @@ -2112,7 +2085,7 @@ a.button { .home-slideshow .flex-direction-nav .flex-prev, .home-slideshow .flex-direction-nav .flex-next { top: 40%; font-size: 1.5em; - filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false); + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); opacity: 1; } .home-slideshow .flex-direction-nav .flex-prev { left: -.75em; } @@ -2131,5 +2104,3 @@ a.button { .site-headline a, .site-headline a .python-logo { width: 290px; height: 82px; } - -/*# sourceMappingURL=no-mq.css.map */ diff --git a/static/sass/style.css b/static/sass/style.css index a58863817..c3af6444f 100644 --- a/static/sass/style.css +++ b/static/sass/style.css @@ -115,14 +115,13 @@ background-color: #2b5b84; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF1E415E', endColorstr='#FF2B5B84'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiMxZTQxNWUiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzJiNWI4NCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #1e415e), color-stop(90%, #2b5b84)); - background-image: -moz-linear-gradient(#1e415e 10%, #2b5b84 90%); background-image: -webkit-linear-gradient(#1e415e 10%, #2b5b84 90%); + background-image: -moz-linear-gradient(#1e415e 10%, #2b5b84 90%); + background-image: -o-linear-gradient(#1e415e 10%, #2b5b84 90%); background-image: linear-gradient(#1e415e 10%, #2b5b84 90%); - -moz-box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.03), inset 0 0 20px rgba(0, 0, 0, 0.03); -webkit-box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.03), inset 0 0 20px rgba(0, 0, 0, 0.03); + -moz-box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.03), inset 0 0 20px rgba(0, 0, 0, 0.03); box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.03), inset 0 0 20px rgba(0, 0, 0, 0.03); } .psf-widget, .python-needs-you-widget { @@ -138,14 +137,13 @@ background-color: #d8dbde; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFE6E8EA', endColorstr='#FFD8DBDE'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNlNmU4ZWEiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2Q4ZGJkZSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #e6e8ea), color-stop(90%, #d8dbde)); - background-image: -moz-linear-gradient(#e6e8ea 10%, #d8dbde 90%); background-image: -webkit-linear-gradient(#e6e8ea 10%, #d8dbde 90%); + background-image: -moz-linear-gradient(#e6e8ea 10%, #d8dbde 90%); + background-image: -o-linear-gradient(#e6e8ea 10%, #d8dbde 90%); background-image: linear-gradient(#e6e8ea 10%, #d8dbde 90%); - -moz-box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.01); -webkit-box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.01); + -moz-box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.01); box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.01); } .pep-widget, .most-recent-events .more-by-location, .user-profile-controls div.section-links ul li { @@ -162,14 +160,13 @@ background-color: #ffdd6c; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFE89F', endColorstr='#FFFFDD6C'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmU4OWYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZmZGQ2YyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffe89f), color-stop(90%, #ffdd6c)); - background-image: -moz-linear-gradient(#ffe89f 10%, #ffdd6c 90%); background-image: -webkit-linear-gradient(#ffe89f 10%, #ffdd6c 90%); + background-image: -moz-linear-gradient(#ffe89f 10%, #ffdd6c 90%); + background-image: -o-linear-gradient(#ffe89f 10%, #ffdd6c 90%); background-image: linear-gradient(#ffe89f 10%, #ffdd6c 90%); - -moz-box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.05); -webkit-box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.05); box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.05); } .single-event-date { @@ -185,7 +182,7 @@ /* Buttons */ .psf-widget .button, .python-needs-you-widget .button, .donate-button, .header-banner .button, .header-banner a.button, .user-profile-controls div.section span, a.delete, form.deletion-form button[type="submit"], button[type=submit], .search-button, #dive-into-python .flex-control-paging a, .text form button, .text form input[type=submit], .sidebar-widget form button, -.sidebar-widget form input[type=submit], input[type=submit], input[type=reset], button, a.button, .button { +.sidebar-widget form input[type=submit], #update-sponsorship-assets .btn, input[type=submit], input[type=reset], button, a.button, .button { cursor: pointer; color: #4d4d4d !important; font-weight: normal; @@ -197,130 +194,124 @@ background-color: #cccccc; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFD9D9D9', endColorstr='#FFCCCCCC'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNkOWQ5ZDkiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2NjY2NjYyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #d9d9d9), color-stop(90%, #cccccc)); - background-image: -moz-linear-gradient(#d9d9d9 10%, #cccccc 90%); background-image: -webkit-linear-gradient(#d9d9d9 10%, #cccccc 90%); + background-image: -moz-linear-gradient(#d9d9d9 10%, #cccccc 90%); + background-image: -o-linear-gradient(#d9d9d9 10%, #cccccc 90%); background-image: linear-gradient(#d9d9d9 10%, #cccccc 90%); border-top: 1px solid #caccce; border-right: 1px solid #caccce; - border-bottom: 1px solid #999; + border-bottom: 1px solid #999999; border-left: 1px solid #caccce; - -moz-border-radius: 6px; -webkit-border-radius: 6px; + -moz-border-radius: 6px; + -ms-border-radius: 6px; + -o-border-radius: 6px; border-radius: 6px; - -moz-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.05), inset 0 0 5px rgba(255, 255, 255, 0.5); -webkit-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.05), inset 0 0 5px rgba(255, 255, 255, 0.5); + -moz-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.05), inset 0 0 5px rgba(255, 255, 255, 0.5); box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.05), inset 0 0 5px rgba(255, 255, 255, 0.5); } - .donate-button:hover, .header-banner .button:hover, .header-banner a.button:hover, .user-profile-controls div.section span:hover, a.delete:hover, form.deletion-form button[type="submit"]:hover, .search-button:hover, #dive-into-python .flex-control-paging a:hover, .text form button:hover, .text form input[type=submit]:hover, + .donate-button:hover, .user-profile-controls div.section span:hover, a.delete:hover, form.deletion-form button[type="submit"]:hover, .search-button:hover, #dive-into-python .flex-control-paging a:hover, .text form button:hover, .text form input[type=submit]:hover, .sidebar-widget form button:hover, - .sidebar-widget form input[type=submit]:hover, input[type=submit]:hover, input[type=reset]:hover, button:hover, .button:hover, .donate-button:focus, .header-banner .button:focus, .header-banner a.button:focus, .user-profile-controls div.section span:focus, a.delete:focus, form.deletion-form button[type="submit"]:focus, .search-button:focus, #dive-into-python .flex-control-paging a:focus, .text form button:focus, .text form input[type=submit]:focus, + .sidebar-widget form input[type=submit]:hover, #update-sponsorship-assets .btn:hover, input[type=submit]:hover, input[type=reset]:hover, button:hover, .button:hover, .donate-button:focus, .user-profile-controls div.section span:focus, a.delete:focus, form.deletion-form button[type="submit"]:focus, .search-button:focus, #dive-into-python .flex-control-paging a:focus, .text form button:focus, .text form input[type=submit]:focus, .sidebar-widget form button:focus, - .sidebar-widget form input[type=submit]:focus, input[type=submit]:focus, input[type=reset]:focus, button:focus, .button:focus, .donate-button:active, .header-banner .button:active, .header-banner a.button:active, .user-profile-controls div.section span:active, a.delete:active, form.deletion-form button[type="submit"]:active, .search-button:active, #dive-into-python .flex-control-paging a:active, .text form button:active, .text form input[type=submit]:active, + .sidebar-widget form input[type=submit]:focus, #update-sponsorship-assets .btn:focus, input[type=submit]:focus, input[type=reset]:focus, button:focus, .button:focus, .donate-button:active, .user-profile-controls div.section span:active, a.delete:active, form.deletion-form button[type="submit"]:active, .search-button:active, #dive-into-python .flex-control-paging a:active, .text form button:active, .text form input[type=submit]:active, .sidebar-widget form button:active, - .sidebar-widget form input[type=submit]:active, input[type=submit]:active, input[type=reset]:active, button:active, .button:active { + .sidebar-widget form input[type=submit]:active, #update-sponsorship-assets .btn:active, input[type=submit]:active, input[type=reset]:active, button:active, .button:active { color: #1a1a1a !important; background-color: #d9d9d9; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFE6E6E6', endColorstr='#FFD9D9D9'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNlNmU2ZTYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2Q5ZDlkOSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #e6e6e6), color-stop(90%, #d9d9d9)); - background-image: -moz-linear-gradient(#e6e6e6 10%, #d9d9d9 90%); background-image: -webkit-linear-gradient(#e6e6e6 10%, #d9d9d9 90%); + background-image: -moz-linear-gradient(#e6e6e6 10%, #d9d9d9 90%); + background-image: -o-linear-gradient(#e6e6e6 10%, #d9d9d9 90%); background-image: linear-gradient(#e6e6e6 10%, #d9d9d9 90%); } .psf-widget .button, .python-needs-you-widget .button, .donate-button, .header-banner .button, .header-banner a.button, .user-profile-controls div.section span { background-color: #ffd343; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFDF76', endColorstr='#FFFFD343'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmRmNzYiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZmZDM0MyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffdf76), color-stop(90%, #ffd343)); - background-image: -moz-linear-gradient(#ffdf76 10%, #ffd343 90%); background-image: -webkit-linear-gradient(#ffdf76 10%, #ffd343 90%); + background-image: -moz-linear-gradient(#ffdf76 10%, #ffd343 90%); + background-image: -o-linear-gradient(#ffdf76 10%, #ffd343 90%); background-image: linear-gradient(#ffdf76 10%, #ffd343 90%); border-top: 1px solid #dca900; border-right: 1px solid #dca900; border-bottom: 1px solid #dca900; border-left: 1px solid #dca900; } - .psf-widget .button:hover, .python-needs-you-widget .button:hover, .donate-button:hover, .header-banner .button:hover, .header-banner a.button:hover, .user-profile-controls div.section span:hover, .psf-widget .button:active, .python-needs-you-widget .button:active, .donate-button:active, .header-banner .button:active, .header-banner a.button:active, .user-profile-controls div.section span:active { + .psf-widget .button:hover, .python-needs-you-widget .button:hover, .donate-button:hover, .header-banner .button:hover, .user-profile-controls div.section span:hover, .psf-widget .button:active, .python-needs-you-widget .button:active, .donate-button:active, .header-banner .button:active, .user-profile-controls div.section span:active { background-color: inherit; background-color: #ffd343; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFEBA9', endColorstr='#FFFFD343'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmViYTkiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZmZDM0MyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffeba9), color-stop(90%, #ffd343)); - background-image: -moz-linear-gradient(#ffeba9 10%, #ffd343 90%); background-image: -webkit-linear-gradient(#ffeba9 10%, #ffd343 90%); + background-image: -moz-linear-gradient(#ffeba9 10%, #ffd343 90%); + background-image: -o-linear-gradient(#ffeba9 10%, #ffd343 90%); background-image: linear-gradient(#ffeba9 10%, #ffd343 90%); } a.delete, form.deletion-form button[type="submit"] { background-color: #b55863; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFC57B84', endColorstr='#FFB55863'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNjNTdiODQiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2I1NTg2MyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #c57b84), color-stop(90%, #b55863)); - background-image: -moz-linear-gradient(#c57b84 10%, #b55863 90%); background-image: -webkit-linear-gradient(#c57b84 10%, #b55863 90%); + background-image: -moz-linear-gradient(#c57b84 10%, #b55863 90%); + background-image: -o-linear-gradient(#c57b84 10%, #b55863 90%); background-image: linear-gradient(#c57b84 10%, #b55863 90%); border-top: 1px solid #74333b; border-right: 1px solid #74333b; border-bottom: 1px solid #74333b; border-left: 1px solid #74333b; - color: #fff !important; } + color: white !important; } a.delete:hover, form.deletion-form button[type="submit"]:hover, a.delete:active, form.deletion-form button[type="submit"]:active { background-color: inherit; - color: #fff !important; + color: white !important; background-color: #b55863; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFD49FA5', endColorstr='#FFB55863'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNkNDlmYTUiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2I1NTg2MyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #d49fa5), color-stop(90%, #b55863)); - background-image: -moz-linear-gradient(#d49fa5 10%, #b55863 90%); background-image: -webkit-linear-gradient(#d49fa5 10%, #b55863 90%); + background-image: -moz-linear-gradient(#d49fa5 10%, #b55863 90%); + background-image: -o-linear-gradient(#d49fa5 10%, #b55863 90%); background-image: linear-gradient(#d49fa5 10%, #b55863 90%); } button[type=submit], .search-button, #dive-into-python .flex-control-paging a, .text form button, .text form input[type=submit], .sidebar-widget form button, -.sidebar-widget form input[type=submit] { +.sidebar-widget form input[type=submit], #update-sponsorship-assets .btn { color: #e6e8ea !important; text-shadow: none; background-color: #2b5b84; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF3776AB', endColorstr='#FF2B5B84'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiMzNzc2YWIiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzJiNWI4NCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #3776ab), color-stop(90%, #2b5b84)); - background-image: -moz-linear-gradient(#3776ab 10%, #2b5b84 90%); background-image: -webkit-linear-gradient(#3776ab 10%, #2b5b84 90%); + background-image: -moz-linear-gradient(#3776ab 10%, #2b5b84 90%); + background-image: -o-linear-gradient(#3776ab 10%, #2b5b84 90%); background-image: linear-gradient(#3776ab 10%, #2b5b84 90%); border-top: 1px solid #3d83be; border-right: 1px solid #3776ab; border-bottom: 1px solid #3776ab; border-left: 1px solid #3d83be; - -moz-box-shadow: inset 0 0 5px rgba(55, 118, 171, 0.2); -webkit-box-shadow: inset 0 0 5px rgba(55, 118, 171, 0.2); + -moz-box-shadow: inset 0 0 5px rgba(55, 118, 171, 0.2); box-shadow: inset 0 0 5px rgba(55, 118, 171, 0.2); } button[type=submit]:hover, .search-button:hover, #dive-into-python .flex-control-paging a:hover, .text form button:hover, .text form input[type=submit]:hover, .sidebar-widget form button:hover, - .sidebar-widget form input[type=submit]:hover, button[type=submit]:active, .search-button:active, #dive-into-python .flex-control-paging a:active, .text form button:active, .text form input[type=submit]:active, + .sidebar-widget form input[type=submit]:hover, #update-sponsorship-assets .btn:hover, button[type=submit]:active, .search-button:active, #dive-into-python .flex-control-paging a:active, .text form button:active, .text form input[type=submit]:active, .sidebar-widget form button:active, - .sidebar-widget form input[type=submit]:active { + .sidebar-widget form input[type=submit]:active, #update-sponsorship-assets .btn:active { background: inherit; color: #f2f4f6 !important; background-color: #244e71; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF316998', endColorstr='#FF244E71'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiMzMTY5OTgiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzI0NGU3MSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #316998), color-stop(90%, #244e71)); - background-image: -moz-linear-gradient(#316998 10%, #244e71 90%); background-image: -webkit-linear-gradient(#316998 10%, #244e71 90%); + background-image: -moz-linear-gradient(#316998 10%, #244e71 90%); + background-image: -o-linear-gradient(#316998 10%, #244e71 90%); background-image: linear-gradient(#316998 10%, #244e71 90%); } .header-banner a:not(.button), .header-banner a:not(.readmore), .text a:not(.button), @@ -348,7 +339,7 @@ button[type=submit], .search-button, #dive-into-python .flex-control-paging a, . .pagination a { /* Used in the pagination UL anchors, and in the Previous Next pattern */ display: block; - color: #999; + color: #999999; padding: .5em .75em .4em; border: 1px solid #caccce; background-color: transparent; } @@ -405,7 +396,7 @@ form, .header-banner, .success-stories-widget .quote-from { .slides, .flex-control-nav, .flex-direction-nav {margin: 0; padding: 0; list-style: none;} */ -/* FlexSlider Necessary Styles + /* FlexSlider Necessary Styles .flexslider {margin: 0; padding: 0;} .flexslider .slides > li {display: none; -webkit-backface-visibility: hidden;} /* Hide the slides before the JS is loaded. Avoids image jumping .flexslider .slides img {width: 100%; display: block;} @@ -491,8 +482,8 @@ q q:after { content: "’"; } ins { - background-color: #ddd; - color: #222; + background-color: #dddddd; + color: #222222; text-decoration: none; } mark { @@ -529,7 +520,7 @@ hr { input, button, select { display: inline-block; vertical-align: middle; - cursor: pointer; } + cursor: text; } html { font-size: 100%; @@ -674,6 +665,7 @@ abbr.truncation { /* Stupid IE: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/ */ @-ms-viewport { width: device-width; } + canvas { -ms-touch-action: double-tap-zoom; } @@ -712,20 +704,20 @@ html { font: normal 100%/1.625 SourceSansProRegular, Arial, sans-serif; } body { - color: #444; - background-color: #fff; + color: #444444; + background-color: white; /* Label the body with our media query parameters. Then check with JS to coordinate @media changes */ } body:after { content: 'small'; display: none; } body, input, textarea, select, button { - color: #444; + color: #444444; font: normal 100%/1.625 SourceSansProRegular, Arial, sans-serif; } * { - -moz-box-sizing: border-box; -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; box-sizing: border-box; } a, a:active, a:visited, a:hover, a:visited:hover { @@ -737,7 +729,7 @@ a:hover, a:focus { /*modernizr*/ .touch a[href^="tel:"] { - border-bottom: 1px dotted #444; } + border-bottom: 1px dotted #444444; } a img { display: block; @@ -789,34 +781,34 @@ h1, .alpha { margin-bottom: 0.4375em; } h2, .beta { - color: #999; + color: #999999; font-family: SourceSansProRegular, Arial, sans-serif; font-size: 1.5em; margin-top: 1.3125em; margin-bottom: 0.32813em; } h3, .chi { - color: #222; + color: #222222; font-size: 1.3125em; margin-top: 1.75em; margin-bottom: 0.4375em; } h4, .delta { - color: #222; + color: #222222; font-family: SourceSansProBold, Arial, sans-serif; font-size: 1.125em; margin-top: 1.3125em; margin-bottom: 0.4375em; } h5, .epsilon { - color: #222; + color: #222222; font-family: SourceSansProBold, Arial, sans-serif; text-transform: uppercase; letter-spacing: 0.0625em; margin-top: 1.75em; } h6, .gamma { - color: #222; + color: #222222; font-family: SourceSansProBold, Arial, sans-serif; margin-top: 1.75em; } @@ -867,7 +859,7 @@ dl { label { display: block; - color: #999; + color: #999999; font-weight: bold; margin-top: 0.875em; margin-top: 0.21875em; } @@ -878,8 +870,10 @@ input, textarea { width: 100%; padding: .65em; border: 1px solid #caccce; - -moz-border-radius: 6px; -webkit-border-radius: 6px; + -moz-border-radius: 6px; + -ms-border-radius: 6px; + -o-border-radius: 6px; border-radius: 6px; } input, textarea, select { @@ -896,22 +890,22 @@ input[type=radio] { input { /*modernizr*/ } .no-touch input:focus { - -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); } input[required=required] { border-color: #b55863; } input[required=required]:focus { - -moz-box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.5); -webkit-box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.5); + -moz-box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.5); box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.5); } ::-webkit-input-placeholder { - color: #999; + color: #999999; font-style: italic; } input:-moz-placeholder { - color: #999; + color: #999999; font-style: italic; } /* Not a mistake... I repeat a.button and .button so I do not need to add !important to the color declaration */ @@ -919,29 +913,27 @@ input[type=submit], input[type=reset], button, a.button, .button { display: block; } input[type=reset], button.secondaryAction[type=submit] { - background-color: #999; + background-color: #999999; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFB3B3B3', endColorstr='#FF999999'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNiM2IzYjMiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzk5OTk5OSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #b3b3b3), color-stop(90%, #999999)); - background-image: -moz-linear-gradient(#b3b3b3 10%, #999999 90%); background-image: -webkit-linear-gradient(#b3b3b3 10%, #999999 90%); + background-image: -moz-linear-gradient(#b3b3b3 10%, #999999 90%); + background-image: -o-linear-gradient(#b3b3b3 10%, #999999 90%); background-image: linear-gradient(#b3b3b3 10%, #999999 90%); border-top: 1px solid #caccce; - border-right: 1px solid #999; + border-right: 1px solid #999999; border-bottom: 1px solid gray; - border-left: 1px solid #999; } + border-left: 1px solid #999999; } input[type=reset]:hover, input[type=reset]:focus, input[type=reset]:active, button.secondaryAction[type=submit]:hover, button.secondaryAction[type=submit]:focus, button.secondaryAction[type=submit]:active { - color: #fff; + color: white; background-color: #b3b3b3; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF999999', endColorstr='#FFB3B3B3'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiM5OTk5OTkiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2IzYjNiMyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #999999), color-stop(90%, #b3b3b3)); - background-image: -moz-linear-gradient(#999999 10%, #b3b3b3 90%); background-image: -webkit-linear-gradient(#999999 10%, #b3b3b3 90%); + background-image: -moz-linear-gradient(#999999 10%, #b3b3b3 90%); + background-image: -o-linear-gradient(#999999 10%, #b3b3b3 90%); background-image: linear-gradient(#999999 10%, #b3b3b3 90%); } /* Reset for a special case */ @@ -1010,15 +1002,14 @@ h2.not-column { /* ! ===== MAJOR PAGE ELEMENTS ===== */ .top-bar a:hover, .top-bar a:focus, .python .top-bar .python-meta a, .psf .top-bar .psf-meta a, .docs .top-bar .docs-meta a, .pypi .top-bar .pypi-meta a, .jobs .top-bar .jobs-meta a, .shop .top-bar .shop-meta a { - color: #fff; + color: white; background-color: #1f2a32; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF13191E', endColorstr='#FF1F2A32'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiMxMzE5MWUiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzFmMmEzMiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #13191e), color-stop(90%, #1f2a32)); - background-image: -moz-linear-gradient(#13191e 10%, #1f2a32 90%); background-image: -webkit-linear-gradient(#13191e 10%, #1f2a32 90%); + background-image: -moz-linear-gradient(#13191e 10%, #1f2a32 90%); + background-image: -o-linear-gradient(#13191e 10%, #1f2a32 90%); background-image: linear-gradient(#13191e 10%, #1f2a32 90%); } .top-bar a:hover:before, .top-bar a:focus:before, .python .top-bar .python-meta a:before, .psf .top-bar .psf-meta a:before, .docs .top-bar .docs-meta a:before, .pypi .top-bar .pypi-meta a:before, .jobs .top-bar .jobs-meta a:before, .shop .top-bar .shop-meta a:before { left: 50%; } @@ -1030,7 +1021,7 @@ h2.not-column { .top-bar a { position: relative; display: block; - color: #999; + color: #999999; background: transparent; text-align: center; padding: .5em .75em .4em; @@ -1089,7 +1080,7 @@ h2.not-column { /*h1*/ .site-headline { - color: #fff; + color: white; margin: 0.15em auto 0.2em; } .site-headline a { display: block; @@ -1113,14 +1104,16 @@ h2.not-column { .options-bar { width: 100%; - color: #bbb; + color: #bbbbbb; margin-bottom: 1.3125em; border-top: 1px solid #2d3e4d; border-bottom: 1px solid #070a0c; background-color: #1e2933; line-height: 1em; - -moz-border-radius: 6px; -webkit-border-radius: 6px; + -moz-border-radius: 6px; + -ms-border-radius: 6px; + -o-border-radius: 6px; border-radius: 6px; } .options-bar form { padding: 0.35em 0.2em 0.3em; } @@ -1172,9 +1165,9 @@ input#s, border-right: 1px solid #070a0c; } #site-map-link { - color: #bbb; } + color: #bbbbbb; } #site-map-link:hover, #site-map-link:focus { - color: #fff; } + color: white; } .no-touch #site-map-link { display: none; } @@ -1197,28 +1190,30 @@ input#s, .search-field { width: 4.5em; margin-bottom: 0; - color: #bbb; + color: #bbbbbb; background-color: transparent; border: none; margin: .125em 0; padding: .4em 0 .3em; - -moz-border-radius: 0px; -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; border-radius: 0px; } .search-field::-webkit-input-placeholder { - color: #bbb; + color: #bbbbbb; font-style: normal; } .search-field:-moz-placeholder { - color: #bbb; + color: #bbbbbb; font-style: normal; } .search-field:focus { - background-color: #fff; - color: #444; + background-color: white; + color: #444444; padding: .4em .5em .3em; /* removed this line because it was making the height fluctuate on focus: @include pe-border( $color-top: darken( $darkerblue, 12% ), $color-bottom: lighten( $darkerblue, 8% ) ); */ } .search-field:blur { - color: #bbb; } + color: #bbbbbb; } .search-button { margin-right: 0.2em; @@ -1312,25 +1307,15 @@ input#s, .account-signin .sidebar-widget form label + ul, .sidebar-widget form .account-signin label + ul { *zoom: 1; } - .adjust-font-size .menu:after, .adjust-font-size form ul:after, form .adjust-font-size ul:after, .adjust-font-size .errorlist:after, .adjust-font-size .text form label + ul:after, .text form .adjust-font-size label + ul:after, - .adjust-font-size .sidebar-widget form label + ul:after, - .sidebar-widget form .adjust-font-size label + ul:after, + .adjust-font-size .menu:after, .adjust-font-size form ul:after, form .adjust-font-size ul:after, .adjust-font-size .errorlist:after, .winkwink-nudgenudge .menu:after, .winkwink-nudgenudge form ul:after, form .winkwink-nudgenudge ul:after, .winkwink-nudgenudge .errorlist:after, - .winkwink-nudgenudge .text form label + ul:after, - .text form .winkwink-nudgenudge label + ul:after, - .winkwink-nudgenudge .sidebar-widget form label + ul:after, - .sidebar-widget form .winkwink-nudgenudge label + ul:after, .account-signin .menu:after, .account-signin form ul:after, form .account-signin ul:after, - .account-signin .errorlist:after, - .account-signin .text form label + ul:after, - .text form .account-signin label + ul:after, - .account-signin .sidebar-widget form label + ul:after, - .sidebar-widget form .account-signin label + ul:after { + .account-signin .errorlist:after { content: ""; display: table; clear: both; } @@ -1351,9 +1336,9 @@ input#s, .account-signin .subnav { min-width: 100%; display: none; + -webkit-transition: all 0s ease; -moz-transition: all 0s ease; -o-transition: all 0s ease; - -webkit-transition: all 0s ease; transition: all 0s ease; } .touch .adjust-font-size .subnav, .touch .winkwink-nudgenudge .subnav, .touch @@ -1361,12 +1346,12 @@ input#s, top: 120%; display: none; opacity: 0; + -webkit-transition: opacity 0.25s ease-in-out; -moz-transition: opacity 0.25s ease-in-out; -o-transition: opacity 0.25s ease-in-out; - -webkit-transition: opacity 0.25s ease-in-out; transition: opacity 0.25s ease-in-out; - -moz-box-shadow: 0 0.25em 0.75em rgba(0, 0, 0, 0.6); -webkit-box-shadow: 0 0.25em 0.75em rgba(0, 0, 0, 0.6); + -moz-box-shadow: 0 0.25em 0.75em rgba(0, 0, 0, 0.6); box-shadow: 0 0.25em 0.75em rgba(0, 0, 0, 0.6); } .touch .adjust-font-size .subnav:before, .touch .winkwink-nudgenudge .subnav:before, .touch @@ -1399,9 +1384,9 @@ input#s, .account-signin .element-4:focus .subnav { left: 0; display: initial; + -webkit-transition-delay: 0.25s; -moz-transition-delay: 0.25s; -o-transition-delay: 0.25s; - -webkit-transition-delay: 0.25s; transition-delay: 0.25s; } .no-touch .adjust-font-size .element-5:hover .subnav, .no-touch .adjust-font-size .element-5:focus .subnav, .no-touch .adjust-font-size .element-6:hover .subnav, .no-touch .adjust-font-size .element-6:focus .subnav, .no-touch .adjust-font-size .element-7:hover .subnav, .no-touch .adjust-font-size .element-7:focus .subnav, .no-touch .adjust-font-size .element-8:hover .subnav, .no-touch .adjust-font-size .element-8:focus .subnav, .no-touch .adjust-font-size .last:hover .subnav, .no-touch .adjust-font-size .last:focus .subnav, .no-touch .winkwink-nudgenudge .element-5:hover .subnav, .no-touch @@ -1426,9 +1411,9 @@ input#s, .account-signin .last:focus .subnav { right: 0; display: initial; + -webkit-transition-delay: 0.25s; -moz-transition-delay: 0.25s; -o-transition-delay: 0.25s; - -webkit-transition-delay: 0.25s; transition-delay: 0.25s; } .touch .adjust-font-size .element-1, .touch .adjust-font-size .element-2, .touch .adjust-font-size .element-3, .touch .adjust-font-size .element-4, .touch .winkwink-nudgenudge .element-1, .touch @@ -1531,7 +1516,7 @@ input#s, .adjust-font-size a, .winkwink-nudgenudge a, .account-signin a { - color: #bbb; + color: #bbbbbb; background-color: transparent; } .adjust-font-size .tier-1, .winkwink-nudgenudge .tier-1, @@ -1557,7 +1542,7 @@ input#s, .account-signin .subnav a:hover, .account-signin .subnav a:focus { color: #e6e8ea; - background-color: #999; } + background-color: #999999; } .touch .adjust-font-size .subnav a .tier-2, .touch .winkwink-nudgenudge .subnav a .tier-2, .touch .account-signin .subnav a .tier-2 { @@ -1571,12 +1556,12 @@ input#s, .winkwink-nudgenudge .subnav, .touch .account-signin .subnav { top: 135%; - border: 3px solid #666; } + border: 3px solid #666666; } .touch .adjust-font-size .subnav:before, .touch .winkwink-nudgenudge .subnav:before, .touch .account-signin .subnav:before { top: -1.6em; - border-color: transparent transparent #666 transparent; } + border-color: transparent transparent #666666 transparent; } .adjust-font-size :hover .subnav, .winkwink-nudgenudge :hover .subnav, .account-signin :hover .subnav { @@ -1622,8 +1607,8 @@ input#s, margin: 0 auto; max-width: 61.25em; background: #1e2933; - -moz-box-shadow: inset 0 0 30px rgba(0, 0, 0, 0.6); -webkit-box-shadow: inset 0 0 30px rgba(0, 0, 0, 0.6); + -moz-box-shadow: inset 0 0 30px rgba(0, 0, 0, 0.6); box-shadow: inset 0 0 30px rgba(0, 0, 0, 0.6); } .slide-code, @@ -1637,9 +1622,9 @@ input#s, display: inline-block; color: #11a611; } .slide-code code .comment { - color: #666; } + color: #666666; } .slide-code code .output { - color: #ddd; } + color: #dddddd; } .js .launch-shell, .no-js .launch-shell { display: none; } @@ -1665,11 +1650,11 @@ input#s, filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70); opacity: 0.7; } #dive-into-python .flex-control-paging a:hover, #dive-into-python .flex-control-paging a:focus { - filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false); + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); opacity: 1; } #dive-into-python .flex-control-paging .flex-active { color: #ffd343 !important; - filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false); + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); opacity: 1; } .introduction { @@ -1686,7 +1671,7 @@ input#s, color: #ffd343; text-decoration: underline; } .introduction a:hover, .introduction a:focus, .introduction a:link:hover, .introduction a:link:focus, .introduction a:visited:hover, .introduction a:visited:focus { - color: #fff; } + color: white; } .introduction .breaker { display: none; } @@ -1717,11 +1702,10 @@ input#s, background-color: #f9f9f9; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFCFCFC', endColorstr='#FFF9F9F9'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmY2ZjZmMiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2Y5ZjlmOSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #fcfcfc), color-stop(90%, #f9f9f9)); - background-image: -moz-linear-gradient(#fcfcfc 10%, #f9f9f9 90%); background-image: -webkit-linear-gradient(#fcfcfc 10%, #f9f9f9 90%); + background-image: -moz-linear-gradient(#fcfcfc 10%, #f9f9f9 90%); + background-image: -o-linear-gradient(#fcfcfc 10%, #f9f9f9 90%); background-image: linear-gradient(#fcfcfc 10%, #f9f9f9 90%); } .content-wrapper .container { padding: 0.25em; } @@ -1734,7 +1718,7 @@ input#s, padding-bottom: 1.75em; } .page-title { - color: #666; + color: #666666; word-spacing: .15em; font-size: 2em; } .fontface .page-title { @@ -1874,23 +1858,14 @@ input#s, color: $grey-light; margin-right: .5em; } */ } - .text nav a, .text .menu a, .text form ul a, form .text ul a, .text .errorlist a, .text form label + ul a, - .text .sidebar-widget form label + ul a, - .sidebar-widget form .text label + ul a, .text input[type=submit], .text input[type=reset], .text input[type=button], .text button, .text .prompt, .text .readmore:before, .text .give-me-more a:before, .give-me-more .text a:before, - .text nav a:hover, .text .menu a:hover, .text form ul a:hover, form .text ul a:hover, .text .errorlist a:hover, .text form label + ul a:hover, - .text .sidebar-widget form label + ul a:hover, - .sidebar-widget form .text label + ul a:hover, .text input[type=submit]:hover, .text input[type=reset]:hover, .text input[type=button]:hover, .text .prompt:hover, .text .readmore:hover:before, .text .give-me-more a:hover:before, .give-me-more .text a:hover:before, - .text nav a:focus, .text .menu a:focus, .text form ul a:focus, form .text ul a:focus, .text .errorlist a:focus, .text form label + ul a:focus, - .text .sidebar-widget form label + ul a:focus, - .sidebar-widget form .text label + ul a:focus, .text input[type=submit]:focus, .text input[type=reset]:focus, .text input[type=button]:focus, .text .prompt:focus, .text .readmore:focus:before, .text .give-me-more a:focus:before, .give-me-more .text a:focus:before, + .text nav a, .text .menu a, .text form ul a, form .text ul a, .text .errorlist a, .text input[type=submit], .text input[type=reset], .text input[type=button], .text button, .text .prompt, .text .readmore:before, .text .give-me-more a:before, .give-me-more .text a:before, + .text nav a:hover, .text .menu a:hover, .text form ul a:hover, form .text ul a:hover, .text .errorlist a:hover, .text input[type=submit]:hover, .text input[type=reset]:hover, .text input[type=button]:hover, .text .prompt:hover, .text .readmore:hover:before, .text .give-me-more a:hover:before, .give-me-more .text a:hover:before, + .text nav a:focus, .text .menu a:focus, .text form ul a:focus, form .text ul a:focus, .text .errorlist a:focus, .text input[type=submit]:focus, .text input[type=reset]:focus, .text input[type=button]:focus, .text .prompt:focus, .text .readmore:focus:before, .text .give-me-more a:focus:before, .give-me-more .text a:focus:before, .sidebar-widget nav a, .sidebar-widget .menu a, .sidebar-widget form ul a, form .sidebar-widget ul a, .sidebar-widget .errorlist a, - .sidebar-widget .text form label + ul a, - .text form .sidebar-widget label + ul a, - .sidebar-widget form label + ul a, .sidebar-widget input[type=submit], .sidebar-widget input[type=reset], .sidebar-widget input[type=button], @@ -1904,9 +1879,6 @@ input#s, .sidebar-widget form ul a:hover, form .sidebar-widget ul a:hover, .sidebar-widget .errorlist a:hover, - .sidebar-widget .text form label + ul a:hover, - .text form .sidebar-widget label + ul a:hover, - .sidebar-widget form label + ul a:hover, .sidebar-widget input[type=submit]:hover, .sidebar-widget input[type=reset]:hover, .sidebar-widget input[type=button]:hover, @@ -1919,9 +1891,6 @@ input#s, .sidebar-widget form ul a:focus, form .sidebar-widget ul a:focus, .sidebar-widget .errorlist a:focus, - .sidebar-widget .text form label + ul a:focus, - .text form .sidebar-widget label + ul a:focus, - .sidebar-widget form label + ul a:focus, .sidebar-widget input[type=submit]:focus, .sidebar-widget input[type=reset]:focus, .sidebar-widget input[type=button]:focus, @@ -1946,7 +1915,7 @@ input#s, letter-spacing: 0.125em; } .text var, .sidebar-widget var { - color: #222; + color: #222222; font-size: 104%; font-weight: 700; } .text code, .text kbd, .text samp, @@ -1971,46 +1940,50 @@ input#s, margin: 0 -.0625em; background: #e6e8ea; background: rgba(230, 232, 234, 0.5); - -moz-box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.1) inset; -webkit-box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.1) inset; + -moz-box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.1) inset; box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.1) inset; - -moz-border-radius: 6px; -webkit-border-radius: 6px; + -moz-border-radius: 6px; + -ms-border-radius: 6px; + -o-border-radius: 6px; border-radius: 6px; } .text pre, .sidebar-widget pre { padding: .5em; border-left: 5px solid #11a611; background: #e6e8ea; - -moz-box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.1) inset; -webkit-box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.1) inset; + -moz-box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.1) inset; box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.1) inset; } .text pre code, .sidebar-widget pre code { display: block; padding: 0; margin: 0; - -moz-box-shadow: 0; -webkit-box-shadow: 0; + -moz-box-shadow: 0; box-shadow: 0; - -moz-border-radius: 0; -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; border-radius: 0; } .text s, .text strike, .text del, .sidebar-widget s, .sidebar-widget strike, .sidebar-widget del { - color: #999; } + color: #999999; } /* Prettier tables if authors use the correct elements */ table caption { caption-side: top; - color: #444; + color: #444444; font-size: 1.125em; text-align: left; margin-bottom: 1.75em; } table thead, table tfoot { - border-bottom: 1px solid #ddd; } + border-bottom: 1px solid #dddddd; } table tr { background-color: #f6f6f6; } table tr th { @@ -2019,11 +1992,11 @@ table tr:nth-of-type(even), table tr.even { background-color: #f0f0f0; } table th, table td { padding: .25em .5em .2em; - border-left: 2px solid #fff; } + border-left: 2px solid white; } table th:first-child, table td:first-child { border-left: none; } table tfoot { - border-top: 1px solid #ddd; } + border-top: 1px solid #dddddd; } .row-title { border-top: 5px solid #d4dbe1; @@ -2060,7 +2033,7 @@ table tfoot { .widget-title, .listing-company { - color: #444; + color: #444444; line-height: 1.25em; margin: 0 0 0.1em; font-family: Flux-Regular, SourceSansProRegular, Arial, sans-serif; @@ -2083,7 +2056,7 @@ table tfoot { margin-right: .25em; } .widget-title > span:before, .listing-company > span:before { - color: #999; } + color: #999999; } /* ! ===== Section Specific Widget Colorways ===== */ .python .small-widget, .python .download-list-widget, .python .active-release-list-widget, .python .most-recent-events, .python .triple-widget, .python .most-recent-posts, .python @@ -2152,23 +2125,24 @@ table tfoot { letter-spacing: 0.01em; } .success-stories-widget blockquote { - color: #666; - background-color: #ffe590; + color: #666666; + background-color: #ffe58f; padding: 0.7em 1em 0.875em; margin-bottom: 0.4375em; font-size: 1em; line-height: 1.75em; background-color: #ffdf76; *zoom: 1; - filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFE590', endColorstr='#FFFFDF76'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiNmZmU1OTAiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2ZmZGY3NiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffe590), color-stop(90%, #ffdf76)); - background-image: -moz-linear-gradient(#ffe590 10%, #ffdf76 90%); - background-image: -webkit-linear-gradient(#ffe590 10%, #ffdf76 90%); - background-image: linear-gradient(#ffe590 10%, #ffdf76 90%); - -moz-border-radius: 6px; + filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFE58F', endColorstr='#FFFFDF76'); + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffe58f), color-stop(90%, #ffdf76)); + background-image: -webkit-linear-gradient(#ffe58f 10%, #ffdf76 90%); + background-image: -moz-linear-gradient(#ffe58f 10%, #ffdf76 90%); + background-image: -o-linear-gradient(#ffe58f 10%, #ffdf76 90%); + background-image: linear-gradient(#ffe58f 10%, #ffdf76 90%); -webkit-border-radius: 6px; + -moz-border-radius: 6px; + -ms-border-radius: 6px; + -o-border-radius: 6px; border-radius: 6px; } .success-stories-widget blockquote:after { position: absolute; @@ -2182,7 +2156,7 @@ table tfoot { bottom: -2.875em; border-top-color: #ffdf76; } .success-stories-widget blockquote a { - color: #666; } + color: #666666; } .success-stories-widget blockquote a:hover, .success-stories-widget blockquote a:focus, .success-stories-widget blockquote a:active { color: #3776ab; } .success-stories-widget .quote-from td { @@ -2237,9 +2211,9 @@ table tfoot { top: .25em; right: .25em; } .shrubbery .give-me-more a { - color: #999; } + color: #999999; } .shrubbery .give-me-more a:hover, .shrubbery .give-me-more a:active { - color: #666; } + color: #666666; } /* ! ===== PSF Board Meeting Minutes ===== */ .draft-preview { @@ -2262,7 +2236,7 @@ table tfoot { .pep-widget .widget-title a:hover, .pep-widget .widget-title a:active { color: #1f3b47; } .pep-widget .pep-number { - color: #666; + color: #666666; font-family: SourceSansProBold, Arial, sans-serif; display: inline-block; width: 3em; } @@ -2281,7 +2255,7 @@ table tfoot { border-bottom: 1px solid #e6eaee; padding: .6em .75em .5em; } .pep-list li a:hover, .pep-list li a:focus, .pep-list li a:active { - color: #222; + color: #222222; background-color: #fefefe; } .rss-link { @@ -2321,7 +2295,7 @@ table tfoot { display: inline-block; color: #3776ab; } .pep-index-list a:hover, .pep-index-list a:focus, .pep-index-list a:active { - color: #222; } + color: #222222; } .pep-type, .pep-num, .pep-title, .pep-owner { padding: .5em .5em .4em; @@ -2376,7 +2350,7 @@ table tfoot { /* ! ===== Success Stories landing page ===== */ .featured-success-story { padding: 1.3125em 0; - background: center -230px no-repeat url('../img/success-glow2.png?1576869008') transparent; + background: center -230px no-repeat url('../img/success-glow2.png?1646853871') transparent; /*blockquote*/ } .featured-success-story img { padding: 10px 30px; } @@ -2458,7 +2432,7 @@ p.quote-by-organization { .latest-blog-post .readmore, .featured-event .readmore { color: #ffd343; } .latest-blog-post .readmore:hover, .latest-blog-post .readmore:focus, .featured-event .readmore:hover, .featured-event .readmore:focus { - color: #fff; } + color: white; } .most-recent-posts li time { position: relative; } @@ -2470,10 +2444,10 @@ p.quote-by-organization { margin-top: 1.3125em; } .list-recent-events, .list-recent-posts { - border-top: 1px solid #ddd; } + border-top: 1px solid #dddddd; } .list-recent-events li, .list-recent-posts li { position: relative; - border-bottom: 1px solid #ddd; + border-bottom: 1px solid #dddddd; padding: 0 0 0.75em; } .list-recent-events li .date-start, .list-recent-events li .date-end, @@ -2509,15 +2483,17 @@ p.quote-by-organization { /* ! ===== Community landing page ===== */ .community-success-stories blockquote { padding: 0; - color: #666; + color: #666666; line-height: 1.5; } .community-success-stories blockquote:before { content: ''; } .python-weekly { background-color: #f2f4f6; + -webkit-border-radius: 0 0 8px 8px; -moz-border-radius: 0 0 8px 8px; - -webkit-border-radius: 0; + -ms-border-radius: 0 0 8px 8px; + -o-border-radius: 0 0 8px 8px; border-radius: 0 0 8px 8px; padding: .75em 1em; } @@ -2547,7 +2523,7 @@ p.quote-by-organization { /*a*/ } .tag-wrapper .tag { white-space: nowrap; - color: #666; + color: #666666; font-size: 0.875em; vertical-align: baseline; padding: .2em .4em .1em; @@ -2555,7 +2531,7 @@ p.quote-by-organization { border-top: 1px solid #f2f4f6; border-bottom: 1px solid #caccce; } .tag-wrapper .tag:hover, .tag-wrapper .tag:focus { - color: #444; + color: #444444; background-color: #d0d4d7; border-top: 1px solid #dae0e5; border-bottom: 1px solid #b5b8ba; } @@ -2609,7 +2585,7 @@ p.quote-by-organization { zoom: 1; display: inline; } .pagination a:hover, .pagination a:focus { - color: #333; + color: #333333; background-color: #ffd343; } .pagination a.active { color: #e6e8ea; @@ -2649,7 +2625,7 @@ p.quote-by-organization { .previous-next .prev-button:not(.disabled):hover, .previous-next .prev-button:not(.disabled):focus, .previous-next .next-button:not(.disabled):hover, .previous-next .next-button:not(.disabled):focus { - color: #333; + color: #333333; background-color: #ffd343; } .previous-next .prev-button-text, .previous-next .next-button-text { @@ -2713,7 +2689,7 @@ p.quote-by-organization { .main-content .psf-widget a:not(.button), .main-content .python-needs-you-widget a:not(.button) { color: #ffd343; } .main-content .psf-widget a:not(.button):hover, .main-content .psf-widget a:not(.button):focus, .main-content .python-needs-you-widget a:not(.button):hover, .main-content .python-needs-you-widget a:not(.button):focus { - color: #fff1c3; } + color: #fff1c2; } .psf-widget .widget-title, .psf-widget .readmore, .psf-widget .readmore:before, .python-needs-you-widget .widget-title, .python-needs-you-widget .readmore, .python-needs-you-widget .readmore:before { color: #ffd343; } .psf-widget .widget-title:hover, .psf-widget .widget-title:focus, .psf-widget .readmore:hover, .psf-widget .readmore:focus, .psf-widget .readmore:before:hover, .psf-widget .readmore:before:focus, .python-needs-you-widget .widget-title:hover, .python-needs-you-widget .widget-title:focus, .python-needs-you-widget .readmore:hover, .python-needs-you-widget .readmore:focus, .python-needs-you-widget .readmore:before:hover, .python-needs-you-widget .readmore:before:focus { @@ -2730,15 +2706,17 @@ p.quote-by-organization { .user-feedback { padding: .75em 1em .65em; margin-bottom: 1.3125em; - -moz-border-radius: 6px; -webkit-border-radius: 6px; + -moz-border-radius: 6px; + -ms-border-radius: 6px; + -o-border-radius: 6px; border-radius: 6px; } .user-feedback p { margin-bottom: 0; } .user-feedback a { text-decoration: underline; } .user-feedback a:hover, .user-feedback a:focus { - color: #222; } + color: #222222; } /* A helpful tip */ .level-general { @@ -2784,7 +2762,7 @@ p.quote-by-organization { /*h2*/ .listing-company .listing-new { display: inline-block; - color: #fff; + color: white; background-color: #b55863; font-size: 0.58333em; text-transform: uppercase; @@ -2793,15 +2771,15 @@ p.quote-by-organization { margin-right: .25em; } .listing-company .listing-removed { display: inline-block; - color: #fff; - background-color: #666; + color: white; + background-color: #666666; font-size: 0.58333em; text-transform: uppercase; letter-spacing: .0625em; padding: .45em .5em 0; margin-right: .25em; } .listing-company .listing-location a { - color: #999; } + color: #999999; } .listing-company .listing-location a:hover, .listing-company .listing-location a:focus { color: #3776ab; } @@ -2863,11 +2841,10 @@ p.quote-by-organization { background-color: #3776ab; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF2B5B84', endColorstr='#FF3776AB'); - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIxMCUiIHN0b3AtY29sb3I9IiMyYjViODQiLz48c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iIzM3NzZhYiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); - background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #2b5b84), color-stop(90%, #3776ab)); - background-image: -moz-linear-gradient(#2b5b84 10%, #3776ab 90%); background-image: -webkit-linear-gradient(#2b5b84 10%, #3776ab 90%); + background-image: -moz-linear-gradient(#2b5b84 10%, #3776ab 90%); + background-image: -o-linear-gradient(#2b5b84 10%, #3776ab 90%); background-image: linear-gradient(#2b5b84 10%, #3776ab 90%); } .psf-sidebar-widget .widget-title { color: #ffd343; @@ -2875,7 +2852,7 @@ p.quote-by-organization { .psf-sidebar-widget .widget-title a { color: #ffd343; } .psf-sidebar-widget .widget-title a:hover, .psf-sidebar-widget .widget-title a:focus { - color: #fff; } + color: white; } /* ! ===== User profile pages and sign up forms ===== */ .user-profile-controls { @@ -2926,15 +2903,15 @@ p.quote-by-organization { width: 25%; } .profile-label { - color: #999; } + color: #999999; } .psf-codeofconduct { font-size: 0.875em; padding: .5em 1em; margin-bottom: 1em; - background-color: #fff; - -moz-box-shadow: 0.25em 0.25em 0.75em rgba(0, 0, 0, 0.15); + background-color: white; -webkit-box-shadow: 0.25em 0.25em 0.75em rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0.25em 0.25em 0.75em rgba(0, 0, 0, 0.15); box-shadow: 0.25em 0.25em 0.75em rgba(0, 0, 0, 0.15); } /*p*/ @@ -2961,15 +2938,15 @@ p.quote-by-organization { .main-footer { clear: both; - color: #666; + color: #666666; background-color: #e6e8ea; border-top: 1px solid #d8dbde; } .main-footer .container { padding: 0 .75em .75em; } .main-footer a { - color: #666; } + color: #666666; } .main-footer a:hover, .main-footer a:focus { - color: #444; } + color: #444444; } .main-footer .jump-link { background-color: #e0e3e5; } .main-footer a.jump-link { @@ -2993,7 +2970,7 @@ p.quote-by-organization { margin-top: 0.875em; margin-bottom: 0em; } .sitemap .tier-1 > a:hover, .sitemap .tier-1 > a:focus { - color: #222; } + color: #222222; } .sitemap .subnav { font-size: 1em; margin-bottom: 0; @@ -3034,7 +3011,7 @@ p.quote-by-organization { border-bottom: 1px dotted #4f90c6; color: #75a8d3; } .copyright a:hover, .copyright a:focus { - color: #fff; + color: white; text-decoration: none; } #python-status-indicator { @@ -3174,14 +3151,14 @@ span.highlighted { color: #888; margin-left: .5em; } .flex-control-nav a:hover, .flex-control-nav a:focus { - color: #444; + color: #444444; background-color: #ccc; border-color: #bbb; } .text .flex-control-nav a { text-decoration: none; } .flex-control-nav .flex-active { - color: #666; - background-color: #fff; } + color: #666666; + background-color: white; } .touch .flex-control-nav a { /* Larger touch target */ padding: .5em .75em; } @@ -3204,9 +3181,9 @@ span.highlighted { font-size: 1.25em; font-weight: bold; line-height: 1em; - color: #999; } + color: #999999; } .flex-direction-nav .flex-prev:hover, .flex-direction-nav .flex-prev:focus, .flex-direction-nav .flex-next:hover, .flex-direction-nav .flex-next:focus { - filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false); + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); opacity: 1; } .text .flex-direction-nav .flex-prev, .text .flex-direction-nav .flex-next { text-decoration: none; } @@ -3220,7 +3197,7 @@ span.highlighted { filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70); opacity: 0.7; } .home-slideshow .flex-direction-nav .flex-prev:hover, .home-slideshow .flex-direction-nav .flex-prev:focus, .home-slideshow .flex-direction-nav .flex-next:hover, .home-slideshow .flex-direction-nav .flex-next:focus { - filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false); + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); opacity: 1; } .home-slideshow .flex-direction-nav .flex-prev { left: .75em; } @@ -3344,6 +3321,7 @@ span.highlighted { @page { margin: 0.5cm; } + p, h2, h3 { orphans: 3; widows: 3; } @@ -3376,11 +3354,11 @@ span.highlighted { .python .site-headline a:before { width: 290px; height: 82px; - content: url('../img/python-logo_print.png?1576869008'); } + content: url('../img/python-logo_print.png?1646853871'); } .psf .site-headline a:before { width: 334px; height: 82px; - content: url('../img/psf-logo_print.png?1576869008'); } } + content: url('../img/psf-logo_print.png?1646853871'); } } /* * When we want to review the markup for W3 and similar errors, turn some of these on * Uses :not selectors a bunch, so only modern browsers will support them @@ -3419,7 +3397,7 @@ span.highlighted { /* Hide a unicode fallback character when we supply it by default. * In fonts.scss, we hide the icon and show the fallback when other conditions are not met */ } - .fa { + .fa span { display: none; } /* Keep this at the bottom since it will create a huge set of data */ @@ -3428,138 +3406,135 @@ span.highlighted { * Be sure to upgrade to at least 0.12.1 to have this work properly. * in Terminal, gem install compass --version '= 0.12.1' */ - @font-face { - font-family: 'Pythonicon'; - src:url('../fonts/Pythonicon.eot'); -} @font-face { - font-family: 'Pythonicon'; - src: url(data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAADDwAAsAAAAAMKQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDxIGHmNtYXAAAAFoAAAAfAAAAHzPws1/Z2FzcAAAAeQAAAAIAAAACAAAABBnbHlmAAAB7AAAK7AAACuwaXN8NWhlYWQAAC2cAAAANgAAADYmDfxCaGhlYQAALdQAAAAkAAAAJAfDA+tobXR4AAAt+AAAALAAAACwpgv/6WxvY2EAAC6oAAAAWgAAAFrZ8NA+bWF4cAAALwQAAAAgAAAAIAA7AbRuYW1lAAAvJAAAAaoAAAGqCGFOHXBvc3QAADDQAAAAIAAAACAAAwAAAAMD9AGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAA6QADwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEAGAAAAAUABAAAwAEAAEAIAA/AFjmBuYM5ifpAP/9//8AAAAAACAAPwBY5gDmCeYO6QD//f//AAH/4//F/60aBhoEGgMXKwADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAPAAEAAP/AAAADwAACAAA3OQEAAAAAAQAA/8AAAAPAAAIAADc5AQAAAAABAAD/wAAAA8AAAgAANzkBAAAAAAMAAP+rBAADwAAfACMAVwAAASEiBw4BBwYVERQXHgEXFjMhMjc+ATc2NRE0Jy4BJyYDIzUzEw4BBw4BBw4BFSM1NDY3PgE3PgE3PgE1NCYnLgEjIgYHDgEHJz4BNz4BMzIWFx4BFRQGBwMF/fY0LS5EFBQUFEQuLTQCCjQtLkQUFBQURC4t6Lm5nAstIhgdBwYGsgUFBg8KCi4kExIHCAcXEBAcCwsOA7UFJCAfYUIzUiAqKwsLA6sUFEQuLjT99zQuLUUUExMURS0uNAIJNC4uRBQU/H+9ASoSLRsTHgsMMhImFyUODhoMCyodEBwNDRQHBwcLCwsmHBcyUB8eHxUWHE0wFCYTAAL//v+tA/4DwAAfACwAAAEhIgcOAQcGFREUFx4BFxYzITI3PgE3NjURNCcuAScmEwcnByc3JzcXNxcHFwMC/fc0Li1FFBMTFEUtLjQCCTQuLkQUFBQURC4uBJuhoJugoJugoZugoAOtFBRELi00/fY0LS5EFBQUFEQuLTQCCjQtLkQUFP1fm6Cgm6Cgm6Cgm6CgAAAFAAD/wAQAA8AAKgBOAGMAbQCRAAABNCcuAScmJzgBMSMwBw4BBwYHDgEVFBYXFhceARcWMTMwNDEyNz4BNzY1AyImJy4BJy4BNTQ2Nz4BNz4BMzIWFx4BFx4BFRQGBw4BBw4BATQ2Nw4BIyoBMQcVFzAyMzIWFy4BFycTHgE/AT4BJwEiJicuAScuATU0Njc+ATc+ATMyFhceARceARUUBgcOAQcOAQQACgsjGBgbUyIjfldYaQYICAZpWFd+IyJTGxgYIwsKnwcOBAkSCBISEhIIEgkEDgcHDgQJEggRExMRCBIJBA79lAUGJEImMxE3NxEzJkIkBgV0gFIDFgx2DAkHAXYDBQIDBwMHBwcHAwcDAgUDAwUBBAcDBwcHBwMHBAEFAhNLQkNjHRwBGBhBIyIWIlEuL1EiFSMiQhgYAR0dY0JCTP7KCwQLIBUud0JCdy4UIQoFCwsFCiEULndCQncuFSALBAsBNidLIwUFX1hfBQUjS64Y/r8NCwUwBBcMAUIFAQQNCBEuGhkuEggMBAIEBAIEDAgSLhkaLhEIDQQBBQAEAAD/wAPjA8AAIwAvAFAAXAAAAS4BIyIGBw4BHQEzFSEiBgcOARceATsBNTQ2OwEyNj0BNCYnByImNTQ2MzIWFRQGBS4BKwEVFAYrASIGHQEUFhceATc+AT0BIzUhMjY3NiYnATIWFRQGIyImNTQ2Am0fPx4fORpMK+7+uTRTDhABEQ0+M1JYPe4xRkcw4RMaGhMSGhoCRQ02NFlZPO4wRkcvOXJDLUrtAWQ0MRITARL+jhMaGhMSGhoDnwUEBQQOOzNbHj08RGdHNERsO1lHMuMwRAiaGhMTGhoTExrlM0VpPllIMeMwOw4QAxMNOTNbHkM2OHJI/joaExMaGhMTGgAAAAf//v+tA/4DwAAfADIANgBJAE0AUQBVAAABISIHDgEHBhURFBceARcWMyEyNz4BNzY1ETQnLgEnJhMUBw4BBwYjISInLgEnJj0BIRU1ITUhNSE1NDc+ATc2MyEyFx4BFxYdASUhNSEBIRUhESEVIQMC/fc0Li1FFBMTFEUtLjQCCTQuLkQUFBQURC4uiBARNiMkJf4KJSMjNxERA338gwN9/IMREDcjIyYB9iUkIzYREP3CAQX++wEF/vsBBf77AQUDrRQURC4tNP32NC0uRBQUFBRELi00Ago0LS5EFBT9AiUjJDYREBARNiQjJUJCgP0+PCQjIzcRERERNyMjJDxhPv7CPv8APQAAAAAIAAD/rgP+A8AAHgA5AD4AQwBIAE0AUgBXAAABERQGMTA1NBA1NDUFERQXHgEXFjMhMjc+ATc2NREHAzAGIzAjKgEHIiMiJy4BJyY1NDU2NDU0MSERAzUhFSEFIRUhNREhFSE1NSEVITUVIRUhNSU1IREhA75A/IIUFEQuLTQCBzQuLkQUFEB/JSNERK1RURsiIyM4EhIBAv09/YQCfP2EATv+xQJ7/YUBO/7FATv+xQJ8/vwBBALt/cJHOnV1ATGTlD4B/PwzLi5EFBQUFEQuLjMCRQH9GxgBERE2IyIkJHJy9GBg/JwC9TB+f0JC/oFBQf9CQn5BQQL8/sAAAAAABQAA/8ADtwPAABwAJQA0AEMAUAAAASIHDgEHBhUUFx4BFxYzMjc+ATc2NTQnLgEnJiMBJz4BNxcOAQcTIiY1NDY/ARceARUUBiMRIgYHJz4BMzIWFwcuASMFLgEnNxYXHgEXFhcHAfxbUVF4IyIiI3hRUVtcUVB4IyMjI3hRUFz+qBYRQi0iKEcd9Sc4HxgqLhUbOCgRIxAnLWg5GzQZVBw7IAFDGFg5VTEqKj8UFAScA2gjI3hRUFxbUVF4IyIiI3hRUVtcUFF4IyP+mhc5YSSADSsd/qw4KBwuDMbKDCwaKDgBuQMDjhwgBwfLCwrZPF0dzRQgIFMyMjdBAAAAAAYAAP+rBAIDwAAPACAALQBeAGwAeQAAATIWFREUBiMhIiY1ETQ2MyUhIgYVERQWMyEyNjURNCYjATUjFSMRMxUzNTMRIxciJjU0NjcnNDY3LgE1NDYzMhYXHgEzMjY3Fw4BIx4BFRQGByIGFRQWHwEeARUUBiM3Jw4BFRQWMzI2NTQmJwMiBhUUFjMyNjU0JiMDVxIZGRL9VxEZGRECqf1XRmVlRgKpR2RkR/5Pd0FBd0FB9DlDIxUdFAwUFzovDBEHCBILDBYGCQMRBwQGNjAQEQUGQCYrQzgYKRccIiEhIRUUGxUbGxUUHRsWAyoZEf1XEhkZEgKpERmBZUb9V0dlZUcCqUZl/VXOzgHRy8v+L5xCMSYxCSAQGwYPLR8wPgMCAwMHBTQDBQgbEC1AAQkJBAkCFg02Ky4+pwwCIh0ZKSYWFSEFARUjGhojIxoaIwAAAAADAAD/rAQBA8AAGQBDAFgAAAEFFRQGIyImPQElIiYxERQWMyEyNjURMAYjESM1NCYnLgErASIGBw4BHQEjIgYdARQWMwUVFBYzMjY9ASUyNj0BNCYjJTQ2Nz4BOwEyFhceARUcARUjPAE1A4P+3T4hIj3+3DNKSjMDBTRKSjTCEhIRMRqDGjASEhLAM0pKMwFTHBQTHAFTNEpKNP3+CAcGFxGDEhYGBwj9AQQyHiEwMCEeMkD+5jRKSjQBGkABqEMbMBEREBARETAbQ0ozgDRKODQUHBwUNDhKNIAzSkMRFQYGCQkGBhURESIQECIRAAAC////rAP/A8AABgAcAAATCQEjESERBQcnIRUUFx4BFxYzITI3PgE3Nj0BIYEBfwF9v/6CAaDg4f7gFBRELi00AgozLi5EFBT+4QIr/oEBfwFA/sD84eGHNC4uRBQUFBRELi40hwAAAAYAAP+tBAADwAAOAC4AOwBIAFUAZwAAAQcnAxc3FwEXBxc/AgEnISIHDgEHBhURFBceARcWMyEyNz4BNzY1ETQnLgEnJgEiJjU0NjMyFhUUBiM1IiY1NDYzMhYVFAYjNSImNTQ2MzIWFRQGIwEUBw4BBwYHJREhMhceARcWFQLbGVq6KKAz/rQKJAYfJDQBfjn99jQtLkQUFBQURC4tNAIKNC0uRBQUFBRELi39KhMcHBMUHBwUExwcExQcHBQTHBwTFBwcFANYERE7KCct/eACIC0nKDsREQMVJzn+3Br9IP33MzofCDkMAljXFBRELi00/fY0LS5EFBQUFEQuLTQCCjQtLkQUFPzSHRMUHR0UEx3+HBQUHBwUFBz+HBQUHBwUFBz+UC0nKDsSEgECA3cRETsoJy0AAAcAAP+uA4gDwAAMABkAJgAzAEAASgBrAAABMjY1NCYjIgYVFBYzFzI2NTQmIyIGFRQWMxciBgceAR0BMzU0JiMlMjY1NCYjIgYVFBYzByIGHQEzNTQ2Ny4BIyUiBh0BITU0JiMBNCcuAScmIyIHDgEHBhUUFhcHNx4BHwE3PgE3Fyc+ATUCASs9PSsrPT0r+yIwMCIiMDAiFh4xEAYGyUUx/fIiMDAiIjAwIhYxRckGBhAxHgETQFkBMllAAXseHmdFRU5PRURnHh5dTBFhEycVMTIVKhNhEUxdAQA9Kys9PSsrPR0wIiIwMCIiMCUZFA0cDm5jLkElMCIiMDAiIjAlQS5jbg4cDRQZIlQ8oqI8VAJKGhcXIwkKCgkjFxcaIjcRrZ8CAwHCwgEDAp+tETciAAAABAAA/6sEAAPAAB8AJgArADEAAAEhIgcOAQcGFREUFx4BFxYzITI3PgE3NjURNCcuAScmAQcXFSc3FRMjEzcDNzU3JzUXAwX99jQtLkQUFBQURC4tNAIKNC0uRBQUFBRELi3+A319/v6STatNq+14ePkDqxQURC4uNP33NC4tRRQTExRFLS40Agk0Li5EFBT+bm1scNzdcP5ZAncB/YhjcGdocNgAAAAADgAA/60EAAPAAB8AKwA4AEQAVgBaAF4AYwBnAGsAbwB0AHgAfAAAASEiBw4BBwYVERQXHgEXFjMhMjc+ATc2NRE0Jy4BJyYHMhYVFAYjIiY1NDYjMhYVFAYjIiY1NDYzIzIWFRQGIyImNTQ2ASEiJy4BJyYnEyERFAcOAQcGAzMVIzczFSMFMxUjNTsBFSM3MxUjNzMVIwU1IxQWNzMVIzczFSMDBf32NC0uRBQUFBRELi00Ago0LS5EFBQUFEQuLTsUHBwUFBwc6hQcHBQUHBwU/hQdHRQTHR0B7v48LCgoOxISAQIDdxEROygn9JaWzJaW/ZuXl8yXlsyWlsyWlv4yl2Rol5bMlpYDrRQURC4tNP32NC0uRBQUFBRELi00Ago0LS5EFBRVHBQTHBwTFBwcFBMcHBMUHBwUExwcExQc/JkRETsoKC0B3/4hLSgoOxERAnmTk5NCk5OTk5OTk9aTPlWTk5OTAAAAAAUAAP/AA7cDwAAcACUANwBGAFMAAAEiBw4BBwYVFBceARcWMzI3PgE3NjU0Jy4BJyYjASc+ATcXDgEHEyImNTQ2NycXPgEzMhYVFAYjESIGByc+ATMyFhcHLgEjBS4BJzcWFx4BFxYXBwH8W1FReCMiIiN4UVFbXFFQeCMjIyN4UVBc/qgWEUItIihHHfUnOAMCcK8GDgcoODgoESMQJy1oORs0GVQcOyABQxhYOVUxKio/FBQEnANoIyN4UVBcW1FReCMiIiN4UVFbXFBReCMj/poXOWEkgA0rHf6sOCgHDwatbgICOCcoOAG5AwOOHCAHB8sLCtk8XR3NFCAgUzIyN0EABQAA/8ADtwPAABwAKwA0AEYAUwAAASIHDgEHBhUUFx4BFxYzMjc+ATc2NTQnLgEnJiMVMhYXBy4BIyIGByc+ATMBJz4BNxcOAQcFHgEVFAYjIiY1NDYzMhYXNwc3LgEnNxYXHgEXFhcHAfxbUVF4IyIiI3hRUVtcUVB4IyMjI3hRUFwbNBlUHDsgESMQJy1oOf6oFhFCLSIoRx0BUgECOCgnODgnChEJqXDmGFg5VTEqKj8UFAScA2gjI3hRUFxbUVF4IyIiI3hRUVtcUFF4IyM9BwfLCgsDA44cIP7XFzlhJIANKx3fBQsFKDg4KCc4AwRusWs8XR3NFCAgUzIyN0EAAAADAAD/rQQAA8AAHwAtADYAAAEhIgcOAQcGFREUFx4BFxYzITI3PgE3NjURNCcuAScmBSE1MxUhFSEVIzUhJzcBIRUjNSE1IRcDBf32NC0uRBQUFBRELi00Ago0LS5EFBQUFEQuLf2MARdHAR/+4Uf+6WdnAnP+60f+5wJ1aAOtFBRELi00/fY0LS5EFBQUFEQuLTQCCjQtLkQUFMA+PsI+PmBi/gD//8JhAAAABP/+/6sD/gPAABwAJQBFAHUAABMGBwYUFxYXFhcWMjc2NzY3NjQnJicmJyYiBwYHFzQmIzUyFhUjASEiBw4BBwYVERQXHgEXFjMhMjc+ATc2NRE0Jy4BJyYTBwYiLwEmND8BJwYHBiYnJicmJyY0NzY3Njc2MhcWFxYXHgEHBgcXNzYyHwEWFAe/Hg4PDw4eHSUlTSUlHh0PDw8PHR4lJU0lJR37UDhEXxsBSP33NC4tRRQTExRFLS40Agk0Li5EFBQUFEQuLnpoDCIL/gwMHD4nLi5eLS0jJxQTExQnJzExZjExJyQTFAUNDh4+HAwhDP0MDALsHSUlTSUlHh0PDw8PHR4lJU0lJR0eDg8PDh6oOVAaX0QBZxQURC4uNP33NC4tRRQTExRFLS40Agk0Li5EFBT8uWgMDP0MIQwcPh8NDgUUEyQnMTFmMTEnJxQTExQnIy0sXi4uJz4cCwv+DCEMAAADAAD/wAOwA8AAHAAlAFUAABMGBwYUFxYXFhcWMjc2NzY3NjQnJicmJyYiBwYHFzQmIzUyFhUjAQcGIi8BJjQ/AScGBwYmJyYnJicmNDc2NzY3NjIXFhcWFx4BBwYHFzc2Mh8BFhQHvx4ODw8OHh0lJU0lJR4dDw8PDx0eJSVNJSUd+1A4RF8bAfZoDCIL/gwMHD4nLi5eLS0jJxQTExQnJzExZjExJyQTFAUNDh4+HAwhDP0MDALsHSUlTSUlHh0PDw8PHR4lJU0lJR0eDg8PDh6oOVAaX0T+IGgMDP0MIQwcPh8NDgUUEyQnMTFmMTEnJxQTExQnIy0sXi4uJz4cCwv+DCEMAAAFAAD/rQQAA8AADAAYADgAXAB8AAAlMjY1NCYjIgYVFBYzAyIGFRQWMzI2NTQmJSEiBw4BBwYVERQXHgEXFjMhMjc+ATc2NRE0Jy4BJyYBFSMiJicmNjc+ATMhNSM1NDY3PgE3MhYXHgEdARQGKwEiBhUFDgEjIRUzFRQGBwYmJy4BPQE0NjsBMjY9ATMyFhcWFAJgDxYWDw8WFg++DxUVDxAVFQFT/fY0LS5EFBQUFEQuLTQCCjQtLkQUFBQURC4t/eRDKzMLDgENDEQrAQ7EJD4VMBkZNBkoOjkpxDJJAnQPKCv+2sQ9JTheLyY8OijFMUlKKywLD0sWEA8WFg8QFgLIFg8QFRUQDxaaFBRELi00/fY0LS5EFBQUFEQuLTQCCjQtLkQUFP2cWjgsOlU4MTMZSyoxCwMEAQQEBzgnuyk7STEFLTYZSysuCxADDQwwKLsoPEkzVzkqO18AAAAABAAA/6sEAAPAAAsAFwA3AMgAAAEiBhUUFjMyNjU0JiEiBhUUFjMyNjU0JgEhIgcOAQcGFREUFx4BFxYzITI3PgE3NjURNCcuAScmExQGDwEOAQ8BDgEPARceARcVFBYXLgE9ATQmIyoBMQcVMBQVFBYXLgE1MDQ1NCYjIgYVHAExFAYHPgE9ASMwBh0BFAYHPgEnNSMGJiceARc6ATEzNz4BPwEnLgEvAS4BLwEuASc8ATU0Nj8BJy4BNTQ2Nx4BHwE3PgEzMhYfATc+ATceARUUBg8BFx4BFxwBFQKOGSIiGRgjI/7jGCMjGBgjIwFk/fY0LS5EFBQUFEQuLTQCCjQtLkQUFBQURC4tHQYGAwEDAgQZZUgMCA4PAQgGGiESAgEBBQQFHBkJBAUJIBgEBQcTHhkFBgE5USQuKjk4IhcFAQITEgwPUGocBQICAgMIBwEbHgMBBAQFBiJHJQIDHTweHj4fAgMfRSYHBwIBAQIcIQECNiQYGSMjGRgkJBgZIyMZGCQBdRQURC4uNP33NC4tRRQTExRFLS40Agk0Li5EFBT+cBgrEwkDBgQJMjsLAgkQIRKsChEHAhMQjw8GAQWeDAkQBwIXEJYGBgcHBgaeEQ8BBg0JtAYPkg4YAQYQCXcBbyUFUgEGEyEOCgIJOzEJAwYECRQuGgECASxNIAMDEB4PEyUTAhkZAQEGBgYGAQIWGQQVKxYKEwoDAiJVNQECAQACAAD/rQPgA8AADgBJAAABMjY1ETQmIyIGFREUFjMTFRYXHgEXFhUUBw4BBwYjIicuAScmNTQ3PgE3Njc1BgcOAQcGFRQXHgEXFjMyNz4BNzY1NCcuAScmJwIAGSQkGRkkJBnAJB0dKgsMHBtfQEBIST9AXxwbCwsqHR0kPzU1TBUVJiWCV1hjY1dXgiYmFhVMNTU/AWgiHQG+HSIiHf5CHSIB25IYHyBLKisuST9AXxscHBtfQD9JLiorSx8gF5IcLCxyQ0RJY1hXgiUmJiWCV1hjSkNDciwtHAAABP/+/6sD/gPAAB8AKwBIAGUAAAEhIgcOAQcGFREUFx4BFxYzITI3PgE3NjURNCcuAScmASImNTQ2MzIWFRQGJSM+ATU0Jy4BJyYjIgYHNT4BMzIXHgEXFhUUBgczIz4BNTQnLgEnJiMiBgc1PgEzMhceARcWFRQGBwMC/fc0Li1FFBMTFEUtLjQCCTQuLkQUFBQURC4u/fUxRUUxMUVFAQiSDhAPEDUkJCkeNxcaNhxEPDxaGhoJCOeVBwcgIG9LSlUcNhoaNhxzZWWWKywFBQOrFBRELi40/fc0Li1FFBMTFEUtLjQCCTQuLkQUFPy1RTExRUUxMUUPFjUcKSQkNRAPEQ+SCQoaGlo8PEQbNBgZMxtVSktvICAIB5UFBiwrlmVlcxo0GQACAAD/rQQAA8AAHwA0AAABISIHDgEHBhURFBceARcWMyEyNz4BNzY1ETQnLgEnJgMjESMRIzUzNTQ2OwEVIyIGFQczBwMF/fY0LS5EFBQUFEQuLTQCCjQtLkQUFBQURC4tk2qeT09NX2lCJQ8BeA4DrRQURC4tNP32NC0uRBQUFBRELi00Ago0LS5EFBT+Av6CAX6ET1BbhBsZQoQAAAAABP/+/8AD/gPAAAsADwATAB8AAAEhIgYdAQUlNTQmIxM1BxclFTcnBScFFBYzITI2NyUHA4D8+zRJAf0CA0o0fv7+/AD5+QH9wP7DSjMDBTNKAf6+wQLvSjQF/f8DNEr+Qfx+fvn4fXv9YJ4zSkkzn2AAAAAC//7/rQP+A8AAHwAnAAABISIHDgEHBhURFBceARcWMyEyNz4BNzY1ETQnLgEnJgMRIREjCQEjAwL99zQuLUUUExMURS0uNAIJNC4uRBQUFBRELi51/oK+AXwBf78DrRQURC4tNP32NC0uRBQUFBRELi00Ago0LS5EFBT+Av7AAUABf/6BAAAAAv/+/60D/gPAAB8AJwAAASEiBw4BBwYVERQXHgEXFjMhMjc+ATc2NRE0Jy4BJyYBNSERITUJAQMC/fc0Li1FFBMTFEUtLjQCCTQuLkQUFBQURC4u/sn+wAFAAX/+gQOtFBRELi00/fY0LS5EFBQUFEQuLTQCCjQtLkQUFPx9vwF+v/6E/oAAAAL//v+tA/4DwAAfACcAAAEhIgcOAQcGFREUFx4BFxYzITI3PgE3NjURNCcuAScmEyEVCQEVIREDAv33NC4tRRQTExRFLS40Agk0Li5EFBQUFEQuLgb+wP6BAX8BQAOtFBRELi00/fY0LS5EFBQUFEQuLTQCCjQtLkQUFP1GvwF8AYC//oIAAAAC//7/rQP+A8AAHwAnAAABISIHDgEHBhURFBceARcWMyEyNz4BNzY1ETQnLgEnJgkBMxEhETMBAwL99zQuLUUUExMURS0uNAIJNC4uRBQUFBRELi7+xP6BvwF+vv6EA60UFEQuLTT99jQtLkQUFBQURC4tNAIKNC0uRBQU/H8BfwFA/sD+gQAABAAA/60EAAPAAB8AOgBVAHAAAAEhIgcOAQcGFREUFx4BFxYzITI3PgE3NjURNCcuAScmASImNTQ2MzIWFwcuASMiBhUUFjMyNjczDgEjExQWFwcuATU0NjMyFhUUBgcnPgE1NCYjIgYVASImJzMeATMyNjU0JiMiBgcnPgEzMhYVFAYjAwX99jQtLkQUFBQURC4tNAIKNC0uRBQUFBRELi39/UtqaksUJxE3BQsFHisrHhooBW0FaEeACwk3IShqS0pqKCE3CQsrHR4rAQ5HaAVtBSgaHisrHgQKBTYQJhNLampLA60UFEQuLTT99jQtLkQUFBQURC4tNAIKNC0uRBQU/MNqS0tqCQhfAgIrHh4qIhlGYgIIDxkKXxhMLUtqakstSxlfChoOHioqHv34YkYZIioeHioBAV8ICGpLS2oAAAAAAwAA/6sD+wPAABcAGwAiAAAlASYnJgYHBgcBBgcGFhcWMyEyNz4BNSYFIzUzEwcjJzUzFQPf/rAWJydRJCQR/qccAQItLCw+Amw+LCwtAf5muroCInoivq8CsCcSEgITEyL9TTUvL0YVFBQVRjAvSr4BPv39wMAAAwAA/8ADvgPAAAMACQAPAAATJQ0BFSUHBSUnASUHBSUnPgHCAb7+Qv7XmQHCAb6Y/tr+15kBwgG+mAJxu7u+Qn0/vr4//sN9P76+PwAAAAADAAD/rQQAA8AACwArAGEAAAEiBhUUFjMyNjU0JhMhIgcOAQcGFREUFx4BFxYzITI3PgE3NjURNCcuAScmAxYHDgEHBiMiJicWNjcuAScWNjcuATceATMuATcWFx4BFxYXJjYzMhYXPgE3DgEHNhY3DgEHArETGhoTEhoaQv32NC0uRBQUFBRELi00Ago0LS5EFBQUFEQuLQkEHR54WVlzRYA3Qn40NlQQEyYRO0oBESYUNxwgHiYlVzAwMxJjTyQ+FxxcGAlNGhlLFhBFGQKMGhMTGhoTExoBIRQURC4tNP32NC0uRBQUFBRELi00Ago0LS5EFBT+dldVVYcqKSYjByMpAUAxBAIFDF45CQskgDclHx4tDQ0DTn0dGAY8Dh1fEAMFChkeEQAAAAAE//7/qwP+A8AAHwA5AHUAgQAAASEiBw4BBwYVERQXHgEXFjMhMjc+ATc2NRE0Jy4BJyYBBiYrASImJyY2PQE0Jjc2FjsBMjYXEw4BByUWBgcWBgcGBw4BJyYjIgYnLgEnAz4BNz4BNz4BNz4BNzYmNz4BFx4BFxYGBw4BBw4BBxY2FxYGBxYGBwUiBhUUFjMyNjU0JgMC/fc0Li1FFBMTFEUtLjQCCTQuLkQUFBQURC4u/kgIHxByGysGBAMBGAkbCzAhPw4iAggGAdsaDxkOBAoRICFOKysnEiINCxIJIwQIAhEjFgsaDhIoAgECBAUeEBEZAgIICQsUBgYFATyVGA0ZEiEBH/2pExwcExQcHAOrFBRELi40/fc0Li1FFBMTFEUtLjQCCTQuLkQUFPy6BAEFEg84ErUgRwcCAQIR/pMHCwPSEU0JDCwMFAgJBAIBAgICDAYBeQgPAxoxEwoNCQs5GgsfCgkRBQUwFxYuDxESDQsXEgQEKRZDCAtXDDscFBQcHBQUHAAAAAAE//7/qwP+A8AAHwA5AHUAgQAAFyEyNz4BNzY1ETQnLgEnJiMhIgcOAQcGFREUFx4BFxYBNhY7ATIWFxYGHQEUFgcGJisBIgYnAz4BNwUmNjcmNjc2Nz4BFxYzMjYXHgEXEw4BBw4BBw4BBw4BBwYWBw4BJy4BJyY2Nz4BNz4BNyYGJyY2NyY2NwUyNjU0JiMiBhUUFvkCCTQuLkQUFBQURC4uNP33NC4tRRQTExRFLS4BuAkeEHIbKwYFBAEYCRsLMCE/DSMCCAb+JRoQGA4FCRIgIE8rKicSIwwLEgkkBQgCESMWCxoOESgDAQIEBR4PEhkCAggKChQGBgUCPJYYDRkSIQEfAlcUGxsUExwcVRMURS0uNAIJNC4uRBQUFBRELi40/fc0Li1FFBMDRQQBBBMPOBK0IEcIAgEBEAFtBwsD0RBOCAwtCxQJCAQBAgICAgsH/ocIDwMaMRMJDgkLOBoLIAoJEQUGLxcXLQ8REg0MFhMDAykWQgkLVg11HBQUHBwUFBwAAAUAAP+rBAADwAACAAYAJgAvADgAAAEzJwEzJwcBISIHDgEHBhURFBceARcWMyEyNz4BNzY1ETQnLgEnJgEnIwcjEzMTIwUnIwcjEzMTIwJ2fT7+M0AgIAId/fY0LS5EFBQUFEQuLTQCCjQtLkQUFBQURC4t/iAcax5YiEiEVwHbJbYoZLdhsWIBj+v+3ZOTAlQUFEQuLjT99zQuLUUUExMURS0uNAIJNC4uRBQU/QRgYAGn/lkBgYECOf3HAAAAAAMAAP+/A/8DwAAKAN0BsQAAATcjJwcjFwc3FycDLgEnNiYnLgEnDgEXHgEXLgEnPgE3NiYnDgEHBhYXLgEnPgE3PgEnDgEHDgEXLgE1PAE1FjY3PgE3LgEHDgEHPgE3HgE3PgE3LgEHDgEHPgE3HgEzPgE3NCYnJgYHPgE3PgEnLgEHDgEHPgE3PgEnDgEHDgEXDgEHPgE3NiYnDgEHBhYXDgEHLgEnLgEnDgEXHgEXBhQVFBYXLgEnLgEHBhYXFjY3HgEXLgEnJgYHHgEXFjY3IiYnHgEXDgEHDgEHHgE3PgE3HgEXMDIzMjY3NiYnAQ4BBz4BNTwBJz4BNzYmJw4BBw4BBy4BJz4BJy4BJw4BFx4BFy4BJzYmJy4BJwYWFx4BFy4BJyYGBwYWFx4BFy4BBw4BFR4BFzI2Nx4BFy4BJyYGBx4BFxY2Nx4BFy4BJyYGBx4BFx4BNxQWFRQGBzYmJy4BJwYWFx4BFw4BBz4BJy4BJw4BFx4BFw4BBz4BNzYmJw4BBw4BFw4BBw4BFx4BMzoBOQE+ATceARcWNjcuAScuASc+ATcOAQceATc+ATcuAQcOAQc+ATceATc+ATUmBgcCUYGYOi+YgDqBgC9yCRMJBgsLDBwRDg0KBA4JIDkZEhUDBAoNFyQFAwEEERwMFiILCwMGFykOBwcBCwsUJhEQEwQSKBMJDwUGFQ8OJBQVJBEJIBgMGAsSLBkHHxYYNh4bHA0eDhQqFwYIAQILBxIkEQcOBhcUBypFFBEEBxcqEgQIAgkDDR0pBgUPDxAWBwEEAwgcFA4GCgsiEwEICAUNBxQtFgEaGBYuFRAsGg8kFRw1FQ4zHyAyEAEBASFPLBQnEx0rCh5NIB8dAQkTCQEBBgkBAQkHAcgHDQUICAETIwoKBg4UHAcEBAEHFhAPDwUGKR0NAwkDBwQSKhcHBBEURSoHFBcHDQcRJBIHCwECCAYXKhQOHQ4cGh02GBYfBxksEgsYDBggCRElFRMkDg8VBgUPCRMoEgQTERAmFAEMCwEGCA4pFwYDCwsiFgwcEAMBAwUkFw0KBAMWERk5HwgOBAoNDhEcDAsLBgkTCQcJAQEJBgEBCRMJAR0fIUweCisdEycULE8iAQIBEDIgHzQNFTUcFSQPGiwQFS4XFxoXLRQBzl6MjF6kaWmk/nsBAwIhQRoaGgIcPx0MFAgMIxYWNRkcJg0QLR4MGQwUKhcLJBUXKRMCFxgNIBAeQSEFCgUCDA4PJxYJAQ8GEwwfOhoMBwUGGxIQEwQCCwkYKRENDwEOCg8WAwECBAkPBAILBgcIAgQKBwUKBhIgDgYgFxQkDBAlFgkSCRoqDRI4HRsnCxo6HwsXChsjBR9FHBkZAQcNBx47HAgNBxENByQ/ERADDCE8GgwPAwMPFCEsAQEkGwIBHSwNAQsKDzAfFAUUEjwhAgMBCQYHCgEBKQcNCBw7HgcNBwEZGRxFHwUjGwoXCx86GgsnGx04Eg0qGgkSCRYlEAwkFBcgBg0hEgYKBQcKBAIIBwYLAgQPCQQCAQMWDwoOAQ8NESkYCQsCBBMQEhsGBQcMGjoeCxMGDwEJFicPDQ0CBQoEIkEeECANGBcCEykXFSQLFyoUDBkMHi0QDSYcGTUWFiMMCBQMHT8cAhoaGkEhAgMBAQoHBgkBAwIhPBIUBRQfMA8KCwENLB0BAQEbJAEBLCEUDwMDDwwaPCEMAxARPyQHDREABQAA/6sD3gPAAAQADQASABYAGgAAEzMRIxETITI2NyEeATMTMxEjERczESMTMxEjfIWFfwIJRnQg/EIhdEZWhYXVhITVhIQB6f5/AYH9wkc5OUcDO/2BAn9+/gADQfy/AAAAAAgAAP+tBAADwAAfACQAKQAuADIAOwBAAEQAAAEhIgcOAQcGFREUFx4BFxYzITI3PgE3NjURNCcuAScmDQEHJTcHBQclNwcFByU3ByEVIQUhETMRIREzEQsBNxMHNwM3EwMF/fY0LS5EFBQUFEQuLTQCCjQtLkQUFBQURC4t/j8BDSX+7ylRATQT/soVIwE/Bv7ABwcBQf6/Ab79xUIBuUAus0GsOkEYTQ8DrRQURC4tNP32NC0uRBQUFBRELi00Ago0LS5EFBT9rzqoQZldQlVKkyREG02CTYUBX/7dASP+oQHXAQsq/vEmKQFABf6/AAMAAP+tBAADwAAgAIEAqgAAEyIHDgEHBhURFBceARcWMyEyNz4BNzY1ETQnLgEnJiMhFzMyFhceARcxFgYVFAYVDgEHMCIjDgEHKgEjIiYnMCIxOAEjOAEVOAExHgEXHgEzMjY3MDIxMBYxOAExMBQxFTgBFTgBMQ4BBw4BBwYmJy4BJy4BJy4BJyY2Nz4BNz4BMwciBgcOAR0BMzU0NjMyFh0BMzU0NjMyFh0BMzU0JicuASMiBg8BJy4B+zQtLkQUFBQURC4tNAIKNC0uRBQUFBRELi00/fb8AWFcC0JiCQUEAQZhPAIBJk8nCRIJJkwlAQEBBQQFMEMnTSUBAQ0fDgYNBzt4OTVfDgcKAwQDAQIDBw5oQAtAYWkbLREQEVQbGx4eUx4eGxxTEBERLRsgMBEUFRAxA60UFEQuLTT99jQtLkQUFBQURC4tNAIKNC0uRBQUfAkBClo/L3kMBC8DWlEMCAUBCAkBDBgLDS4JCQEBOwEJCwUCAwINBhQSVTcdPB4uWy4fRB9AUwoBCXwTExMzINDKICAmJm5uJiYgIMrQIDMTExMZGCMjGBkAAAEAAAABAABAyd+3Xw889QALBAAAAAAA4Xdb7QAAAADhd1vt//7/qwQCA8AAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAD//v/+BAIAAQAAAAAAAAAAAAAAAAAAACwEAAAAAAAAAAAAAAACAAAABAAAAAQA//4EAAAABAAAAAQA//4EAAAABAAAAAQAAAAEAAAABAD//wQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAP/+BAAAAAQAAAAEAAAABAAAAAQA//4EAAAABAD//gQA//4EAP/+BAD//gQA//4EAAAABAAAAAQAAAAEAAAABAD//gQA//4EAAAABAAAAAQAAAAEAAAABAAAAAAAAAAACgAUAB4AogDsAb4CQALGA0YDxgRwBOgFHAW4BlIGpgdcB94IYAi2CWgJ7AqcC64MHAywDQANOg1+DcIOBg5KDuwPKA9QD+YQrBFwEdAUVhSIFQAV2AAAAAEAAAAsAbIADgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAKAAAAAQAAAAAAAgAHAHsAAQAAAAAAAwAKAD8AAQAAAAAABAAKAJAAAQAAAAAABQALAB4AAQAAAAAABgAKAF0AAQAAAAAACgAaAK4AAwABBAkAAQAUAAoAAwABBAkAAgAOAIIAAwABBAkAAwAUAEkAAwABBAkABAAUAJoAAwABBAkABQAWACkAAwABBAkABgAUAGcAAwABBAkACgA0AMhQeXRob25pY29uAFAAeQB0AGgAbwBuAGkAYwBvAG5WZXJzaW9uIDEuMABWAGUAcgBzAGkAbwBuACAAMQAuADBQeXRob25pY29uAFAAeQB0AGgAbwBuAGkAYwBvAG5QeXRob25pY29uAFAAeQB0AGgAbwBuAGkAYwBvAG5SZWd1bGFyAFIAZQBnAHUAbABhAHJQeXRob25pY29uAFAAeQB0AGgAbwBuAGkAYwBvAG5Gb250IGdlbmVyYXRlZCBieSBJY29Nb29uLgBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAC4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('woff'), - url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype'); - font-weight: normal; - font-style: normal; -} + font-family: 'Pythonicon'; + src: url("../fonts/Pythonicon.eot"); } + +@font-face { + font-family: 'Pythonicon'; + src: url(data:application/x-font-woff;charset=utf-8;base64,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) format("woff"), url(data:application/x-font-ttf;charset=utf-8;base64,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) format("truetype"); + font-weight: normal; + font-style: normal; } + +.icon-bullhorn:before { + content: "\e600"; } + +.icon-python-alt:before { + content: "\e601"; } + +.icon-pypi:before { + content: "\e602"; } + +.icon-news:before { + content: "\e603"; } - .icon-bullhorn:before { - content: "\e600"; - } - .icon-python-alt:before { - content: "\e601"; - } - .icon-pypi:before { - content: "\e602"; - } - .icon-news:before { - content: "\e603"; - } - .icon-moderate:before { - content: "\e604"; - } - .icon-mercurial:before { - content: "\e605"; - } - .icon-jobs:before { - content: "\e606"; - } - .icon-help:before { - content: "\3f"; - } - .icon-download:before { - content: "\e609"; - } - .icon-documentation:before { - content: "\e60a"; - } - .icon-community:before { - content: "\e60b"; - } - .icon-code:before { - content: "\e60c"; - } - .icon-close:before { - content: "\58"; - } - .icon-calendar:before { - content: "\e60e"; - } - .icon-beginner:before { - content: "\e60f"; - } - .icon-advanced:before { - content: "\e610"; - } - .icon-sitemap:before { - content: "\e611"; - } - .icon-search-alt:before { - content: "\e612"; - } - .icon-search:before { - content: "\e613"; - } - .icon-python:before { - content: "\e614"; - } - .icon-github:before { - content: "\e615"; - } - .icon-get-started:before { - content: "\e616"; - } - .icon-feed:before { - content: "\e617"; - } - .icon-facebook:before { - content: "\e618"; - } - .icon-email:before { - content: "\e619"; - } - .icon-arrow-up:before { - content: "\e61a"; - } - .icon-arrow-right:before { - content: "\e61b"; - } - .icon-arrow-left:before { - content: "\e61c"; - } - .icon-arrow-down:before, .errorlist:before { - content: "\e61d"; - } - .icon-freenode:before { - content: "\e61e"; - } - .icon-alert:before { - content: "\e61f"; - } - .icon-versions:before { - content: "\e620"; - } - .icon-twitter:before { - content: "\e621"; - } - .icon-thumbs-up:before { - content: "\e622"; - } - .icon-thumbs-down:before { - content: "\e623"; - } - .icon-text-resize:before { - content: "\e624"; - } - .icon-success-stories:before { - content: "\e625"; - } - .icon-statistics:before { - content: "\e626"; - } - .icon-stack-overflow:before { - content: "\e627"; - } - .icon-mastodon:before { - content: "\e900"; - } +.icon-moderate:before { + content: "\e604"; } + +.icon-mercurial:before { + content: "\e605"; } + +.icon-jobs:before { + content: "\e606"; } + +.icon-help:before { + content: "\3f"; } + +.icon-download:before { + content: "\e609"; } + +.icon-documentation:before { + content: "\e60a"; } + +.icon-community:before { + content: "\e60b"; } + +.icon-code:before { + content: "\e60c"; } + +.icon-close:before { + content: "\58"; } + +.icon-calendar:before { + content: "\e60e"; } + +.icon-beginner:before { + content: "\e60f"; } + +.icon-advanced:before { + content: "\e610"; } + +.icon-sitemap:before { + content: "\e611"; } + +.icon-search-alt:before { + content: "\e612"; } + +.icon-search:before { + content: "\e613"; } + +.icon-python:before { + content: "\e614"; } + +.icon-github:before { + content: "\e615"; } + +.icon-get-started:before { + content: "\e616"; } + +.icon-feed:before { + content: "\e617"; } + +.icon-facebook:before { + content: "\e618"; } + +.icon-email:before { + content: "\e619"; } + +.icon-arrow-up:before { + content: "\e61a"; } + +.icon-arrow-right:before { + content: "\e61b"; } + +.icon-arrow-left:before { + content: "\e61c"; } + +.icon-arrow-down:before, .errorlist:before { + content: "\e61d"; } + +.icon-freenode:before { + content: "\e61e"; } + +.icon-alert:before { + content: "\e61f"; } + +.icon-versions:before { + content: "\e620"; } + +.icon-twitter:before { + content: "\e621"; } + +.icon-thumbs-up:before { + content: "\e622"; } + +.icon-thumbs-down:before { + content: "\e623"; } + +.icon-text-resize:before { + content: "\e624"; } + +.icon-success-stories:before { + content: "\e625"; } + +.icon-statistics:before { + content: "\e626"; } + +.icon-stack-overflow:before { + content: "\e627"; } + +.icon-mastodon:before { + content: "\e900"; } /* * Hide from anything that does not support FontFace (Opera Mini, Blackberry) @@ -3613,6 +3588,7 @@ span.highlighted { src: url("../fonts/FluxRegular.eot?#iefix") format("embedded-opentype"), url("../fonts/FluxRegular.woff") format("woff"), url('data:font/truetype;base64,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AN8AjwBwAG8AcQBzAHIAdACcAHUAdwB2AHgAeQB7AHoAfAB9ANwAfgCAAH8AgQCDAIIAsACdAIUAhACGAIcACQDgALIAzwDYANIA0wDUANcA0ADWAK4ArwC7AKwArQC8AIgAuQCNAO4ABwDxAPAAAAABAAAC3/73AHQEJf+I/8ED/QABAAAAAAAAAAAAAAAAAAAA9wEoAAAAAAAAASgAAAEoAAACIQAjAbQAHwEFAGQCDgApAf4AWwHlAD8A8gBGAWUARgJSADEBzgASAsYAFwJDADEA5wBQATQAPAE0AAYBZQAZAccALwDeADwBNwA8AN4AOwFPAAABzQAoAQoAHgG0ACgBpgAoAckAFAGvADIB4QAmAY8ADwHCAB4B1wAcAPYASQD8AEwBVAAsApkAMQFUACwBygAoAwQAMgIXAAoB/wA8AhgAHAIcADwBwwA8AaQAPAIhAB0CNwA8ANYARgFWAAoB9gA8AYIAPALHADwCVAA8AlsAHgHUADwCWwAeAdcAPAHiAB4B0wAKAjUANwIAAAoC/QAKAkYAKAHQAAoCQAAoAQsAPAFQAAABCwAfAowAUgH0AAQBUgBCAaMAHgHVADwBjwAeAdkAHgGjAB4BGwAeAdsAKAHSADwA1wA8AN7/iAGnADwA3wA8Ap4AMgHFADIBzQAeAdYAPAHgACMBSwA8AYoAKAETAB4BzAAyAbIADwJrAA8BswAeAdMAMgGqAB4BUQAeAOkAUAFQAAwBmQAwAhcACgIXAAoCLAAmAcMAPAJUADwCWwAeAj8APAGtACgBrQAoAbYAKAGtACgBrQAoAa0AKAGPAB4BowAeAaMAHgGkAB4BowAeANsAEgDf//QA3//LAN//2QHFADIBzQAeAc0AHgHNAB4BzQAeAc0AHgHMADIBzAAyAcwAMgHMADICFgAtASEAMgGZAB4CMwAoAc0AMgGfADwB7gAeAiwAFAM4ADIDNwAyAjUAHgFbADwBpAA7ApoAPAMbAAoCWgAeAlcAHgHMADIBnwAoAZ8AKAK+ACgBzQAeAcsAJwDyAEYBrAAKAhwAFAHxADIB8QAyAp4AOwIXAAoCFwAKAlsAHgMUABwC9QAoAoMAPAM3ADwBdQA7AXQAOwDeADsA3gA7AuMAFAMYABQB5wA8AeQAFAHO/+wBQwAyAUMAMgHiABQCFgAUAgwAKADeADsA3gA7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/90AhwB3/90AiAB4/90AiQB5/90AigB6/9wAiwB6/9wAjAB7/9wAjQB8/9wAjgB9/9sAjwB+/9sAkAB//9sAkQCA/9sAkgCB/9oAkwCB/9oAlACC/9oAlQCD/9oAlgCE/9kAlwCF/9kAmACG/9kAmQCH/9kAmgCI/9gAmwCI/9gAnACJ/9gAnQCK/9gAngCL/9cAnwCM/9cAoACN/9cAoQCO/9cAogCP/9YAowCP/9YApACQ/9YApQCR/9YApgCS/9UApwCT/9UAqACU/9UAqQCV/9UAqgCW/9QAqwCW/9QArACX/9QArQCY/9QArgCZ/9MArwCa/9MAsACb/9MAsQCc/9MAsgCd/9IAswCd/9IAtACe/9IAtQCf/9IAtgCg/9EAtwCh/9EAuACi/9EAuQCj/9EAugCk/9AAuwCk/9AAvACl/9AAvQCm/88AvgCn/88AvwCo/88AwACp/88AwQCq/84AwgCr/84AwwCs/84AxACs/84AxQCt/80AxgCu/80AxwCv/80AyACw/80AyQCx/8wAygCy/8wAywCz/8wAzACz/8wAzQC0/8sAzgC1/8sAzwC2/8sA0AC3/8sA0QC4/8oA0gC5/8oA0wC6/8oA1AC6/8oA1QC7/8kA1gC8/8kA1wC9/8kA2AC+/8kA2QC//8gA2gDA/8gA2wDB/8gA3ADB/8gA3QDC/8cA3gDD/8cA3wDE/8cA4ADF/8cA4QDG/8YA4gDH/8YA4wDI/8YA5ADI/8YA5QDJ/8UA5gDK/8UA5wDL/8UA6ADM/8UA6QDN/8QA6gDO/8QA6wDP/8QA7ADP/8QA7QDQ/8MA7gDR/8MA7wDS/8MA8ADT/8MA8QDU/8IA8gDV/8IA8wDW/8IA9ADW/8IA9QDX/8EA9gDY/8EA9wDZ/8EA+ADa/8EA+QDb/8AA+gDc/8AA+wDd/8AA/ADe/78A/QDe/78A/gDf/78A/wDg/78AFAA1AC4ASQBlAAAACgFwABACEQAMAkkABgAAuAAALEu4AAlQWLEBAY5ZuAH/hbgARB25AAkAA19eLbgAASwgIEVpRLABYC24AAIsuAABKiEtuAADLCBGsAMlRlJYI1kgiiCKSWSKIEYgaGFksAQlRiBoYWRSWCNlilkvILAAU1hpILAAVFghsEBZG2kgsABUWCGwQGVZWTotuAAELCBGsAQlRlJYI4pZIEYgamFksAQlRiBqYWRSWCOKWS/9LbgABSxLILADJlBYUViwgEQbsEBEWRshISBFsMBQWLDARBshWVktuAAGLCAgRWlEsAFgICBFfWkYRLABYC24AAcsuAAGKi24AAgsSyCwAyZTWLBAG7AAWYqKILADJlNYIyGwgIqKG4ojWSCwAyZTWCMhuADAioobiiNZILADJlNYIyG4AQCKihuKI1kgsAMmU1gjIbgBQIqKG4ojWSC4AAMmU1iwAyVFuAGAUFgjIbgBgCMhG7ADJUUjISMhWRshWUQtuAAJLEtTWEVEGyEhWS0AuAAAKwC6AAEAAgACKwG6AAMAAgACKwG/AAMATAA+ADAAIwASAAAACCu/AAQANwAtACMAGQASAAAACCsAvwABAGgAXABIADQAHwAAAAgrvwACAHgAXABIADQAHwAAAAgrALoABQAEAAcruAAAIEV9aRhEAAAAAAD3AQEBAUwBAQEBMwEBAUQ7OwEBOwEBAQEBAUwBAUxMTEwBTEwBAQEBAQEBATsBTAEBREwBOwEBHDs7TDtMOwFMAQEBAQEBATMBAQEzMwFMOwFMMwEBAQEvN0wvOwFMAUwBAQE3AQEBAQEzAQEBOy9MNzdMRDdEOzs7TEwBAQEBN0xMTExMTExMTAE7AQFMAUxMMzdMATcBATsBTExMTEwBAQEBAQFMAQE7AUQBAQEBAQFETERMAQEBOyIBAQEBRAEBATcBAQFMATs7RDtMTEwBAQEBAQE7AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAURMAQAAAQAAAAoAHgAsAAFsYXRuAAgABAAAAAD//wABAAAAAWtlcm4ACAAAAAEAAAABAAQAAgAAAAEACAABCo4ABAAAAEsAoACqALQAwgD8AR4BSAHKAdAB1gHcAe4B+AIGAgwCFgIgAlICbAKKArQCygM8A1IDWANmA2wDvgP4A/4EBARCBKQEzgTwBSIFsAXaBmAGygdoB/YIcAh6CJwIqgi0CLoIyAkSCSAJLgk0CToJQAlGCVwJZgl4CYoJlAmaCawJtgnMCdYJ7An2CgQKDgowCkIKVApqCoAAAgAq/9gASv/oAAIAKv/QAEH/7AADABIAKgBP//AAUwBYAA4ALP/sAC3/7AAw/+wAOP/sADr/7AA9/84AP//sAED/7ABC/84AS//wAFD/8ABY//YAX//iAGD/7AAIAB3/2AAq/+gAPf/YAD//6ABB/9AAQv/IAEP/2ABh/+gACgAr/+wALP/iADD/7AA4/+wAPf/OAD//7ABA/+wAQv/YAF//4ABg/+gAIAAZ/9gAGv/gABv/yAAc/9AAHf+IAB7/4AAf/+gAIv/YACr/sAA4/+wAPP/sAD0AHgA/ABQAQAAUAEIAHgBK/9AATP/QAE3/2ABO/9gAUP/IAFb/0ABX/+AAWP/YAFn/0ABa/9AAW//QAFz/2ABe/+AAX//oAGD/4ABh/9AAYv/oAAEARf/QAAEARf/oAAEARf/QAAQAFv/gABgAEAAg//AARf/AAAIAGAAgAEX/2AADABb/8AAYABgARf/IAAEARf/wAAIAGP/wAB3/sAACABgAEABF/9gADAAL/9gAEP/YABb/6AA4/+wAPf/EAD7/7AA//84AQP/sAEL/zgBF/8gAX//oAGD/6AAGAAv/7AA9/84AQf/OAEL/zgBD/+wARf/gAAcALP/xADj/7AA9//YAQP/sAEH/4gBC/+wAQ//sAAoAFf/sABf/4gAz/+IAPf/iAD7/9gA//+wAQf/OAEL/2ABD/+IARf/oAAUAOv/2AD8AFABAABQAQgAUAEUAIAAcABX/4gAX/9gAMP/sADP/4gA4/+wAOv/sAD8AFABAABQAQf/iAEIAFABFACgASv/QAEz/4ABN/+gATv/oAFD/6ABW/+gAV//oAFj/6ABZ/+AAWv/gAFv/6ABc/+gAXv/wAF//+ABh//AAYv/oAGP/8AAFAD3/7AA///YAQf/iAEL/9gBD//YAAQBB/+wAAwA4//YAQf/sAEr/8AABACr/7AAUABb/4AAs/+wAMP/YADj/4AA6/+gAPP/4AD7/8ABK/+gATP/gAE3/6ABO//AAUP/YAFX/8ABX//gAWP/oAFr/4ABb//gAXv/yAF//5QBg/+UADgAL/+wALf/2ADD/7AA4/+gAOv/wAD3/2AA+/+gAP//YAED/8ABC/+gAUP/4AFj/8ABf//AAYP/wAAEAQf/oAAEAQf/oAA8AFf/sABf/7AAY/+wAKv/sAC7/9gAz/9gAPf/oAD//7ABA/+wAQf/EAEL/7ABD/84ARf/oAEr/8ABh//AAGAAV/+IAFv/oABf/4gAY/9gAKv/EAC3/9gAz/9AAOf/4ADr/+AA8//gAPf/4AEH/yABD/9gASv/QAEz/6ABN/+gATv/gAFD/4ABW/+gAV//4AFj/4ABZ//gAW//oAFz/8AAKABX/7AAz/+AAPf/gAD//8ABB/8AAQv/oAEP/2ABK//AAXP/4AGH/8AAIAD7/+ABB/9gAQv/wAEr/8ABM//AATv/wAFD/8ABY//AADAAL/+wAEP/sADP/8AA9/+gAP//wAEH/2ABC//AAQ//gAF//8ABg//AAYf/wAGP/+AAjABX/4gAW/9gAF//YABj/2AAq/8QALP/2ADD/7AAz/+IAOP/xADr/8AA8//gAPwAYAEAAGABB/+gAQgAYAEUAKABK/6gATP+4AE3/wABO/7AAUP+4AFb/sABX/7AAWP+oAFn/qABa/7AAW/+4AFz/uABd//AAXv+2AF//uABg/8gAYf/AAGL/wABj/7gACgAY/+wAKv/sAC7/7AAv//YAM//sADn/+AA6//gAPf/oAEH/2ABD/9gAIQAV/+wAFv/gABf/7AAY/84AKv/OADD/7AAz/8QAOP/sADr/8AA9ABAAPwAUAEAAFABB/+IAQgAUAEP/4gBFABAASv/IAEz/0ABN/9gATv/YAFD/0ABW/9gAV//YAFj/yABZ/8gAWv/QAFv/2ABc/9gAXv/wAF//+ABh/+gAYv/YAGP/4AAaABX/7AAX/+wAGP/YACr/7AAz/9gAOP/sAD0AEAA/ABQAQAAUAEH/7ABCABQARQAQAEr/0ABM/+gATf/YAE7/4ABQ/9gAVv/wAFf/4ABY/+AAW//YAFz/4ABe/+gAYf/oAGL/6ABj/+AAJwAQ/+wAFv/QACv/zgAs/84ALf/iAC7/7AAv/+IAMP/EADH/7AAy/+wANf/4ADb/+AA3/+gAOP/EADn/6AA6/8AAO//oADz/2AA9/+AAPv/YAD//4gBA/+wAQf/YAEL/7ABD/+IASv/QAEv/6ABM/9gATf/iAE7/4gBQ/+IAWP/dAFn/7ABa/+IAXf/iAF7/4gBf/+IAYP/iAGL/5QAjABX/2AAW/9AAF//iABj/2AAq/84ALP/sADD/7AAz/9gAOP/sADr/6AA8//gAPQAQAD8AFABAABQAQf/sAEP/7ABFABgASv/AAEz/uABN/8gATv/QAFD/wABW/8gAV//YAFj/wABZ/8AAWv/AAFv/yABc/8AAXv/QAF//4ABg/9gAYf/YAGL/2ABj/+AAHgAW/+AALP/iAC3/4gAu/+wAL//2ADD/xAAx//YAOP/OADr/2AA7//gAPP/4AD3/4AA+/9gAP//iAED/7ABB/+IAQv/sAEP/7ABL//AATP/oAE3/6ABO//AAT//wAFD/8ABR//AAWP/oAFn/+ABa//AAX//gAGD/6AACAEYABwBTAEAACAA4//AAPf/IAD7/6AA//8gAQP/IAEL/yABQ//gAX//gAAMAC//gAEL/wABF/9gAAgBC/9AARf/oAAEARf/YAAMAPf/QAEL/yABF/9gAEgALAEAAEAAUABIAUAAV/+gAF//oAC8AHQAxABgANAAIADUAMAA9ACgAPgAeAD8AOABAADgAQwAYAEUAaABGADgASv/2AGYAMAADAAv/8ABC/9AARf/oAAMAC//wAEL/0ABF/+gAAQBTACgAAQBC/+gAAQBF/9gAAQBF/+gABQAV//YAQ//gAEX/4ABh/+wAY//lAAIAQ//gAEX/4AAEAEP/4ABTAE8AXv/zAGH/8wAEABX/7AAX//AAQ//gAE8ADwACABb/8ABD/+AAAQBD/+AABAAV/+wAF//oABj/8ABD/+AAAgAV/+wAF//oAAUAFv/oAEz/5QBY/+wAWf/zAFr/5QACAEX/8ABTABoABQAQ//AARf/gAE3/5QBY/+UAWf/lAAIAT//oAGYAJAADAHsAPAB8ADIAfQBJAAIAfAA+AH0ANQAIAHoAPQB7AC0AfAB8AH0AcgDDABIAxAASAMUAEgDGABIABAB6ACoAewA6AHwAZwB9AFwABAB8AA4AxAA8AMUATwDGAEsABQB8AA0AwwAxAMQAfQDFAGkAxgArAAUAfAANAMMAJgDEAHIAxQBeAMYASQADAHwADQDEAD8AxQArAAIADAALAAsAAAAQABEAAQAVACAAAwAiACIADwAqAEUAEABKAEwALABOAFEALwBTAFQAMwBWAFwANQBeAGQAPAB6AH0AQwDDAMYARwAA') format('truetype'); font-weight: normal; font-style: normal; } + /*@font-face { font-family: 'Flux-BoldItalic'; src: url('../fonts/FluxBoldItalic.eot'); @@ -3634,6 +3610,7 @@ span.highlighted { src: url("../fonts/FluxBold.eot?#iefix") format("embedded-opentype"), url("../fonts/FluxBold.woff") format("woff"), url('data:font/truetype;base64,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AN8AjwBwAG8AcQBzAHIAdACcAHUAdwB2AHgAeQB7AHoAfAB9ANwAfgCAAH8AgQCDAIIAsACdAIUAhACGAIcACQDgALIAzwDYANIA0wDUANcA0ADWAK4ArwC7AKwArQC8AIgAuQCNAO4ABwDxAPAAAAABAAAC4/77AIIEMv+I/8EECgABAAAAAAAAAAAAAAAAAAAA9wEoAAAAAAAAASgAAAEoAAACIQAUAbQAEAEFAF0CDgAiAf4AUAHlADgBBgBGAXQARgJiADIB8wAeAtwAHgJlAC0A9wBQAUsAPAFLAAoBhQAeAdsAMgDxADwBRQA8APIAPAFjAAAB2gAoARwAHgHEACgBtgAoAeAAFAG9ADIB7gAmAagADwHQAB4B5gAcAQYARgEHAEYBbAAoAqIAMgFsADIB1QAoAxMAMgIuAAoCDQA8AikAHAIqADwB2AA8AcMAPAIxABwCRQA8AOoARgFnAAoCDgA8AZYAPALVADwCYgA8AmkAHgHhADwCaQAeAe0APAHzAB4B6AAKAkMANwIUAAoDEQAKAmYAKAHoAAoCVgAoAR4APAFiAAABHwAfAngAPAIrABQBZQAtAaoAHgHjADwBoAAeAd0AHgGqAB0BLAAeAeoAKAHWADwA8gA8AOj/iAG+ADwA9wA8AqIAMgHJADIB2wAeAeQAPAHvACMBXgA8AZIAKAEhAB4B1QAyAcYADwJ/AA8B1AAeAeIAMgHAAB4BdQAeAPgAUAF2AB4BtQAyAi4ACgIuAAoCPQAmAdgAPAJiADwCaQAeAk0APAG+ACgBvgAoAcoAKAG+ACgBvgAoAb4AKAGgAB4BtQAeAbUAHgG2AB4BtQAeAPMAEgD3//QA9//LAO7/2QHTADIB2wAeAdsAHgHbAB4B2wAeAdsAHgHaADIB2gAyAdoAMgHaADICKwAtAS8AMgGqAB4CRgAoAd8AMgGuADwB/QAeAjkAFANGADIDRgAyAkkAHgFzADwBsQA8ArYAPAM5AAoCaQAeAnMAHgHaADIBtAAoAbQAKALQACgB2wAeAdUAKAEGAEYBwgAKAi0AFAIGADICBgAyAq4AOwIuAAoCLgAKAmkAHgMpABwC/QAeApkAPANNADwBgwA7AYIAPADsADsA7AA8AvEAFAMnABQB9gA8AfwAFAHl/+wBWAAyAVgAMgHxABQCJgAUAiEAKADsADwA7AA8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AE3/6QBYAE7/6QBZAE//6QBaAE//6QBbAFD/6ABcAFH/6ABdAFL/6ABeAFP/6ABfAFT/5wBgAFX/5wBhAFb/5wBiAFb/5wBjAFf/5gBkAFj/5gBlAFn/5gBmAFr/5gBnAFv/5QBoAFz/5QBpAF3/5QBqAF3/5QBrAF7/5ABsAF//5ABtAGD/5ABuAGH/5ABvAGL/4wBwAGP/4wBxAGT/4wByAGT/4wBzAGX/4gB0AGb/4gB1AGf/4gB2AGj/4gB3AGn/4QB4AGr/4QB5AGv/4QB6AGv/4QB7AGz/4AB8AG3/4AB9AG7/4AB+AG//3wB/AHD/3wCAAHH/3wCBAHL/3wCCAHP/3gCDAHP/3gCEAHT/3gCFAHX/3gCGAHb/3QCHAHf/3QCIAHj/3QCJAHn/3QCKAHr/3ACLAHr/3ACMAHv/3ACNAHz/3ACOAH3/2wCPAH7/2wCQAH//2wCRAID/2wCSAIH/2gCTAIH/2gCUAIL/2gCVAIP/2gCWAIT/2QCXAIX/2QCYAIb/2QCZAIf/2QCaAIj/2ACbAIj/2ACcAIn/2ACdAIr/2ACeAIv/1wCfAIz/1wCgAI3/1wChAI7/1wCiAI//1gCjAI//1gCkAJD/1gClAJH/1gCmAJL/1QCnAJP/1QCoAJT/1QCpAJX/1QCqAJb/1ACrAJb/1ACsAJf/1ACtAJj/1ACuAJn/0wCvAJr/0wCwAJv/0wCxAJz/0wCyAJ3/0gCzAJ3/0gC0AJ7/0gC1AJ//0gC2AKD/0QC3AKH/0QC4AKL/0QC5AKP/0QC6AKT/0AC7AKT/0AC8AKX/0AC9AKb/zwC+AKf/zwC/AKj/zwDAAKn/zwDBAKr/zgDCAKv/zgDDAKz/zgDEAKz/zgDFAK3/zQDGAK7/zQDHAK//zQDIALD/zQDJALH/zADKALL/zADLALP/zADMALP/zADNALT/ywDOALX/ywDPALb/ywDQALf/ywDRALj/ygDSALn/ygDTALr/ygDUALr/ygDVALv/yQDWALz/yQDXAL3/yQDYAL7/yQDZAL//yADaAMD/yADbAMH/yADcAMH/yADdAML/xwDeAMP/xwDfAMT/xwDgAMX/xwDhAMb/xgDiAMf/xgDjAMj/xgDkAMj/xgDlAMn/xQDmAMr/xQDnAMv/xQDoAMz/xQDpAM3/xADqAM7/xADrAM//xADsAM//xADt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/+wASv/wAAEAKv/sABQAFv/gACz/7AAw/9gAOP/gADr/6AA8//gAPv/wAEr/6ABM/+AATf/oAE7/8ABQ/9gAVf/wAFf/+ABY/+gAWv/gAFv/+ABe//IAX//lAGD/5QAOAAv/7AAt//YAMP/sADj/6AA6//AAPf/YAD7/6AA//9gAQP/wAEL/6ABQ//gAWP/wAF//8ABg//AAAQBB/+gAAQBB/+gADwAV/+wAF//sABj/7AAq/+wALv/2ADP/2AA9/+gAP//sAED/7ABB/8QAQv/sAEP/zgBF/+gASv/wAGH/8AAYABX/4gAW/+gAF//iABj/2AAq/8QALf/2ADP/0AA5//gAOv/4ADz/+AA9//gAQf/IAEP/2ABK/9AATP/oAE3/6ABO/+AAUP/gAFb/6ABX//gAWP/gAFn/+ABb/+gAXP/wAAoAFf/sADP/4AA9/+AAP//wAEH/wABC/+gAQ//YAEr/8ABc//gAYf/wAAgAPv/4AEH/2ABC//AASv/wAEz/8ABO//AAUP/wAFj/8AAMAAv/7AAQ/+wAM//wAD3/6AA///AAQf/YAEL/8ABD/+AAX//wAGD/8ABh//AAY//4ACMAFf/iABb/2AAX/9gAGP/YACr/xAAs//YAMP/sADP/4gA4//EAOv/wADz/+AA/ABgAQAAYAEH/6ABCABgARQAoAEr/qABM/7gATf/AAE7/sABQ/7gAVv+wAFf/sABY/6gAWf+oAFr/sABb/7gAXP+4AF3/8ABe/7YAX/+4AGD/yABh/8AAYv/AAGP/uAAKABj/7AAq/+wALv/sAC//9gAz/+wAOf/4ADr/+AA9/+gAQf/YAEP/2AAhABX/7AAW/+AAF//sABj/zgAq/84AMP/sADP/xAA4/+wAOv/wAD0AEAA/ABQAQAAUAEH/4gBCABQAQ//iAEUAEABK/8gATP/QAE3/2ABO/9gAUP/QAFb/2ABX/9gAWP/IAFn/yABa/9AAW//YAFz/2ABe//AAX//4AGH/6ABi/9gAY//gABoAFf/sABf/7AAY/9gAKv/sADP/2AA4/+wAPQAQAD8AFABAABQAQf/sAEIAFABFABAASv/QAEz/6ABN/9gATv/gAFD/2ABW//AAV//gAFj/4ABb/9gAXP/gAF7/6ABh/+gAYv/oAGP/4AAnABD/7AAW/9AAK//OACz/zgAt/+IALv/sAC//4gAw/8QAMf/sADL/7AA1//gANv/4ADf/6AA4/8QAOf/oADr/wAA7/+gAPP/YAD3/4AA+/9gAP//iAED/7ABB/9gAQv/sAEP/4gBK/9AAS//oAEz/2ABN/+IATv/iAFD/4gBY/90AWf/sAFr/4gBd/+IAXv/iAF//4gBg/+IAYv/lACMAFf/YABb/0AAX/+IAGP/YACr/zgAs/+wAMP/sADP/2AA4/+wAOv/oADz/+AA9ABAAPwAUAEAAFABB/+wAQ//sAEUAGABK/8AATP+4AE3/yABO/9AAUP/AAFb/yABX/9gAWP/AAFn/wABa/8AAW//IAFz/wABe/9AAX//gAGD/2ABh/9gAYv/YAGP/4AAeABb/4AAs/+IALf/iAC7/7AAv//YAMP/EADH/9gA4/84AOv/YADv/+AA8//gAPf/gAD7/2AA//+IAQP/sAEH/4gBC/+wAQ//sAEv/8ABM/+gATf/oAE7/8ABP//AAUP/wAFH/8ABY/+gAWf/4AFr/8ABf/+AAYP/oAAIARgAHAFMAQAAIADj/8AA9/8gAPv/oAD//yABA/8gAQv/IAFD/+ABf/+AAAwAL/+AAQv/AAEX/2AACAEL/0ABF/+gAAQBF/9gAAwA9/9AAQv/IAEX/2AASAAsAQAAQABQAEgBQABX/6AAX/+gALwAdADEAGAA0AAgANQAwAD0AKAA+AB4APwA4AEAAOABDABgARQBoAEYAOABK//IAZgAwAAMAC//wAEL/0ABF/+gAAwAL//AAQv/QAEX/6AABAFMAKAABAEL/6AABAEX/2AABAEX/6AAFABX/9gBD/+AARf/gAGH/7ABj/+UAAgBD/+AARf/gAAQAQ//gAFMATwBe//MAYf/zAAQAFf/sABf/8ABD/+AATwAOAAIAFv/wAEP/4AABAEP/4AAEABX/7AAX/+gAGP/wAEP/4AACABX/7AAX/+gABQAW/+gATP/lAFj/7ABZ//MAWv/lAAIARf/wAFMAGgAFABD/8ABF/+AATf/lAFj/5QBZ/+UAAgBP/+gAZgAkAAMAewA8AHwAMgB9AEkAAgB8AD4AfQA1AAgAegA9AHsALQB8AHwAfQByAMMAEgDEABIAxQASAMYAEgAEAHoAKgB7ADoAfABnAH0AXAAEAHwADgDEADwAxQBPAMYASwAFAHwADQDDADEAxAB9AMUAaQDGACsABQB8AA0AwwAmAMQAcgDFAF4AxgBJAAMAfAANAMQAPwDFACsAAgAMAAsACwAAABAAEQABABUAIAADACIAIgAPACoARQAQAEoATAAsAE4AUQAvAFMAVAAzAFYAXAA1AF4AZAA8AHoAfQBDAMMAxgBHAAA=') format('truetype'); font-weight: bold; font-style: normal; } + /* * Generated by Font Squirrel (http://www.fontsquirrel.com) on July 2, 2013 10:19:24 AM America/New_York * Adobe Source Pro Sans, Open Source License: http://store1.adobe.com/cfusion/store/html/index.cfm?event=displayFontPackage&code=1959 @@ -3644,12 +3621,14 @@ span.highlighted { src: url("../fonts/SourceSansPro-Regular-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/SourceSansPro-Regular-webfont.woff") format("woff"), url("../fonts/SourceSansPro-Regular-webfont.ttf") format("truetype"), url("../fonts/SourceSansPro-Regular-webfont.svg#source_sans_proregular") format("svg"); font-weight: normal; font-style: normal; } + @font-face { font-family: 'SourceSansProBold'; src: url("../fonts/SourceSansPro-Bold-webfont.eot"); src: url("../fonts/SourceSansPro-Bold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/SourceSansPro-Bold-webfont.woff") format("woff"), url("../fonts/SourceSansPro-Bold-webfont.ttf") format("truetype"), url("../fonts/SourceSansPro-Bold-webfont.svg#source_sans_probold") format("svg"); font-weight: bold; font-style: normal; } + @font-face { font-family: 'SourceSansProItalic'; src: url("../fonts/SourceSansPro-It-webfont.eot"); @@ -3809,7 +3788,7 @@ span.highlighted { #select_sponsorship_benefits_container .benefit-title { margin-top: 0; } #select_sponsorship_benefits_container .benefit-program { - font-weight: bold; } + font-size: bold; } #select_sponsorship_benefits_container #benefitsTable { width: 90vw; position: relative; @@ -3822,7 +3801,7 @@ span.highlighted { font-size: 16px; line-height: 18px; } #select_sponsorship_benefits_container #benefitsTable .row { - border-bottom: 1px solid #e6e8ea; } + border-bottom: 1px solid #E6E8EA; } #select_sponsorship_benefits_container #benefitsTable .row .col:not(first-child) { width: 10%; text-align: center; @@ -3838,7 +3817,7 @@ span.highlighted { width: 70%; } } #select_sponsorship_benefits_container #benefitsTable .separator { flex-shrink: 0; - border-bottom: 3px solid #ffd343; + border-bottom: 3px solid #FFD343; display: block; } #select_sponsorship_benefits_container #benefitsTable .separator h4 { font-size: 23px; @@ -4008,7 +3987,7 @@ span.highlighted { #sponsorship-detail-container .card { flex: 1 0 48%; } #sponsorship-detail-container .card-info { - margin: 0.5em 0.5em; + margin: .5em .5em; padding: 1em 1em; border: 1px solid #caccce; -webkit-border-radius: 6px; From 18e1d74eb1fe435d617b78b91fc7a5457d262a9d Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Mon, 30 Sep 2024 14:17:55 -0400 Subject: [PATCH 172/256] Improve static deploy (#2609) * Add a utility for purging Fastly by Surrogate-Key * add a postdeploy step to purge surroage-keys for static files --- Procfile | 1 + fastly/utils.py | 20 ++++++++++++++++++++ pydotorg/management/__init__.py | 0 pydotorg/management/commands/__init__.py | 0 pydotorg/management/commands/postdeploy.py | 14 ++++++++++++++ pydotorg/settings/base.py | 10 ++++++++-- pydotorg/settings/cabotage.py | 8 +++++++- 7 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 pydotorg/management/__init__.py create mode 100644 pydotorg/management/commands/__init__.py create mode 100644 pydotorg/management/commands/postdeploy.py diff --git a/Procfile b/Procfile index 16deb5f5b..cce927ff8 100644 --- a/Procfile +++ b/Procfile @@ -2,3 +2,4 @@ release: python manage.py migrate --noinput web: bin/start-nginx gunicorn -c gunicorn.conf pydotorg.wsgi worker: celery -A pydotorg worker -l INFO worker-beat: celery -A pydotorg beat -l INFO --scheduler django_celery_beat.schedulers:DatabaseScheduler +postdeploy: python manage.py postdeploy diff --git a/fastly/utils.py b/fastly/utils.py index 42637aeb2..8bc9a8b80 100644 --- a/fastly/utils.py +++ b/fastly/utils.py @@ -20,3 +20,23 @@ def purge_url(path): return response return None + + +def purge_surrogate_key(key): + """ + Purge a Fastly.com Surrogate-Key given a key. + """ + if settings.DEBUG: + return + + api_key = getattr(settings, 'FASTLY_API_KEY', None) + service_id = getattr(settings, 'FASTLY_SERVICE_ID', None) + if api_key and service_id: + response = requests.request( + "POST", + f'https://api.fastly.com/service/{service_id}/purge/{key}', + headers={'Fastly-Key': api_key}, + ) + return response + + return None diff --git a/pydotorg/management/__init__.py b/pydotorg/management/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pydotorg/management/commands/__init__.py b/pydotorg/management/commands/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pydotorg/management/commands/postdeploy.py b/pydotorg/management/commands/postdeploy.py new file mode 100644 index 000000000..17c518e31 --- /dev/null +++ b/pydotorg/management/commands/postdeploy.py @@ -0,0 +1,14 @@ +from django.core.management.base import BaseCommand +from django.conf import settings + +from fastly.utils import purge_surrogate_key + + +class Command(BaseCommand): + """ Do things after deployment is complete """ + + def handle(self, *args, **kwargs): + # If we have a STATIC_SURROGATE_KEY set, purge static files to ensure + # that anything cached mid-deploy is ignored (like 404s). + if settings.STATIC_SURROGATE_KEY: + purge_surrogate_key(settings.STATIC_SURROGATE_KEY) diff --git a/pydotorg/settings/base.py b/pydotorg/settings/base.py index 2c392b355..70ec472f9 100644 --- a/pydotorg/settings/base.py +++ b/pydotorg/settings/base.py @@ -285,8 +285,10 @@ MAILING_LIST_PSF_MEMBERS = "psf-members-announce-request@python.org" ### Fastly ### -FASTLY_API_KEY = False # Set to Fastly API key in production to allow pages to - # be purged on save +FASTLY_SERVICE_ID = False # Set to a Fastly Service ID in production to allow + # purges by Surrogate-Key +FASTLY_API_KEY = False # Set to Fastly API key in production to allow + # pages to be purged on save # Jobs JOB_THRESHOLD_DAYS = 90 @@ -349,6 +351,10 @@ GLOBAL_SURROGATE_KEY = 'pydotorg-app' +### pydotorg.settings.cabotage.add_surrogate_keys_to_static + +STATIC_SURROGATE_KEY = 'pydotorg-static' + ### PyCon Integration for Sponsor Voucher Codes PYCON_API_KEY = config("PYCON_API_KEY", default="deadbeef-dead-beef-dead-beefdeadbeef") PYCON_API_SECRET = config("PYCON_API_SECRET", default="deadbeef-dead-beef-dead-beefdeadbeef") diff --git a/pydotorg/settings/cabotage.py b/pydotorg/settings/cabotage.py index 4661fbf66..2effbacf7 100644 --- a/pydotorg/settings/cabotage.py +++ b/pydotorg/settings/cabotage.py @@ -53,6 +53,11 @@ }, } +def add_surrogate_keys_to_static(headers, path, url): + headers['Surrogate-Key'] = STATIC_SURROGATE_KEY + +WHITENOISE_ADD_HEADERS_FUNCTION = add_surrogate_keys_to_static + EMAIL_HOST = config('EMAIL_HOST') EMAIL_HOST_USER = config('EMAIL_HOST_USER') EMAIL_HOST_PASSWORD = config('EMAIL_HOST_PASSWORD') @@ -63,7 +68,8 @@ PEP_REPO_PATH = None PEP_ARTIFACT_URL = config('PEP_ARTIFACT_URL') -# Fastly API Key +# Fastly +FASTLY_SERVICE_ID = config('FASTLY_SERVICE_ID') FASTLY_API_KEY = config('FASTLY_API_KEY') SECURE_SSL_REDIRECT = True From 00b4302f26d7c1db29a3b12b69d7a1df10171399 Mon Sep 17 00:00:00 2001 From: Mike Fiedler <miketheman@gmail.com> Date: Mon, 30 Sep 2024 14:26:16 -0400 Subject: [PATCH 173/256] refactor: update `all_day` detection logic (#2601) Instead of using a particular resolution on an object, which differs between `datetime.date` and `datetime.datetime` objects, operate on parent class of `datetime` and convert all `dt` to timezone-aware `datetime` values. This is also in accordance to the model field being a `DateTimeField`, so we should always be passing the correctly-created object, instead of a `datetime.date()`, raising `received a naive datetime` warnings. Removes unused constants. Signed-off-by: Mike Fiedler <miketheman@gmail.com> Co-authored-by: Ee Durbin <ewdurbin@gmail.com> --- events/importer.py | 8 +------- events/utils.py | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/events/importer.py b/events/importer.py index fe04d35f5..12bf2efce 100644 --- a/events/importer.py +++ b/events/importer.py @@ -7,9 +7,6 @@ from .models import EventLocation, Event, OccurringRule from .utils import extract_date_or_datetime -DATE_RESOLUTION = timedelta(1) -TIME_RESOLUTION = timedelta(0, 0, 1) - logger = logging.getLogger(__name__) @@ -31,10 +28,7 @@ def import_occurrence(self, event, event_data): dt_end = dt_start # Let's mark those occurrences as 'all-day'. - all_day = ( - dt_start.resolution == DATE_RESOLUTION or - dt_end.resolution == DATE_RESOLUTION - ) + all_day = dt_end - dt_start >= timedelta(days=1) defaults = { 'dt_start': dt_start, diff --git a/events/utils.py b/events/utils.py index a3801d4a6..1ddadcc79 100644 --- a/events/utils.py +++ b/events/utils.py @@ -21,7 +21,7 @@ def date_to_datetime(date, tzinfo=None): def extract_date_or_datetime(dt): - if isinstance(dt, datetime.datetime): + if isinstance(dt, datetime.date): return convert_dt_to_aware(dt) return dt From 4c44d8045c5c6e9a6cd2a15bbc9cfef52739edc3 Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Mon, 30 Sep 2024 15:06:45 -0400 Subject: [PATCH 174/256] Revert "Improve static deploy" (#2621) Revert "Improve static deploy (#2609)" This reverts commit 18e1d74eb1fe435d617b78b91fc7a5457d262a9d. --- Procfile | 1 - fastly/utils.py | 20 -------------------- pydotorg/management/__init__.py | 0 pydotorg/management/commands/__init__.py | 0 pydotorg/management/commands/postdeploy.py | 14 -------------- pydotorg/settings/base.py | 10 ++-------- pydotorg/settings/cabotage.py | 8 +------- 7 files changed, 3 insertions(+), 50 deletions(-) delete mode 100644 pydotorg/management/__init__.py delete mode 100644 pydotorg/management/commands/__init__.py delete mode 100644 pydotorg/management/commands/postdeploy.py diff --git a/Procfile b/Procfile index cce927ff8..16deb5f5b 100644 --- a/Procfile +++ b/Procfile @@ -2,4 +2,3 @@ release: python manage.py migrate --noinput web: bin/start-nginx gunicorn -c gunicorn.conf pydotorg.wsgi worker: celery -A pydotorg worker -l INFO worker-beat: celery -A pydotorg beat -l INFO --scheduler django_celery_beat.schedulers:DatabaseScheduler -postdeploy: python manage.py postdeploy diff --git a/fastly/utils.py b/fastly/utils.py index 8bc9a8b80..42637aeb2 100644 --- a/fastly/utils.py +++ b/fastly/utils.py @@ -20,23 +20,3 @@ def purge_url(path): return response return None - - -def purge_surrogate_key(key): - """ - Purge a Fastly.com Surrogate-Key given a key. - """ - if settings.DEBUG: - return - - api_key = getattr(settings, 'FASTLY_API_KEY', None) - service_id = getattr(settings, 'FASTLY_SERVICE_ID', None) - if api_key and service_id: - response = requests.request( - "POST", - f'https://api.fastly.com/service/{service_id}/purge/{key}', - headers={'Fastly-Key': api_key}, - ) - return response - - return None diff --git a/pydotorg/management/__init__.py b/pydotorg/management/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/pydotorg/management/commands/__init__.py b/pydotorg/management/commands/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/pydotorg/management/commands/postdeploy.py b/pydotorg/management/commands/postdeploy.py deleted file mode 100644 index 17c518e31..000000000 --- a/pydotorg/management/commands/postdeploy.py +++ /dev/null @@ -1,14 +0,0 @@ -from django.core.management.base import BaseCommand -from django.conf import settings - -from fastly.utils import purge_surrogate_key - - -class Command(BaseCommand): - """ Do things after deployment is complete """ - - def handle(self, *args, **kwargs): - # If we have a STATIC_SURROGATE_KEY set, purge static files to ensure - # that anything cached mid-deploy is ignored (like 404s). - if settings.STATIC_SURROGATE_KEY: - purge_surrogate_key(settings.STATIC_SURROGATE_KEY) diff --git a/pydotorg/settings/base.py b/pydotorg/settings/base.py index 70ec472f9..2c392b355 100644 --- a/pydotorg/settings/base.py +++ b/pydotorg/settings/base.py @@ -285,10 +285,8 @@ MAILING_LIST_PSF_MEMBERS = "psf-members-announce-request@python.org" ### Fastly ### -FASTLY_SERVICE_ID = False # Set to a Fastly Service ID in production to allow - # purges by Surrogate-Key -FASTLY_API_KEY = False # Set to Fastly API key in production to allow - # pages to be purged on save +FASTLY_API_KEY = False # Set to Fastly API key in production to allow pages to + # be purged on save # Jobs JOB_THRESHOLD_DAYS = 90 @@ -351,10 +349,6 @@ GLOBAL_SURROGATE_KEY = 'pydotorg-app' -### pydotorg.settings.cabotage.add_surrogate_keys_to_static - -STATIC_SURROGATE_KEY = 'pydotorg-static' - ### PyCon Integration for Sponsor Voucher Codes PYCON_API_KEY = config("PYCON_API_KEY", default="deadbeef-dead-beef-dead-beefdeadbeef") PYCON_API_SECRET = config("PYCON_API_SECRET", default="deadbeef-dead-beef-dead-beefdeadbeef") diff --git a/pydotorg/settings/cabotage.py b/pydotorg/settings/cabotage.py index 2effbacf7..4661fbf66 100644 --- a/pydotorg/settings/cabotage.py +++ b/pydotorg/settings/cabotage.py @@ -53,11 +53,6 @@ }, } -def add_surrogate_keys_to_static(headers, path, url): - headers['Surrogate-Key'] = STATIC_SURROGATE_KEY - -WHITENOISE_ADD_HEADERS_FUNCTION = add_surrogate_keys_to_static - EMAIL_HOST = config('EMAIL_HOST') EMAIL_HOST_USER = config('EMAIL_HOST_USER') EMAIL_HOST_PASSWORD = config('EMAIL_HOST_PASSWORD') @@ -68,8 +63,7 @@ def add_surrogate_keys_to_static(headers, path, url): PEP_REPO_PATH = None PEP_ARTIFACT_URL = config('PEP_ARTIFACT_URL') -# Fastly -FASTLY_SERVICE_ID = config('FASTLY_SERVICE_ID') +# Fastly API Key FASTLY_API_KEY = config('FASTLY_API_KEY') SECURE_SSL_REDIRECT = True From 354631bd2525a12dea8c51b337ee028309e7cb7c Mon Sep 17 00:00:00 2001 From: Jacob Coffee <jacob@z7x.org> Date: Mon, 30 Sep 2024 14:21:05 -0500 Subject: [PATCH 175/256] feat(infra): do not cache static 404s (#2622) * feat(infra): do not cache static 404s * feat(infra): apply condition --- infra/cdn/main.tf | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/infra/cdn/main.tf b/infra/cdn/main.tf index e7aa77108..059fd8977 100644 --- a/infra/cdn/main.tf +++ b/infra/cdn/main.tf @@ -68,6 +68,14 @@ resource "fastly_service_vcl" "python_org" { ttl = 0 } + cache_setting { + action = "pass" + cache_condition = "Don't cache 404s for /static" + name = "No caching for /static 404s" + stale_ttl = 0 + ttl = 0 + } + condition { name = "Force Pass No-Cache No-Store" priority = 10 @@ -129,6 +137,13 @@ resource "fastly_service_vcl" "python_org" { type = "REQUEST" } + condition { + name = "Don't cache 404s for /static" + priority = 10 + statement = "req.url ~ \"^/static/\" && beresp.status == 404" + type = "CACHE" + } + gzip { name = "Default rules" content_types = [ From 2154a90fe7ac3fbda1ff4f8045179f0e33c28e5d Mon Sep 17 00:00:00 2001 From: Jacob Coffee <jacob@z7x.org> Date: Mon, 30 Sep 2024 15:24:38 -0500 Subject: [PATCH 176/256] docs: add details to CSS generation (#2623) * docs: add details to CSS generation * docs: no NBSP * docs: note automatic compiles --- docs/source/install.md | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/docs/source/install.md b/docs/source/install.md index c91d1bd59..55cf483fb 100644 --- a/docs/source/install.md +++ b/docs/source/install.md @@ -88,7 +88,7 @@ This is a simple wrapper around running `python manage.py` in the container, all Manual setup ------------ -First, install [PostgreSQL](https://www.postgresql.org/download/) on your machine and run it. *pythondotorg* currently uses Postgres 15.x. +First, install [PostgreSQL](https://www.postgresql.org/download/) on your machine and run it. *pythondotorg* currently uses Postgres 15.x. Then clone the repository: @@ -102,13 +102,13 @@ Then create a virtual environment: $ python3 -m venv venv ``` -And then you'll need to install dependencies. You don't need to use `pip3` inside a Python 3 virtual environment: +And then you'll need to install dependencies. You don't need to use `pip3` inside a Python 3 virtual environment: ``` $ pip install -r dev-requirements.txt ``` -*pythondotorg* will look for a PostgreSQL database named `pythondotorg` by default. Run the following command to create a new database: +*pythondotorg* will look for a PostgreSQL database named `pythondotorg` by default. Run the following command to create a new database: ``` $ createdb pythondotorg -E utf-8 -l en_US.UTF-8 @@ -121,7 +121,7 @@ If the above command fails to create a database and you see an error message sim createdb: database creation failed: ERROR: permission denied to create database ``` -Use the following command to create a database with *postgres* user as the owner: +Use the following command to create a database with *postgres* user as the owner: ``` $ sudo -u postgres createdb pythondotorg -E utf-8 -l en_US.UTF-8 @@ -135,10 +135,10 @@ If you get an error like this: createdb: database creation failed: ERROR: new collation (en_US.UTF-8) is incompatible with the collation of the template database (en_GB.UTF-8) ``` -Then you will have to change the value of the `-l` option to what your database was set up with initially. +Then you will have to change the value of the `-l` option to what your database was set up with initially. ```` -To change database configuration, you can add the following setting to `pydotorg/settings/local.py` (or you can use the `DATABASE_URL` environment variable): +To change database configuration, you can add the following setting to `pydotorg/settings/local.py` (or you can use the `DATABASE_URL` environment variable): ``` DATABASES = { @@ -146,14 +146,14 @@ DATABASES = { } ``` -If you prefer to use a simpler setup for your database you can use SQLite. Set the `DATABASE_URL` environment variable for the current terminal session: +If you prefer to use a simpler setup for your database you can use SQLite. Set the `DATABASE_URL` environment variable for the current terminal session: ``` $ export DATABASE_URL="sqlite:///pythondotorg.db" ``` ```{note} -If you prefer to set this variable in a more permanent way add the above line in your `.bashrc` file. Then it will be set for all terminal sessions in your system. +If you prefer to set this variable in a more permanent way add the above line in your `.bashrc` file. Then it will be set for all terminal sessions in your system. ``` Whichever database type you chose, now it's time to run migrations: @@ -162,7 +162,7 @@ Whichever database type you chose, now it's time to run migrations: $ ./manage.py migrate ``` -To compile and compress static media, you will need *compass* and *yui-compressor*: +To compile and compress static media, you will need *compass* and *yui-compressor*: ``` $ gem install bundler @@ -170,7 +170,7 @@ $ bundle install ``` ```{note} -To install *yui-compressor*, use your OS's package manager or download it directly then add the executable to your `PATH`. +To install *yui-compressor*, use your OS's package manager or download it directly then add the executable to your `PATH`. ``` To create initial data for the most used applications, run: @@ -179,7 +179,7 @@ To create initial data for the most used applications, run: $ ./manage.py create_initial_data ``` -See [create_initial_data](https://pythondotorg.readthedocs.io/commands.html#command-create-initial-data) for the command options to specify while creating initial data. +See `pythondotorg`[create_initial_data](https://pythondotorg.readthedocs.io/commands.html#command-create-initial-data) for the command options to specify while creating initial data. Finally, start the development server: @@ -190,19 +190,24 @@ $ ./manage.py runserver Optional: Install Elasticsearch ------------------------------- -The search feature in Python.org uses Elasticsearch engine. If you want to test out this feature, you will need to install [Elasticsearch](https://www.elastic.co/downloads/elasticsearch). +The search feature in Python.org uses Elasticsearch engine. If you want to test out this feature, you will need to install [Elasticsearch](https://www.elastic.co/downloads/elasticsearch). -Once you have it installed, update the URL value of `HAYSTACK_CONNECTIONS` settings in `pydotorg/settings/local.py` to your local ElasticSearch server. +Once you have it installed, update the URL value of `HAYSTACK_CONNECTIONS` settings in `pydotorg/settings/local.py` to your local ElasticSearch server. Generating CSS files automatically ---------------------------------- -Due to performance issues of [django-pipeline](https://github.com/jazzband/django-pipeline/issues/313), we are using a dummy compiler `pydotorg.compilers.DummySASSCompiler` in development mode. To generate CSS files, use `sass` itself in a separate terminal window: +```{warning} +When editing frontend styles, ensure you ONLY edit the `.scss` files. +These will then be compiled into `.css` files automatically. ``` -$ cd static -$ sass --compass --scss -I $(dirname $(dirname $(gem which susy))) --trace --watch sass/style.scss:sass/style.css -``` + +Static files are automatically compiled inside the [Docker Compose `static` container](../../docker-compose.yml) +when running `make serve`. + +When your pull request has stylesheet changes, commit the `.scss` files and the compiled `.css` files. +Otherwise, ignore committing and pushing the `.css` files. Running tests ------------- @@ -220,7 +225,7 @@ $ coverage run manage.py test $ coverage report ``` -Generate an HTML report with `coverage html` if you like. +Generate an HTML report with `coverage html` if you like. Useful commands --------------- From 020753a5fd194307a1f3aed1213d1690ab7909ae Mon Sep 17 00:00:00 2001 From: Jacob Coffee <jacob@z7x.org> Date: Mon, 30 Sep 2024 16:47:36 -0500 Subject: [PATCH 177/256] ci: add reminder to deploy TF cloud changes (#2625) * ci: add reminder to deploy TF cloud changes * ci: update checkout version * ci: fastly --- .github/workflows/deployminder.yml | 37 ++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/deployminder.yml diff --git a/.github/workflows/deployminder.yml b/.github/workflows/deployminder.yml new file mode 100644 index 000000000..04774f04f --- /dev/null +++ b/.github/workflows/deployminder.yml @@ -0,0 +1,37 @@ +name: Deploy Reminder + +on: + pull_request: + types: + - closed + branches: + - main + +jobs: + remind: + if: github.event.pull_request.merged == true + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Check for changes in infra/ + id: check_changes + run: | + git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | grep -q '^infra/' + echo "has_infra_changes=$?" >> $GITHUB_OUTPUT + + - name: Comment on PR + if: steps.check_changes.outputs.has_infra_changes == '0' + uses: actions/github-script@v7 + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: 'Changes detected in the `infra/` directory. Don\'t forget to apply these changes in Terraform Cloud and/or Fastly!' + }) From 672864d1b8c934ebf3f567d491ff2a25386ae296 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 09:50:50 -0500 Subject: [PATCH 178/256] chore(deps): bump sorl-thumbnail from 12.7.0 to 12.11.0 (#2608) Bumps [sorl-thumbnail](https://github.com/jazzband/sorl-thumbnail) from 12.7.0 to 12.11.0. - [Release notes](https://github.com/jazzband/sorl-thumbnail/releases) - [Changelog](https://github.com/jazzband/sorl-thumbnail/blob/master/CHANGES.rst) - [Commits](https://github.com/jazzband/sorl-thumbnail/compare/12.7.0...12.11.0) --- updated-dependencies: - dependency-name: sorl-thumbnail dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index 4877f78c3..200f620b7 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -47,7 +47,7 @@ django-widget-tweaks==1.5.0 django-countries==7.2.1 num2words==0.5.13 django-polymorphic==3.1.0 # 3.1.0 is first version that supports Django 4.0, unsure if it fully supports 4.2 -sorl-thumbnail==12.7.0 +sorl-thumbnail==12.11.0 django-extensions==3.1.4 django-import-export==2.7.1 From 1bfeace44973dff8310f695ca15b40c277047cc7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 11:01:36 -0500 Subject: [PATCH 179/256] Bump django-extensions from 3.1.4 to 3.2.3 (#2564) Bumps [django-extensions](https://github.com/django-extensions/django-extensions) from 3.1.4 to 3.2.3. - [Release notes](https://github.com/django-extensions/django-extensions/releases) - [Changelog](https://github.com/django-extensions/django-extensions/blob/main/CHANGELOG.md) - [Commits](https://github.com/django-extensions/django-extensions/compare/3.1.4...3.2.3) --- updated-dependencies: - dependency-name: django-extensions dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index 200f620b7..35b62e126 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -48,7 +48,7 @@ django-countries==7.2.1 num2words==0.5.13 django-polymorphic==3.1.0 # 3.1.0 is first version that supports Django 4.0, unsure if it fully supports 4.2 sorl-thumbnail==12.11.0 -django-extensions==3.1.4 +django-extensions==3.2.3 django-import-export==2.7.1 pypandoc==1.12 From 46fbea644ebf73fc0aa38028690698a4a48a75a0 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Thu, 3 Oct 2024 17:01:05 +0300 Subject: [PATCH 180/256] fix(downloads): remove major version from /downloads/feed.rss (#2630) --- downloads/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/downloads/views.py b/downloads/views.py index 6a7f9d95e..2e48cb2f3 100644 --- a/downloads/views.py +++ b/downloads/views.py @@ -182,8 +182,8 @@ def item_title(self, item: Release) -> str: return item.name def item_description(self, item: Release) -> str: - """Return the release version and release date as the item description.""" - return f"Version: {item.version}, Release Date: {item.release_date}" + """Return the release date as the item description.""" + return f"Release date: {item.release_date}" def item_pubdate(self, item: Release) -> datetime | None: """Return the release date as the item publication date.""" From ae76ce1104685aff13136cd99289195434ead7ab Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Fri, 4 Oct 2024 12:30:30 -0400 Subject: [PATCH 181/256] update link to new privacy notice (#2633) --- templates/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/base.html b/templates/base.html index a1cfba788..0091c41b0 100644 --- a/templates/base.html +++ b/templates/base.html @@ -335,7 +335,7 @@ <h1 class="site-headline"> <span class="pre">Copyright ©2001-{% now 'Y' %}.</span>  <span class="pre"><a href="/psf-landing/">Python Software Foundation</a></span>  <span class="pre"><a href="/about/legal/">Legal Statements</a></span> -  <span class="pre"><a href="/privacy/">Privacy Policy</a></span> +  <span class="pre"><a href="https://policies.python.org/python.org/Privacy-Notice/">Privacy Notice</a></span> <!-- <span class="pre"><a href="/psf/community-infrastructure">Powered by PSF Community Infrastructure</a></span>--> </small></p> </div> From ab7779fb41ef5783922687c4cee808c96f985251 Mon Sep 17 00:00:00 2001 From: Jacob Coffee <jacob@z7x.org> Date: Mon, 7 Oct 2024 14:21:05 -0500 Subject: [PATCH 182/256] feat: add shorthand link for downloads/latest/ (#2570) --- downloads/urls.py | 1 + 1 file changed, 1 insertion(+) diff --git a/downloads/urls.py b/downloads/urls.py index f553caeaa..eddef7a10 100644 --- a/downloads/urls.py +++ b/downloads/urls.py @@ -5,6 +5,7 @@ urlpatterns = [ re_path(r'latest/python2/?$', views.DownloadLatestPython2.as_view(), name='download_latest_python2'), re_path(r'latest/python3/?$', views.DownloadLatestPython3.as_view(), name='download_latest_python3'), + re_path(r'latest/?$', views.DownloadLatestPython3.as_view(), name='download_latest_python3'), path('operating-systems/', views.DownloadFullOSList.as_view(), name='download_full_os_list'), path('release/<slug:release_slug>/', views.DownloadReleaseDetail.as_view(), name='download_release_detail'), path('<slug:slug>/', views.DownloadOSList.as_view(), name='download_os_list'), From 64b737ed539cde0e1eef713cc9d5bf8cb5159b53 Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Mon, 7 Oct 2024 15:24:07 -0400 Subject: [PATCH 183/256] fix: Ensure that Box content is rendered after update (#2638) This resolves the underlying problem from #2631. When updated via Django's [`update_or_create`](https://docs.djangoproject.com/en/4.2/ref/models/querysets/#update-or-create), the new `content` for a `Box` is not rendered by django-markupfield's [`pre_save`](https://github.com/jamesturk/django-markupfield/blob/2.0.1/markupfield/fields.py#L163-L179) method unless `save()` is called. This is due to the fact that [`update`](https://docs.djangoproject.com/en/4.2/ref/models/querysets/#django.db.models.query.QuerySet.update) bypasses calls to `save`, `pre_save`, and `post_save`, from the docs: > Finally, realize that update() does an update at the SQL level and, thus, does not call any save() methods on your models, nor does it emit the pre_save or post_save signals (which are a consequence of calling Model.save()) --- blogs/parser.py | 4 +++- downloads/models.py | 12 +++++++++--- successstories/models.py | 4 +++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/blogs/parser.py b/blogs/parser.py index fd5e4b54d..55cf693b8 100644 --- a/blogs/parser.py +++ b/blogs/parser.py @@ -48,10 +48,12 @@ def update_blog_supernav(): pass else: rendered_box = _render_blog_supernav(latest_entry) - box, _ = Box.objects.update_or_create( + box, created = Box.objects.update_or_create( label='supernav-python-blog', defaults={ 'content': rendered_box, 'content_markup_type': 'html', } ) + if not created: + box.save() diff --git a/downloads/models.py b/downloads/models.py index 4576afb2f..415804b6e 100644 --- a/downloads/models.py +++ b/downloads/models.py @@ -179,13 +179,15 @@ def update_supernav(): 'last_updated': timezone.now(), }) - box, _ = Box.objects.update_or_create( + box, created = Box.objects.update_or_create( label='supernav-python-downloads', defaults={ 'content': content, 'content_markup_type': 'html', } ) + if not created: + box.save() def update_download_landing_sources_box(): @@ -208,13 +210,15 @@ def update_download_landing_sources_box(): return source_content = render_to_string('downloads/download-sources-box.html', context) - source_box, _ = Box.objects.update_or_create( + source_box, created = Box.objects.update_or_create( label='download-sources', defaults={ 'content': source_content, 'content_markup_type': 'html', } ) + if not created: + source_box.save() def update_homepage_download_box(): @@ -234,13 +238,15 @@ def update_homepage_download_box(): content = render_to_string('downloads/homepage-downloads-box.html', context) - box, _ = Box.objects.update_or_create( + box, created = Box.objects.update_or_create( label='homepage-downloads', defaults={ 'content': content, 'content_markup_type': 'html', } ) + if not created: + box.save() @receiver(post_save, sender=Release) diff --git a/successstories/models.py b/successstories/models.py index e5345b435..cb3fd7418 100644 --- a/successstories/models.py +++ b/successstories/models.py @@ -102,13 +102,15 @@ def update_successstories_supernav(sender, instance, created, **kwargs): 'story': instance, }) - box, _ = Box.objects.update_or_create( + box, created = Box.objects.update_or_create( label='supernav-python-success-stories', defaults={ 'content': content, 'content_markup_type': 'html', } ) + if not created: + box.save() # Purge Fastly cache purge_url('/box/supernav-python-success-stories/') From 102fee612fd1ba57c052cc79810bafa82fbdf400 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 14:38:14 -0500 Subject: [PATCH 184/256] chore(deps): bump gunicorn from 22.0.0 to 23.0.0 (#2628) Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 22.0.0 to 23.0.0. - [Release notes](https://github.com/benoitc/gunicorn/releases) - [Commits](https://github.com/benoitc/gunicorn/compare/22.0.0...23.0.0) --- updated-dependencies: - dependency-name: gunicorn dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- prod-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prod-requirements.txt b/prod-requirements.txt index cdc543952..72bf30dcd 100644 --- a/prod-requirements.txt +++ b/prod-requirements.txt @@ -1,4 +1,4 @@ -gunicorn==22.0.0 +gunicorn==23.0.0 raven==6.10.0 From 3ad7b968370279f284952ab09de0a12708505afd Mon Sep 17 00:00:00 2001 From: Jacob Coffee <jacob@z7x.org> Date: Tue, 8 Oct 2024 15:28:50 -0500 Subject: [PATCH 185/256] fix: links are direct to asset (#2593) * fix: links are direct to assett Closes: #2577 * test: add them * chore: remove unused imports --- static/sass/style.css | 125 ++++++++++--- static/sass/style.scss | 166 +++++++++++++++-- templates/users/base.html | 3 +- templates/users/sponsorship_detail.html | 226 +++++++++++------------- users/tests/test_views.py | 33 +++- users/views.py | 1 + 6 files changed, 393 insertions(+), 161 deletions(-) diff --git a/static/sass/style.css b/static/sass/style.css index c3af6444f..09c849482 100644 --- a/static/sass/style.css +++ b/static/sass/style.css @@ -2350,7 +2350,7 @@ table tfoot { /* ! ===== Success Stories landing page ===== */ .featured-success-story { padding: 1.3125em 0; - background: center -230px no-repeat url('../img/success-glow2.png?1646853871') transparent; + background: center -230px no-repeat url('../img/success-glow2.png?1726783859') transparent; /*blockquote*/ } .featured-success-story img { padding: 10px 30px; } @@ -3354,11 +3354,11 @@ span.highlighted { .python .site-headline a:before { width: 290px; height: 82px; - content: url('../img/python-logo_print.png?1646853871'); } + content: url('../img/python-logo_print.png?1726783859'); } .psf .site-headline a:before { width: 334px; height: 82px; - content: url('../img/psf-logo_print.png?1646853871'); } } + content: url('../img/psf-logo_print.png?1726783859'); } } /* * When we want to review the markup for W3 and similar errors, turn some of these on * Uses :not selectors a bunch, so only modern browsers will support them @@ -3979,25 +3979,106 @@ span.highlighted { .hidden { display: none; } -#sponsorship-detail-container .info-cards { - display: flex; - width: 100%; - align-content: center; - flex-wrap: wrap; } -#sponsorship-detail-container .card { - flex: 1 0 48%; } -#sponsorship-detail-container .card-info { - margin: .5em .5em; - padding: 1em 1em; - border: 1px solid #caccce; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - -ms-border-radius: 6px; - -o-border-radius: 6px; - border-radius: 6px; - background: #e6e8ea; } - #sponsorship-detail-container .card-info h3 { - margin: 0; } +#sponsorship-detail-container { + max-width: 1200px; + margin: 0 auto; + padding: 2rem; } + #sponsorship-detail-container .info-cards { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1.5rem; } + @media (max-width: 768px) { + #sponsorship-detail-container .info-cards { + grid-template-columns: 1fr; } } + #sponsorship-detail-container .card { + background-color: #fff; + border-radius: 8px; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); + padding: 0.75rem; } + #sponsorship-detail-container .card h3 { + margin-top: 0; + margin-bottom: 1rem; } + #sponsorship-detail-container .card ul li { + margin-bottom: 0.5rem; } + #sponsorship-detail-container .wide-column { + grid-column: 1 / -1; } + #sponsorship-detail-container .assets-list { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 1rem; + margin-top: 1rem; } + #sponsorship-detail-container .asset-item { + background-color: #f8f9fa; + border: 1px solid #e9ecef; + border-radius: 6px; + padding: 1rem; } + #sponsorship-detail-container .asset-item h4 { + margin-top: 0; + margin-bottom: 0.5rem; + font-size: 1rem; } + #sponsorship-detail-container .asset-item p { + margin-bottom: 0.75rem; + font-size: 0.9rem; } + #sponsorship-detail-container .asset-item.incomplete { + border-left: 3px solid #dc3545; } + #sponsorship-detail-container .asset-item.fulfilled { + border-left: 3px solid #28a745; } + #sponsorship-detail-container .due-date { + font-weight: bold; + color: #dc3545; } + #sponsorship-detail-container .btn { + display: inline-block; + padding: 0.375rem 0.75rem; + font-size: 0.9rem; + text-align: center; + text-decoration: none; + border-radius: 4px; + transition: background-color 0.2s ease; } + #sponsorship-detail-container .btn-link { + color: #007bff; } + #sponsorship-detail-container .edit-all-assets { + margin-top: 1.5rem; + text-align: right; } + #sponsorship-detail-container .benefits-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 1rem; + margin-top: 1rem; } + #sponsorship-detail-container .benefit-item { + display: flex; + flex-direction: column; + background-color: #ffffff; + border: 1px solid #e9ecef; + border-radius: 4px; + padding: 0.75rem; + transition: background-color 0.2s ease; } + #sponsorship-detail-container .benefit-item:hover { + background-color: #f8f9fa; } + #sponsorship-detail-container .benefit-content { + flex-grow: 1; } + #sponsorship-detail-container .benefit-name { + display: block; + font-weight: 500; + font-size: 0.9rem; + line-height: 1.2; + margin-bottom: 0.25rem; } + #sponsorship-detail-container .benefit-description { + color: #6c757d; + cursor: help; + font-size: 0.8rem; } + #sponsorship-detail-container .benefit-category { + display: inline-block; + background-color: #e9ecef; + color: #495057; + font-size: 0.75rem; + padding: 0.25rem 0.5rem; + border-radius: 4px; + margin-top: 0.5rem; } + @media (max-width: 768px) { + #sponsorship-detail-container .info-cards { + grid-template-columns: 1fr; } + #sponsorship-detail-container .assets-list { + grid-template-columns: 1fr; } } #update-sponsorship-assets input { padding: 0.25em; diff --git a/static/sass/style.scss b/static/sass/style.scss index 4fd9a3efd..cb78d9a4d 100644 --- a/static/sass/style.scss +++ b/static/sass/style.scss @@ -2943,28 +2943,158 @@ $breakpoint-desktop: 1200px; #sponsorship-detail-container { - .info-cards { - display: flex; - width: 100%; - align-content: center; - flex-wrap: wrap; - } + max-width: 1200px; + margin: 0 auto; + padding: 2rem; - .card { - flex: 1 0 48%; - } + .info-cards { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1.5rem; + } - .card-info { - margin: .5em .5em; - padding: 1em 1em; - border: 1px solid $default-border-color; - @include border-radius(); - background: $grey-lightest; + @media (max-width: 768px) { + .info-cards { + grid-template-columns: 1fr; + } + } - h3 { - margin: 0; + + .card { + background-color: #fff; + border-radius: 8px; + box-shadow: 0 2px 10px rgba(0,0,0,0.1); + padding: 0.75rem; + } + + .card h3 { + margin-top: 0; + margin-bottom: 1rem; + } + + .card ul li { + margin-bottom: 0.5rem; + } + + .wide-column { + grid-column: 1 / -1; + } + + .assets-list { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 1rem; + margin-top: 1rem; + } + + .asset-item { + background-color: #f8f9fa; + border: 1px solid #e9ecef; + border-radius: 6px; + padding: 1rem; + } + + .asset-item h4 { + margin-top: 0; + margin-bottom: 0.5rem; + font-size: 1rem; + } + + .asset-item p { + margin-bottom: 0.75rem; + font-size: 0.9rem; + } + + .asset-item.incomplete { + border-left: 3px solid #dc3545; + } + + .asset-item.fulfilled { + border-left: 3px solid #28a745; + } + + .due-date { + font-weight: bold; + color: #dc3545; + } + + .btn { + display: inline-block; + padding: 0.375rem 0.75rem; + font-size: 0.9rem; + text-align: center; + text-decoration: none; + border-radius: 4px; + transition: background-color 0.2s ease; + } + + .btn-link { + color: #007bff; + } + + .edit-all-assets { + margin-top: 1.5rem; + text-align: right; + } + + .benefits-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 1rem; + margin-top: 1rem; + } + + .benefit-item { + display: flex; + flex-direction: column; + background-color: #ffffff; + border: 1px solid #e9ecef; + border-radius: 4px; + padding: 0.75rem; + transition: background-color 0.2s ease; + } + + .benefit-item:hover { + background-color: #f8f9fa; + } + + .benefit-content { + flex-grow: 1; + } + + .benefit-name { + display: block; + font-weight: 500; + font-size: 0.9rem; + line-height: 1.2; + margin-bottom: 0.25rem; + } + + .benefit-description { + color: #6c757d; + cursor: help; + font-size: 0.8rem; + } + + .benefit-category { + display: inline-block; + background-color: #e9ecef; + color: #495057; + font-size: 0.75rem; + padding: 0.25rem 0.5rem; + border-radius: 4px; + margin-top: 0.5rem; + } + + @media (max-width: 768px) { + .info-cards { + grid-template-columns: 1fr; + } + + .assets-list { + grid-template-columns: 1fr; + } } - } } #update-sponsorship-assets { diff --git a/templates/users/base.html b/templates/users/base.html index f4e217675..5c11bb471 100644 --- a/templates/users/base.html +++ b/templates/users/base.html @@ -10,7 +10,8 @@ {% endblock %} -{% block content_attributes %}with-right-sidebar{% endblock %} +{# This added an unnecessarily large gap on every user/ page. #} +{#{% block content_attributes %}with-right-sidebar{% endblock %}#} {% block content %} diff --git a/templates/users/sponsorship_detail.html b/templates/users/sponsorship_detail.html index 447b4245c..a2d587d89 100644 --- a/templates/users/sponsorship_detail.html +++ b/templates/users/sponsorship_detail.html @@ -2,11 +2,11 @@ {% load humanize pipeline %} {% block head %} - {% stylesheet 'font-awesome' %} + {% stylesheet 'font-awesome' %} {% endblock %} {% block page_title %} - {{ sponsorship.sponsor.name }} Sponsorship Application | {{ SITE_INFO.site_name }} + {{ sponsorship.sponsor.name }} Sponsorship Application | {{ SITE_INFO.site_name }} {% endblock %} {% block body_attributes %}class="psf signup default-page"{% endblock %} @@ -15,131 +15,119 @@ {% block main-nav_attributes %}psf-navigation{% endblock %} {% block user_content %} - <div id="sponsorship-detail-container"> - <h1>{{ sponsorship.sponsor.name }} Sponsorship Application</h1> + <div id="sponsorship-detail-container"> + <h1>{{ sponsorship.sponsor.name }} Sponsorship Application</h1> - <div class="info-cards"> + <div class="info-cards"> + <div id="sponsor-info" class="card small-column"> + <h3>Sponsor: {{ sponsor.name }}</h3> + <ul> + <li><b>URL:</b> <a href="{{ sponsor.landing_page_url }}" target="_blank">landing page</a></li> + <li><b>Description:</b> {{ sponsor.description }}</li> + <li><b>Twitter:</b> {{ sponsor.twitter_handle }}</li> + <li><b>Phone:</b> {{ sponsor.primary_phone }}</li> + <li><b>Mailing Address:</b> + {{ sponsor.mailing_address_line_1 }}{% if sponsor.mailing_address_line_2 %} - + {{ sponsor.mailing_address_line_2 }}{% endif %}</li> + <li><b>City:</b> {{ sponsor.city }}</li> + <li><b>State:</b> {{ sponsor.state }}</li> + <li><b>Country:</b> {{ sponsor.country }}</li> + </ul> + <small><a href="{% url 'users:edit_sponsor_info' sponsorship.sponsor.pk %}">Edit sponsor information</a></small> + </div> - <div class="card"> - <div id="sponsor-info" class="card-info"> - <h3>Sponsor: {{ sponsor.name }}</h3> - <ul> - <li> - <b>URL:</b> <a href="{{ sponsor.landing_page_url }}" target="_blank">landing page</a> - </li> - <li> - <b>Description:</b> {{ sponsor.description }} - </li> - <li> - <b>Twitter:</b> {{ sponsor.twitter_handle }} - </li> - <li> - <b>Phone:</b> {{ sponsor.primary_phone }} - </li> - <li> - <b>Mailing Address:</b> {{ sponsor.mailing_address_line_1 }}{% if sponsor.mailing_address_line_2 %} - {{ sponsor.mailing_address_line_2 }}{% endif %} - </li> - <li> - <b>City:</b> {{ sponsor.city }} - </li> - <li> - <b>State:</b> {{ sponsor.state }} - </li> - <li> - <b>Country:</b> {{ sponsor.country }} - </li> - </ul> - <br/> - <small><a href="{% url 'users:edit_sponsor_info' sponsorship.sponsor.pk %}">Click here</a> if you want to edit sponsor information.</small> - </div> + <div id="application-info" class="card small-column"> + <h3>Application Data</h3> + <ul> + <li><b>Status:</b> {{ sponsorship.get_status_display }}</li> + <li><b>Application date:</b> {{ sponsorship.applied_on|default_if_none:"---" }}</li> + <li><b>Approval date:</b> {{ sponsorship.approved_on|default_if_none:"---" }}</li> + <li><b>Start date:</b> {{ sponsorship.start_date|default_if_none:"---" }}</li> + <li><b>End date:</b> {{ sponsorship.end_date|default_if_none:"---" }}</li> + {% if sponsorship.finalized_on %} + <li><b>Finalized date:</b> {{ sponsorship.finalized_on }}</li> + {% endif %} + <li><b>Level:</b> {{ sponsorship.level_name }}</li> + <li><b>Agreed sponsorship fee:</b> {% if sponsorship.agreed_fee %}$ + {{ sponsorship.agreed_fee|intcomma }}{% else %}To be determined{% endif %}</li> + </ul> + </div> - <div id="application-info" class="card-info"> - <h3>Application Data</h3> - <ul> - <li> - <b>Status:</b> {{ sponsorship.get_status_display }} - </li> - <li> - <b>Application date:</b> {{ sponsorship.applied_on|default_if_none:"---" }} - </li> - <li> - <b>Approval date:</b> {{ sponsorship.approved_on|default_if_none:"---" }} - </li> - <li> - <b>Start date:</b> {{ sponsorship.start_date|default_if_none:"---" }} - </li> - <li> - <b>End date:</b> {{ sponsorship.end_date|default_if_none:"---" }} - </li> - {% if sponsorship.finalized_on %} - <li> - <b>Finalized date:</b> {{ sponsorship.finalized_on }} - </li> + {% if provided_assets %} + <div id="provided-assets-info" class="card wide-column"> + <h3>Provided Assets</h3> + <p><small>Assets from the PSF related to your sponsorship.</small></p> + <ul> + {% for asset in provided_assets %} + <p><b>{{ asset.sponsor_benefit }}</b> benefit provides you with {{ asset.label }}:</p> + {% if asset.polymorphic_ctype.name == "Provided Text" %} + <pre>{{ asset.value|urlize }}</pre> + {% elif asset.polymorphic_ctype.name == "Provided File" %} + <a href="{{ asset.value.url }}">View File</a> + {% else %} + {{ asset.value }} + {% endif %} + <small>{{ asset.help_text }}</small> + <br><br> + {% endfor %} + </ul> + <small><a href="{% url 'users:view_provided_sponsorship_assets' sponsorship.pk %}">View all + assets</a></small> + </div> {% endif %} - <li> - <b>Level:</b> {{ sponsorship.level_name }} - </li> - <li> - <b>Agreed sponsorship fee:</b> {% if sponsorship.agreed_fee %}${{ sponsorship.agreed_fee|intcomma }}{% else %} - To - be determined{% endif %} - </li> - </ul> - </div> - - </div> - - <div id="sponsorship-info" class="card"> - {% if required_assets or fulfilled_assets %} - <div id="assets-info" class="card-info"> - <h3>Required Assets</h3> - <p><small>You've selected benefits which requires extra assets (logos, slides etc) in order to be fulfilled.</small></p> - <br/> - <ul> - {% for asset in required_assets %} - <li><b>{{ asset.label }}</b><br>Incomplete{% if asset.due_date %} <b>Required by {{ asset.due_date }}</b>{% endif %}: <a href="{{ asset.user_edit_url }}">Add asset</a>.</li> - {% endfor %} - {% for asset in fulfilled_assets %} - <li><b>{{ asset.label }}</b><br>Fulfilled: <a href="{{ asset.user_edit_url }}">Edit asset</a>.</li> - {% endfor %} - </ul> - <br/> - <small>Or you can also <a href="{% url 'users:update_sponsorship_assets' sponsorship.pk %}">click here</a> to edit all the assets under the same page.</small> - </div> - {% endif %} - {% if provided_assets %} - <div id="provided-assets-info" class="card-info"> - <h3>Provided Assets</h3> - <p><small>Assets from the PSF related to your sponsorship.</small></p> - <br/> - <ul> - {% for asset in provided_assets %} - <li><b>{{ asset.label }}</b>: <a href="{{ asset.user_view_url }}">View asset</a>.</li> - {% endfor %} - </ul> - <br/> - <small>Or you can also <a href="{% url 'users:view_provided_sponsorship_assets' sponsorship.pk %}">click here</a> to view all the assets under the same page.</small> - </div> - {% endif %} + {% if required_assets or fulfilled_assets %} + <div id="assets-info" class="card wide-column"> + <h3>Required Assets</h3> + <p><small>You've selected benefits which require extra assets (logos, slides etc) in order to be + fulfilled.</small></p> + <div class="assets-list"> + {% for asset in required_assets %} + <div class="asset-item incomplete"> + <h4>{{ asset.label }}</h4> + <p>Incomplete{% if asset.due_date %} - + <span class="due-date">Required by {{ asset.due_date }}</span>{% endif %}</p> + <a href="{{ asset.user_edit_url }}" class="btn btn-link btn-sm">Add asset</a> + </div> + {% endfor %} + {% for asset in fulfilled_assets %} + <div class="asset-item fulfilled"> + <h4>{{ asset.label }}</h4> + <p>Fulfilled</p> + <a href="{{ asset.user_edit_url }}" class="btn btn-link btn-sm">Edit asset</a> + </div> + {% endfor %} + </div> + <div class="edit-all-assets"> + <a href="{% url 'users:update_sponsorship_assets' sponsorship.pk %}" class="btn btn-link">Edit + all assets</a> + </div> + </div> + {% endif %} - <div class="card-info"> - <h3>Sponsorship Benefits</h3> - <ul style="list-style-type:none; margin-left: 0.5em"> - {% for benefit in sponsorship.benefits.all %} - <li> - {% if benefit.description %}<i class="fa fa-info" title="{{ benefit.description }}"></i> - - {% endif %} {{ benefit.name_for_display }} - </li> - {% endfor %} - </ul> + <div class="card wide-column"> + <h3>Sponsorship Benefits</h3> + <div class="benefits-grid"> + {% for benefit in sponsorship.benefits.all %} + <div class="benefit-item"> + <div class="benefit-content"> + <span class="benefit-name">{{ benefit.name_for_display }}</span> + {% if benefit.description %} + <span class="benefit-description" title="{{ benefit.description }}"> + <i class="fa fa-info-circle"></i> + </span> + {% endif %} + <span class="benefit-category">{{ benefit.program.name }}</span> + </div> + </div> + {% endfor %} + </div> + </div> </div> - </div> </div> - </div> {% endblock %} {% block javascript %} - {{ block.super }} - {% javascript 'sponsors' %} -{% endblock %} + {{ block.super }} + {% javascript 'sponsors' %} +{% endblock %} \ No newline at end of file diff --git a/users/tests/test_views.py b/users/tests/test_views.py index 83b8330f9..28fc649ca 100644 --- a/users/tests/test_views.py +++ b/users/tests/test_views.py @@ -1,8 +1,9 @@ +from django.core.files.uploadedfile import SimpleUploadedFile from model_bakery import baker from django.conf import settings from django.contrib.auth import get_user_model from django.urls import reverse -from django.test import TestCase, override_settings +from django.test import TestCase from sponsors.forms import SponsorUpdateForm, SponsorRequiredAssetsForm from sponsors.models import Sponsorship, RequiredTextAssetConfiguration, SponsorBenefit @@ -448,6 +449,36 @@ def test_fulfilled_assets(self): self.assertEqual(1, len(context["fulfilled_assets"])) self.assertIn(asset, context["fulfilled_assets"]) + def test_asset_links_are_direct(self) -> None: + """Ensure that assets listed under 'Provided Assets' in `/users/sponsorships/#/` are directly accessible.""" + # Create a sponsorship with a provided file asset + cfg = baker.make( + "sponsors.ProvidedFileAssetConfiguration", + internal_name="test_provided_file_asset", + related_to="sponsorship", + ) + benefit = baker.make("sponsors.SponsorBenefit",sponsorship=self.sponsorship) + asset = cfg.create_benefit_feature(benefit) + file_content = b"This is a test file." + test_file = SimpleUploadedFile( + "test_file.pdf", + file_content, + content_type="application/pdf" + ) + asset.value = test_file + asset.save() + + # Then we can read the page + response = self.client.get(self.url) + content = response.content.decode("utf-8") + expected_asset_link = f'href="{asset.value.url}"' + + # and finally check that the asset link is ACTUALLY pointing to the asset and not the list view page + self.assertIn("View File", content, "View file text not found.") + self.assertIn(expected_asset_link, content, "Asset link not found in the page.") + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, "users/sponsorship_detail.html") + class UpdateSponsorInfoViewTests(TestCase): diff --git a/users/views.py b/users/views.py index 23140853e..f73172296 100644 --- a/users/views.py +++ b/users/views.py @@ -324,6 +324,7 @@ def form_valid(self, form): @method_decorator(login_required(login_url=settings.LOGIN_URL), name="dispatch") class ProvidedSponsorshipAssetsView(DetailView): + """TODO: Deprecate this view now that everything lives in the SponsorshipDetailView""" object_name = "sponsorship" template_name = 'users/sponsorship_assets_view.html' From 452480d1b3a496e74d594a6614acb88620f85548 Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Thu, 7 Nov 2024 12:33:44 -0500 Subject: [PATCH 186/256] disable logging to datadog by default (#2653) * disable logging to datadog by default When the logging_datadog section was added in #2519, there was no logging condition applied leading to all requests being logged to datadog. this adds a "False" condition so that logs are only emitted from the rate limiter * rename response condition for clarity --- infra/cdn/main.tf | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/infra/cdn/main.tf b/infra/cdn/main.tf index 059fd8977..91cac411e 100644 --- a/infra/cdn/main.tf +++ b/infra/cdn/main.tf @@ -136,6 +136,12 @@ resource "fastly_service_vcl" "python_org" { statement = "req.http.host == \"python.org\"" type = "REQUEST" } + condition { + name = "Always False" + priority = 10 + statement = "false" + type = "RESPONSE" + } condition { name = "Don't cache 404s for /static" @@ -262,9 +268,10 @@ resource "fastly_service_vcl" "python_org" { } logging_datadog { - name = "ratelimit-debug" - token = var.datadog_key - region = "US" + name = "ratelimit-debug" + token = var.datadog_key + region = "US" + response_condition = "Always False" } logging_s3 { @@ -361,7 +368,7 @@ resource "fastly_service_vcl" "python_org" { dynamic "dictionary" { for_each = var.activate_ngwaf_service ? [1] : [] content { - name = var.edge_security_dictionary + name = var.edge_security_dictionary force_destroy = true } } From bc51c6003f6e1b2811a782410777cdff64c8c7cf Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Fri, 15 Nov 2024 17:07:58 +0200 Subject: [PATCH 187/256] Hide GPG column if no GPG signatures in release (#2656) --- downloads/templatetags/download_tags.py | 5 +++++ templates/downloads/release_detail.html | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/downloads/templatetags/download_tags.py b/downloads/templatetags/download_tags.py index c72f6d58c..f61f25ada 100644 --- a/downloads/templatetags/download_tags.py +++ b/downloads/templatetags/download_tags.py @@ -8,6 +8,11 @@ def strip_minor_version(version): return '.'.join(version.split('.')[:2]) +@register.filter +def has_gpg(files: list) -> bool: + return any(f.gpg_signature_file for f in files) + + @register.filter def has_sigstore_materials(files): return any( diff --git a/templates/downloads/release_detail.html b/templates/downloads/release_detail.html index 720887074..0ddcde32a 100644 --- a/templates/downloads/release_detail.html +++ b/templates/downloads/release_detail.html @@ -1,6 +1,7 @@ {% extends "base.html" %} {% load boxes %} {% load sitetree %} +{% load has_gpg from download_tags %} {% load has_sigstore_materials from download_tags %} {% load has_sbom from download_tags %} {% load sort_windows from download_tags %} @@ -51,7 +52,9 @@ <h1 class="page-title">Files</h1> <th>Description</th> <th>MD5 Sum</th> <th>File Size</th> + {% if release_files|has_gpg %} <th>GPG</th> + {% endif %} {% if release_files|has_sigstore_materials %} <th colspan="2"><a href="https://www.python.org/download/sigstore/">Sigstore</a></th> {% endif %} @@ -68,7 +71,9 @@ <h1 class="page-title">Files</h1> <td>{{ f.description }}</td> <td>{{ f.md5_sum }}</td> <td>{{ f.filesize|filesizeformat }}</td> + {% if release_files|has_gpg %} <td>{% if f.gpg_signature_file %}<a href="{{ f.gpg_signature_file }}">SIG</a>{% endif %}</td> + {% endif %} {% if release_files|has_sigstore_materials %} {% if f.sigstore_bundle_file %} <td colspan="2">{% if f.sigstore_bundle_file %}<a href="{{ f.sigstore_bundle_file}}">.sigstore</a>{% endif %}</td> From f625b90d04f0015c4c908aeee8228f31635f1aac Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Thu, 21 Nov 2024 14:28:43 -0500 Subject: [PATCH 188/256] Update sponsorship-agreement.md (#2660) --- templates/sponsors/admin/contracts/sponsorship-agreement.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/sponsors/admin/contracts/sponsorship-agreement.md b/templates/sponsors/admin/contracts/sponsorship-agreement.md index f1e2f2e9f..73540dbab 100644 --- a/templates/sponsors/admin/contracts/sponsorship-agreement.md +++ b/templates/sponsors/admin/contracts/sponsorship-agreement.md @@ -33,9 +33,9 @@ and international community of Python programmers (the **"Programs"**); and the PSF previously entered into a Sponsorship Agreement with the effective date of the {{ previous_effective|date:"j" }}{{ previous_effective_english_suffix }} of {{ previous_effective|date:"F Y" }} - -**WHEREAS**, Sponsor wishes to renew its support the Programs by making a contribution to the PSF. and a term of one year (the “Sponsorship Agreementâ€). + +**WHEREAS**, Sponsor wishes to renew its support of the Programs by making a contribution to the PSF. {% else %} wishes to support the Programs by making a contribution to the PSF. {% endif %} From c68d9e4a1a8d954ac3b01f79f08a570a4bc1a5b8 Mon Sep 17 00:00:00 2001 From: Nice Zombies <nineteendo19d0@gmail.com> Date: Wed, 27 Nov 2024 13:39:16 +0100 Subject: [PATCH 189/256] Replace `pyton.org` with `python.org` (#2666) --- .github/ISSUE_TEMPLATE/BUG.yml | 4 ++-- .github/ISSUE_TEMPLATE/DOCS.yml | 2 +- .github/ISSUE_TEMPLATE/REQUEST.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml index 9adc2b03a..f75b4a61c 100644 --- a/.github/ISSUE_TEMPLATE/BUG.yml +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -1,5 +1,5 @@ name: "Bug Report" -description: Report a bug with pyton.org website to help us improve +description: Report a bug with python.org website to help us improve title: "Bug: <title>" labels: ["bug", "Triage Required"] @@ -7,7 +7,7 @@ body: - type: markdown attributes: value: | - This is the repository and issue tracker for the https://www.pyton.org website. + This is the repository and issue tracker for the https://www.python.org website. If you're looking to file an issue with CPython itself, please click here: [CPython Issues](https://github.com/python/cpython/issues/new/choose). diff --git a/.github/ISSUE_TEMPLATE/DOCS.yml b/.github/ISSUE_TEMPLATE/DOCS.yml index df7a2c231..2f216878a 100644 --- a/.github/ISSUE_TEMPLATE/DOCS.yml +++ b/.github/ISSUE_TEMPLATE/DOCS.yml @@ -7,7 +7,7 @@ body: - type: markdown attributes: value: | - This is the repository and issue tracker for the https://www.pyton.org website. + This is the repository and issue tracker for the https://www.python.org website. If you're looking to file an issue with CPython itself, please click here: [CPython Issues](https://github.com/python/cpython/issues/new/choose). diff --git a/.github/ISSUE_TEMPLATE/REQUEST.yml b/.github/ISSUE_TEMPLATE/REQUEST.yml index 144ad75c1..c0f29e2c0 100644 --- a/.github/ISSUE_TEMPLATE/REQUEST.yml +++ b/.github/ISSUE_TEMPLATE/REQUEST.yml @@ -1,5 +1,5 @@ name: "Feature Request" -description: Suggest an idea for www.pyton.org +description: Suggest an idea for www.python.org title: "Enhancement: <title>" labels: ["enhancement"] @@ -7,7 +7,7 @@ body: - type: markdown attributes: value: | - This is the repository and issue tracker for the https://www.pyton.org website. + This is the repository and issue tracker for the https://www.python.org website. If you're looking to file an issue with CPython itself, please click here: [CPython Issues](https://github.com/python/cpython/issues/new/choose). From 1da2a8a3d5de8f4be8d043625e9fcb0bbef2183a Mon Sep 17 00:00:00 2001 From: Dorian Adams <104034366+dorian-adams@users.noreply.github.com> Date: Mon, 2 Dec 2024 10:14:18 -0500 Subject: [PATCH 190/256] Default primary contact field to True for first contact (#2648) Co-authored-by: Jacob Coffee <jacob@z7x.org> --- sponsors/forms.py | 5 ++++- sponsors/tests/test_forms.py | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/sponsors/forms.py b/sponsors/forms.py index 4ced017c9..33b299322 100644 --- a/sponsors/forms.py +++ b/sponsors/forms.py @@ -285,7 +285,10 @@ def __init__(self, *args, **kwargs): if self.data: self.contacts_formset = SponsorContactFormSet(self.data, **formset_kwargs) else: - self.contacts_formset = SponsorContactFormSet(**formset_kwargs) + self.contacts_formset = SponsorContactFormSet( + initial=[{"primary": True}], + **formset_kwargs + ) def clean(self): cleaned_data = super().clean() diff --git a/sponsors/tests/test_forms.py b/sponsors/tests/test_forms.py index 49b0515cd..c375b9a2b 100644 --- a/sponsors/tests/test_forms.py +++ b/sponsors/tests/test_forms.py @@ -534,6 +534,15 @@ def test_invalidate_form_if_no_primary_contact(self): msg = "You have to mark at least one contact as the primary one." self.assertIn(msg, form.errors["__all__"]) + def test_initial_primary_contact(self): + form = SponsorshipApplicationForm() + formset = form.contacts_formset + + self.assertTrue( + formset.forms[0].initial.get("primary"), + "The primary field in the first contact form should be initially set to True." + ) + class SponsorContactFormSetTests(TestCase): def setUp(self): From 4efdd87cce3bde83b06d7aa702f42a2b36a5c8d9 Mon Sep 17 00:00:00 2001 From: Nice Zombies <nineteendo19d0@gmail.com> Date: Mon, 2 Dec 2024 16:18:05 +0100 Subject: [PATCH 191/256] Fix code prompt in Fibonacci example (#2665) --- codesamples/factories.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/codesamples/factories.py b/codesamples/factories.py index 5a52b9738..3fca25177 100644 --- a/codesamples/factories.py +++ b/codesamples/factories.py @@ -122,11 +122,12 @@ def initial_data(): <code> <span class=\"comment\"># Write Fibonacci series up to n</span> >>> def fib(n): - >>> a, b = 0, 1 - >>> while a < n: - >>> print(a, end=' ') - >>> a, b = b, a+b - >>> print() + ... a, b = 0, 1 + ... while a < n: + ... print(a, end=' ') + ... a, b = b, a+b + ... print() + ... >>> fib(1000) <span class=\"output\">0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610</span> </code> From a1cb93932ce5cee332e5b0fea8b9492351f77c51 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 15:03:22 -0600 Subject: [PATCH 192/256] chore(deps): bump django from 4.2.16 to 4.2.17 (#2673) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index 35b62e126..4adad74c4 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -4,7 +4,7 @@ django-sitetree==1.18.0 # >=1.17.1 is (?) first version that supports Django 4. django-apptemplates==1.5 django-admin-interface==0.28.9 django-translation-aliases==0.1.0 -Django==4.2.16 +Django==4.2.17 docutils==0.21.2 Markdown==3.7 cmarkgfm==0.6.0 From 1d4331c4c2ce20397282d216975c5f205a453ffe Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Wed, 11 Dec 2024 16:09:31 -0500 Subject: [PATCH 193/256] remove vendored retina.js, retire @2x logos to default (#2675) --- static/img/psf-logo.png | Bin 14117 -> 19844 bytes static/img/psf-logo@2x.png | Bin 19844 -> 0 bytes static/img/python-logo.png | Bin 10102 -> 15770 bytes static/img/python-logo@2x.png | Bin 15770 -> 0 bytes static/js/plugins.js | 24 ------------------------ 5 files changed, 24 deletions(-) delete mode 100644 static/img/psf-logo@2x.png delete mode 100644 static/img/python-logo@2x.png diff --git a/static/img/psf-logo.png b/static/img/psf-logo.png index 7f63aea5041e88f26907237a7131f989a0c975e1..0a7f8e715b18959a0327ba400905b0eaa34ba2a9 100644 GIT binary patch delta 19117 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 VbI!m1AOWbz;5ta{QkYfnzX43<Z5aRn delta 13345 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�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 PAAo|4s&uuadFcNGy(gN% diff --git a/static/img/psf-logo@2x.png b/static/img/psf-logo@2x.png deleted file mode 100644 index 0a7f8e715b18959a0327ba400905b0eaa34ba2a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19844 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 diff --git a/static/img/python-logo.png b/static/img/python-logo.png index e6c63e1f9015e6f8fa17b8c703fb0f0374dd08a6..d18e7c33a08c7de70fea8fba6c95e03b58c445d6 100644 GIT binary patch literal 15770 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 aguMYVB#h{ks|J>>LDJ$1kZMuGp#KBCRVvQ_ literal 10102 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 ;B+y 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 Ug5c}`4$^@XWmRO#U`7G|1C`#K$N&HU diff --git a/static/img/python-logo@2x.png b/static/img/python-logo@2x.png deleted file mode 100644 index d18e7c33a08c7de70fea8fba6c95e03b58c445d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15770 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 aguMYVB#h{ks|J>>LDJ$1kZMuGp#KBCRVvQ_ diff --git a/static/js/plugins.js b/static/js/plugins.js index 61909a7e6..d8a126e5e 100644 --- a/static/js/plugins.js +++ b/static/js/plugins.js @@ -25,30 +25,6 @@ if(!key){result[name]=converted(cookie);}} return result;};config.defaults={};$.removeCookie=function(key,options){if($.cookie(key)!==undefined){$.cookie(key,'',$.extend(options,{expires:-1}));return true;} return false;};})); - -/*! Retina.js - * https://github.com/imulus/retinajs/blob/master/src/retina.js - * Copyright (C) 2012 Ben Atkin - * MIT License. - */ -(function(){var root=(typeof exports=='undefined'?window:exports);var config={check_mime_type:true};root.Retina=Retina;function Retina(){} -Retina.configure=function(options){if(options===null)options={};for(var prop in options)config[prop]=options[prop];};Retina.init=function(context){if(context===null)context=root;var existing_onload=context.onload||new Function;context.onload=function(){var images=document.getElementsByTagName("img"),retinaImages=[],i,image;for(i=0;i<images.length;i++){image=images[i];retinaImages.push(new RetinaImage(image));} -existing_onload();}};Retina.isRetina=function(){var mediaQuery="(-webkit-min-device-pixel-ratio: 1.5),\ - (min--moz-device-pixel-ratio: 1.5),\ - (-o-min-device-pixel-ratio: 3/2),\ - (min-resolution: 1.5dppx)";if(root.devicePixelRatio>1) -return true;if(root.matchMedia&&root.matchMedia(mediaQuery).matches) -return true;return false;};root.RetinaImagePath=RetinaImagePath;function RetinaImagePath(path){this.path=path;this.at_2x_path=path.replace(/\.\w+$/,function(match){return"@2x"+match;});} -RetinaImagePath.confirmed_paths=[];RetinaImagePath.prototype.is_external=function(){return!!(this.path.match(/^https?\:/i)&&!this.path.match('//'+document.domain));} -RetinaImagePath.prototype.check_2x_variant=function(callback){var http,that=this;if(this.is_external()){return callback(false);}else if(this.at_2x_path in RetinaImagePath.confirmed_paths){return callback(true);}else{http=new XMLHttpRequest;http.open('HEAD',this.at_2x_path);http.onreadystatechange=function(){if(http.readyState!=4){return callback(false);} -if(http.status>=200&&http.status<=399){if(config.check_mime_type){var type=http.getResponseHeader('Content-Type');if(type===null||!type.match(/^image/i)){return callback(false);}} -RetinaImagePath.confirmed_paths.push(that.at_2x_path);return callback(true);}else{return callback(false);}} -http.send();}} -function RetinaImage(el){this.el=el;this.path=new RetinaImagePath(this.el.getAttribute('src'));var that=this;this.path.check_2x_variant(function(hasVariant){if(hasVariant)that.swap();});} -root.RetinaImage=RetinaImage;RetinaImage.prototype.swap=function(path){if(typeof path=='undefined')path=this.path.at_2x_path;var that=this;function load(){if(!that.el.complete){setTimeout(load,5);}else{that.el.setAttribute('width',that.el.offsetWidth);that.el.setAttribute('height',that.el.offsetHeight);that.el.setAttribute('src',path);}} -load();} -if(Retina.isRetina()){Retina.init(root);}})(); - /* * jQuery FlexSlider v2.1 * http://www.woothemes.com/flexslider/ From 023121f3efd852679d31814c55c1d56a8a426033 Mon Sep 17 00:00:00 2001 From: Mike Fiedler <miketheman@gmail.com> Date: Mon, 23 Dec 2024 16:36:39 -0500 Subject: [PATCH 194/256] feat(dev): emit descriptions for commands in help (#2678) --- Makefile | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index bd4291bbe..ae0c143dc 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,11 @@ -default: +help: @echo "Call a specific subcommand:" @echo - @$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null\ - | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}'\ - | sort\ - | grep -E -v -e '^[^[:alnum:]]' -e '^$@$$' + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) \ + | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' @echo - @exit 1 + +default: help .state/docker-build-web: Dockerfile dev-requirements.txt base-requirements.txt # Build web container for this project @@ -29,30 +28,29 @@ default: # Mark the state so we don't rebuild this needlessly. mkdir -p .state && touch .state/db-initialized -serve: .state/db-initialized +serve: .state/db-initialized ## Start the application docker compose up --remove-orphans -migrations: .state/db-initialized - # Run Django makemigrations +migrations: .state/db-initialized ## Generate migrations from models docker compose run --rm web ./manage.py makemigrations -migrate: .state/docker-build-web - # Run Django migrate +migrate: .state/docker-build-web ## Run Django migrate docker compose run --rm web ./manage.py migrate -manage: .state/db-initialized - # Run Django manage to accept arbitrary arguments +manage: .state/db-initialized ## Run Django manage to accept arbitrary arguments docker compose run --rm web ./manage.py $(filter-out $@,$(MAKECMDGOALS)) -shell: .state/db-initialized +shell: .state/db-initialized ## Open Django interactive shell docker compose run --rm web ./manage.py shell -clean: +clean: ## Clean up the environment docker compose down -v rm -f .state/docker-build-web .state/db-initialized .state/db-migrated -test: .state/db-initialized +test: .state/db-initialized ## Run tests docker compose run --rm web ./manage.py test -docker_shell: .state/db-initialized +docker_shell: .state/db-initialized ## Open a bash shell in the web container docker compose run --rm web /bin/bash + +.PHONY: help serve migrations migrate manage shell clean test docker_shell From 9bd3afe155c15f005e40d60a318c82ac731e181d Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Wed, 8 Jan 2025 10:06:16 -0500 Subject: [PATCH 195/256] update pycon sponsorship integration for 2025 (#2682) --- sponsors/api.py | 2 ++ .../create_pycon_vouchers_for_sponsors.py | 24 +++++++++---------- sponsors/serializers.py | 5 ++++ 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/sponsors/api.py b/sponsors/api.py index 0d180be6d..c5a8173ab 100644 --- a/sponsors/api.py +++ b/sponsors/api.py @@ -29,6 +29,8 @@ def get(self, request, *args, **kwargs): logo_filters.is_valid(raise_exception=True) sponsorships = Sponsorship.objects.enabled().with_logo_placement() + if logo_filters.by_year: + sponsorships = sponsorships.filter(year=logo_filters.by_year) for sponsorship in sponsorships.select_related("sponsor").iterator(): sponsor = sponsorship.sponsor base_data = { diff --git a/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py b/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py index 3e3b4973d..67f624b0a 100644 --- a/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py +++ b/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py @@ -20,24 +20,24 @@ ) BENEFITS = { - 183: { - "internal_name": "full_conference_passes_code_2024", + 241: { + "internal_name": "full_conference_passes_code_2025", "voucher_type": "SPNS_COMP_", }, - 201: { - "internal_name": "expo_hall_only_passes_code_2024", + 259: { + "internal_name": "pycon_expo_hall_only_passes_code_2025", "voucher_type": "SPNS_EXPO_COMP_", }, - 208: { - "internal_name": "additional_full_conference_passes_code_2024", + 265: { + "internal_name": "pycon_additional_full_conference_passes_code_2025", "voucher_type": "SPNS_ADDL_DISC_REG_", }, - 225: { - "internal_name": "online_only_conference_passes_2024", - "voucher_type": "SPNS_ONLINE_COMP_", - }, - 237: { - "internal_name": "additional_expo_hall_only_passes_2024", + #225: { + # "internal_name": "online_only_conference_passes_2025", + # "voucher_type": "SPNS_ONLINE_COMP_", + #}, + 292: { + "internal_name": "pycon_additional_expo_hall_only_passes_2025", "voucher_type": "SPNS_EXPO_DISC_", }, } diff --git a/sponsors/serializers.py b/sponsors/serializers.py index c0782c12a..e47e28f0b 100644 --- a/sponsors/serializers.py +++ b/sponsors/serializers.py @@ -58,6 +58,7 @@ class FilterLogoPlacementsSerializer(serializers.Serializer): choices=[(c.value, c.name.replace("_", " ").title()) for c in LogoPlacementChoices], required=False, ) + year = serializers.IntegerField(required=False) @property def by_publisher(self): @@ -67,6 +68,10 @@ def by_publisher(self): def by_flight(self): return self.validated_data.get("flight") + @property + def by_year(self): + return self.validated_data.get("year") + def skip_logo(self, logo): if self.by_publisher and self.by_publisher != logo.publisher: return True From 4e2bd048f74878dde67cded083168ce2a17fc839 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 22:39:29 +0000 Subject: [PATCH 196/256] chore(deps): bump django from 4.2.17 to 4.2.18 (#2686) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index 4adad74c4..38e1647c6 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -4,7 +4,7 @@ django-sitetree==1.18.0 # >=1.17.1 is (?) first version that supports Django 4. django-apptemplates==1.5 django-admin-interface==0.28.9 django-translation-aliases==0.1.0 -Django==4.2.17 +Django==4.2.18 docutils==0.21.2 Markdown==3.7 cmarkgfm==0.6.0 From b7150ce3625edb0ed46a439b85dd6fda0a534ebf Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Thu, 6 Feb 2025 14:30:40 -0500 Subject: [PATCH 197/256] update link to create a new sponsorship application on the sponsors page --- templates/psf/sponsors-list.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/psf/sponsors-list.html b/templates/psf/sponsors-list.html index d05befdac..a03b78d83 100644 --- a/templates/psf/sponsors-list.html +++ b/templates/psf/sponsors-list.html @@ -13,7 +13,7 @@ <h3> <a href="/psf/sponsorship/">sponsors</a>. While the PSF thanks these sponsors for their support, we don't necessarily endorse nor promote any specific activity of any of its sponsors. </h3> - <p>Interested in becoming a sponsor? Check out our <a href="{% url 'new_sponsorship_application' %}">sponsor application</a>.</p> + <p>Interested in becoming a sponsor? Check out our <a href="{% url 'select_sponsorship_application_benefits' %}">sponsor application</a>.</p> {% list_sponsors "sponsors" %} From 47e192cd2ed658f39aa15a684823d6034d3841c9 Mon Sep 17 00:00:00 2001 From: Karan Rautela <137271352+karnrautela@users.noreply.github.com> Date: Fri, 7 Feb 2025 20:44:58 +0530 Subject: [PATCH 198/256] Update mq.css (#2692) * Update mq.css Fix footer layout distortion on mobile devices * Update mq.scss * compile from scss rather than hand edit css --------- Co-authored-by: Ee Durbin <ewdurbin@gmail.com> --- static/sass/mq.css | 3 +++ static/sass/mq.scss | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/static/sass/mq.css b/static/sass/mq.css index 38c68317a..4d4dea4ac 100644 --- a/static/sass/mq.css +++ b/static/sass/mq.css @@ -413,6 +413,9 @@ html[xmlns] .slides { display: block; } display: none; speak: none; } + .tier-1 { + position: static !important; } + .slideshow { display: none; } } /* - - - Larger than 400px - - - */ diff --git a/static/sass/mq.scss b/static/sass/mq.scss index 309aec202..26a361717 100644 --- a/static/sass/mq.scss +++ b/static/sass/mq.scss @@ -36,6 +36,9 @@ body:after { @include javascript_tag( 'animatebody' ); } + .tier-1 { + position: static !important; + } @include max_width_480(); } @@ -159,4 +162,4 @@ * for IE10 Snap Mode on Metro */ @-ms-viewport { width: device-width; } -@viewport { width: device-width; } \ No newline at end of file +@viewport { width: device-width; } From 0d728a37c723c6988d35c51d3ab75522b412e659 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Mar 2025 23:11:12 +0000 Subject: [PATCH 199/256] chore(deps): bump django from 4.2.18 to 4.2.20 (#2699) Bumps [django](https://github.com/django/django) from 4.2.18 to 4.2.20. - [Commits](https://github.com/django/django/compare/4.2.18...4.2.20) --- updated-dependencies: - dependency-name: django dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index 38e1647c6..aa4e0f4e0 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -4,7 +4,7 @@ django-sitetree==1.18.0 # >=1.17.1 is (?) first version that supports Django 4. django-apptemplates==1.5 django-admin-interface==0.28.9 django-translation-aliases==0.1.0 -Django==4.2.18 +Django==4.2.20 docutils==0.21.2 Markdown==3.7 cmarkgfm==0.6.0 From 43b22c1a19798835d7b255cf4198b93f88f589d7 Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Mon, 7 Apr 2025 17:12:11 -0400 Subject: [PATCH 200/256] add our plausible install to analytics --- templates/base.html | 1 + 1 file changed, 1 insertion(+) diff --git a/templates/base.html b/templates/base.html index 0091c41b0..051605cb9 100644 --- a/templates/base.html +++ b/templates/base.html @@ -15,6 +15,7 @@ </script> <!-- Plausible.io analytics --> <script defer data-domain="python.org" src="https://plausible.io/js/script.js"></script> + <script defer data-domain="python.org" src="https://analytics.python.org/js/script.js"></script> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> From 40c3dbbbcfada83b54bc5e897f343a44817d6d5a Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Wed, 16 Apr 2025 14:36:46 -0400 Subject: [PATCH 201/256] update Basic Membership Form header text (#2710) * update Basic Membership Form header text * update user profile detail page * move repeated text to an include * update nominations history page to make sense for people that have never nominated --- templates/users/_membership_detail.html | 35 +++++++++++++++++++++++++ templates/users/membership_form.html | 16 +---------- templates/users/nominations_view.html | 8 +++--- templates/users/user_detail.html | 15 ++--------- 4 files changed, 43 insertions(+), 31 deletions(-) create mode 100644 templates/users/_membership_detail.html diff --git a/templates/users/_membership_detail.html b/templates/users/_membership_detail.html new file mode 100644 index 000000000..7b97bfaa5 --- /dev/null +++ b/templates/users/_membership_detail.html @@ -0,0 +1,35 @@ + <div class="info"> + + <p> + Your Basic Membership information is managed here. + </p> + + <p> + To manage your Supporting and Contributing Memberships, visit <a href="https://psfmember.org/user-information/">psfmember.org</a>. + </p> + + <p> + Voting in PSF elections requires a Supporting, Contributing, or Fellow Membership. + <b>Basic Membership is not a voting class</b>. + To learn more about PSF Membership classes, and to enroll as a Supporting or Contributing Member, + visit <a href="https://www.python.org/psf/membership/">Our Membership Page</a>. + </p> + + <p> + This site (python.org), will list you as a Basic Member + even if you are a Supporting, Contribution, or Fellowship member + because the voting tiers of membership are managed on the separate, + <a href="https://www.psfmember.org">psfmember.org</a> website. + To affirm your PSF Voting Eligibility you will need to use + <a href="https://psfmember.org/civicrm/votingaffirmation/">psfmember.org</a>. + </p> + + <p> + If you believe you are a Supporting, Contributing, or Fellow Member + but do not have an account on <a href="https://www.psfmember.org">psfmember.org</a>, + please create an account and verify your email, + then email <a href="mailto:psf-donations@python.org">psf-donations@python.org</a> + to have your account linked to your membership. + </p> + + </div> diff --git a/templates/users/membership_form.html b/templates/users/membership_form.html index ecc032467..7c65589b3 100644 --- a/templates/users/membership_form.html +++ b/templates/users/membership_form.html @@ -18,21 +18,7 @@ <h1 class="default-title">Edit your PSF Basic Membership</h1> <h1 class="default-title">Register to become a PSF Basic Member</h1> {% endif %} - <div class="info"> - <p> - Basic membership is <b>not a voting membership class</b>.<br>For more information see Article IV - of the <a href="https://www.python.org/psf/bylaws/">PSF Bylaws</a>. - </p> - <p> - All other membership classes are recorded on <a href="https://psfmember.org">psfmember.org</a>.<br> - Please log in there and review your <a href="https://psfmember.org/user-information/">user profile</a> - to see your membership status.<br> - If you believe you are a member but do not have an account on psfmember.org, please - <a href="https://psfmember.org/wp-login.php?action=register">create an account</a> and verify your - email, then email <a href="mailto:psf-donations@python.org">psf-donations@python.org</a> to get your account linked to your membership. - </p> - <p>For more information and to sign up for other kinds of PSF membership, visit our <a href="https://www.python.org/psf/membership/">Membership Page</a>.</p> - </div> + {% include 'users/_membership_detail.html' %} {% if form.errors %} <div class="user-feedback level-error"> diff --git a/templates/users/nominations_view.html b/templates/users/nominations_view.html index 8c28aa87b..fe0fbbd76 100644 --- a/templates/users/nominations_view.html +++ b/templates/users/nominations_view.html @@ -15,11 +15,13 @@ {% block user_content %} <div> + <h1>Your History of PSF Board Nominations</h1> + {% for election, nominations in elections.items %} - <h1><a href="{% url 'nominations:nominees_list' election=election.slug %}">{{ election.name }} Election</a></h1> + <h2><a href="{% url 'nominations:nominees_list' election=election.slug %}">{{ election.name }} Election</a></h2> {% if nominations.nominations_recieved|length > 0 %} - <h2>Nominations Received</h2> + <h3>Nominations Received</h3> <ul> {% for nomination in nominations.nominations_recieved %} <li> @@ -45,7 +47,7 @@ <h2>Nominations Received</h2> {% endif %} {% if nominations.nominations_made|length > 0 %} - <h2>Nominations Made</h2> + <h3>Nominations Made</h3> <ul> {% for nomination in nominations.nominations_made %} <li> diff --git a/templates/users/user_detail.html b/templates/users/user_detail.html index ce2f5ee90..dcf614855 100644 --- a/templates/users/user_detail.html +++ b/templates/users/user_detail.html @@ -24,20 +24,9 @@ <p><span class="profile-label"><span class="icon-python" aria-hidden="true"></span>PSF Basic Member?</span> {{ object.has_membership|yesno|capfirst }}</p> {% if object.has_membership %} <div style="margin-left: 1em;"> - <p> - Basic membership is <b>not a voting membership class</b>.<br>For more information see Article IV - of the <a href="https://www.python.org/psf/bylaws/">PSF Bylaws</a>. - </p> - <p> - All other membership classes are recorded on <a href="https://psfmember.org">psfmember.org</a>.<br> - Please log in there and review your <a href="https://psfmember.org/user-information/">user profile</a> - to see your membership status.<br> - If you believe you are a member but do not have an account on psfmember.org, please - <a href="https://psfmember.org/wp-login.php?action=register">create an account</a> and verify your - email, then email <a href="mailto:psf-donations@python.org">psf-donations@python.org</a> to get your account linked to your membership. - </p> + {% include 'users/_membership_detail.html' %} </div> - {% endif %} + {% endif %} </div> {% comment %} <div class="user-profile-location"> From ac6463d5ec0ad8150120f7aa20638c4615d7941b Mon Sep 17 00:00:00 2001 From: Jacob Coffee <jacob@z7x.org> Date: Wed, 16 Apr 2025 13:52:51 -0500 Subject: [PATCH 202/256] chore: remove flaky deploy reminder ci task (#2711) --- .github/workflows/deployminder.yml | 37 ------------------------------ 1 file changed, 37 deletions(-) delete mode 100644 .github/workflows/deployminder.yml diff --git a/.github/workflows/deployminder.yml b/.github/workflows/deployminder.yml deleted file mode 100644 index 04774f04f..000000000 --- a/.github/workflows/deployminder.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Deploy Reminder - -on: - pull_request: - types: - - closed - branches: - - main - -jobs: - remind: - if: github.event.pull_request.merged == true - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Check for changes in infra/ - id: check_changes - run: | - git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | grep -q '^infra/' - echo "has_infra_changes=$?" >> $GITHUB_OUTPUT - - - name: Comment on PR - if: steps.check_changes.outputs.has_infra_changes == '0' - uses: actions/github-script@v7 - with: - github-token: ${{secrets.GITHUB_TOKEN}} - script: | - github.rest.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: 'Changes detected in the `infra/` directory. Don\'t forget to apply these changes in Terraform Cloud and/or Fastly!' - }) From 1f9000041bffcdf4e6553b0be879e574d6e2eadb Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Thu, 17 Apr 2025 13:56:36 -0400 Subject: [PATCH 203/256] remove google analytics and plausible.io (#2713) we're going to be migrating to self-hosted plausbile entirely now. drop plausible.io script, and enable outbound links --- templates/base.html | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/templates/base.html b/templates/base.html index 051605cb9..f66f80ca9 100644 --- a/templates/base.html +++ b/templates/base.html @@ -5,17 +5,7 @@ <!--[if gt IE 8]><!--><html class="no-js" lang="en" dir="ltr"> <!--<![endif]--> {% load pipeline sitetree %} <head> - <!-- Google tag (gtag.js) --> - <script async src="https://www.googletagmanager.com/gtag/js?id=G-TF35YF9CVH"></script> - <script> - window.dataLayer = window.dataLayer || []; - function gtag(){dataLayer.push(arguments);} - gtag('js', new Date()); - gtag('config', 'G-TF35YF9CVH'); - </script> - <!-- Plausible.io analytics --> - <script defer data-domain="python.org" src="https://plausible.io/js/script.js"></script> - <script defer data-domain="python.org" src="https://analytics.python.org/js/script.js"></script> + <script defer data-domain="python.org" src="https://analytics.python.org/js/script.outbound-links.js"></script> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> From f58149cf45655d7cd5e1b30dc8ea917c2e41c0ae Mon Sep 17 00:00:00 2001 From: Ned Batchelder <ned@nedbatchelder.com> Date: Thu, 24 Apr 2025 11:57:22 -0400 Subject: [PATCH 204/256] add a link to docs.python.org on the search page (#2718) Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Co-authored-by: Jacob Coffee <jacob@z7x.org> --- templates/search/search.html | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/templates/search/search.html b/templates/search/search.html index 1782fe3ca..dd5579a25 100644 --- a/templates/search/search.html +++ b/templates/search/search.html @@ -17,7 +17,7 @@ <h3>Results</h3> {% include result.include_template %} </li> {% empty %} - <p>No results found.</p> + <li>No results found.</li> {% endfor %} </ul> {% if page.has_previous or page.has_next %} @@ -27,8 +27,13 @@ <h3>Results</h3> {% if page.has_next %}<a href="?q={{ query }}&page={{ page.next_page_number }}">{% endif %}Next »{% if page.has_next %}</a>{% endif %} </div> {% endif %} + + <h3>Python language documentation</h3> + <p>If you didn't find what you need, try your search in the + <a href="https://docs.python.org/3/search.html?q={{ request.GET.q | urlencode }}">Python language documentation</a>. + </p> {% else %} {# Show some example queries to run, maybe query syntax, something else? #} {% endif %} </form> -{% endblock %} \ No newline at end of file +{% endblock %} From 595b55890c481dd4f139a45f72160fcf9ddc7dad Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Fri, 2 May 2025 09:53:07 -0400 Subject: [PATCH 205/256] add sponsorship id to sponsor list api endpoint (#2720) this will be useful to make the sync more reliable to link via id not string --- sponsors/api.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sponsors/api.py b/sponsors/api.py index c5a8173ab..e5ef245df 100644 --- a/sponsors/api.py +++ b/sponsors/api.py @@ -34,6 +34,7 @@ def get(self, request, *args, **kwargs): for sponsorship in sponsorships.select_related("sponsor").iterator(): sponsor = sponsorship.sponsor base_data = { + "sponsor_id": sponsor.id, "sponsor": sponsor.name, "sponsor_slug": sponsor.slug, "level_name": sponsorship.level_name, From eaeb1573105a64fc95e514b1ca52244e0d1986c4 Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Fri, 2 May 2025 10:27:42 -0400 Subject: [PATCH 206/256] actually add sponsor_id to sponsor api (#2721) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit oh yeah 🙃 --- sponsors/serializers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sponsors/serializers.py b/sponsors/serializers.py index e47e28f0b..e73ee309b 100644 --- a/sponsors/serializers.py +++ b/sponsors/serializers.py @@ -8,6 +8,7 @@ class LogoPlacementSerializer(serializers.Serializer): publisher = serializers.CharField() flight = serializers.CharField() sponsor = serializers.CharField() + sponsor_id = serializers.CharField() sponsor_slug = serializers.CharField() description = serializers.CharField() logo = serializers.URLField() From 1efbb241904a3c92869b0c4b1243d543f9169100 Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Fri, 2 May 2025 13:04:57 -0400 Subject: [PATCH 207/256] send sponsor_id when calling pycon create voucher api (#2722) --- .../commands/create_pycon_vouchers_for_sponsors.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py b/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py index 67f624b0a..db095f075 100644 --- a/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py +++ b/sponsors/management/commands/create_pycon_vouchers_for_sponsors.py @@ -66,8 +66,10 @@ def api_call(uri, query): scheme = "http" if settings.DEBUG else "https" url = f"{scheme}://{settings.PYCON_API_HOST}{uri}" try: - return requests.get(url, headers=headers, params=query).json() + r = requests.get(url, headers=headers, params=query) + return r.json() except RequestException: + print(r, r.content) raise @@ -103,6 +105,7 @@ def generate_voucher_codes(year): "voucher_type": code["voucher_type"], "quantity": quantity.quantity, "sponsor_name": sponsorbenefit.sponsorship.sponsor.name, + "sponsor_id": sponsorbenefit.sponsorship.sponsor.id, }, ) if result["code"] == 200: From e2ac65b9797153f9b4a38163354e0b0e6377234a Mon Sep 17 00:00:00 2001 From: Steve Dower <steve.dower@python.org> Date: Wed, 7 May 2025 15:57:12 +0100 Subject: [PATCH 208/256] Update website for Python install manager (#2717) Co-authored-by: Jacob Coffee <jacob@z7x.org> --- downloads/managers.py | 13 ++++++++++++ .../migrations/0012_alter_release_version.py | 18 ++++++++++++++++ downloads/models.py | 6 ++++++ downloads/urls.py | 1 + downloads/views.py | 21 +++++++++++++++++++ templates/downloads/index.html | 9 ++++++++ templates/downloads/os_list.html | 12 ++++++++++- templates/downloads/supernav.html | 6 ++++++ 8 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 downloads/migrations/0012_alter_release_version.py diff --git a/downloads/managers.py b/downloads/managers.py index b529dcdd4..56040d2bb 100644 --- a/downloads/managers.py +++ b/downloads/managers.py @@ -23,12 +23,18 @@ def python2(self): def python3(self): return self.filter(version=3, is_published=True) + def pymanager(self): + return self.filter(version=100, is_published=True) + def latest_python2(self): return self.python2().filter(is_latest=True) def latest_python3(self): return self.python3().filter(is_latest=True) + def latest_pymanager(self): + return self.pymanager().filter(is_latest=True) + def pre_release(self): return self.filter(pre_release=True) @@ -50,3 +56,10 @@ def latest_python3(self): return qs[0] else: return None + + def latest_pymanager(self): + qs = self.get_queryset().latest_pymanager() + if qs: + return qs[0] + else: + return None diff --git a/downloads/migrations/0012_alter_release_version.py b/downloads/migrations/0012_alter_release_version.py new file mode 100644 index 000000000..e6aea4d1f --- /dev/null +++ b/downloads/migrations/0012_alter_release_version.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.20 on 2025-04-24 19:26 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('downloads', '0011_alter_os_creator_alter_os_last_modified_by_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='release', + name='version', + field=models.IntegerField(choices=[(3, 'Python 3.x.x'), (2, 'Python 2.x.x'), (1, 'Python 1.x.x'), (100, 'Python install manager')], default=3), + ), + ] diff --git a/downloads/models.py b/downloads/models.py index 415804b6e..3c0a74f97 100644 --- a/downloads/models.py +++ b/downloads/models.py @@ -45,10 +45,12 @@ class Release(ContentManageable, NameSlugModel): PYTHON1 = 1 PYTHON2 = 2 PYTHON3 = 3 + PYMANAGER = 100 PYTHON_VERSION_CHOICES = ( (PYTHON3, 'Python 3.x.x'), (PYTHON2, 'Python 2.x.x'), (PYTHON1, 'Python 1.x.x'), + (PYMANAGER, 'Python install manager'), ) version = models.IntegerField(default=PYTHON3, choices=PYTHON_VERSION_CHOICES) is_latest = models.BooleanField( @@ -146,6 +148,10 @@ def is_version_at_least_3_5(self): def is_version_at_least_3_9(self): return self.is_version_at_least((3, 9)) + @property + def is_version_at_least_3_14(self): + return self.is_version_at_least((3, 14)) + def update_supernav(): latest_python3 = Release.objects.latest_python3() diff --git a/downloads/urls.py b/downloads/urls.py index eddef7a10..5b6b3fda0 100644 --- a/downloads/urls.py +++ b/downloads/urls.py @@ -5,6 +5,7 @@ urlpatterns = [ re_path(r'latest/python2/?$', views.DownloadLatestPython2.as_view(), name='download_latest_python2'), re_path(r'latest/python3/?$', views.DownloadLatestPython3.as_view(), name='download_latest_python3'), + re_path(r'latest/pymanager/?$', views.DownloadLatestPyManager.as_view(), name='download_latest_pymanager'), re_path(r'latest/?$', views.DownloadLatestPython3.as_view(), name='download_latest_python3'), path('operating-systems/', views.DownloadFullOSList.as_view(), name='download_full_os_list'), path('release/<slug:release_slug>/', views.DownloadReleaseDetail.as_view(), name='download_release_detail'), diff --git a/downloads/views.py b/downloads/views.py index 2e48cb2f3..21e66cd55 100644 --- a/downloads/views.py +++ b/downloads/views.py @@ -45,6 +45,22 @@ def get_redirect_url(self, **kwargs): return reverse('download') +class DownloadLatestPyManager(RedirectView): + """ Redirect to latest Python install manager release """ + permanent = False + + def get_redirect_url(self, **kwargs): + try: + latest_pymanager = Release.objects.latest_pymanager() + except Release.DoesNotExist: + latest_pymanager = None + + if latest_pymanager: + return latest_pymanager.get_absolute_url() + else: + return reverse('downloads') + + class DownloadBase: """ Include latest releases in all views """ def get_context_data(self, **kwargs): @@ -52,6 +68,7 @@ def get_context_data(self, **kwargs): context.update({ 'latest_python2': Release.objects.latest_python2(), 'latest_python3': Release.objects.latest_python3(), + 'latest_pymanager': Release.objects.latest_pymanager(), }) return context @@ -71,6 +88,8 @@ def get_context_data(self, **kwargs): except Release.DoesNotExist: latest_python3 = None + latest_pymanager = context.get('latest_pymanager') + python_files = [] for o in OS.objects.all(): data = { @@ -80,6 +99,8 @@ def get_context_data(self, **kwargs): data['python2'] = latest_python2.download_file_for_os(o.slug) if latest_python3 is not None: data['python3'] = latest_python3.download_file_for_os(o.slug) + if latest_pymanager is not None: + data['pymanager'] = latest_pymanager.download_file_for_os(o.slug) python_files.append(data) context.update({ diff --git a/templates/downloads/index.html b/templates/downloads/index.html index 4cd8155e1..f527be031 100644 --- a/templates/downloads/index.html +++ b/templates/downloads/index.html @@ -17,11 +17,20 @@ <h1 class="call-to-action">Download the latest source release</h1> {% else %} <h1 class="call-to-action">Download the latest version for {{ data.os.name }}</h1> {% endif %} + {% if data.pymanager %} + <p class="download-buttons"> + <a class="button" href="{{ data.pymanager.url }}">Download Python install manager</a> + </p> + {% if data.python3 %} + <p>Or get the standalone installer for <a href="{{ data.python3.url }}">{{ data.python3.release.name }}</a></p> + {% endif %} + {% else %} <p class="download-buttons"> {% if data.python3 %} <a class="button" href="{{ data.python3.url }}">Download {{ data.python3.release.name }}</a> {% endif %} </p> + {% endif %} </div> {% endfor %} <div class="download-unknown"> diff --git a/templates/downloads/os_list.html b/templates/downloads/os_list.html index 1e0177dca..ffd524e5f 100644 --- a/templates/downloads/os_list.html +++ b/templates/downloads/os_list.html @@ -29,6 +29,10 @@ <h1 class="page-title">Python Releases for {{ os.name }}</h1> </header> <ul> + {% if os.slug == 'windows' and latest_pymanager %} + <li><a href="{{ latest_pymanager.get_absolute_url }}">Latest Python install manager - {{ latest_pymanager.name }}</a></li> + {% endif %} + <li><a href="{{ latest_python3.get_absolute_url }}">Latest Python 3 Release - {{ latest_python3.name }}</a></li> </ul> <div class="col-row two-col"> @@ -39,7 +43,13 @@ <h2>Stable Releases</h2> <li> <a href="{{ r.get_absolute_url }}">{{ r.name }} - {{ r.release_date|date }}</a> {% if os.slug == 'windows' %} - {% if r.is_version_at_least_3_9 %} + {% if latest_pymanager and r.is_version_at_least_3_14 %} + {% if latest_pymanager %} + <p>Download using the <a href="{{ latest_pymanager.get_absolute_url }}">Python install manager</a>.</p> + {% else %} + <p>Download using the <a href="https://docs.python.org/using/windows.html">Python install manager</a>.</p> + {% endif %} + {% elif r.is_version_at_least_3_9 %} <p><strong>Note that {{ r.name }} <em>cannot</em> be used on Windows 7 or earlier.</strong></p> {% elif r.is_version_at_least_3_5 %} <p><strong>Note that {{ r.name }} <em>cannot</em> be used on Windows XP or earlier.</strong></p> diff --git a/templates/downloads/supernav.html b/templates/downloads/supernav.html index fb0a1e629..12568eadb 100644 --- a/templates/downloads/supernav.html +++ b/templates/downloads/supernav.html @@ -7,10 +7,16 @@ <h3>Python Source</h3> {% else %} <h4>Download for {{ data.os.name }}</h4> {% endif %} + + {% if data.pymanager %} + <p><a class="button" href="{{ data.pymanager.url }}">Python install manager</a></p> + <p>Or get the standalone installer for <a class="button" href="{{ data.python3.url }}">{{ data.python3.release.name }}</a></p> + {% else %} <p> <a class="button" href="{{ data.python3.url }}">{{ data.python3.release.name }}</a> </p> {% if data.os.slug == 'windows' %}<p><strong>Note that Python 3.9+ <em>cannot</em> be used on Windows 7 or earlier.</strong></p>{% endif %} + {% endif %} <p>Not the OS you are looking for? Python can be used on many operating systems and environments. <a href="{% url 'download:download' %}">View the full list of downloads</a>.</p> </div> {% endfor %} From 1e92dd5c9a9af63c420e93cbf13443c00ff88810 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 May 2025 11:50:27 -0400 Subject: [PATCH 209/256] chore(deps): bump django from 4.2.20 to 4.2.21 (#2728) Bumps [django](https://github.com/django/django) from 4.2.20 to 4.2.21. - [Commits](https://github.com/django/django/compare/4.2.20...4.2.21) --- updated-dependencies: - dependency-name: django dependency-version: 4.2.21 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index aa4e0f4e0..235bdc7d9 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -4,7 +4,7 @@ django-sitetree==1.18.0 # >=1.17.1 is (?) first version that supports Django 4. django-apptemplates==1.5 django-admin-interface==0.28.9 django-translation-aliases==0.1.0 -Django==4.2.20 +Django==4.2.21 docutils==0.21.2 Markdown==3.7 cmarkgfm==0.6.0 From 0ab17f8b0dacc814561554e193bdb768e25f8a77 Mon Sep 17 00:00:00 2001 From: shenxianpeng <xianpeng.shen@gmail.com> Date: Sun, 11 May 2025 06:32:31 +0300 Subject: [PATCH 210/256] Update index.rst to fix not found page (#2715) Co-authored-by: Jacob Coffee <jacob@z7x.org> --- docs/source/index.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/source/index.rst b/docs/source/index.rst index cfde87586..ab7b710ed 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -32,8 +32,6 @@ Indices and tables ================== * :ref:`genindex` -* :ref:`modindex` -* :ref:`search` .. _python.org: https://www.python.org .. _pydotorg-www: https://mail.python.org/mailman/listinfo/pydotorg-www From 142583bd66d5efe4c86b01ffb299b1979c85b91d Mon Sep 17 00:00:00 2001 From: Steve Dower <steve.dower@python.org> Date: Mon, 26 May 2025 23:57:31 +0100 Subject: [PATCH 211/256] Hide releases from Downloads page when they have no files to download (#2736) --- templates/downloads/os_list.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/templates/downloads/os_list.html b/templates/downloads/os_list.html index ffd524e5f..b110e57b1 100644 --- a/templates/downloads/os_list.html +++ b/templates/downloads/os_list.html @@ -40,6 +40,7 @@ <h1 class="page-title">Python Releases for {{ os.name }}</h1> <h2>Stable Releases</h2> <ul> {% for r in releases %} + {% if r.files.all %} <li> <a href="{{ r.get_absolute_url }}">{{ r.name }} - {{ r.release_date|date }}</a> {% if os.slug == 'windows' %} @@ -63,6 +64,7 @@ <h2>Stable Releases</h2> {% endfor %} </ul> </li> + {% endif %} {% endfor %} </ul> </div> @@ -71,6 +73,7 @@ <h2>Stable Releases</h2> <h2>Pre-releases</h2> <ul> {% for r in pre_releases %} + {% if r.files.all %} <li> <a href="{{ r.get_absolute_url }}">{{ r.name }} - {{ r.release_date|date }}</a> <ul> @@ -81,6 +84,7 @@ <h2>Pre-releases</h2> {% endfor %} </ul> </li> + {% endif %} {% endfor %} </ul> </div> From 902fb3989693dd61cc0c5b0faf527492b885cff2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Jun 2025 10:05:38 -0500 Subject: [PATCH 212/256] chore(deps): bump django from 4.2.21 to 4.2.22 (#2737) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jacob Coffee <jacob@z7x.org> --- base-requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/base-requirements.txt b/base-requirements.txt index 235bdc7d9..cd8474961 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -4,10 +4,10 @@ django-sitetree==1.18.0 # >=1.17.1 is (?) first version that supports Django 4. django-apptemplates==1.5 django-admin-interface==0.28.9 django-translation-aliases==0.1.0 -Django==4.2.21 +Django==4.2.22 docutils==0.21.2 Markdown==3.7 -cmarkgfm==0.6.0 +cmarkgfm==2024.11.20 Pillow==10.4.0 psycopg2-binary==2.9.9 python3-openid==3.2.0 From 53c0affbb86ec6f94f6a6bf016eeb9e529e24e80 Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Tue, 22 Jul 2025 10:19:41 -0400 Subject: [PATCH 213/256] Do not accept nominations for elections before they open (#2755) Update views.py --- nominations/views.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/nominations/views.py b/nominations/views.py index 484f7a7c2..570d89c48 100644 --- a/nominations/views.py +++ b/nominations/views.py @@ -89,6 +89,11 @@ def get_form_class(self): self.request, f"Nominations for {election.name} Election are closed" ) raise Http404(f"Nominations for {election.name} Election are closed") + if not election.nominations_open: + messages.error( + self.request, f"Nominations for {election.name} Election are not open" + ) + raise Http404(f"Nominations for {election.name} Election are not open") return NominationCreateForm From 2074f188bfcf68c98c2ddab7861dcf4b9a41a1e1 Mon Sep 17 00:00:00 2001 From: Jacob Coffee <jacob@z7x.org> Date: Mon, 28 Jul 2025 14:13:30 -0400 Subject: [PATCH 214/256] fix: inject context for events (#2758) --- events/tests/test_views.py | 2 ++ events/views.py | 1 + 2 files changed, 3 insertions(+) diff --git a/events/tests/test_views.py b/events/tests/test_views.py index 34ca27831..613a6ee46 100644 --- a/events/tests/test_views.py +++ b/events/tests/test_views.py @@ -116,6 +116,8 @@ def test_event_list(self): self.assertEqual(response.status_code, 200) self.assertEqual(len(response.context['object_list']), 6) + self.assertIn('upcoming_events', response.context) + self.assertEqual(list(response.context['upcoming_events']), list(response.context['object_list'])) url = reverse('events:event_list_past', kwargs={"calendar_slug": 'unexisting'}) response = self.client.get(url) diff --git a/events/views.py b/events/views.py index 56df88dcb..40e2ee81f 100644 --- a/events/views.py +++ b/events/views.py @@ -87,6 +87,7 @@ def get_context_data(self, **kwargs): context['events_today'] = Event.objects.until_datetime(timezone.now()).filter( calendar__slug=self.kwargs['calendar_slug'])[:2] context['calendar'] = get_object_or_404(Calendar, slug=self.kwargs['calendar_slug']) + context['upcoming_events'] = self.get_queryset() return context From 2a81f76a3b86cd078786ab737bbf3811b8883545 Mon Sep 17 00:00:00 2001 From: Jacob Coffee <jacob@z7x.org> Date: Tue, 29 Jul 2025 17:40:51 -0400 Subject: [PATCH 215/256] fix: order events properly (#2759) --- events/views.py | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/events/views.py b/events/views.py index 40e2ee81f..a9d6c8fb3 100644 --- a/events/views.py +++ b/events/views.py @@ -44,16 +44,26 @@ class EventHomepage(ListView): def get_queryset(self) -> Event: """Queryset to return all events, ordered by START date.""" - return Event.objects.all().order_by("-occurring_rule__dt_start") + return Event.objects.all().order_by("occurring_rule__dt_start") def get_context_data(self, **kwargs: dict) -> dict: """Add more ctx, specifically events that are happening now, just missed, and upcoming.""" context = super().get_context_data(**kwargs) - context["events_just_missed"] = Event.objects.until_datetime(timezone.now())[:2] - context["upcoming_events"] = Event.objects.for_datetime(timezone.now()) + + # past events, most recent first + past_events = list(Event.objects.until_datetime(timezone.now())) + past_events.sort(key=lambda e: e.previous_time.dt_start if e.previous_time else timezone.now(), reverse=True) + context["events_just_missed"] = past_events[:2] + + # upcoming events, soonest first + upcoming = list(Event.objects.for_datetime(timezone.now())) + upcoming.sort(key=lambda e: e.next_time.dt_start if e.next_time else timezone.now()) + context["upcoming_events"] = upcoming + + # right now, soonest first context["events_now"] = Event.objects.filter( occurring_rule__dt_start__lte=timezone.now(), - occurring_rule__dt_end__gte=timezone.now())[:2] + occurring_rule__dt_end__gte=timezone.now()).order_by('occurring_rule__dt_start')[:2] return context @@ -79,15 +89,19 @@ def get_context_data(self, **kwargs): class EventList(EventListBase): def get_queryset(self): - return Event.objects.for_datetime(timezone.now()).filter(calendar__slug=self.kwargs['calendar_slug']).order_by( - 'occurring_rule__dt_start') + return Event.objects.for_datetime(timezone.now()).filter(calendar__slug=self.kwargs['calendar_slug']).order_by('occurring_rule__dt_start') def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context['events_today'] = Event.objects.until_datetime(timezone.now()).filter( - calendar__slug=self.kwargs['calendar_slug'])[:2] + + # today's events, most recent first + today_events = list(Event.objects.until_datetime(timezone.now()).filter( + calendar__slug=self.kwargs['calendar_slug'])) + today_events.sort(key=lambda e: e.previous_time.dt_start if e.previous_time else timezone.now(), reverse=True) + context['events_today'] = today_events[:2] context['calendar'] = get_object_or_404(Calendar, slug=self.kwargs['calendar_slug']) - context['upcoming_events'] = self.get_queryset() + context['upcoming_events'] = context['object_list'] + return context From 93d17e331870daf269775bff4e2948fc69bd505c Mon Sep 17 00:00:00 2001 From: Malcolm Smith <smith@chaquo.com> Date: Thu, 7 Aug 2025 16:21:29 +0100 Subject: [PATCH 216/256] Add Android release support (#2762) Add Android support --- fixtures/downloads.json | 335 +++++++++++++++++++++++++++++++ fixtures/sitetree_menus.json | 28 ++- templates/downloads/os_list.html | 5 + 3 files changed, 366 insertions(+), 2 deletions(-) diff --git a/fixtures/downloads.json b/fixtures/downloads.json index 0f9f1ce10..f49e18c5e 100644 --- a/fixtures/downloads.json +++ b/fixtures/downloads.json @@ -35,6 +35,18 @@ "slug": "source" } }, +{ + "model": "downloads.os", + "pk": 4, + "fields": { + "created": "2025-08-06T17:02:24.294Z", + "updated": "2025-08-06T17:02:24.296Z", + "creator": 1, + "last_modified_by": null, + "name": "Android", + "slug": "android" + } +}, { "model": "downloads.release", "pk": 1, @@ -7441,6 +7453,29 @@ "_content_rendered": "<p><strong>Note:</strong> The release you are looking at is <strong>Python 3.7.14</strong>, a <strong>security bugfix release</strong> for the legacy <strong>3.7</strong> series which is now in the <strong>security fix</strong> phase of its life cycle. See the <a class=\"reference external\" href=\"/downloads/\">downloads page</a> for currently supported versions of Python and for the most recent source-only <strong>security fix</strong> release for 3.7. The final <strong>bugfix release</strong> with binary installers for 3.7 was <a class=\"reference external\" href=\"/downloads/release/python-379/\">3.7.9</a>.</p>\n<p>Please see the <a class=\"reference external\" href=\"https://docs.python.org/release/3.7.14/whatsnew/changelog.html#changelog\">Full Changelog</a> link for more information about the contents of this release and see <a class=\"reference external\" href=\"https://docs.python.org/release/3.7.14/whatsnew/3.7.html\">What\u2019s New In Python 3.7</a> for more information about 3.7 features.</p>\n<div class=\"section\" id=\"security-content-in-this-release\">\n<h1>Security content in this release</h1>\n<ul class=\"simple\">\n<li><a class=\"reference external\" href=\"https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10735\">CVE-2020-10735</a>: converting between int and str in bases other than 2 (binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal) <a class=\"reference external\" href=\"https://docs.python.org/release/3.7.14/whatsnew/3.7.html#notable-security-feature-in-3-7-14\">now raises a ValueError</a> if the number of digits in string form is above a limit to avoid potential denial of service attacks due to the algorithmic complexity.</li>\n<li>gh-87389: http.server: Fix an open redirection vulnerability in the HTTP server when an URI path starts with //.</li>\n<li>gh-93065: Fix contextvars HAMT implementation to handle iteration over deep trees to avoid a potential crash of the interpreter.</li>\n<li>gh-80254: Raise ProgrammingError instead of segfaulting on recursive usage of cursors in sqlite3 converters.</li>\n</ul>\n</div>\n<div class=\"section\" id=\"more-resources\">\n<h1>More resources</h1>\n<ul class=\"simple\">\n<li><a class=\"reference external\" href=\"https://docs.python.org/release/3.7.14/\">Online Documentation</a></li>\n<li><a class=\"reference external\" href=\"http://www.python.org/dev/peps/pep-0537\">PEP 537</a>, 3.7 Release Schedule</li>\n<li>Report bugs at <a class=\"reference external\" href=\"https://github.com/python/cpython/issues\">https://github.com/python/cpython/issues</a>.</li>\n<li><a class=\"reference external\" href=\"/psf/donations/\">Help fund Python and its community</a>.</li>\n</ul>\n</div>\n" } }, +{ + "model": "downloads.release", + "pk": 729, + "fields": { + "created": "2025-08-06T20:41:07.457Z", + "updated": "2025-08-06T20:44:16.512Z", + "creator": 1, + "last_modified_by": 1, + "name": "Python 3.14.0rc1", + "slug": "python-3140rc1", + "version": 3, + "is_latest": false, + "is_published": true, + "pre_release": true, + "show_on_download_page": true, + "release_date": "2025-08-06T20:39:16Z", + "release_page": null, + "release_notes_url": "https://docs.python.org/3.14/whatsnew/3.14.html", + "content": "[It's](https://www.youtube.com/watch?v=ydyXFUmv6S4) the first 3.14 release candidate!", + "content_markup_type": "markdown", + "_content_rendered": "<p><a href=\"https://www.youtube.com/watch?v=ydyXFUmv6S4\">It's</a> the first 3.14 release candidate!</p>" + } +}, { "model": "downloads.releasefile", "pk": 1, @@ -63032,4 +63067,304 @@ "download_button": false } } +{ + "model": "downloads.releasefile", + "pk": 3880, + "fields": { + "created": "2025-08-06T21:13:43.643Z", + "updated": "2025-08-06T21:13:43.647Z", + "creator": null, + "last_modified_by": null, + "name": "Android embeddable package (aarch64)", + "slug": "3140-rc1-Android-embeddable-package-aarch64", + "os": 4, + "release": 729, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-aarch64-linux-android.tar.gz", + "gpg_signature_file": "", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-aarch64-linux-android.tar.gz.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-aarch64-linux-android.tar.gz.crt", + "sigstore_bundle_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-aarch64-linux-android.tar.gz.sigstore", + "sbom_spdx2_file": "", + "md5_sum": "4a1b2748bf64b54b226b40f845de9e6a", + "filesize": 29099264, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3881, + "fields": { + "created": "2025-08-06T21:13:43.664Z", + "updated": "2025-08-06T21:13:43.667Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (64-bit)", + "slug": "3140-rc1-Windows-installer-64-bit", + "os": 1, + "release": 729, + "description": "Recommended", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-amd64.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-amd64.exe.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-amd64.exe.crt", + "sigstore_bundle_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-amd64.exe.sigstore", + "sbom_spdx2_file": "", + "md5_sum": "b674030fe04f2d5c4c1385237998a10c", + "filesize": 29924384, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3882, + "fields": { + "created": "2025-08-06T21:13:43.678Z", + "updated": "2025-08-06T21:13:43.681Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (64-bit)", + "slug": "3140-rc1-Windows-embeddable-package-64-bit", + "os": 1, + "release": 729, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-embed-amd64.zip", + "gpg_signature_file": "", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-embed-amd64.zip.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-embed-amd64.zip.crt", + "sigstore_bundle_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-embed-amd64.zip.sigstore", + "sbom_spdx2_file": "", + "md5_sum": "58da6dd39544a56d8d387d42c3397460", + "filesize": 11972759, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3883, + "fields": { + "created": "2025-08-06T21:13:43.692Z", + "updated": "2025-08-06T21:13:43.695Z", + "creator": null, + "last_modified_by": null, + "name": "Windows release manifest", + "slug": "3140-rc1-Windows-release-manifest", + "os": 1, + "release": 729, + "description": "Install with 'py install 3.14'", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.14.0/windows-3.14.0rc1.json", + "gpg_signature_file": "", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.14.0/windows-3.14.0rc1.json.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.14.0/windows-3.14.0rc1.json.crt", + "sigstore_bundle_file": "https://www.python.org/ftp/python/3.14.0/windows-3.14.0rc1.json.sigstore", + "sbom_spdx2_file": "", + "md5_sum": "3a140287b276a6d661790687b9fdd081", + "filesize": 15669, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3884, + "fields": { + "created": "2025-08-06T21:13:43.707Z", + "updated": "2025-08-06T21:13:43.709Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (32-bit)", + "slug": "3140-rc1-Windows-installer-32-bit", + "os": 1, + "release": 729, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1.exe.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1.exe.crt", + "sigstore_bundle_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1.exe.sigstore", + "sbom_spdx2_file": "", + "md5_sum": "bad58261535240afd04f6e98510321df", + "filesize": 28481000, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3885, + "fields": { + "created": "2025-08-06T21:13:43.719Z", + "updated": "2025-08-06T21:13:43.722Z", + "creator": null, + "last_modified_by": null, + "name": "macOS 64-bit universal2 installer", + "slug": "3140-rc1-macOS-64-bit-universal2-installer", + "os": 2, + "release": 729, + "description": "for macOS 10.13 and later", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-macos11.pkg", + "gpg_signature_file": "", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-macos11.pkg.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-macos11.pkg.crt", + "sigstore_bundle_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-macos11.pkg.sigstore", + "sbom_spdx2_file": "", + "md5_sum": "88d1bed73bde571e5cae6afaeb636331", + "filesize": 74569591, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3886, + "fields": { + "created": "2025-08-06T21:13:43.732Z", + "updated": "2025-08-06T21:13:43.734Z", + "creator": null, + "last_modified_by": null, + "name": "Windows installer (ARM64)", + "slug": "3140-rc1-Windows-installer-ARM64", + "os": 1, + "release": 729, + "description": "Experimental", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-arm64.exe", + "gpg_signature_file": "", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-arm64.exe.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-arm64.exe.crt", + "sigstore_bundle_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-arm64.exe.sigstore", + "sbom_spdx2_file": "", + "md5_sum": "19956541e2ccfea8d9c1be2843271fc9", + "filesize": 29132600, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3887, + "fields": { + "created": "2025-08-06T21:13:43.743Z", + "updated": "2025-08-06T21:13:43.746Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (32-bit)", + "slug": "3140-rc1-Windows-embeddable-package-32-bit", + "os": 1, + "release": 729, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-embed-win32.zip", + "gpg_signature_file": "", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-embed-win32.zip.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-embed-win32.zip.crt", + "sigstore_bundle_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-embed-win32.zip.sigstore", + "sbom_spdx2_file": "", + "md5_sum": "20c52ba256be93ef49a87f462a324723", + "filesize": 10571221, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3888, + "fields": { + "created": "2025-08-06T21:13:43.754Z", + "updated": "2025-08-06T21:13:43.756Z", + "creator": null, + "last_modified_by": null, + "name": "XZ compressed source tarball", + "slug": "3140-rc1-XZ-compressed-source-tarball", + "os": 3, + "release": 729, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.14.0/Python-3.14.0rc1.tar.xz", + "gpg_signature_file": "", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.14.0/Python-3.14.0rc1.tar.xz.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.14.0/Python-3.14.0rc1.tar.xz.crt", + "sigstore_bundle_file": "https://www.python.org/ftp/python/3.14.0/Python-3.14.0rc1.tar.xz.sigstore", + "sbom_spdx2_file": "", + "md5_sum": "48c4518c06dcb675c24276c56f69b9fd", + "filesize": 23661916, + "download_button": true + } +}, +{ + "model": "downloads.releasefile", + "pk": 3889, + "fields": { + "created": "2025-08-06T21:13:43.766Z", + "updated": "2025-08-06T21:13:43.768Z", + "creator": null, + "last_modified_by": null, + "name": "Windows embeddable package (ARM64)", + "slug": "3140-rc1-Windows-embeddable-package-ARM64", + "os": 1, + "release": 729, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-embed-arm64.zip", + "gpg_signature_file": "", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-embed-arm64.zip.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-embed-arm64.zip.crt", + "sigstore_bundle_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-embed-arm64.zip.sigstore", + "sbom_spdx2_file": "", + "md5_sum": "709fc10a10cf3ad9633222827ca2abf5", + "filesize": 11165022, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3890, + "fields": { + "created": "2025-08-06T21:13:43.776Z", + "updated": "2025-08-06T21:13:43.778Z", + "creator": null, + "last_modified_by": null, + "name": "Gzipped source tarball", + "slug": "3140-rc1-Gzipped-source-tarball", + "os": 3, + "release": 729, + "description": "", + "is_source": true, + "url": "https://www.python.org/ftp/python/3.14.0/Python-3.14.0rc1.tgz", + "gpg_signature_file": "", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.14.0/Python-3.14.0rc1.tgz.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.14.0/Python-3.14.0rc1.tgz.crt", + "sigstore_bundle_file": "https://www.python.org/ftp/python/3.14.0/Python-3.14.0rc1.tgz.sigstore", + "sbom_spdx2_file": "", + "md5_sum": "11fba5eb7576c1889498af3f8555ed2d", + "filesize": 30639704, + "download_button": false + } +}, +{ + "model": "downloads.releasefile", + "pk": 3891, + "fields": { + "created": "2025-08-06T21:13:43.786Z", + "updated": "2025-08-06T21:13:43.788Z", + "creator": null, + "last_modified_by": null, + "name": "Android embeddable package (x86_64)", + "slug": "3140-rc1-Android-embeddable-package-x86_64", + "os": 4, + "release": 729, + "description": "", + "is_source": false, + "url": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-x86_64-linux-android.tar.gz", + "gpg_signature_file": "", + "sigstore_signature_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-x86_64-linux-android.tar.gz.sig", + "sigstore_cert_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-x86_64-linux-android.tar.gz.crt", + "sigstore_bundle_file": "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-x86_64-linux-android.tar.gz.sigstore", + "sbom_spdx2_file": "", + "md5_sum": "3eb6b0c0c03a81c8444300c00724cac5", + "filesize": 29272204, + "download_button": false + } +} ] diff --git a/fixtures/sitetree_menus.json b/fixtures/sitetree_menus.json index f394233ee..59f387f91 100644 --- a/fixtures/sitetree_menus.json +++ b/fixtures/sitetree_menus.json @@ -507,7 +507,7 @@ "access_restricted": false, "access_perm_type": 1, "parent": 8, - "sort_order": 23, + "sort_order": 24, "access_permissions": [] } }, @@ -531,7 +531,7 @@ "access_restricted": false, "access_perm_type": 1, "parent": 8, - "sort_order": 24, + "sort_order": 25, "access_permissions": [] } }, @@ -2742,5 +2742,29 @@ "sort_order": 123, "access_permissions": [] } +}, +{ + "model": "sitetree.treeitem", + "pk": 124, + "fields": { + "title": "Android", + "hint": "", + "url": "/downloads/android/", + "urlaspattern": false, + "tree": 1, + "hidden": false, + "alias": null, + "description": "", + "inmenu": true, + "inbreadcrumbs": true, + "insitetree": true, + "access_loggedin": false, + "access_guest": false, + "access_restricted": false, + "access_perm_type": 1, + "parent": 8, + "sort_order": 23, + "access_permissions": [] + } } ] diff --git a/templates/downloads/os_list.html b/templates/downloads/os_list.html index b110e57b1..127b21a7c 100644 --- a/templates/downloads/os_list.html +++ b/templates/downloads/os_list.html @@ -35,6 +35,11 @@ <h1 class="page-title">Python Releases for {{ os.name }}</h1> <li><a href="{{ latest_python3.get_absolute_url }}">Latest Python 3 Release - {{ latest_python3.name }}</a></li> </ul> + + {% if os.slug == 'android' %} + <p>Rather than using these packages directly, in most cases you should use one of the tools recommended in the <a href="https://docs.python.org/3/using/android.html">Python documentation</a>.</p> + {% endif %} + <div class="col-row two-col"> <div class="column"> <h2>Stable Releases</h2> From 805bb677833ad392cb69d64851b36862223b07c9 Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Thu, 7 Aug 2025 23:44:26 -0400 Subject: [PATCH 217/256] Apply for floss.fund (#2763) * Fix broken fixture * serve /funding.json --- fixtures/downloads.json | 2 +- pydotorg/urls.py | 1 + pydotorg/views.py | 17 +++- static/funding.json | 205 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 223 insertions(+), 2 deletions(-) create mode 100644 static/funding.json diff --git a/fixtures/downloads.json b/fixtures/downloads.json index f49e18c5e..e0eb0b1f4 100644 --- a/fixtures/downloads.json +++ b/fixtures/downloads.json @@ -63066,7 +63066,7 @@ "filesize": 18121168, "download_button": false } -} +}, { "model": "downloads.releasefile", "pk": 3880, diff --git a/pydotorg/urls.py b/pydotorg/urls.py index f87ab496b..8a70d5790 100644 --- a/pydotorg/urls.py +++ b/pydotorg/urls.py @@ -21,6 +21,7 @@ path('authenticated', views.AuthenticatedView.as_view(), name='authenticated'), re_path(r'^humans.txt$', TemplateView.as_view(template_name='humans.txt', content_type='text/plain')), re_path(r'^robots.txt$', TemplateView.as_view(template_name='robots.txt', content_type='text/plain')), + re_path(r'^funding.json$', views.serve_funding_json, name='funding_json'), path('shell/', TemplateView.as_view(template_name="python/shell.html"), name='shell'), # python section landing pages diff --git a/pydotorg/views.py b/pydotorg/views.py index 9777cf1aa..bbc30ec51 100644 --- a/pydotorg/views.py +++ b/pydotorg/views.py @@ -1,5 +1,7 @@ +import json +import os from django.conf import settings -from django.http import HttpResponse +from django.http import HttpResponse, JsonResponse from django.views.generic.base import RedirectView, TemplateView from codesamples.models import CodeSample @@ -10,6 +12,19 @@ def health(request): return HttpResponse('OK') +def serve_funding_json(request): + """Serve the funding.json file from the static directory.""" + funding_json_path = os.path.join(settings.BASE, 'static', 'funding.json') + try: + with open(funding_json_path, 'r') as f: + data = json.load(f) + return JsonResponse(data) + except FileNotFoundError: + return JsonResponse({'error': 'funding.json not found'}, status=404) + except json.JSONDecodeError: + return JsonResponse({'error': 'Invalid JSON in funding.json'}, status=500) + + class IndexView(TemplateView): template_name = "python/index.html" diff --git a/static/funding.json b/static/funding.json new file mode 100644 index 000000000..e1af9148a --- /dev/null +++ b/static/funding.json @@ -0,0 +1,205 @@ +{ + "version": "v1.0.0", + "entity": { + "type": "organisation", + "role": "owner", + "name": "Python Software Foundation", + "email": "sponsors@python.org", + "description": "The Python Software Foundation is the charitable organization behind the Python programming language. The mission of the Python Software Foundation 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.", + "webpageUrl": { + "url": "https://www.python.org/psf" + } + }, + "projects": [ + { + "guid": "cpython", + "name": "CPython", + "description": "Python is an open-source programming language. By several measures, it is the most widely used programming language in the world. At our last measurement, python.org served over 110 billion downloads for Python releases annually.", + "webpageUrl": { + "url": "https://www.python.org/" + }, + "repositoryUrl": { + "url": "https://github.com/python/cpython", + "wellKnown": "https://github.com/python/cpython/blob/main/.well-known/funding-manifest-urls" + }, + "licenses": [ + "Python Software Foundation License Version 2" + ], + "tags": [ + "python" + ] + }, + { + "guid": "pypi", + "name": "Python Package Index", + "description": "PyPI is a public repository of software that is free to use for distributing and downloading bundles of Python software. PyPI is a free service the Python Software Foundation maintains and provides to the public.", + "webpageUrl": { + "url": "https://pypi.org/", + "wellKnown": "https://pypi.org/.well-known/funding-manifest-urls" + }, + "repositoryUrl": { + "url": "https://github.com/pypi/warehouse", + "wellKnown": "https://github.com/pypi/warehouse/blob/main/warehouse/templates/funding-manifest-urls.txt" + }, + "licenses": [ + "Apache 2.0 License" + ], + "tags": [ + "python", + "packaging" + ] + }, + { + "guid": "pyconus", + "name": "PyCon US", + "description": "PyCon US is the largest annual gathering for the Python community. Each year, the community comes together to network, learn, share ideas, and create new relationships and partnerships.", + "webpageUrl": { + "url": "https://us.pycon.org/", + "wellKnown": "https://us.pycon.org/.well-known/funding-manifest-urls" + }, + "repositoryUrl": { + "url": "https://github.com/psf/pycon-us-mobile", + "wellKnown": "https://github.com/psf/pycon-us-mobile/blob/main/.well-known/funding-manifest-urls" + }, + "licenses": [ + "MIT" + ], + "tags": [ + "python", + "community", + "events" + ] + }, + { + "guid": "community", + "name": "Global Community Support", + "description": "The PSF Grants Program supports a thriving global network of regional Python events, workshops, user groups, communities, and initiatives.", + "webpageUrl": { + "url": "https://www.python.org/psf/grants/" + }, + "repositoryUrl": { + "url": "https://github.com/psf/.github", + "wellKnown": "https://github.com/psf/.github/blob/main/.well-known/funding-manifest-urls" + }, + "licenses": [ + "MIT" + ], + "tags": [ + "python", + "community", + "networking" + ] + } + ], + "funding": { + "channels": [ + { + "guid": "paypal", + "type": "payment-provider", + "address": "https://psfmember.org/civicrm/contribute/transact?reset=1&id=2", + "description": "Donate directly via PayPal" + }, + { + "guid": "paypal-member", + "type": "payment-provider", + "address": "https://psfmember.org/civicrm/contribute/transact/?reset=1&id=1", + "description": "Become a Supporting Member via PayPal" + }, + { + "guid": "github", + "type": "payment-provider", + "address": "https://github.com/sponsors/psf", + "description": "Donate via GitHub Sponsors, and get recognized on your GitHub profile" + }, + { + "guid": "bank", + "type": "bank", + "address": "sponsors@python.org", + "description": "Please email us for ACH payment details." + } + ], + "plans": [ + { + "guid": "supportingmember", + "status": "active", + "name": "Supporting Member - Individual", + "amount": 99, + "currency": "USD", + "frequency": "yearly", + "channels": ["paypal-member"] + }, + { + "guid": "visionary", + "status": "active", + "name": "Visionary Sponsor", + "amount": 155000, + "currency": "USD", + "frequency": "yearly", + "channels": ["bank"] + }, + { + "guid": "sustainability", + "status": "active", + "name": "Sustainability Sponsor", + "amount": 95000, + "currency": "USD", + "frequency": "yearly", + "channels": ["bank"] + }, + { + "guid": "maintaining", + "status": "active", + "name": "Maintaining Sponsor", + "amount": 63000, + "currency": "USD", + "frequency": "yearly", + "channels": ["bank"] + }, + { + "guid": "contributing", + "status": "active", + "name": "Contributing Sponsor", + "amount": 33000, + "currency": "USD", + "frequency": "yearly", + "channels": ["bank"] + }, + { + "guid": "supporting", + "status": "active", + "name": "Supporting Sponsor", + "amount": 16500, + "currency": "USD", + "frequency": "yearly", + "channels": ["bank"] + }, + { + "guid": "partner", + "status": "active", + "name": "Partner Sponsor", + "amount": 11000, + "currency": "USD", + "frequency": "yearly", + "channels": ["bank"] + }, + { + "guid": "participating", + "status": "active", + "name": "Participating Sponsor", + "amount": 4000, + "currency": "USD", + "frequency": "yearly", + "channels": ["paypal", "github", "bank"] + }, + { + "guid": "associate", + "status": "active", + "name": "Associate Sponsor", + "amount": 1500, + "currency": "USD", + "frequency": "yearly", + "channels": ["paypal", "github", "bank"] + } + ] + } +} From b6587be039fe5d3020707c8f2e60591f59178430 Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Fri, 8 Aug 2025 06:05:57 -0400 Subject: [PATCH 218/256] Update funding.json --- static/funding.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/funding.json b/static/funding.json index e1af9148a..92fc307cb 100644 --- a/static/funding.json +++ b/static/funding.json @@ -39,7 +39,7 @@ }, "repositoryUrl": { "url": "https://github.com/pypi/warehouse", - "wellKnown": "https://github.com/pypi/warehouse/blob/main/warehouse/templates/funding-manifest-urls.txt" + "wellKnown": "https://github.com/pypi/warehouse/blob/main/warehouse/.well-known/funding-manifest-urls" }, "licenses": [ "Apache 2.0 License" From 4a0648b2e30d9d9cb30b21fabdc2b0680cfae3e9 Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Fri, 8 Aug 2025 06:06:30 -0400 Subject: [PATCH 219/256] Update funding.json --- static/funding.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/funding.json b/static/funding.json index 92fc307cb..a7f09a99a 100644 --- a/static/funding.json +++ b/static/funding.json @@ -39,7 +39,7 @@ }, "repositoryUrl": { "url": "https://github.com/pypi/warehouse", - "wellKnown": "https://github.com/pypi/warehouse/blob/main/warehouse/.well-known/funding-manifest-urls" + "wellKnown": "https://github.com/pypi/warehouse/blob/main/.well-known/funding-manifest-urls" }, "licenses": [ "Apache 2.0 License" From f220ee78183beca99835d0200f6312453838ef41 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Aug 2025 21:16:25 -0500 Subject: [PATCH 220/256] chore(deps): bump actions/checkout from 4 to 5 in the github-actions group (#2765) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/static.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4328adf50..05ede12f3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: Check out repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Install platform dependencies run: | sudo apt -y update diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index d29c620ee..9329c2c8a 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 - uses: actions/setup-python@v5 with: python-version-file: '.python-version' From 1ba382822b9cd56db03d76eed5a6ddd68a9e32e7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Sep 2025 11:05:00 -0500 Subject: [PATCH 221/256] chore(deps): bump actions/setup-python from 5 to 6 in the github-actions group (#2768) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/static.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 05ede12f3..23c5ad626 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,7 @@ jobs: run: | wget https://github.com/jgm/pandoc/releases/download/2.17.1.1/pandoc-2.17.1.1-1-amd64.deb sudo dpkg -i pandoc-2.17.1.1-1-amd64.deb - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version-file: '.python-version' - name: Cache Python dependencies diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 9329c2c8a..7941021ca 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -8,7 +8,7 @@ jobs: steps: - name: Check out repository uses: actions/checkout@v5 - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version-file: '.python-version' - name: Cache Python dependencies From a7cb7147e5bebbbee8391ef7ed7bec5344be82cb Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Wed, 17 Sep 2025 13:49:02 +0100 Subject: [PATCH 222/256] Link 'GPG' in downloads table to more info (#2772) --- templates/downloads/release_detail.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/downloads/release_detail.html b/templates/downloads/release_detail.html index 0ddcde32a..cb46e126c 100644 --- a/templates/downloads/release_detail.html +++ b/templates/downloads/release_detail.html @@ -53,7 +53,7 @@ <h1 class="page-title">Files</h1> <th>MD5 Sum</th> <th>File Size</th> {% if release_files|has_gpg %} - <th>GPG</th> + <th><a href="https://www.python.org/downloads/#gpg">GPG</a></th> {% endif %} {% if release_files|has_sigstore_materials %} <th colspan="2"><a href="https://www.python.org/download/sigstore/">Sigstore</a></th> From ad226ec288d0409ba38d6fb7becfe93ae4d9b88a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 10:47:19 -0500 Subject: [PATCH 223/256] chore(deps): bump whitenoise from 6.6.0 to 6.11.0 (#2778) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- prod-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prod-requirements.txt b/prod-requirements.txt index 72bf30dcd..28b186f6a 100644 --- a/prod-requirements.txt +++ b/prod-requirements.txt @@ -3,6 +3,6 @@ gunicorn==23.0.0 raven==6.10.0 # Heroku -Whitenoise==6.6.0 # 6.4.0 is first version that supports Django 4.2 +Whitenoise==6.11.0 # 6.4.0 is first version that supports Django 4.2 django-storages==1.14.4 # 1.14.4 is first version that supports Django 4.2 boto3==1.26.165 From b569dc86897ec279c7bc34a141aa0e3517d5ee32 Mon Sep 17 00:00:00 2001 From: Sohan Shanbhag <127968647+sohanshanbhag1502@users.noreply.github.com> Date: Tue, 23 Sep 2025 20:39:49 +0530 Subject: [PATCH 224/256] fix(Frontend): Fixed Issue #1433 "Wrong arrow when select Community" (#2777) --- templates/community/post_detail.html | 2 +- templates/community/post_list.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/community/post_detail.html b/templates/community/post_detail.html index ccd29d77c..502b49a43 100644 --- a/templates/community/post_detail.html +++ b/templates/community/post_detail.html @@ -3,7 +3,7 @@ {% block page_title %}{{ object.title }} | {{ SITE_INFO.site_name }}{% endblock %} {% block og_title %}{{ object.title }}{% endblock %} -{% block body_attributes %}class="python community default-page"{% endblock %} +{% block body_attributes %}class="shop community default-page"{% endblock %} {% block main-nav_attributes %}community-navigation{% endblock main-nav_attributes %} diff --git a/templates/community/post_list.html b/templates/community/post_list.html index 627fd2912..b5e10bfe5 100644 --- a/templates/community/post_list.html +++ b/templates/community/post_list.html @@ -5,7 +5,7 @@ {% block page_title %}Our Community | {{ SITE_INFO.site_name }}{% endblock %} {% block og_title %}Our Community{% endblock %} -{% block body_attributes %}class="python community"{% endblock %} +{% block body_attributes %}class="shop"{% endblock %} {% block main-nav_attributes %}python-navigation{% endblock main-nav_attributes %} From 5c61eb5f77f244585e14fcbb3a53047f51d024e1 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Tue, 30 Sep 2025 17:38:29 +0300 Subject: [PATCH 225/256] Prioritise Sigstore over GPG in downloads table (#2783) --- templates/downloads/release_detail.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/templates/downloads/release_detail.html b/templates/downloads/release_detail.html index cb46e126c..db49d974e 100644 --- a/templates/downloads/release_detail.html +++ b/templates/downloads/release_detail.html @@ -52,15 +52,15 @@ <h1 class="page-title">Files</h1> <th>Description</th> <th>MD5 Sum</th> <th>File Size</th> - {% if release_files|has_gpg %} - <th><a href="https://www.python.org/downloads/#gpg">GPG</a></th> - {% endif %} {% if release_files|has_sigstore_materials %} <th colspan="2"><a href="https://www.python.org/download/sigstore/">Sigstore</a></th> {% endif %} {% if release_files|has_sbom %} <th><a href="https://www.python.org/download/sbom/">SBOM</a></th> {% endif %} + {% if release_files|has_gpg %} + <th><a href="https://www.python.org/downloads/#gpg">GPG</a></th> + {% endif %} </tr> </thead> <tbody> @@ -71,9 +71,6 @@ <h1 class="page-title">Files</h1> <td>{{ f.description }}</td> <td>{{ f.md5_sum }}</td> <td>{{ f.filesize|filesizeformat }}</td> - {% if release_files|has_gpg %} - <td>{% if f.gpg_signature_file %}<a href="{{ f.gpg_signature_file }}">SIG</a>{% endif %}</td> - {% endif %} {% if release_files|has_sigstore_materials %} {% if f.sigstore_bundle_file %} <td colspan="2">{% if f.sigstore_bundle_file %}<a href="{{ f.sigstore_bundle_file}}">.sigstore</a>{% endif %}</td> @@ -85,6 +82,9 @@ <h1 class="page-title">Files</h1> {% if release_files|has_sbom %} <td>{% if f.sbom_spdx2_file %}<a href="{{ f.sbom_spdx2_file }}">SPDX</a>{% endif %}</td> {% endif %} + {% if release_files|has_gpg %} + <td>{% if f.gpg_signature_file %}<a href="{{ f.gpg_signature_file }}">SIG</a>{% endif %}</td> + {% endif %} </tr> {% endfor %} </tbody> From 700120f742cd1175d164018c0bcef60456787292 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Oct 2025 23:03:35 +0000 Subject: [PATCH 226/256] chore(deps): bump django from 4.2.22 to 4.2.25 (#2784) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index cd8474961..c0515c27f 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -4,7 +4,7 @@ django-sitetree==1.18.0 # >=1.17.1 is (?) first version that supports Django 4. django-apptemplates==1.5 django-admin-interface==0.28.9 django-translation-aliases==0.1.0 -Django==4.2.22 +Django==4.2.25 docutils==0.21.2 Markdown==3.7 cmarkgfm==2024.11.20 From dd0a24bd1ba267b878fd9edfe92b3c2b2434603b Mon Sep 17 00:00:00 2001 From: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com> Date: Thu, 2 Oct 2025 18:32:46 +0100 Subject: [PATCH 227/256] Change "Non-English Docs" link to the translation dashboard (#2776) --- fixtures/sitetree_menus.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fixtures/sitetree_menus.json b/fixtures/sitetree_menus.json index 59f387f91..70de29110 100644 --- a/fixtures/sitetree_menus.json +++ b/fixtures/sitetree_menus.json @@ -661,7 +661,7 @@ "fields": { "title": "Non-English Docs", "hint": "", - "url": "http://wiki.python.org/moin/Languages", + "url": "https://python-docs-translations.github.io/dashboard/", "urlaspattern": false, "tree": 1, "hidden": false, From b9f398cb22bbaad62cf64a159a728386610f7e26 Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Mon, 6 Oct 2025 13:32:56 -0400 Subject: [PATCH 228/256] remove all feedburner urls, ref #2787 (#2788) --- pydotorg/settings/base.py | 2 +- templates/base.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pydotorg/settings/base.py b/pydotorg/settings/base.py index 2c392b355..0fac91eb1 100644 --- a/pydotorg/settings/base.py +++ b/pydotorg/settings/base.py @@ -278,7 +278,7 @@ HONEYPOT_VALUE = 'write your message' ### Blog Feed URL -PYTHON_BLOG_FEED_URL = "https://feeds.feedburner.com/PythonInsider" +PYTHON_BLOG_FEED_URL = "https://blog.python.org/feeds/posts/default?alt=rss" PYTHON_BLOG_URL = "https://blog.python.org" ### Registration mailing lists diff --git a/templates/base.html b/templates/base.html index f66f80ca9..527baf616 100644 --- a/templates/base.html +++ b/templates/base.html @@ -84,9 +84,9 @@ <link rel="alternate" type="application/rss+xml" title="Python Job Opportunities" href="https://www.python.org/jobs/feed/rss/"> <link rel="alternate" type="application/rss+xml" title="Python Software Foundation News" - href="https://feeds.feedburner.com/PythonSoftwareFoundationNews"> + href="https://pyfound.blogspot.com/feeds/posts/default?alt=rss"> <link rel="alternate" type="application/rss+xml" title="Python Insider" - href="https://feeds.feedburner.com/PythonInsider"> + href="https://blog.python.org/feeds/posts/default?alt=rss"> <link rel="alternate" type="application/rss+xml" title="Python Releases" href="https://www.python.org/downloads/feed.rss"> From 4218afeb0af61a217bab41003981b444a48f4aef Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Wed, 8 Oct 2025 10:34:17 -0400 Subject: [PATCH 229/256] migrate from raven to sentry sdk (#2789) --- prod-requirements.txt | 2 +- pydotorg/settings/cabotage.py | 19 ++++++++++--------- pydotorg/settings/static.py | 1 - 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/prod-requirements.txt b/prod-requirements.txt index 28b186f6a..bf48d2731 100644 --- a/prod-requirements.txt +++ b/prod-requirements.txt @@ -1,6 +1,6 @@ gunicorn==23.0.0 -raven==6.10.0 +sentry-sdk[django]==2.40.0 # Heroku Whitenoise==6.11.0 # 6.4.0 is first version that supports Django 4.2 diff --git a/pydotorg/settings/cabotage.py b/pydotorg/settings/cabotage.py index 4661fbf66..654db889e 100644 --- a/pydotorg/settings/cabotage.py +++ b/pydotorg/settings/cabotage.py @@ -1,7 +1,8 @@ import os import dj_database_url -import raven +import sentry_sdk +from sentry_sdk.integrations.django import DjangoIntegration from decouple import Csv from .base import * @@ -71,14 +72,14 @@ SESSION_COOKIE_SECURE = True CSRF_COOKIE_SECURE = True -INSTALLED_APPS += [ - "raven.contrib.django.raven_compat", -] - -RAVEN_CONFIG = { - "dsn": config('SENTRY_DSN'), - "release": config('SOURCE_COMMIT'), -} +sentry_sdk.init( + dsn=config('SENTRY_DSN'), + integrations=[DjangoIntegration()], + release=config('SOURCE_COMMIT'), + send_default_pii=True, + traces_sample_rate=0.1, + profiles_sample_rate=0.1, +) AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID') AWS_SECRET_ACCESS_KEY = config('AWS_SECRET_ACCESS_KEY') diff --git a/pydotorg/settings/static.py b/pydotorg/settings/static.py index 5dcbf6f92..49b7c643c 100644 --- a/pydotorg/settings/static.py +++ b/pydotorg/settings/static.py @@ -1,7 +1,6 @@ import os import dj_database_url -import raven from decouple import Csv from .base import * From e8ac397c5b9ab8092c68a98735ee95b9cff88568 Mon Sep 17 00:00:00 2001 From: Jacob Coffee <jacob@z7x.org> Date: Wed, 8 Oct 2025 15:03:23 -0400 Subject: [PATCH 230/256] fix: handle release objects with 'invalid' names (#2790) --- downloads/models.py | 4 ++-- downloads/tests/test_models.py | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/downloads/models.py b/downloads/models.py index 3c0a74f97..6a810c393 100644 --- a/downloads/models.py +++ b/downloads/models.py @@ -125,7 +125,7 @@ def get_version(self): version = re.match(r'Python\s([\d.]+)', self.name) if version is not None: return version.group(1) - return None + return "" def is_version_at_least(self, min_version_tuple): v1 = [] @@ -291,7 +291,7 @@ def purge_fastly_download_pages(sender, instance, **kwargs): purge_url('/downloads/source/') purge_url('/downloads/windows/') purge_url('/ftp/python/') - if instance.get_version() is not None: + if instance.get_version(): purge_url(f'/ftp/python/{instance.get_version()}/') # See issue #584 for details purge_url('/box/supernav-python-downloads/') diff --git a/downloads/tests/test_models.py b/downloads/tests/test_models.py index d31afae5c..e73858d3b 100644 --- a/downloads/tests/test_models.py +++ b/downloads/tests/test_models.py @@ -74,7 +74,7 @@ def test_get_version_invalid(self): with self.subTest(name=name): release = Release.objects.create(name=name) self.assertEqual(release.name, name) - self.assertIsNone(release.get_version()) + self.assertEqual(release.get_version(), "") def test_is_version_at_least(self): self.assertFalse(self.release_275.is_version_at_least_3_5) @@ -87,3 +87,11 @@ def test_is_version_at_least(self): release_310 = Release.objects.create(name='Python 3.10.0') self.assertTrue(release_310.is_version_at_least_3_9) self.assertTrue(release_310.is_version_at_least_3_5) + + def test_is_version_at_least_with_invalid_name(self): + """Test that is_version_at_least returns False for releases with invalid names""" + invalid_release = Release.objects.create(name='Python install manager') + # Should return False instead of raising AttributeError + self.assertFalse(invalid_release.is_version_at_least_3_5) + self.assertFalse(invalid_release.is_version_at_least_3_9) + self.assertFalse(invalid_release.is_version_at_least_3_14) From 7a8bd53d85a6f10bc76238158c5178da93ecff41 Mon Sep 17 00:00:00 2001 From: Steve Dower <steve.dower@python.org> Date: Fri, 10 Oct 2025 20:09:43 +0100 Subject: [PATCH 231/256] Update downloads supernav page for Python install manager (#2793) --- downloads/models.py | 20 +++++++----- downloads/tests/test_models.py | 53 ++++++++++++++++++++++++++++++- templates/downloads/supernav.html | 4 ++- 3 files changed, 67 insertions(+), 10 deletions(-) diff --git a/downloads/models.py b/downloads/models.py index 6a810c393..aa929855d 100644 --- a/downloads/models.py +++ b/downloads/models.py @@ -158,24 +158,29 @@ def update_supernav(): if not latest_python3: return + try: + latest_pymanager = Release.objects.latest_pymanager() + except Release.DoesNotExist: + latest_pymanager = None + python_files = [] for o in OS.objects.all(): data = { 'os': o, 'python3': None, + 'pymanager': None, } - release_file = latest_python3.download_file_for_os(o.slug) - if not release_file: - continue - data['python3'] = release_file + data['python3'] = latest_python3.download_file_for_os(o.slug) + if latest_pymanager: + data['pymanager'] = latest_pymanager.download_file_for_os(o.slug) python_files.append(data) if not python_files: return - if not all(f['python3'] for f in python_files): + if not all(f['python3'] or f['pymanager'] for f in python_files): # We have a latest Python release, different OSes, but don't have release # files for the release, so return early. return @@ -287,6 +292,7 @@ def purge_fastly_download_pages(sender, instance, **kwargs): purge_url('/downloads/feed.rss') purge_url('/downloads/latest/python2/') purge_url('/downloads/latest/python3/') + purge_url('/downloads/latest/pymanager/') purge_url('/downloads/macos/') purge_url('/downloads/source/') purge_url('/downloads/windows/') @@ -308,9 +314,7 @@ def update_download_supernav_and_boxes(sender, instance, **kwargs): return if instance.is_published: - # Supernav only has download buttons for Python 3. - if instance.version == instance.PYTHON3: - update_supernav() + update_supernav() update_download_landing_sources_box() update_homepage_download_box() diff --git a/downloads/tests/test_models.py b/downloads/tests/test_models.py index e73858d3b..bd26c3b58 100644 --- a/downloads/tests/test_models.py +++ b/downloads/tests/test_models.py @@ -1,4 +1,4 @@ -from ..models import Release +from ..models import Release, ReleaseFile from .base import BaseDownloadTests @@ -95,3 +95,54 @@ def test_is_version_at_least_with_invalid_name(self): self.assertFalse(invalid_release.is_version_at_least_3_5) self.assertFalse(invalid_release.is_version_at_least_3_9) self.assertFalse(invalid_release.is_version_at_least_3_14) + + def test_update_supernav(self): + from ..models import update_supernav + from boxes.models import Box + + release = Release.objects.create( + name='Python install manager 25.0', + version=Release.PYMANAGER, + is_latest=True, + is_published=True, + ) + + for os, slug in [ + (self.windows, 'python3.10-windows'), + (self.osx, 'python3.10-macos'), + (self.linux, 'python3.10-linux'), + ]: + ReleaseFile.objects.create( + os=os, + release=self.python_3, + slug=slug, + name='Python 3.10', + url='/ftp/python/{}.zip'.format(slug), + download_button=True, + ) + + update_supernav() + + content = Box.objects.get(label='supernav-python-downloads').content.rendered + self.assertIn('class="download-os-windows"', content) + self.assertNotIn('pymanager-25.0.msix', content) + self.assertIn('python3.10-windows.zip', content) + self.assertIn('class="download-os-macos"', content) + self.assertIn('python3.10-macos.zip', content) + self.assertIn('class="download-os-linux"', content) + self.assertIn('python3.10-linux.zip', content) + + ReleaseFile.objects.create( + os=self.windows, + release=release, + name='MSIX', + url='/ftp/python/pymanager/pymanager-25.0.msix', + download_button=True, + ) + + update_supernav() + + content = Box.objects.get(label='supernav-python-downloads').content.rendered + self.assertIn('class="download-os-windows"', content) + self.assertIn('pymanager-25.0.msix', content) + self.assertIn('python3.10-windows.zip', content) diff --git a/templates/downloads/supernav.html b/templates/downloads/supernav.html index 12568eadb..edd23dc82 100644 --- a/templates/downloads/supernav.html +++ b/templates/downloads/supernav.html @@ -10,8 +10,10 @@ <h4>Download for {{ data.os.name }}</h4> {% if data.pymanager %} <p><a class="button" href="{{ data.pymanager.url }}">Python install manager</a></p> + {% if data.python3 %} <p>Or get the standalone installer for <a class="button" href="{{ data.python3.url }}">{{ data.python3.release.name }}</a></p> - {% else %} + {% endif %} + {% elif data.python3 %} <p> <a class="button" href="{{ data.python3.url }}">{{ data.python3.release.name }}</a> </p> From bea5da146a50459d6d7196ba60e580c078d98535 Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Thu, 30 Oct 2025 16:01:26 -0400 Subject: [PATCH 232/256] Update sponsorship-agreement.md (#2801) --- templates/sponsors/admin/contracts/sponsorship-agreement.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/sponsors/admin/contracts/sponsorship-agreement.md b/templates/sponsors/admin/contracts/sponsorship-agreement.md index 73540dbab..9e68e4d35 100644 --- a/templates/sponsors/admin/contracts/sponsorship-agreement.md +++ b/templates/sponsors/admin/contracts/sponsorship-agreement.md @@ -112,7 +112,7 @@ wishes to support the Programs by making a contribution to the PSF. >          9450 SW Gemini Dr. ECM # 90772 >          Beaverton, OR 97008 USA >          Facsimile: +1 (858) 712-8966 - >          Email: deb@python.org + >          Email: deb@python.org, with a copy to: legal@python.org   @@ -172,7 +172,7 @@ wishes to support the Programs by making a contribution to the PSF. > By:        ________________________________ > Name:   Loren Crary -> Title:     Director of Resource Development +> Title:     Deputy Executive Director   From 869bc732f99ac5c4ff69b3e4285cb45e5957c738 Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Thu, 30 Oct 2025 16:21:41 -0400 Subject: [PATCH 233/256] Add management command to reset sponsorship benefits (#2802) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a new management command `reset_sponsorship_benefits` that performs a complete clean slate reset of sponsorship benefits when sponsors transition from one year's package to another (e.g., 2025 to 2026). This addresses the issue where sponsorships created in 2025 were later assigned to 2026 packages but retained 2025 benefit configurations, templates, and asset references, causing inconsistencies in the admin interface and benefit calculations. Command features: - Deletes ALL GenericAssets linked to the sponsorship (including old year references) - Deletes ALL existing sponsor benefits (cascades to features) - Recreates all benefits fresh from the target year's package template - Updates sponsorship year to match package year (with --update-year flag) - Supports dry-run mode for safe preview (with --dry-run flag) - Uses atomic transactions to ensure data consistency - Handles edge cases: duplicates, renamed benefits, missing templates Usage: python manage.py reset_sponsorship_benefits <id> [<id> ...] --update-year python manage.py reset_sponsorship_benefits <id> --dry-run --update-year Tests added to verify: - Full 2025 to 2026 transition scenario - Duplicate benefit handling - Dry-run mode functionality - Year updates - GenericAsset cleanup - Admin visibility (template year matching) - Feature recreation with updated configurations 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude <noreply@anthropic.com> --- .../commands/reset_sponsorship_benefits.py | 214 +++++++++++ sponsors/tests/test_management_command.py | 338 +++++++++++++++++- 2 files changed, 551 insertions(+), 1 deletion(-) create mode 100644 sponsors/management/commands/reset_sponsorship_benefits.py diff --git a/sponsors/management/commands/reset_sponsorship_benefits.py b/sponsors/management/commands/reset_sponsorship_benefits.py new file mode 100644 index 000000000..16087b894 --- /dev/null +++ b/sponsors/management/commands/reset_sponsorship_benefits.py @@ -0,0 +1,214 @@ +from django.core.management.base import BaseCommand +from django.db import transaction +from sponsors.models import Sponsorship, SponsorshipBenefit + + +class Command(BaseCommand): + help = "Reset benefits for specified sponsorships to match their current package/year templates" + + def add_arguments(self, parser): + parser.add_argument( + "sponsorship_ids", + nargs="+", + type=int, + help="IDs of sponsorships to reset benefits for", + ) + parser.add_argument( + "--dry-run", + action="store_true", + help="Show what would be reset without actually doing it", + ) + parser.add_argument( + "--update-year", + action="store_true", + help="Update sponsorship year to match the package year", + ) + + def handle(self, *args, **options): + sponsorship_ids = options["sponsorship_ids"] + dry_run = options["dry_run"] + update_year = options["update_year"] + + if dry_run: + self.stdout.write(self.style.WARNING("DRY RUN MODE - No changes will be made")) + + for sid in sponsorship_ids: + try: + sponsorship = Sponsorship.objects.get(id=sid) + except Sponsorship.DoesNotExist: + self.stdout.write( + self.style.ERROR(f"Sponsorship {sid} does not exist - skipping") + ) + continue + + self.stdout.write(f"\n{'='*60}") + self.stdout.write(f"Sponsorship ID: {sid}") + self.stdout.write(f"Sponsor: {sponsorship.sponsor.name}") + self.stdout.write(f"Package: {sponsorship.package.name if sponsorship.package else 'None'}") + self.stdout.write(f"Sponsorship Year: {sponsorship.year}") + if sponsorship.package: + self.stdout.write(f"Package Year: {sponsorship.package.year}") + self.stdout.write(f"Status: {sponsorship.status}") + self.stdout.write(f"{'='*60}") + + if not sponsorship.package: + self.stdout.write( + self.style.WARNING(" No package associated - skipping") + ) + continue + + # Check if year mismatch and update if requested + target_year = sponsorship.year + if sponsorship.package.year != sponsorship.year: + self.stdout.write( + self.style.WARNING( + f"Year mismatch: Sponsorship year ({sponsorship.year}) != " + f"Package year ({sponsorship.package.year})" + ) + ) + if update_year: + target_year = sponsorship.package.year + if not dry_run: + sponsorship.year = target_year + sponsorship.save() + self.stdout.write( + self.style.SUCCESS( + f" ✓ Updated sponsorship year to {target_year}" + ) + ) + else: + self.stdout.write( + self.style.SUCCESS( + f" [DRY RUN] Would update sponsorship year to {target_year}" + ) + ) + else: + self.stdout.write( + self.style.WARNING( + f" Use --update-year to update sponsorship year to {sponsorship.package.year}" + ) + ) + + # Get template benefits for this package and target year + template_benefits = SponsorshipBenefit.objects.filter( + packages=sponsorship.package, + year=target_year + ) + + self.stdout.write( + self.style.SUCCESS( + f"Found {template_benefits.count()} template benefits for year {target_year}" + ) + ) + + if template_benefits.count() == 0: + self.stdout.write( + self.style.ERROR( + f" ERROR: No template benefits found for package " + f"'{sponsorship.package.name}' year {target_year}" + ) + ) + continue + + reset_count = 0 + missing_count = 0 + + # Use transaction to ensure atomicity + with transaction.atomic(): + from sponsors.models import SponsorBenefit, GenericAsset + from django.contrib.contenttypes.models import ContentType + + # Get count of current benefits before deletion + current_count = sponsorship.benefits.count() + expected_count = template_benefits.count() + + self.stdout.write( + f"Current benefits: {current_count}, Expected: {expected_count}" + ) + + # STEP 1: Delete ALL GenericAssets linked to this sponsorship + sponsorship_ct = ContentType.objects.get_for_model(sponsorship) + generic_assets = GenericAsset.objects.filter( + content_type=sponsorship_ct, + object_id=sponsorship.id + ) + asset_count = generic_assets.count() + + if asset_count > 0: + if not dry_run: + # Delete each asset individually to handle polymorphic cascade properly + deleted_count = 0 + for asset in generic_assets: + asset.delete() + deleted_count += 1 + self.stdout.write( + self.style.WARNING(f" 🗑 Deleted {deleted_count} GenericAssets") + ) + else: + self.stdout.write( + self.style.WARNING(f" [DRY RUN] Would delete {asset_count} GenericAssets") + ) + + # STEP 2: Delete ALL existing sponsor benefits (this cascades to features) + if not dry_run: + deleted_count = 0 + for benefit in sponsorship.benefits.all(): + self.stdout.write(f" 🗑 Deleting benefit: {benefit.name}") + benefit.delete() + deleted_count += 1 + self.stdout.write( + self.style.WARNING(f"\nDeleted {deleted_count} existing benefits") + ) + else: + self.stdout.write( + self.style.WARNING(f" [DRY RUN] Would delete all {current_count} existing benefits") + ) + + # STEP 3: Add all benefits from the package template + if not dry_run: + self.stdout.write(f"\nAdding {expected_count} benefits from {target_year} package...") + added_count = 0 + for template in template_benefits: + # Create new benefit with all features from template + new_benefit = SponsorBenefit.new_copy( + template, + sponsorship=sponsorship, + added_by_user=False + ) + self.stdout.write(f" ✓ Added: {template.name}") + added_count += 1 + + self.stdout.write( + self.style.SUCCESS(f"\nAdded {added_count} benefits with all features") + ) + reset_count = added_count + else: + self.stdout.write( + self.style.SUCCESS( + f" [DRY RUN] Would add {expected_count} benefits from {target_year} package" + ) + ) + for template in template_benefits[:5]: # Show first 5 + self.stdout.write(f" - {template.name}") + if expected_count > 5: + self.stdout.write(f" ... and {expected_count - 5} more") + + if dry_run: + # Rollback transaction in dry run + transaction.set_rollback(True) + + self.stdout.write( + self.style.SUCCESS( + f"\nSummary for Sponsorship {sid}: " + f"Removed {current_count}, Added {expected_count}" + ) + ) + + if dry_run: + self.stdout.write( + self.style.WARNING("\nDRY RUN COMPLETE - No changes were made") + ) + else: + self.stdout.write( + self.style.SUCCESS("\nAll sponsorship benefits have been reset!") + ) diff --git a/sponsors/tests/test_management_command.py b/sponsors/tests/test_management_command.py index 100daad2a..e86b14d0e 100644 --- a/sponsors/tests/test_management_command.py +++ b/sponsors/tests/test_management_command.py @@ -1,11 +1,25 @@ from django.test import TestCase +from django.core.management import call_command from model_bakery import baker from unittest import mock +from io import StringIO -from sponsors.models import ProvidedTextAssetConfiguration, ProvidedTextAsset +from sponsors.models import ( + ProvidedTextAssetConfiguration, + ProvidedTextAsset, + Sponsor, + Sponsorship, + SponsorshipBenefit, + SponsorshipPackage, + SponsorshipProgram, + SponsorshipCurrentYear, + GenericAsset, + TieredBenefitConfiguration, +) from sponsors.models.enums import AssetsRelatedTo +from django.contrib.contenttypes.models import ContentType from sponsors.management.commands.create_pycon_vouchers_for_sponsors import ( generate_voucher_codes, @@ -52,3 +66,325 @@ def test_generate_voucher_codes(self, mock_api_call): sponsor_benefit__id=benefit_id, internal_name=code["internal_name"] ) self.assertEqual(asset.value, "test-promo-code") + + +class ResetSponsorshipBenefitsTestCase(TestCase): + """ + Test the reset_sponsorship_benefits management command. + + Scenario: A sponsor applies while 2025 is the current year, the current year + changes to 2026 with new packages, the sponsor is assigned the new package, + then the command is run to reset benefits. + """ + + def setUp(self): + """Set up test data for 2025 and 2026 sponsorships""" + # Create sponsor + self.sponsor = baker.make(Sponsor, name="Test Sponsor Corp") + + # Create program + self.program = baker.make(SponsorshipProgram, name="PSF Sponsorship") + + # Set current year to 2025 + current_year = SponsorshipCurrentYear.objects.first() + if current_year: + current_year.year = 2025 + current_year.save() + else: + SponsorshipCurrentYear.objects.create(year=2025) + + # Create 2025 package and benefits + self.package_2025 = baker.make( + SponsorshipPackage, + name="Gold", + year=2025, + sponsorship_amount=10000, + ) + + # Create 2025 benefits + self.benefit_2025_a = baker.make( + SponsorshipBenefit, + name="Logo on Website", + year=2025, + program=self.program, + internal_value=1000, + ) + self.benefit_2025_b = baker.make( + SponsorshipBenefit, + name="Conference Passes - OLD NAME", + year=2025, + program=self.program, + internal_value=2000, + ) + self.benefit_2025_c = baker.make( + SponsorshipBenefit, + name="Social Media Mention", + year=2025, + program=self.program, + internal_value=500, + ) + + # Add benefits to 2025 package + self.package_2025.benefits.add( + self.benefit_2025_a, + self.benefit_2025_b, + self.benefit_2025_c, + ) + + # Add tiered benefit configuration to 2025 benefit + baker.make( + TieredBenefitConfiguration, + benefit=self.benefit_2025_b, + package=self.package_2025, + quantity=5, + ) + + # Create 2026 package and benefits + self.package_2026 = baker.make( + SponsorshipPackage, + name="Gold", + year=2026, + sponsorship_amount=12000, + ) + + # Create 2026 benefits (some renamed, some new) + self.benefit_2026_a = baker.make( + SponsorshipBenefit, + name="Logo on Website", + year=2026, + program=self.program, + internal_value=1500, + ) + self.benefit_2026_b = baker.make( + SponsorshipBenefit, + name="Conference Passes", # Renamed from "Conference Passes - OLD NAME" + year=2026, + program=self.program, + internal_value=2500, + ) + self.benefit_2026_d = baker.make( + SponsorshipBenefit, + name="Newsletter Feature", # New benefit for 2026 + year=2026, + program=self.program, + internal_value=750, + ) + + # Add benefits to 2026 package (note: Social Media Mention is removed) + self.package_2026.benefits.add( + self.benefit_2026_a, + self.benefit_2026_b, + self.benefit_2026_d, + ) + + # Add tiered benefit configuration to 2026 benefit + baker.make( + TieredBenefitConfiguration, + benefit=self.benefit_2026_b, + package=self.package_2026, + quantity=10, # Increased from 5 + ) + + def test_reset_sponsorship_benefits_from_2025_to_2026(self): + """ + Test that a sponsorship created in 2025 can be reset to 2026 benefits + after being assigned to a 2026 package. + """ + # Step 1: Sponsor applies in 2025 with 2025 package + sponsorship = Sponsorship.new( + self.sponsor, + [self.benefit_2025_a, self.benefit_2025_b, self.benefit_2025_c], + package=self.package_2025, + ) + + # Verify initial state + self.assertEqual(sponsorship.year, 2025) + self.assertEqual(sponsorship.package.year, 2025) + self.assertEqual(sponsorship.benefits.count(), 3) + + # Verify all benefits have 2025 templates + for benefit in sponsorship.benefits.all(): + self.assertEqual(benefit.sponsorship_benefit.year, 2025) + + # Create some GenericAssets with 2025 references + sponsorship_ct = ContentType.objects.get_for_model(sponsorship) + asset_2025 = baker.make( + "sponsors.TextAsset", + content_type=sponsorship_ct, + object_id=sponsorship.id, + internal_name="conference_passes_code_2025", + text="2025-CODE-123", + ) + + # Step 2: Current year changes to 2026 + current_year = SponsorshipCurrentYear.objects.first() + current_year.year = 2026 + current_year.save() + + # Step 3: Sponsor is assigned to 2026 package (simulating admin action) + sponsorship.package = self.package_2026 + sponsorship.save() + + # At this point, sponsorship has: + # - year = 2025 + # - package year = 2026 + # - benefits linked to 2025 templates + # - GenericAssets with 2025 references + self.assertEqual(sponsorship.year, 2025) + self.assertEqual(sponsorship.package.year, 2026) + + # Verify there are GenericAssets with 2025 references + assets_2025 = GenericAsset.objects.filter( + content_type=sponsorship_ct, + object_id=sponsorship.id, + internal_name__contains="2025", + ) + self.assertGreater(assets_2025.count(), 0) + + # Step 4: Run the management command + out = StringIO() + call_command( + "reset_sponsorship_benefits", + str(sponsorship.id), + "--update-year", + stdout=out, + ) + + # Step 5: Verify the reset + sponsorship.refresh_from_db() + + # Verify year was updated + self.assertEqual(sponsorship.year, 2026) + + # Verify benefits were reset to 2026 package + self.assertEqual(sponsorship.benefits.count(), 3) + + # Verify all benefits now point to 2026 templates + for benefit in sponsorship.benefits.all(): + self.assertEqual(benefit.sponsorship_benefit.year, 2026) + + # Verify benefit names match 2026 package + benefit_names = set(sponsorship.benefits.values_list("name", flat=True)) + expected_names = { + "Logo on Website", + "Conference Passes", + "Newsletter Feature", + } + self.assertEqual(benefit_names, expected_names) + + # Verify old benefit was removed + self.assertNotIn("Social Media Mention", benefit_names) + self.assertNotIn("Conference Passes - OLD NAME", benefit_names) + + # Verify new benefit was added + self.assertIn("Newsletter Feature", benefit_names) + + # Verify GenericAssets with 2025 references were deleted + assets_2025_after = GenericAsset.objects.filter( + content_type=sponsorship_ct, + object_id=sponsorship.id, + internal_name__contains="2025", + ) + self.assertEqual(assets_2025_after.count(), 0) + + # Verify benefits are visible in admin (template year matches sponsorship year) + visible_benefits = sponsorship.benefits.filter( + sponsorship_benefit__year=sponsorship.year + ) + self.assertEqual(visible_benefits.count(), sponsorship.benefits.count()) + + # Verify benefit features were recreated with 2026 configurations + conference_passes_benefit = sponsorship.benefits.get(name="Conference Passes") + tiered_features = conference_passes_benefit.features.filter( + polymorphic_ctype__model="tieredbenefit" + ) + self.assertEqual(tiered_features.count(), 1) + + # Verify the quantity was updated from 2025 config (5) to 2026 config (10) + from sponsors.models import TieredBenefit + tiered_benefit = TieredBenefit.objects.get( + sponsor_benefit=conference_passes_benefit + ) + self.assertEqual(tiered_benefit.quantity, 10) + + def test_reset_with_duplicate_benefits(self): + """Test that the reset handles duplicate benefits correctly""" + # Create sponsorship with duplicate benefits + sponsorship = Sponsorship.new( + self.sponsor, + [self.benefit_2025_a], + package=self.package_2025, + ) + + # Manually create a duplicate benefit + from sponsors.models import SponsorBenefit + duplicate = SponsorBenefit.new_copy( + self.benefit_2025_a, + sponsorship=sponsorship, + added_by_user=False, + ) + + # Verify we have a duplicate + self.assertEqual(sponsorship.benefits.count(), 2) + self.assertEqual( + sponsorship.benefits.filter(name="Logo on Website").count(), 2 + ) + + # Update to 2026 package + sponsorship.package = self.package_2026 + sponsorship.save() + + # Run command + out = StringIO() + call_command( + "reset_sponsorship_benefits", + str(sponsorship.id), + "--update-year", + stdout=out, + ) + + # Verify duplicates were handled + sponsorship.refresh_from_db() + self.assertEqual(sponsorship.benefits.count(), 3) # All 2026 benefits + self.assertEqual( + sponsorship.benefits.filter(name="Logo on Website").count(), 1 + ) + + def test_dry_run_mode(self): + """Test that dry run doesn't make any changes""" + # Create sponsorship + sponsorship = Sponsorship.new( + self.sponsor, + [self.benefit_2025_a, self.benefit_2025_b], + package=self.package_2025, + ) + + # Update to 2026 package + sponsorship.package = self.package_2026 + sponsorship.save() + + # Record initial state + initial_year = sponsorship.year + initial_benefit_count = sponsorship.benefits.count() + initial_benefit_ids = set(sponsorship.benefits.values_list("id", flat=True)) + + # Run command in dry-run mode + out = StringIO() + call_command( + "reset_sponsorship_benefits", + str(sponsorship.id), + "--update-year", + "--dry-run", + stdout=out, + ) + + # Verify nothing changed + sponsorship.refresh_from_db() + self.assertEqual(sponsorship.year, initial_year) + self.assertEqual(sponsorship.benefits.count(), initial_benefit_count) + current_benefit_ids = set(sponsorship.benefits.values_list("id", flat=True)) + self.assertEqual(current_benefit_ids, initial_benefit_ids) + + # Verify dry run message was printed + output = out.getvalue() + self.assertIn("DRY RUN", output) From 323a2ba2af7322811672204a5784b6110f533e3e Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Tue, 4 Nov 2025 19:13:58 +0200 Subject: [PATCH 234/256] Change default for downloads from reStructuredText to Markdown (#2803) --- .../0013_alter_release_content_markup_type.py | 18 ++++++++++++++++++ downloads/models.py | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 downloads/migrations/0013_alter_release_content_markup_type.py diff --git a/downloads/migrations/0013_alter_release_content_markup_type.py b/downloads/migrations/0013_alter_release_content_markup_type.py new file mode 100644 index 000000000..1d896c1c4 --- /dev/null +++ b/downloads/migrations/0013_alter_release_content_markup_type.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.25 on 2025-11-01 21:19 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('downloads', '0012_alter_release_version'), + ] + + operations = [ + migrations.AlterField( + model_name='release', + name='content_markup_type', + field=models.CharField(choices=[('', '--'), ('html', 'HTML'), ('plain', 'Plain'), ('markdown', 'Markdown'), ('restructuredtext', 'Restructured Text')], default='markdown', max_length=30), + ), + ] diff --git a/downloads/models.py b/downloads/models.py index aa929855d..3217dec50 100644 --- a/downloads/models.py +++ b/downloads/models.py @@ -19,7 +19,7 @@ from .managers import ReleaseManager -DEFAULT_MARKUP_TYPE = getattr(settings, 'DEFAULT_MARKUP_TYPE', 'restructuredtext') +DEFAULT_MARKUP_TYPE = getattr(settings, 'DEFAULT_MARKUP_TYPE', 'markdown') class OS(ContentManageable, NameSlugModel): From 61f0c9a7eb80542cfbc551f1ddb41de08dfb4db2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 11:27:24 -0600 Subject: [PATCH 235/256] chore(deps): bump django from 4.2.25 to 4.2.26 (#2804) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index c0515c27f..bfd2dece1 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -4,7 +4,7 @@ django-sitetree==1.18.0 # >=1.17.1 is (?) first version that supports Django 4. django-apptemplates==1.5 django-admin-interface==0.28.9 django-translation-aliases==0.1.0 -Django==4.2.25 +Django==4.2.26 docutils==0.21.2 Markdown==3.7 cmarkgfm==2024.11.20 From ba1d3fee64c281416543a8703fd2f659b6af309b Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Tue, 11 Nov 2025 17:53:37 +0200 Subject: [PATCH 236/256] Add featured downloads (#2805) --- downloads/views.py | 16 ++++++++- static/sass/style.css | 44 +++++++++++++++++++++++++ static/sass/style.scss | 40 ++++++++++++++++++++++ templates/downloads/release_detail.html | 19 ++++++++++- 4 files changed, 117 insertions(+), 2 deletions(-) diff --git a/downloads/views.py b/downloads/views.py index 21e66cd55..57196d622 100644 --- a/downloads/views.py +++ b/downloads/views.py @@ -2,7 +2,7 @@ from datetime import datetime -from django.db.models import Prefetch +from django.db.models import Case, IntegerField, Prefetch, When from django.urls import reverse from django.utils import timezone from django.views.generic import DetailView, TemplateView, ListView, RedirectView @@ -157,6 +157,20 @@ def get_object(self): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) + # Add featured files (files with download_button=True) + # Order: macOS first, Windows second, Source last + context['featured_files'] = self.object.files.filter( + download_button=True + ).annotate( + os_order=Case( + When(os__slug='macos', then=1), + When(os__slug='windows', then=2), + When(os__slug='source', then=3), + default=4, + output_field=IntegerField(), + ) + ).order_by('os_order') + # Manually add release files for better ordering context['release_files'] = [] diff --git a/static/sass/style.css b/static/sass/style.css index 09c849482..b66cc9de4 100644 --- a/static/sass/style.css +++ b/static/sass/style.css @@ -2113,6 +2113,50 @@ table tfoot { .download-widget p:last-child a { white-space: nowrap; } +.featured-downloads-list { + display: flex; + flex-wrap: wrap; + gap: 1.5em; + justify-content: center; + margin-bottom: 2em; } + +.featured-download-box { + background-color: #f2f4f6; + border: 1px solid #caccce; + border-radius: 5px; + display: flex; + flex: 1 1 300px; + flex-direction: column; + min-width: 250px; + max-width: 400px; + padding: 1.25em; } + .featured-download-box h3 { + margin-top: 0; } + .featured-download-box .button { + background-color: #ffd343; + *zoom: 1; + filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFDF76', endColorstr='#FFFFD343'); + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffdf76), color-stop(90%, #ffd343)); + background-image: -webkit-linear-gradient(#ffdf76 10%, #ffd343 90%); + background-image: -moz-linear-gradient(#ffdf76 10%, #ffd343 90%); + background-image: -o-linear-gradient(#ffdf76 10%, #ffd343 90%); + background-image: linear-gradient(#ffdf76 10%, #ffd343 90%); + border: 1px solid #dca900; + white-space: normal; } + .featured-download-box .button:hover, .featured-download-box .button:active { + background-color: inherit; + background-color: #ffd343; + *zoom: 1; + filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFEBA9', endColorstr='#FFFFD343'); + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(10%, #ffeba9), color-stop(90%, #ffd343)); + background-image: -webkit-linear-gradient(#ffeba9 10%, #ffd343 90%); + background-image: -moz-linear-gradient(#ffeba9 10%, #ffd343 90%); + background-image: -o-linear-gradient(#ffeba9 10%, #ffd343 90%); + background-image: linear-gradient(#ffeba9 10%, #ffd343 90%); } + .featured-download-box .download-buttons { + margin-bottom: 0; + text-align: center; } + .time-posted { display: block; font-size: 0.875em; diff --git a/static/sass/style.scss b/static/sass/style.scss index cb78d9a4d..174a73374 100644 --- a/static/sass/style.scss +++ b/static/sass/style.scss @@ -1098,6 +1098,46 @@ $colors: $blue, $psf, $yellow, $green, $purple, $red; p:last-child a { white-space: nowrap; } } +.featured-downloads-list { + display: flex; + flex-wrap: wrap; + gap: 1.5em; + justify-content: center; + margin-bottom: 2em; +} + +.featured-download-box { + background-color: $grey-lighterest; + border: 1px solid $default-border-color; + border-radius: 5px; + display: flex; + flex: 1 1 300px; + flex-direction: column; + min-width: 250px; + max-width: 400px; + padding: 1.25em; + + h3 { + margin-top: 0; + } + + .button { + @include vertical-gradient( lighten($yellow, 10%), $yellow ); + border: 1px solid darken($yellow, 20%); + white-space: normal; + + &:hover, &:active { + background-color: inherit; + @include vertical-gradient( lighten($yellow, 20%), $yellow ); + } + } + + .download-buttons { + margin-bottom: 0; + text-align: center; + } +} + .documentation-widget { } .jobs-widget { } diff --git a/templates/downloads/release_detail.html b/templates/downloads/release_detail.html index db49d974e..5959dfe30 100644 --- a/templates/downloads/release_detail.html +++ b/templates/downloads/release_detail.html @@ -41,9 +41,26 @@ <h1 class="page-title">{{ release.name }}</h1> {% endif %} <header class="article-header"> - <h1 class="page-title">Files</h1> + <h2 class="page-title">Files</h2> </header> + {% if featured_files %} + <div class="featured-downloads-list"> + {% for f in featured_files %} + <div class="featured-download-box"> + <h3>{{ f.os.name }}</h3> + <p class="download-buttons"> + {% if f.os.slug == 'windows' and latest_pymanager and release.is_version_at_least_3_5 %} + <a class="button" href="https://www.python.org/downloads/latest/pymanager/">Download Python install manager</a> + {% else %} + <a class="button" href="{{ f.url }}">Download {{ f.name }}</a> + {% endif %} + </p> + </div> + {% endfor %} + </div> + {% endif %} + <table> <thead> <tr> From a543b5c4394c286f1e18b8d0438c5a0f36a562cc Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Wed, 12 Nov 2025 22:21:25 +0200 Subject: [PATCH 237/256] Point donate button to donate.python.org (#2808) --- templates/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/base.html b/templates/base.html index 527baf616..e0b692407 100644 --- a/templates/base.html +++ b/templates/base.html @@ -196,7 +196,7 @@ <h1 class="site-headline"> </h1> <div class="options-bar-container do-not-print"> - <a href="https://psfmember.org/civicrm/contribute/transact?reset=1&id=2" class="donate-button">Donate</a> + <a href="https://donate.python.org/" class="donate-button">Donate</a> <div class="options-bar"> {# Its a little ugly, but no space between elements makes the inline-block style work better #} <a id="site-map-link" class="jump-to-menu" href="#site-map"><span class="menu-icon">≡</span> Menu</a><form class="search-the-site" action="/search/" method="get"> From ea671dbbafcede8720b81b8ff8f2d4a6d2039493 Mon Sep 17 00:00:00 2001 From: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com> Date: Sat, 15 Nov 2025 20:53:02 +0000 Subject: [PATCH 238/256] Update URLs in sitetree_menus.json (#2810) --- fixtures/sitetree_menus.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fixtures/sitetree_menus.json b/fixtures/sitetree_menus.json index 70de29110..69b9b34af 100644 --- a/fixtures/sitetree_menus.json +++ b/fixtures/sitetree_menus.json @@ -637,7 +637,7 @@ "fields": { "title": "FAQ", "hint": "", - "url": "https://docs.python.org/faq/", + "url": "https://docs.python.org/3/faq/", "urlaspattern": false, "tree": 1, "hidden": false, @@ -661,7 +661,7 @@ "fields": { "title": "Non-English Docs", "hint": "", - "url": "https://python-docs-translations.github.io/dashboard/", + "url": "https://translations.python.org", "urlaspattern": false, "tree": 1, "hidden": false, From 568f643a29796ab4d4e2e53554fce7f2db8ddde6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Nov 2025 08:11:13 -0600 Subject: [PATCH 239/256] chore(deps): bump actions/checkout from 5 to 6 in the github-actions group (#2815) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/static.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 23c5ad626..6988c370e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: Check out repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install platform dependencies run: | sudo apt -y update diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 7941021ca..9c06ff4a9 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - uses: actions/setup-python@v6 with: python-version-file: '.python-version' From c589e2ff490cbf9bb28c68f7d8539a0f112e8edf Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Fri, 21 Nov 2025 20:13:53 +0200 Subject: [PATCH 240/256] Redirect `downloads/latest/python3.x` for given 3.x (#2816) --- downloads/managers.py | 29 ++++++++++------------------- downloads/models.py | 6 ++++++ downloads/urls.py | 1 + downloads/views.py | 21 +++++++++++++++++++++ static/sass/_layout.scss | 8 +++++--- static/sass/mq.css | 10 +++++++--- static/sass/no-mq.css | 10 +++++++--- 7 files changed, 57 insertions(+), 28 deletions(-) diff --git a/downloads/managers.py b/downloads/managers.py index 56040d2bb..22da0cdd0 100644 --- a/downloads/managers.py +++ b/downloads/managers.py @@ -29,8 +29,11 @@ def pymanager(self): def latest_python2(self): return self.python2().filter(is_latest=True) - def latest_python3(self): - return self.python3().filter(is_latest=True) + def latest_python3(self, minor_version: int | None = None): + if minor_version is None: + return self.python3().filter(is_latest=True) + pattern = rf"^Python 3\.{minor_version}\." + return self.python3().filter(name__regex=pattern).order_by("-release_date") def latest_pymanager(self): return self.pymanager().filter(is_latest=True) @@ -44,22 +47,10 @@ def released(self): class ReleaseManager(Manager.from_queryset(ReleaseQuerySet)): def latest_python2(self): - qs = self.get_queryset().latest_python2() - if qs: - return qs[0] - else: - return None - - def latest_python3(self): - qs = self.get_queryset().latest_python3() - if qs: - return qs[0] - else: - return None + return self.get_queryset().latest_python2().first() + + def latest_python3(self, minor_version: int | None = None): + return self.get_queryset().latest_python3(minor_version).first() def latest_pymanager(self): - qs = self.get_queryset().latest_pymanager() - if qs: - return qs[0] - else: - return None + return self.get_queryset().latest_pymanager().first() diff --git a/downloads/models.py b/downloads/models.py index 3217dec50..f37a041d0 100644 --- a/downloads/models.py +++ b/downloads/models.py @@ -292,6 +292,12 @@ def purge_fastly_download_pages(sender, instance, **kwargs): purge_url('/downloads/feed.rss') purge_url('/downloads/latest/python2/') purge_url('/downloads/latest/python3/') + # Purge minor version specific URLs (like /downloads/latest/python3.14/) + version = instance.get_version() + if instance.version == Release.PYTHON3 and version: + match = re.match(r'^3\.(\d+)', version) + if match: + purge_url(f'/downloads/latest/python3.{match.group(1)}/') purge_url('/downloads/latest/pymanager/') purge_url('/downloads/macos/') purge_url('/downloads/source/') diff --git a/downloads/urls.py b/downloads/urls.py index 5b6b3fda0..4b2d573bf 100644 --- a/downloads/urls.py +++ b/downloads/urls.py @@ -5,6 +5,7 @@ urlpatterns = [ re_path(r'latest/python2/?$', views.DownloadLatestPython2.as_view(), name='download_latest_python2'), re_path(r'latest/python3/?$', views.DownloadLatestPython3.as_view(), name='download_latest_python3'), + re_path(r'latest/python3\.(?P<minor>\d+)/?$', views.DownloadLatestPython3x.as_view(), name='download_latest_python3x'), re_path(r'latest/pymanager/?$', views.DownloadLatestPyManager.as_view(), name='download_latest_pymanager'), re_path(r'latest/?$', views.DownloadLatestPython3.as_view(), name='download_latest_python3'), path('operating-systems/', views.DownloadFullOSList.as_view(), name='download_full_os_list'), diff --git a/downloads/views.py b/downloads/views.py index 57196d622..d19f0e868 100644 --- a/downloads/views.py +++ b/downloads/views.py @@ -45,6 +45,27 @@ def get_redirect_url(self, **kwargs): return reverse('download') +class DownloadLatestPython3x(RedirectView): + """ Redirect to latest Python 3.x release for a specific minor version """ + permanent = False + + def get_redirect_url(self, **kwargs): + minor_version = kwargs.get('minor') + if not minor_version: + return reverse('downloads:download') + + try: + minor_version_int = int(minor_version) + latest_release = Release.objects.latest_python3(minor_version_int) + except (ValueError, Release.DoesNotExist): + latest_release = None + + if latest_release: + return latest_release.get_absolute_url() + else: + return reverse('downloads:download') + + class DownloadLatestPyManager(RedirectView): """ Redirect to latest Python install manager release """ permanent = False diff --git a/static/sass/_layout.scss b/static/sass/_layout.scss index 884a0e9bc..3e256a6ac 100644 --- a/static/sass/_layout.scss +++ b/static/sass/_layout.scss @@ -449,6 +449,7 @@ .release-version, .release-status, + .release-dl, .release-start, .release-end, .release-pep { @@ -458,10 +459,11 @@ vertical-align: middle; } - .release-version { width: 15%; } + .release-version { width: 10%; } .release-status { width: 20%; } - .release-start { width: 25%; } - .release-end { width: 25%; } + .release-dl { width: 15%; } + .release-start { width: 20%; } + .release-end { width: 20%; } .release-pep { width: 15%; } /* Previous Next pattern */ diff --git a/static/sass/mq.css b/static/sass/mq.css index 4d4dea4ac..7c49abf44 100644 --- a/static/sass/mq.css +++ b/static/sass/mq.css @@ -1505,6 +1505,7 @@ html[xmlns] .slides { display: block; } .release-version, .release-status, + .release-dl, .release-start, .release-end, .release-pep { @@ -1514,16 +1515,19 @@ html[xmlns] .slides { display: block; } vertical-align: middle; } .release-version { - width: 15%; } + width: 10%; } .release-status { width: 20%; } + .release-dl { + width: 15%; } + .release-start { - width: 25%; } + width: 20%; } .release-end { - width: 25%; } + width: 20%; } .release-pep { width: 15%; } diff --git a/static/sass/no-mq.css b/static/sass/no-mq.css index 0565a60dd..f50d4140c 100644 --- a/static/sass/no-mq.css +++ b/static/sass/no-mq.css @@ -1219,6 +1219,7 @@ a.button { .release-version, .release-status, +.release-dl, .release-start, .release-end, .release-pep { @@ -1228,16 +1229,19 @@ a.button { vertical-align: middle; } .release-version { - width: 15%; } + width: 10%; } .release-status { width: 20%; } +.release-dl { + width: 15%; } + .release-start { - width: 25%; } + width: 20%; } .release-end { - width: 25%; } + width: 20%; } .release-pep { width: 15%; } From d19b30fe95a11c1fa4049f3f8e213d045ece1110 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Tue, 25 Nov 2025 03:48:35 +0200 Subject: [PATCH 241/256] Sort downloads table by version (#2822) --- downloads/tests/base.py | 30 ++++++++++++++++++++++++++---- downloads/tests/test_models.py | 8 ++++---- downloads/tests/test_views.py | 23 +++++++++++++++++++---- downloads/views.py | 11 ++++++++++- templates/downloads/index.html | 4 ++-- 5 files changed, 61 insertions(+), 15 deletions(-) diff --git a/downloads/tests/base.py b/downloads/tests/base.py index bcb7905c4..2b5e2c905 100644 --- a/downloads/tests/base.py +++ b/downloads/tests/base.py @@ -1,4 +1,4 @@ -import datetime +import datetime as dt from django.test import TestCase from django.utils import timezone @@ -32,7 +32,7 @@ def setUp(self): is_latest=True, is_published=True, release_page=self.release_275_page, - release_date=timezone.now() - datetime.timedelta(days=-1) + release_date=dt.datetime.fromisoformat("2013-05-15T00:00Z"), ) self.release_275_windows_32bit = ReleaseFile.objects.create( os=self.windows, @@ -102,9 +102,31 @@ def setUp(self): self.python_3 = Release.objects.create( version=Release.PYTHON3, - name='Python 3.10', + name="Python 3.10.19", is_latest=True, is_published=True, show_on_download_page=True, - release_page=self.release_275_page + release_page=self.release_275_page, + release_date=dt.datetime.fromisoformat("2025-10-09T00:00Z"), + ) + + self.python_3_10_18 = Release.objects.create( + version=Release.PYTHON3, + name="Python 3.10.18", + is_published=True, + release_date=dt.datetime.fromisoformat("2025-06-03T00:00Z"), + ) + + self.python_3_8_20 = Release.objects.create( + version=Release.PYTHON3, + name="Python 3.8.20", + is_published=True, + release_date=dt.datetime.fromisoformat("2024-09-06T00:00Z"), + ) + + self.python_3_8_19 = Release.objects.create( + version=Release.PYTHON3, + name="Python 3.8.19", + is_published=True, + release_date=dt.datetime.fromisoformat("2024-03-19T00:00Z"), ) diff --git a/downloads/tests/test_models.py b/downloads/tests/test_models.py index bd26c3b58..b89b2ecce 100644 --- a/downloads/tests/test_models.py +++ b/downloads/tests/test_models.py @@ -10,14 +10,14 @@ def test_stringification(self): def test_published(self): published_releases = Release.objects.published() - self.assertEqual(len(published_releases), 4) + self.assertEqual(len(published_releases), 7) self.assertIn(self.release_275, published_releases) self.assertIn(self.hidden_release, published_releases) self.assertNotIn(self.draft_release, published_releases) def test_release(self): released_versions = Release.objects.released() - self.assertEqual(len(released_versions), 3) + self.assertEqual(len(released_versions), 6) self.assertIn(self.release_275, released_versions) self.assertIn(self.hidden_release, released_versions) self.assertNotIn(self.draft_release, released_versions) @@ -37,7 +37,7 @@ def test_draft(self): def test_downloads(self): downloads = Release.objects.downloads() - self.assertEqual(len(downloads), 2) + self.assertEqual(len(downloads), 5) self.assertIn(self.release_275, downloads) self.assertNotIn(self.hidden_release, downloads) self.assertNotIn(self.draft_release, downloads) @@ -50,7 +50,7 @@ def test_python2(self): def test_python3(self): versions = Release.objects.python3() - self.assertEqual(len(versions), 3) + self.assertEqual(len(versions), 6) self.assertNotIn(self.release_275, versions) self.assertNotIn(self.draft_release, versions) self.assertIn(self.hidden_release, versions) diff --git a/downloads/tests/test_views.py b/downloads/tests/test_views.py index b559a2adc..c42572d13 100644 --- a/downloads/tests/test_views.py +++ b/downloads/tests/test_views.py @@ -56,6 +56,21 @@ def test_download(self): response = self.client.get(url) self.assertEqual(response.status_code, 200) + def test_download_releases_ordered_by_version(self): + url = reverse("download:download") + response = self.client.get(url) + releases = response.context["releases"] + self.assertEqual( + releases, + [ + self.python_3, + self.python_3_10_18, + self.python_3_8_20, + self.python_3_8_19, + self.release_275, + ], + ) + def test_latest_redirects(self): latest_python2 = Release.objects.released().python2().latest() url = reverse('download:download_latest_python2') @@ -218,13 +233,13 @@ def test_get_release(self): self.assertEqual(response.status_code, 200) content = self.get_json(response) # 'self.draft_release' won't shown here. - self.assertEqual(len(content), 4) + self.assertEqual(len(content), 7) # Login to get all releases. response = self.client.get(url, headers={"authorization": self.Authorization}) self.assertEqual(response.status_code, 200) content = self.get_json(response) - self.assertEqual(len(content), 5) + self.assertEqual(len(content), 8) self.assertFalse(content[0]['is_latest']) def test_post_release(self): @@ -594,5 +609,5 @@ def test_feed_item_count(self) -> None: response = self.client.get(self.url) content = response.content.decode() - # In BaseDownloadTests, we create 5 releases, 4 of which are published, 1 of those published are hidden.. - self.assertEqual(content.count("<item>"), 4) + # In BaseDownloadTests, we create 8 releases, 7 of which are published, 1 of those published are hidden.. + self.assertEqual(content.count("<item>"), 7) diff --git a/downloads/views.py b/downloads/views.py index d19f0e868..5d8da9461 100644 --- a/downloads/views.py +++ b/downloads/views.py @@ -124,8 +124,17 @@ def get_context_data(self, **kwargs): data['pymanager'] = latest_pymanager.download_file_for_os(o.slug) python_files.append(data) + def version_key(release: Release) -> tuple[int, ...]: + try: + return tuple(int(x) for x in release.get_version().split(".")) + except ValueError: + return (0,) + + releases = list(Release.objects.downloads()) + releases.sort(key=version_key, reverse=True) + context.update({ - 'releases': Release.objects.downloads(), + 'releases': releases, 'latest_python2': latest_python2, 'latest_python3': latest_python3, 'python_files': python_files, diff --git a/templates/downloads/index.html b/templates/downloads/index.html index f527be031..303fad87b 100644 --- a/templates/downloads/index.html +++ b/templates/downloads/index.html @@ -50,7 +50,7 @@ <h1 class="call-to-action">Download the latest version of Python</h1> <div class="row active-release-list-widget"> {% render_active_banner %} - <h2 class="widget-title">Active Python Releases</h2> + <h2 class="widget-title">Active Python releases</h2> <p class="success-quote"><a href="https://devguide.python.org/versions/#versions">For more information visit the Python Developer's Guide</a>.</p> {% box 'downloads-active-releases' %} @@ -74,7 +74,7 @@ <h2 class="widget-title">Looking for a specific release?</h2> <span class="release-number"><a href="{{ r.get_absolute_url }}">{{ r.name }}</a></span> <span class="release-date">{{ r.release_date|date }}</span> <span class="release-download"><a href="{{ r.get_absolute_url }}"><span aria-hidden="true" class="icon-download"></span> Download</a></span> - <span class="release-enhancements"><a href="{{ r.release_notes_url }}">Release Notes</a></span> + <span class="release-enhancements"><a href="{{ r.release_notes_url }}">Release notes</a></span> </li> {% endfor %} </ol> From a2b0d2d496350ee170b522f6ac74b8a9bec0e184 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Tue, 25 Nov 2025 21:31:48 +0200 Subject: [PATCH 242/256] Add tests for download redirects and refactor DownloadLatestPython3 (#2821) --- downloads/tests/test_models.py | 18 ++++++++++++++++++ downloads/tests/test_views.py | 13 +++++++++++++ downloads/urls.py | 2 +- downloads/views.py | 25 +++---------------------- 4 files changed, 35 insertions(+), 23 deletions(-) diff --git a/downloads/tests/test_models.py b/downloads/tests/test_models.py index b89b2ecce..1c8e9ba47 100644 --- a/downloads/tests/test_models.py +++ b/downloads/tests/test_models.py @@ -1,3 +1,5 @@ +import datetime as dt + from ..models import Release, ReleaseFile from .base import BaseDownloadTests @@ -56,6 +58,22 @@ def test_python3(self): self.assertIn(self.hidden_release, versions) self.assertIn(self.pre_release, versions) + def test_latest_python3(self): + latest_3 = Release.objects.latest_python3() + self.assertEqual(latest_3, self.python_3) + self.assertNotEqual(latest_3, self.python_3_10_18) + + latest_3_10 = Release.objects.latest_python3(minor_version=10) + self.assertEqual(latest_3_10, self.python_3) + self.assertNotEqual(latest_3_10, self.python_3_10_18) + + latest_3_8 = Release.objects.latest_python3(minor_version=8) + self.assertEqual(latest_3_8, self.python_3_8_20) + self.assertNotEqual(latest_3_8, self.python_3_8_19) + + latest_3_99 = Release.objects.latest_python3(minor_version=99) + self.assertIsNone(latest_3_99) + def test_get_version(self): self.assertEqual(self.release_275.name, 'Python 2.7.5') self.assertEqual(self.release_275.get_version(), '2.7.5') diff --git a/downloads/tests/test_views.py b/downloads/tests/test_views.py index c42572d13..1fbb687d0 100644 --- a/downloads/tests/test_views.py +++ b/downloads/tests/test_views.py @@ -82,6 +82,19 @@ def test_latest_redirects(self): response = self.client.get(url) self.assertRedirects(response, latest_python3.get_absolute_url()) + def test_latest_python3x_redirects(self): + url = reverse("download:download_latest_python3x", kwargs={"minor": "10"}) + response = self.client.get(url) + self.assertRedirects(response, self.python_3.get_absolute_url()) + + url = reverse("download:download_latest_python3x", kwargs={"minor": "8"}) + response = self.client.get(url) + self.assertRedirects(response, self.python_3_8_20.get_absolute_url()) + + url = reverse("download:download_latest_python3x", kwargs={"minor": "99"}) + response = self.client.get(url) + self.assertRedirects(response, reverse("download:download")) + def test_redirect_page_object_to_release_detail_page(self): self.release_275.release_page = None self.release_275.save() diff --git a/downloads/urls.py b/downloads/urls.py index 4b2d573bf..75dcef211 100644 --- a/downloads/urls.py +++ b/downloads/urls.py @@ -5,7 +5,7 @@ urlpatterns = [ re_path(r'latest/python2/?$', views.DownloadLatestPython2.as_view(), name='download_latest_python2'), re_path(r'latest/python3/?$', views.DownloadLatestPython3.as_view(), name='download_latest_python3'), - re_path(r'latest/python3\.(?P<minor>\d+)/?$', views.DownloadLatestPython3x.as_view(), name='download_latest_python3x'), + re_path(r'latest/python3\.(?P<minor>\d+)/?$', views.DownloadLatestPython3.as_view(), name='download_latest_python3x'), re_path(r'latest/pymanager/?$', views.DownloadLatestPyManager.as_view(), name='download_latest_pymanager'), re_path(r'latest/?$', views.DownloadLatestPython3.as_view(), name='download_latest_python3'), path('operating-systems/', views.DownloadFullOSList.as_view(), name='download_full_os_list'), diff --git a/downloads/views.py b/downloads/views.py index 5d8da9461..1d69a234c 100644 --- a/downloads/views.py +++ b/downloads/views.py @@ -30,40 +30,21 @@ def get_redirect_url(self, **kwargs): class DownloadLatestPython3(RedirectView): - """ Redirect to latest Python 3 release """ - permanent = False - - def get_redirect_url(self, **kwargs): - try: - latest_python3 = Release.objects.latest_python3() - except Release.DoesNotExist: - latest_python3 = None + """Redirect to latest Python 3 release, optionally for a specific minor""" - if latest_python3: - return latest_python3.get_absolute_url() - else: - return reverse('download') - - -class DownloadLatestPython3x(RedirectView): - """ Redirect to latest Python 3.x release for a specific minor version """ permanent = False def get_redirect_url(self, **kwargs): minor_version = kwargs.get('minor') - if not minor_version: - return reverse('downloads:download') - try: - minor_version_int = int(minor_version) + minor_version_int = int(minor_version) if minor_version else None latest_release = Release.objects.latest_python3(minor_version_int) except (ValueError, Release.DoesNotExist): latest_release = None if latest_release: return latest_release.get_absolute_url() - else: - return reverse('downloads:download') + return reverse("downloads:download") class DownloadLatestPyManager(RedirectView): From d846f8299bcc6b846061e90983efd78130a6f1b9 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Tue, 25 Nov 2025 21:37:19 +0200 Subject: [PATCH 243/256] Add 'Python 3.X.YaN' placeholder for release name (#2819) --- downloads/admin.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/downloads/admin.py b/downloads/admin.py index d32f97b71..da5d94ad8 100644 --- a/downloads/admin.py +++ b/downloads/admin.py @@ -25,3 +25,9 @@ class ReleaseAdmin(ContentManageableModelAdmin): list_filter = ['version', 'is_published', 'show_on_download_page'] search_fields = ['name', 'slug'] ordering = ['-release_date'] + + def formfield_for_dbfield(self, db_field, request, **kwargs): + field = super().formfield_for_dbfield(db_field, request, **kwargs) + if db_field.name == "name": + field.widget.attrs["placeholder"] = "Python 3.X.YaN" + return field From e36232d712778ed181d89af83d0ef62bc20bdf4b Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Tue, 25 Nov 2025 21:42:35 +0200 Subject: [PATCH 244/256] Remove outdated PEPs code and docs (#2806) Co-authored-by: Jacob Coffee <jacob@z7x.org> --- .gitattributes | 1 - docs/source/commands.rst | 27 ----- docs/source/index.rst | 1 - docs/source/pep_generation.rst | 34 ------ env_sample | 4 - pydotorg/settings/cabotage.py | 3 - pydotorg/settings/local.py | 9 -- static/sass/_layout.scss | 48 --------- static/sass/mq.css | 59 ---------- static/sass/no-mq.css | 59 ---------- static/sass/style.css | 135 +---------------------- static/sass/style.scss | 160 ---------------------------- templates/pages/pep-page.html | 83 --------------- templates/peps/list.html | 106 ------------------ templates/python/documentation.html | 2 +- 15 files changed, 5 insertions(+), 726 deletions(-) delete mode 100644 docs/source/pep_generation.rst delete mode 100644 templates/pages/pep-page.html delete mode 100644 templates/peps/list.html diff --git a/.gitattributes b/.gitattributes index aab188762..6473b8dc5 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,3 @@ static/sass/*.css linguist-vendored -peps/tests/fake_pep_repo/*.html linguist-vendored static/js/libs/*.js linguist-vendored static/js/plugins/*.js linguist-vendored diff --git a/docs/source/commands.rst b/docs/source/commands.rst index baa94fa4f..06c1b8bff 100644 --- a/docs/source/commands.rst +++ b/docs/source/commands.rst @@ -35,30 +35,3 @@ Command-line options .. option:: --app-label <app_label> Create initial data with the *app_label* provided. - -.. _command-generate-pep-pages: - -generate_pep_pages ------------------- - -This command generates ``pages.Page`` objects from the output -of the existing PEP repository generation process. You run it like:: - - $ ./manage.py generate_pep_pages - -To get verbose output, specify ``--verbosity`` option:: - - $ ./manage.py generate_pep_pages --verbosity=2 - -It uses the conversion code in the ``peps/converters.py`` file, in an -attempt to normalize the formatting for display purposes. - -.. _command-dump-pep-pages: - -dump_pep_pages --------------- - -This command simply dumps our PEP related pages as JSON to :attr:`sys.stdout`. -You can run like:: - - $ ./manage.py dump_pep_pages diff --git a/docs/source/index.rst b/docs/source/index.rst index ab7b710ed..558604237 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -25,7 +25,6 @@ Contents: install.md contributing administration - pep_generation commands Indices and tables diff --git a/docs/source/pep_generation.rst b/docs/source/pep_generation.rst deleted file mode 100644 index dd68649af..000000000 --- a/docs/source/pep_generation.rst +++ /dev/null @@ -1,34 +0,0 @@ -PEP Page Generation -=================== - -.. _pep_process: - -Process Overview ----------------- - -We are generating the PEP pages by lightly parsing the HTML output from the -`PEP Repository`_ and then cleaning up some post-parsing formatting. - -The PEP Page Generation process is as follows: - -1. Clone the PEP Repository, if you have not already done so:: - - $ git clone https://github.com/python/peps.git - -2. From the cloned PEP Repository, run:: - - $ make -j - -3. Set ``PEP_REPO_PATH`` in ``pydotorg/settings/local.py`` to the location - of the cloned PEP Repository - -4. Generate PEP pages in your ``pythondotorg`` repository - (More details at :ref:`command-generate-pep-pages`). You can run like:: - - $ ./manage.py generate_pep_pages - -This process runs periodically via cron to keep the PEP pages up to date. - -See :ref:`management-commands` for all management commands. - -.. _PEP Repository: https://github.com/python/peps diff --git a/env_sample b/env_sample index 72c1e0b9a..499c155f8 100644 --- a/env_sample +++ b/env_sample @@ -2,9 +2,6 @@ DATABASE_URL=postgres:///pythondotorg SEARCHBOX_SSL_URL=http://127.0.0.1:9200/ -# development optional -#PEP_REPO_PATH=None - # production required SECRET_KEY= ALLOWED_HOSTS=127.0.0.1, @@ -13,7 +10,6 @@ EMAIL_HOST_USER= EMAIL_HOST_PASSWORD= EMAIL_PORT= DEFAULT_FROM_EMAIL= -PEP_ARTIFACT_URL= FASTLY_API_KEY= SENTRY_DSN= SOURCE_VERSION= diff --git a/pydotorg/settings/cabotage.py b/pydotorg/settings/cabotage.py index 654db889e..7d15fc18e 100644 --- a/pydotorg/settings/cabotage.py +++ b/pydotorg/settings/cabotage.py @@ -61,9 +61,6 @@ EMAIL_USE_TLS = True DEFAULT_FROM_EMAIL = config('DEFAULT_FROM_EMAIL') -PEP_REPO_PATH = None -PEP_ARTIFACT_URL = config('PEP_ARTIFACT_URL') - # Fastly API Key FASTLY_API_KEY = config('FASTLY_API_KEY') diff --git a/pydotorg/settings/local.py b/pydotorg/settings/local.py index 6525d9837..a8a4fdb09 100644 --- a/pydotorg/settings/local.py +++ b/pydotorg/settings/local.py @@ -34,15 +34,6 @@ EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' -# Set the local pep repository path to fetch PEPs from, -# or none to fallback to the tarball specified by PEP_ARTIFACT_URL. -PEP_REPO_PATH = config('PEP_REPO_PATH', default=None) # directory path or None - -# Set the path to where to fetch PEP artifacts from. -# The value can be a local path or a remote URL. -# Ignored if PEP_REPO_PATH is set. -PEP_ARTIFACT_URL = os.path.join(BASE, 'peps/tests/peps.tar.gz') - # Use Dummy SASS compiler to avoid performance issues and remove the need to # have a sass compiler installed at all during local development if you aren't # adjusting the CSS at all. Comment this out or adjust it to suit your local diff --git a/static/sass/_layout.scss b/static/sass/_layout.scss index 3e256a6ac..3fbbb4c45 100644 --- a/static/sass/_layout.scss +++ b/static/sass/_layout.scss @@ -27,9 +27,6 @@ .container, .row, -.pep-list-header, -.pep-index-list li, -.info-key, .listing-company, .list-recent-jobs li { @extend %pie-clearfix; } @@ -377,43 +374,12 @@ .most-recent-posts { @include span-columns( 9 ); } - .pep-widget, .psf-widget, .python-needs-you-widget { padding: 1.5em 1.75em; clear: both; } - /* PEP landing page */ - .pep-list-header, - .pep-index-list li, - .info-key { margin: 0 -.5em; } - - .pep-list-header { display: block; } - - .pep-index-list { - - .label { display: none; } - a { display: block; } - li { - border-bottom: 1px solid darken($grey-lighterest, 5%); - margin-bottom: 0; - } - } - - .pep-type, - .pep-num, - .pep-title, - .pep-owner { - float: left; - border-bottom: 0; - } - - .pep-type { width: 15%; } - .pep-num { width: 10%; } - .pep-title { width: 50%; } - .pep-owner { width: 25%; } - /* Jobs landing page */ .jobs-intro { padding-top: 2em; padding-bottom: 2em; } @@ -1101,7 +1067,6 @@ } } - .pep-widget, .psf-widget, .python-needs-you-widget { padding: 1.5em 1.75em; @@ -1143,19 +1108,6 @@ } } - .pep-widget { - - .widget-title { - position: relative; - padding-right: 6em; - } - } - - .rss-link { - position: absolute; - top: 0; right: 0; - } - /* Footer */ .sitemap { diff --git a/static/sass/mq.css b/static/sass/mq.css index 7c49abf44..cdb3edee7 100644 --- a/static/sass/mq.css +++ b/static/sass/mq.css @@ -115,17 +115,11 @@ /* Other elements */ .container, .row, -.pep-list-header, -.pep-index-list li, -.info-key, .listing-company, .list-recent-jobs li { *zoom: 1; } .container:after, .row:after, - .pep-list-header:after, - .pep-index-list li:after, - .info-key:after, .listing-company:after, .list-recent-jobs li:after { content: ""; @@ -338,17 +332,11 @@ html[xmlns] .slides { display: block; } /* Other elements */ .container, .row, -.pep-list-header, -.pep-index-list li, -.info-key, .listing-company, .list-recent-jobs li { *zoom: 1; } .container:after, .row:after, - .pep-list-header:after, - .pep-index-list li:after, - .info-key:after, .listing-company:after, .list-recent-jobs li:after { content: ""; @@ -1423,48 +1411,11 @@ html[xmlns] .slides { display: block; } float: left; margin-right: 2.12766%; } - .pep-widget, .psf-widget, .python-needs-you-widget { padding: 1.5em 1.75em; clear: both; } - /* PEP landing page */ - .pep-list-header, - .pep-index-list li, - .info-key { - margin: 0 -.5em; } - - .pep-list-header { - display: block; } - - .pep-index-list .label { - display: none; } - .pep-index-list a { - display: block; } - .pep-index-list li { - border-bottom: 1px solid #e3e7ec; - margin-bottom: 0; } - - .pep-type, - .pep-num, - .pep-title, - .pep-owner { - float: left; - border-bottom: 0; } - - .pep-type { - width: 15%; } - - .pep-num { - width: 10%; } - - .pep-title { - width: 50%; } - - .pep-owner { - width: 25%; } - /* Jobs landing page */ .jobs-intro { padding-top: 2em; @@ -2302,7 +2253,6 @@ html[xmlns] .slides { display: block; } display: inline; visibility: visible; } - .pep-widget, .psf-widget, .python-needs-you-widget { padding: 1.5em 1.75em; } @@ -2349,15 +2299,6 @@ html[xmlns] .slides { display: block; } zoom: 1; display: inline; } - .pep-widget .widget-title { - position: relative; - padding-right: 6em; } - - .rss-link { - position: absolute; - top: 0; - right: 0; } - /* Footer */ .sitemap a { text-align: left; } diff --git a/static/sass/no-mq.css b/static/sass/no-mq.css index f50d4140c..52be49bef 100644 --- a/static/sass/no-mq.css +++ b/static/sass/no-mq.css @@ -115,17 +115,11 @@ /* Other elements */ .container, .row, -.pep-list-header, -.pep-index-list li, -.info-key, .listing-company, .list-recent-jobs li { *zoom: 1; } .container:after, .row:after, - .pep-list-header:after, - .pep-index-list li:after, - .info-key:after, .listing-company:after, .list-recent-jobs li:after { content: ""; @@ -338,17 +332,11 @@ html[xmlns] .slides { display: block; } /* Other elements */ .container, .row, -.pep-list-header, -.pep-index-list li, -.info-key, .listing-company, .list-recent-jobs li { *zoom: 1; } .container:after, .row:after, - .pep-list-header:after, - .pep-index-list li:after, - .info-key:after, .listing-company:after, .list-recent-jobs li:after { content: ""; @@ -1137,48 +1125,11 @@ a.button { float: left; margin-right: 2.12766%; } -.pep-widget, .psf-widget, .python-needs-you-widget { padding: 1.5em 1.75em; clear: both; } -/* PEP landing page */ -.pep-list-header, -.pep-index-list li, -.info-key { - margin: 0 -.5em; } - -.pep-list-header { - display: block; } - -.pep-index-list .label { - display: none; } -.pep-index-list a { - display: block; } -.pep-index-list li { - border-bottom: 1px solid #e3e7ec; - margin-bottom: 0; } - -.pep-type, -.pep-num, -.pep-title, -.pep-owner { - float: left; - border-bottom: 0; } - -.pep-type { - width: 15%; } - -.pep-num { - width: 10%; } - -.pep-title { - width: 50%; } - -.pep-owner { - width: 25%; } - /* Jobs landing page */ .jobs-intro { padding-top: 2em; @@ -1990,7 +1941,6 @@ a.button { display: inline; visibility: visible; } -.pep-widget, .psf-widget, .python-needs-you-widget { padding: 1.5em 1.75em; } @@ -2037,15 +1987,6 @@ a.button { zoom: 1; display: inline; } -.pep-widget .widget-title { - position: relative; - padding-right: 6em; } - -.rss-link { - position: absolute; - top: 0; - right: 0; } - /* Footer */ .sitemap a { text-align: left; } diff --git a/static/sass/style.css b/static/sass/style.css index b66cc9de4..894cd6214 100644 --- a/static/sass/style.css +++ b/static/sass/style.css @@ -133,7 +133,7 @@ display: table; clear: both; } -.pep-widget, .most-recent-events .more-by-location, .user-profile-controls div.section-links ul li, .more-by-location { +.most-recent-events .more-by-location, .user-profile-controls div.section-links ul li, .more-by-location { background-color: #d8dbde; *zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFE6E8EA', endColorstr='#FFD8DBDE'); @@ -146,12 +146,12 @@ -moz-box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.01); box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.01); } -.pep-widget, .most-recent-events .more-by-location, .user-profile-controls div.section-links ul li { +.most-recent-events .more-by-location, .user-profile-controls div.section-links ul li { border: 1px solid #caccce; margin-bottom: 0.5em; padding: 1.25em; *zoom: 1; } - .pep-widget:after, .most-recent-events .more-by-location:after, .user-profile-controls div.section-links ul li:after { + .most-recent-events .more-by-location:after, .user-profile-controls div.section-links ul li:after { content: ""; display: table; clear: both; } @@ -973,7 +973,7 @@ h2.not-column { /* ! ===== HELPFUL CLASSES ===== */ /* A useful class that helps control how lines might break. Use carefully and always test. */ -.pre, .rss-link { +.pre { white-space: nowrap; } /* Our own little class for progressive text. Yes, it is a Monty Python reference */ @@ -2264,133 +2264,6 @@ table tfoot { color: #b55863; font-family: SourceSansProBold, Arial, sans-serif; } -/* ! ===== PEP Widget ===== */ -.pep-widget { - margin-bottom: 1.3125em; } - .pep-widget .widget-title { - color: #737373; - margin-bottom: 0.35em; - font-size: 1.125em; } - .fontface .pep-widget .widget-title { - font-size: 1.29375em; } - .fontface .pep-widget .widget-title span:before { - font-size: .875em; } - .pep-widget .widget-title a { - color: #3776ab; } - .pep-widget .widget-title a:hover, .pep-widget .widget-title a:active { - color: #1f3b47; } - .pep-widget .pep-number { - color: #666666; - font-family: SourceSansProBold, Arial, sans-serif; - display: inline-block; - width: 3em; } - -.pep-list { - border-top: 1px solid #caccce; - line-height: 1.2em; - margin: 0; } - .pep-list li { - display: block; - line-height: 1.35em; } - .pep-list li a { - display: block; - color: #3776ab; - background-color: #f2f4f6; - border-bottom: 1px solid #e6eaee; - padding: .6em .75em .5em; } - .pep-list li a:hover, .pep-list li a:focus, .pep-list li a:active { - color: #222222; - background-color: #fefefe; } - -.rss-link { - line-height: 1em; } - .rss-link span:before { - color: #cc9547; } - -/* ! ===== PEP landing page ===== */ -/*<div class="pep-list-header list-row-headings"> - <span class="pep-type">Type</span> - <span class="pep-num">Number</span> - <span class="pep-title">Title <span class="say-no-more">(click for more)</span></span> - <span class="pep-owner">Owner</span> -</div> -<ul class="pep-index-list menu"> - <li> - <div class="pep-type"><span class="label">Type</span>info-act</div> - <div class="pep-num"><span class="label">Number</span><a href="http://hg.python.org/peps/file/tip/pep-0020.txt">20</a></div> - <div class="pep-title"><span class="label">Title</span><a href="http://hg.python.org/peps/file/tip/pep-0020.txt">The Zen of Python</a></div> - <div class="pep-owner"><span class="label">Owner</span>Tim Peters</div> - </li> -</ul>*/ -.pep-list-header { - font-family: SourceSansProBold, Arial, sans-serif; - display: none; } - -.pep-index-list { - margin-bottom: 2.625em; } - .pep-index-list .label { - font-family: SourceSansProBold, Arial, sans-serif; - display: inline-block; - width: 20%; } - .pep-index-list li { - background-color: #f2f4f6; - border-bottom: 1px solid #caccce; } - .pep-index-list a { - display: inline-block; - color: #3776ab; } - .pep-index-list a:hover, .pep-index-list a:focus, .pep-index-list a:active { - color: #222222; } - -.pep-type, .pep-num, .pep-title, .pep-owner { - padding: .5em .5em .4em; - border-bottom: 1px solid #e3e7ec; } - -.footnote .label { - width: 4em; } - -/*dl*/ -.info-key dt, .info-key dd { - display: block; - float: left; - padding: .5em .5em .4em; } -.info-key dt { - width: 25%; } -.info-key dd { - width: 75%; - border-bottom: 1px solid #e6e8ea; } - -/* <div class="pep-owner-header"> - <div class="label">Name</div> - <div class="label">Email Address</div> - </div> - <ul class="pep-owner-list menu"> - <li> - <div class="owner-name">Tim Peters</div> - <div class="owner-email">tim at zope.com</div> - </li> - </ul> */ -.pep-owner-header { - margin: 0 -.5em; - overflow: hidden; - *zoom: 1; } - .pep-owner-header .label { - font-family: SourceSansProBold, Arial, sans-serif; - float: left; - width: 50%; - padding: .25em .5em .2em; } - -.pep-owner-list li { - background-color: #f2f4f6; - border-bottom: 1px solid #caccce; - overflow: hidden; - *zoom: 1; } - .pep-owner-list li:hover { - background-color: #fefefe; } -.pep-owner-list .owner-name, .pep-owner-list .owner-email { - float: left; - width: 50%; - padding: .5em .5em .4em; } - /* ! ===== Success Stories landing page ===== */ .featured-success-story { padding: 1.3125em 0; diff --git a/static/sass/style.scss b/static/sass/style.scss index 174a73374..5988b00d1 100644 --- a/static/sass/style.scss +++ b/static/sass/style.scss @@ -1265,166 +1265,6 @@ $colors: $blue, $psf, $yellow, $green, $purple, $red; .draft-preview { color: $red; font-family: $default-font-bold; } -/* ! ===== PEP Widget ===== */ -.pep-widget { - @extend %grey-colorbox; - margin-bottom: rhythm( .75 ); - - .widget-title { - color: lighten($grey, 5%); - margin-bottom: 0.35em; - @include fontface-adjust( 18px ); - - a { - color: $blue; - - &:hover, &:active { color: $darkblue; } - } - } - - .pep-number { - color: $grey; - font-family: $default-font-bold; - display: inline-block; - width: 3em; - } -} - - .pep-list { - border-top: 1px solid $default-border-color; - line-height: 1.2em; - margin: 0; - - li { - display: block; - line-height: 1.35em; - - a { - display: block; - color: $blue; - background-color: $grey-lighterest; - border-bottom: 1px solid darken($grey-lighterest, 4%); - padding: .6em .75em .5em; - - &:hover, &:focus, &:active { - color: $grey-darker; - background-color: lighten($grey-lighterest, 4%); - } - } - } - } - -.rss-link { - @extend .pre; - line-height: 1em; - - span:before { color: $orange; } -} - -/* ! ===== PEP landing page ===== */ - /*<div class="pep-list-header list-row-headings"> - <span class="pep-type">Type</span> - <span class="pep-num">Number</span> - <span class="pep-title">Title <span class="say-no-more">(click for more)</span></span> - <span class="pep-owner">Owner</span> - </div> - <ul class="pep-index-list menu"> - <li> - <div class="pep-type"><span class="label">Type</span>info-act</div> - <div class="pep-num"><span class="label">Number</span><a href="http://hg.python.org/peps/file/tip/pep-0020.txt">20</a></div> - <div class="pep-title"><span class="label">Title</span><a href="http://hg.python.org/peps/file/tip/pep-0020.txt">The Zen of Python</a></div> - <div class="pep-owner"><span class="label">Owner</span>Tim Peters</div> - </li> - </ul>*/ -.pep-list-header, .pep-index-list li { } - -.pep-list-header { - font-family: $default-font-bold; - display: none; -} - -.pep-index-list { - margin-bottom: rhythm( 1.5 ); - - .label { - font-family: $default-font-bold; - display: inline-block; - width: 20%; - } - - li { - background-color: $grey-lighterest; - border-bottom: 1px solid $grey-lighter; - } - - a { - display: inline-block; - color: $blue; - - &:hover, &:focus, &:active { color: $grey-darker; } - } -} - -.pep-type, .pep-num, .pep-title, .pep-owner { - padding: .5em .5em .4em; - border-bottom: 1px solid darken($grey-lighterest, 5%); -} - -.footnote .label { - width: 4em; -} - -/*dl*/ .info-key { - - dt, dd { - display: block; - float: left; - padding: .5em .5em .4em; - } - - dt { width: 25%; } - dd { width: 75%; border-bottom: 1px solid $grey-lightest; } -} - -/* <div class="pep-owner-header"> - <div class="label">Name</div> - <div class="label">Email Address</div> - </div> - <ul class="pep-owner-list menu"> - <li> - <div class="owner-name">Tim Peters</div> - <div class="owner-email">tim at zope.com</div> - </li> - </ul> */ -.pep-owner-header { - margin: 0 -.5em; - @include clearfix(); - - .label { - font-family: $default-font-bold; - float: left; - width: 50%; - padding: .25em .5em .2em; - } -} -.pep-owner-list { - - li { - background-color: $grey-lighterest; - border-bottom: 1px solid $grey-lighter; - @include clearfix(); - - &:hover { background-color: lighten($grey-lighterest, 4%); } - } - - .owner-name, .owner-email { - float: left; - width: 50%; - padding: .5em .5em .4em; - } -} - - /* ! ===== Success Stories landing page ===== */ .featured-success-story { padding: rhythm( .75 ) 0; diff --git a/templates/pages/pep-page.html b/templates/pages/pep-page.html deleted file mode 100644 index 4b804df50..000000000 --- a/templates/pages/pep-page.html +++ /dev/null @@ -1,83 +0,0 @@ -{% extends "base.html" %} -{% load boxes %} -{% load sitetree %} - -{% block body_attributes %}class="python pages pep-page"{% endblock %} - -{% block content_attributes %}with-left-sidebar{% endblock %} - -{% block page_title %}{{ page.title }} | {{ SITE_INFO.site_name }}{% endblock %} -{% block og_title %}{{ page.title }}{% endblock %} - -{% block breadcrumbs %} -<ul class="breadcrumbs menu"> - <li> - <a href="/" title="The Python Programming Language">Python</a><span class="prompt">>>></span> - </li> - <li> - <a href="/dev/">Python Developer's Guide</a><span class="prompt">>>></span> - </li> - <li> - <a href="/dev/peps/">PEP Index</a><span class="prompt">>>></span> - </li> - <li>{{ page.title }}</li> -</ul> -{% endblock %} -. -{% block content %} -<style> - .pep-page pre { - padding: .5em; - background: inherit; - border-left: 0px; - -webkit-box-shadow: 0 0 0 0; - -moz-box-shadow: 0 0 0 0; - box-shadow: 0 0 0 0; - } - .pep-page pre.literal-block { - background-color: #e6e8ea; - border: 1px solid #ddd; - padding: 1em; - -webkit-box-shadow: 0 0 1em rgba( 0, 0, 0, 0.2 ); - -moz-box-shadow: 0 0 1em rgba( 0, 0, 0, 0.2 ); - box-shadow: 0 0 1em rgba( 0, 0, 0, 0.2 ); - } -</style> - - {% if not page.is_published %} - <div class="user-feedback level-notice"> - <p role="alert">This page is a draft and it hasn't been published yet. Only staff users can see it.</p> - </div> - {% endif %} - <article class="text"> - {% if request.user.is_staff %} - <a role="button" class="button" href="{% url 'admin:pages_page_change' page.pk %}">Edit this page</a> - {% endif %} - - <header class="article-header"> - <h1 class="page-title">{{ page.title }}</h1> - </header> - - {{ page.content }} - - </article> -{% endblock content %} - - -{% block left_sidebar %} -{% comment %} -TODO: should this partially come from sitetree? -{% endcomment %} - -<aside class="left-sidebar" role="secondary"> - - {% include "components/navigation-widget.html" %} - - <div class="psf-sidebar-widget sidebar-widget"> - {% box 'widget-sidebar-aboutpsf' %} - - </div> - -</aside> - -{% endblock left_sidebar %} diff --git a/templates/peps/list.html b/templates/peps/list.html deleted file mode 100644 index 597bf4c09..000000000 --- a/templates/peps/list.html +++ /dev/null @@ -1,106 +0,0 @@ -{% extends "base.html" %} - -{% block page_title %}Our Enhancement Proposals | {{ SITE_INFO.site_name }}{% endblock %} - -{% block body_attributes %}class="python pep-index default-page"{% endblock %} - -{% block content %} - - <article> - <h1>Index of Python Enhancement Proposals</h1> - - {% for cat in categories %} - - {% if cat.peps.all|length > 0 %} - <h2>{{ cat.name }}</h2> - - <div class="pep-list-header"> - <div class="pep-type">Type/Status</div> - <div class="pep-num">Number</div> - <div class="pep-title">Title <span class="say-no-more">(click for more)</span></div> - <div class="pep-owner">Owner</div> - </div> - <ul class="pep-index-list menu"> - {% for pep in cat.peps.all %} - <li> - <div class="pep-type"><span class="label">Type/Status</span>{{ pep.type.abbreviation }}{% if pep.status.abbreviation %}/{{ pep.status.abbreviation }}{% endif %}</div> - <div class="pep-num"><span class="label">Number</span><a href="{{ pep.url }}">{{ pep.number }}</a></div> - <div class="pep-title"><span class="label">Title</span><a href="{{ pep.url }}">{{ pep.title }}</a></div> - <div class="pep-owner"><span class="label">Owner</span>{{ pep.get_owner_names }}</div> - </li> - {% endfor %} - </ul> - {% endif %} - - {% endfor %} - - <h2>Numerical List</h2> - - <div class="pep-list-header"> - <div class="pep-type">Type/Status</div> - <div class="pep-num">Number</div> - <div class="pep-title">Title <span class="say-no-more">(click for more)</span></div> - <div class="pep-owner">Owner</div> - </div> - <ul class="pep-index-list menu"> - {% for pep in peps %} - <li> - <div class="pep-type"><span class="label">Type/Status</span>{{ pep.type.abbreviation }}{% if pep.status.abbreviation %}/{{ pep.status.abbreviation }}{% endif %}</div> - <div class="pep-num"><span class="label">Number</span><a href="{{ pep.url }}">{{ pep.number }}</a></div> - <div class="pep-title"><span class="label">Title</span><a href="{{ pep.url }}">{{ pep.title }}</a></div> - <div class="pep-owner"><span class="label">Owner</span>{{ pep.get_owner_names }}</div> - </li> - {% endfor %} - </ul> - - - <div class="col-row four-col"> - - <div class="column double-col"> - - <h2>Key</h2> - - <div class="col-row two-col"> - <div class="column"> - <h5>Types</h5> - <dl class="info-key"> - {% for t in types %} - <dt>{{ t.abbreviation }}</dt> - <dd>{{ t.name }}</dd> - {% endfor %} - </dl> - </div> - - <div class="column"> - <h5>Statuses</h5> - <dl class="info-key"> - {% for s in statuses %} - <dt>{{ s.abbreviation }}</dt> - <dd>{{ s.name }}</dd> - {% endfor %} - </dl> - </div> - </div> - - </div> - <div class="column double-col"> - - <h2>Owners</h2> - <div class="pep-owner-header"> - <div class="label">Name</div> - <div class="label">Email Address</div> - </div> - <ul class="pep-owner-list menu"> - {% for o in owners %} - <li> - <div class="owner-name">{{ o.name }}</div> - <div class="owner-email">{{ o.email_display }}</div> - </li> - {% endfor %} - </ul> - - </div> - </div><!-- end .four-col --> - - </article> -{% endblock %} \ No newline at end of file diff --git a/templates/python/documentation.html b/templates/python/documentation.html index e301b0010..a87de21d0 100644 --- a/templates/python/documentation.html +++ b/templates/python/documentation.html @@ -80,7 +80,7 @@ <h2 class="widget-title"><span aria-hidden="true" class="icon-versions"></span>P <h2 class="widget-title"><span aria-hidden="true" class="icon-versions"></span>Porting from Python 2 to Python 3</h2> <ul> <li><a href="https://www.python.org/doc/sunset-python-2/">FAQ: Sunsetting Python 2</a></li> - <li><a href="https://www.python.org/dev/peps/pep-0373/">Final Python 2.7 Release Schedule</a></li> + <li><a href="https://peps.python.org/pep-0373/">Final Python 2.7 Release Schedule</a></li> <li><a href="https://python3statement.github.io/">Python 3 Statement</a></li> <li> <a href="https://docs.python.org/3/howto/pyporting.html">Porting Python 2 Code to Python 3</a> From 578c62454a653abf7d665d5f4427cbe5827c6144 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Tue, 25 Nov 2025 23:15:29 +0200 Subject: [PATCH 245/256] Generate page of docs by version (#2813) --- pydotorg/urls.py | 1 + pydotorg/views.py | 114 +++++++++++++++++++++++++++++++++ templates/python/versions.html | 58 +++++++++++++++++ 3 files changed, 173 insertions(+) create mode 100644 templates/python/versions.html diff --git a/pydotorg/urls.py b/pydotorg/urls.py index 8a70d5790..bd5496fb6 100644 --- a/pydotorg/urls.py +++ b/pydotorg/urls.py @@ -32,6 +32,7 @@ path('getit/', include('downloads.urls', namespace='getit')), path('downloads/', include('downloads.urls', namespace='download')), path('doc/', views.DocumentationIndexView.as_view(), name='documentation'), + path('doc/versions2/', views.DocsByVersionView.as_view(), name='docs-versions'), path('blogs/', include('blogs.urls')), path('inner/', TemplateView.as_view(template_name="python/inner.html"), name='inner'), diff --git a/pydotorg/views.py b/pydotorg/views.py index bbc30ec51..8d1bf7f05 100644 --- a/pydotorg/views.py +++ b/pydotorg/views.py @@ -1,5 +1,9 @@ +import datetime as dt import json import os +import re +from collections import defaultdict + from django.conf import settings from django.http import HttpResponse, JsonResponse from django.views.generic.base import RedirectView, TemplateView @@ -67,3 +71,113 @@ def get_redirect_url(self, *args, **kwargs): settings.AWS_STORAGE_BUCKET_NAME, image_path, ]) + + +class DocsByVersionView(TemplateView): + template_name = "python/versions.html" + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + + releases = Release.objects.filter( + is_published=True, + pre_release=False, + ).order_by("-release_date") + + # Some releases have no documentation + no_docs = {"2.3.6", "2.3.7", "2.4.5", "2.4.6", "2.5.5", "2.5.6"} + + # We'll group releases by major.minor version + version_groups = defaultdict(list) + + for release in releases: + # Extract version number from name ("Python 3.14.0" -> "3.14.0") + version_match = re.match(r"Python ([\d.]+)", release.name) + if version_match: + full_version = version_match.group(1) + + if full_version in no_docs: + continue + + # Get major.minor version ("3.14.0" -> "3.14") + version_parts = full_version.split(".") + major_minor = f"{version_parts[0]}.{version_parts[1]}" + + # For 3.2.0 and earlier, use X.Y instead of X.Y.0 + if len(version_parts) == 3: + major, minor, patch = map(int, version_parts) + # For versions <= 3.2.0 where patch is 0 + if (major, minor, patch) <= (3, 2, 0) and patch == 0: + full_version = major_minor + + release_data = { + "stage": full_version, + "date": release.release_date.replace(tzinfo=None), + } + version_groups[major_minor].append(release_data) + + # Add legacy releases not in the database + legacy_releases_data = { + "2.2": [ + {"stage": "2.2p1", "date": dt.datetime(2002, 3, 29)}, + ], + "2.1": [ + {"stage": "2.1.2", "date": dt.datetime(2002, 1, 16)}, + {"stage": "2.1.1", "date": dt.datetime(2001, 7, 20)}, + {"stage": "2.1", "date": dt.datetime(2001, 4, 15)}, + ], + "2.0": [ + {"stage": "2.0", "date": dt.datetime(2000, 10, 16)}, + ], + "1.6": [ + {"stage": "1.6", "date": dt.datetime(2000, 9, 5)}, + ], + "1.5": [ + {"stage": "1.5.2p2", "date": dt.datetime(2000, 3, 22)}, + {"stage": "1.5.2p1", "date": dt.datetime(1999, 7, 6)}, + {"stage": "1.5.2", "date": dt.datetime(1999, 4, 30)}, + {"stage": "1.5.1p1", "date": dt.datetime(1998, 8, 6)}, + {"stage": "1.5.1", "date": dt.datetime(1998, 4, 14)}, + {"stage": "1.5", "date": dt.datetime(1998, 2, 17)}, + ], + "1.4": [ + {"stage": "1.4", "date": dt.datetime(1996, 10, 25)}, + ], + } + + # Merge legacy releases in + for version, items in legacy_releases_data.items(): + version_groups[version].extend(items) + + # Convert to list for template and sort releases within each version + version_list = [] + for version, releases in version_groups.items(): + # Sort x.y.z newest first + releases = sorted( + releases, + key=lambda x: x.get("date", dt.datetime.min), + reverse=True, + ) + for release in releases: + release["date"] = release["date"].strftime("%-d %B %Y") + + version_list.append( + { + "version": version, + "releases": releases, + } + ) + + # Sort x.y versions (newest first) + version_list.sort( + key=lambda x: [ + int(n) if n.isdigit() else n for n in x["version"].split(".") + ], + reverse=True, + ) + + context.update({ + "version_list": version_list, + }) + + return context diff --git a/templates/python/versions.html b/templates/python/versions.html new file mode 100644 index 000000000..ab9c6a222 --- /dev/null +++ b/templates/python/versions.html @@ -0,0 +1,58 @@ +{% extends "base.html" %} +{% load boxes %} +{% load sitetree %} + +{% block page_title %}Python documentation by version | {{ SITE_INFO.site_name }}{% endblock %} + +{% block body_attributes %}class="python pages default-page"{% endblock %} + +{% block breadcrumbs %} +{% sitetree_breadcrumbs from "main" %} +{% endblock breadcrumbs %} + +{% block content_attributes %}with-left-sidebar{% endblock %} + +{% block content %} + <article class="text"> + <header class="article-header"> + <h1 class="page-title">Python documentation by version</h1> + </header> + + <p>Some previous versions of the documentation remain available online. Use the list below to select a version to view.</p> + + <p>For unreleased (in development) documentation, see <a href="#in-development-versions">In development versions</a>.</p> + + <h2>Release versions</h2> + + {% for version_data in version_list %} + <h3>Python {{ version_data.version }}</h3> + <ul> + {% for release in version_data.releases %} + <li> + {% if release.stage %} + <a href="https://docs.python.org/release/{{ release.stage|cut:" " }}/">Python {{ release.stage }}</a>{% if release.date %}, released on {{ release.date }}{% endif %} + {% endif %} + </li> + {% endfor %} + </ul> + {% endfor %} + + <h2 id="in-development-versions">In development versions</h2> + <p>The latest, and unreleased, documentation for versions of Python still under development:</p> + <ul> + <li><a href="https://docs.python.org/dev/">Development version</a></li> + <li><a href="https://docs.python.org/3/">Python 3.x</a></li> + </ul> + + </article> +{% endblock content %} + +{% block left_sidebar %} +<aside class="left-sidebar" role="secondary"> + {% include "components/navigation-widget.html" %} + + <div class="psf-sidebar-widget sidebar-widget"> + {% box 'widget-sidebar-aboutpsf' %} + </div> +</aside> +{% endblock left_sidebar %} From 95f50d79e146f3dc58de0ed8dc8ce84161b8e699 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Tue, 25 Nov 2025 23:15:47 +0200 Subject: [PATCH 246/256] Add `/downloads/latest/prerelease` redirect (#2823) --- downloads/managers.py | 6 ++++++ downloads/models.py | 1 + downloads/tests/test_models.py | 22 ++++++++++++++++++++++ downloads/tests/test_views.py | 12 ++++++++++++ downloads/urls.py | 1 + downloads/views.py | 17 +++++++++++++++++ fixtures/boxes.json | 8 ++++---- 7 files changed, 63 insertions(+), 4 deletions(-) diff --git a/downloads/managers.py b/downloads/managers.py index 22da0cdd0..f692524ce 100644 --- a/downloads/managers.py +++ b/downloads/managers.py @@ -35,6 +35,9 @@ def latest_python3(self, minor_version: int | None = None): pattern = rf"^Python 3\.{minor_version}\." return self.python3().filter(name__regex=pattern).order_by("-release_date") + def latest_prerelease(self): + return self.python3().filter(pre_release=True).order_by("-release_date") + def latest_pymanager(self): return self.pymanager().filter(is_latest=True) @@ -52,5 +55,8 @@ def latest_python2(self): def latest_python3(self, minor_version: int | None = None): return self.get_queryset().latest_python3(minor_version).first() + def latest_prerelease(self): + return self.get_queryset().latest_prerelease().first() + def latest_pymanager(self): return self.get_queryset().latest_pymanager().first() diff --git a/downloads/models.py b/downloads/models.py index f37a041d0..fb651c29a 100644 --- a/downloads/models.py +++ b/downloads/models.py @@ -298,6 +298,7 @@ def purge_fastly_download_pages(sender, instance, **kwargs): match = re.match(r'^3\.(\d+)', version) if match: purge_url(f'/downloads/latest/python3.{match.group(1)}/') + purge_url('/downloads/latest/prerelease/') purge_url('/downloads/latest/pymanager/') purge_url('/downloads/macos/') purge_url('/downloads/source/') diff --git a/downloads/tests/test_models.py b/downloads/tests/test_models.py index 1c8e9ba47..1f260e08a 100644 --- a/downloads/tests/test_models.py +++ b/downloads/tests/test_models.py @@ -74,6 +74,28 @@ def test_latest_python3(self): latest_3_99 = Release.objects.latest_python3(minor_version=99) self.assertIsNone(latest_3_99) + def test_latest_prerelease(self): + latest_prerelease = Release.objects.latest_prerelease() + self.assertEqual(latest_prerelease, self.pre_release) + + # Create a newer prerelease with a future date + newer_prerelease = Release.objects.create( + version=Release.PYTHON3, + name="Python 3.9.99", + is_published=True, + pre_release=True, + release_date=self.pre_release.release_date + dt.timedelta(days=1), + ) + latest_prerelease = Release.objects.latest_prerelease() + self.assertEqual(latest_prerelease, newer_prerelease) + self.assertNotEqual(latest_prerelease, self.pre_release) + + def test_latest_prerelease_when_no_prerelease(self): + # Delete the prerelease + self.pre_release.delete() + latest_prerelease = Release.objects.latest_prerelease() + self.assertIsNone(latest_prerelease) + def test_get_version(self): self.assertEqual(self.release_275.name, 'Python 2.7.5') self.assertEqual(self.release_275.get_version(), '2.7.5') diff --git a/downloads/tests/test_views.py b/downloads/tests/test_views.py index 1fbb687d0..5c5471d5a 100644 --- a/downloads/tests/test_views.py +++ b/downloads/tests/test_views.py @@ -95,6 +95,18 @@ def test_latest_python3x_redirects(self): response = self.client.get(url) self.assertRedirects(response, reverse("download:download")) + def test_latest_prerelease_redirect(self): + url = reverse("download:download_latest_prerelease") + response = self.client.get(url) + self.assertRedirects(response, self.pre_release.get_absolute_url()) + + def test_latest_prerelease_redirect_when_no_prerelease(self): + # Delete the prerelease to test fallback + self.pre_release.delete() + url = reverse("download:download_latest_prerelease") + response = self.client.get(url) + self.assertRedirects(response, reverse("download:download")) + def test_redirect_page_object_to_release_detail_page(self): self.release_275.release_page = None self.release_275.save() diff --git a/downloads/urls.py b/downloads/urls.py index 75dcef211..01f055fde 100644 --- a/downloads/urls.py +++ b/downloads/urls.py @@ -6,6 +6,7 @@ re_path(r'latest/python2/?$', views.DownloadLatestPython2.as_view(), name='download_latest_python2'), re_path(r'latest/python3/?$', views.DownloadLatestPython3.as_view(), name='download_latest_python3'), re_path(r'latest/python3\.(?P<minor>\d+)/?$', views.DownloadLatestPython3.as_view(), name='download_latest_python3x'), + re_path(r'latest/prerelease/?$', views.DownloadLatestPrerelease.as_view(), name='download_latest_prerelease'), re_path(r'latest/pymanager/?$', views.DownloadLatestPyManager.as_view(), name='download_latest_pymanager'), re_path(r'latest/?$', views.DownloadLatestPython3.as_view(), name='download_latest_python3'), path('operating-systems/', views.DownloadFullOSList.as_view(), name='download_full_os_list'), diff --git a/downloads/views.py b/downloads/views.py index 1d69a234c..fd1141c14 100644 --- a/downloads/views.py +++ b/downloads/views.py @@ -47,6 +47,23 @@ def get_redirect_url(self, **kwargs): return reverse("downloads:download") +class DownloadLatestPrerelease(RedirectView): + """Redirect to latest Python 3 prerelease""" + + permanent = False + + def get_redirect_url(self, **kwargs): + try: + latest_prerelease = Release.objects.latest_prerelease() + except Release.DoesNotExist: + latest_prerelease = None + + if latest_prerelease: + return latest_prerelease.get_absolute_url() + else: + return reverse("downloads:download") + + class DownloadLatestPyManager(RedirectView): """ Redirect to latest Python install manager release """ permanent = False diff --git a/fixtures/boxes.json b/fixtures/boxes.json index df66827b5..17103ee2f 100644 --- a/fixtures/boxes.json +++ b/fixtures/boxes.json @@ -642,9 +642,9 @@ "created": "2014-02-13T21:06:57.376Z", "updated": "2021-07-29T21:39:50.973Z", "label": "download-banner", - "content": "<p>\r\n Looking for Python with a different OS? Python for\r\n <a href=\"/downloads/windows/\">Windows</a>,\r\n <a href=\"/downloads/source/\">Linux/UNIX</a>,\r\n <a href=\"/downloads/macos/\">macOS</a>,\r\n <a href=\"/download/other/\">Other</a>\r\n</p>\r\n\r\n<p style=\"margin-top: 0.35em\">\r\n Want to help test development versions of Python?\r\n <a href=\"/download/pre-releases/\">Prereleases</a>,\r\n <a href=\"https://quay.io/repository/python-devs/ci-image\">Docker images</a> \r\n</p>\r\n\r\n<p style=\"margin-top: 0.35em\">\r\n Looking for Python 2.7? See below for specific releases\r\n</p>", + "content": "<p>\r\n Looking for Python with a different OS? Python for\r\n <a href=\"/downloads/windows/\">Windows</a>,\r\n <a href=\"/downloads/source/\">Linux/Unix</a>,\r\n <a href=\"/downloads/macos/\">macOS</a>,\r\n <a href=\"/downloads/android/\">Android</a>,\r\n <a href=\"/download/other/\">other</a>\r\n</p>\r\n<p style=\"margin-top: 0.35em\">\r\n Want to help test development versions of Python 3.15?\r\n <a href=\"/downloads/latest/prerelease/\">Pre-releases</a>,\r\n <a href=\"https://gitlab.com/python-devs/ci-images\">Docker images</a> \r\n</p>", "content_markup_type": "html", - "_content_rendered": "<p>\r\n Looking for Python with a different OS? Python for\r\n <a href=\"/downloads/windows/\">Windows</a>,\r\n <a href=\"/downloads/source/\">Linux/UNIX</a>,\r\n <a href=\"/downloads/macos/\">macOS</a>,\r\n <a href=\"/download/other/\">Other</a>\r\n</p>\r\n\r\n<p style=\"margin-top: 0.35em\">\r\n Want to help test development versions of Python?\r\n <a href=\"/download/pre-releases/\">Prereleases</a>,\r\n <a href=\"https://quay.io/repository/python-devs/ci-image\">Docker images</a> \r\n</p>\r\n\r\n<p style=\"margin-top: 0.35em\">\r\n Looking for Python 2.7? See below for specific releases\r\n</p>" + "_content_rendered": "<p>\r\n Looking for Python with a different OS? Python for\r\n <a href=\"/downloads/windows/\">Windows</a>,\r\n <a href=\"/downloads/source/\">Linux/Unix</a>,\r\n <a href=\"/downloads/macos/\">macOS</a>,\r\n <a href=\"/downloads/android/\">Android</a>,\r\n <a href=\"/download/other/\">other</a>\r\n</p>\r\n<p style=\"margin-top: 0.35em\">\r\n Want to help test development versions of Python 3.15?\r\n <a href=\"/downloads/latest/prerelease/\">Pre-releases</a>,\r\n <a href=\"https://gitlab.com/python-devs/ci-images\">Docker images</a> \r\n</p>" } }, { @@ -702,9 +702,9 @@ "created": "2020-10-05T17:33:33.157Z", "updated": "2022-05-17T17:22:45.210Z", "label": "downloads-active-releases", - "content": "<div class=\"list-row-headings\">\r\n <span class=\"release-version\">Python version</span>\r\n <span class=\"release-status\">Maintenance status</span>\r\n <span class=\"release-start\">First released</span>\r\n <span class=\"release-end\">End of support</span>\r\n <span class=\"release-pep\">Release schedule</span>\r\n</div>\r\n<ol class=\"list-row-container menu\">\r\n <li>\r\n <span class=\"release-version\">3.10</span>\r\n <span class=\"release-status\">bugfix</span>\r\n <span class=\"release-start\">2021-10-04</span>\r\n <span class=\"release-end\">2026-10</span>\r\n <span class=\"release-pep\"><a href=\"https://www.python.org/dev/peps/pep-0619\">PEP 619</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.9</span>\r\n <span class=\"release-status\">security</span>\r\n <span class=\"release-start\">2020-10-05</span>\r\n <span class=\"release-end\">2025-10</span>\r\n <span class=\"release-pep\"><a href=\"https://www.python.org/dev/peps/pep-0596\">PEP 596</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.8</span>\r\n <span class=\"release-status\">security</span>\r\n <span class=\"release-start\">2019-10-14</span>\r\n <span class=\"release-end\">2024-10</span>\r\n <span class=\"release-pep\"><a href=\"https://www.python.org/dev/peps/pep-0569\">PEP 569</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.7</span>\r\n <span class=\"release-status\">security</span>\r\n <span class=\"release-start\">2018-06-27</span>\r\n <span class=\"release-end\">2023-06-27</span>\r\n <span class=\"release-pep\"><a href=\"https://www.python.org/dev/peps/pep-0537\">PEP 537</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">2.7</span>\r\n <span class=\"release-status\">end-of-life</span>\r\n <span class=\"release-start\">2010-07-03</span>\r\n <span class=\"release-end\">2020-01-01</span>\r\n <span class=\"release-pep\"><a href=\"https://www.python.org/dev/peps/pep-0373\">PEP 373</a></span>\r\n </li>\r\n</ol>", + "content": "<div class=\"list-row-headings\">\r\n <span class=\"release-version\">Python version</span>\r\n <span class=\"release-status\">Maintenance status</span>\r\n <span class=\"release-dl\"> </span>\r\n <span class=\"release-start\">First released</span>\r\n <span class=\"release-end\">End of support</span>\r\n <span class=\"release-pep\">Release schedule</span>\r\n</div>\r\n<ol class=\"list-row-container menu\">\r\n <li>\r\n <span class=\"release-version\">3.15</span>\r\n <span class=\"release-status\"><a href=\"/downloads/latest/prerelease/\">pre-release</a></span>\r\n <span class=\"release-dl\"><a href=\"/downloads/latest/python3.15/\"><span aria-hidden=\"true\" class=\"icon-download\"></span>Download</a></span>\r\n <span class=\"release-start\">2026-10-07 (planned)</span>\r\n <span class=\"release-end\">2031-10</span>\r\n <span class=\"release-pep\"><a href=\"https://peps.python.org/pep-0790/\">PEP 790</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.14</span>\r\n <span class=\"release-status\">bugfix</span>\r\n <span class=\"release-dl\"><a href=\"/downloads/latest/python3.14/\"><span aria-hidden=\"true\" class=\"icon-download\"></span>Download</a></span>\r\n <span class=\"release-start\">2025-10-07</span>\r\n <span class=\"release-end\">2030-10</span>\r\n <span class=\"release-pep\"><a href=\"https://peps.python.org/pep-0745/\">PEP 745</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.13</span>\r\n <span class=\"release-status\">bugfix</span>\r\n <span class=\"release-dl\"><a href=\"/downloads/latest/python3.13/\"><span aria-hidden=\"true\" class=\"icon-download\"></span>Download</a></span>\r\n <span class=\"release-start\">2024-10-07</span>\r\n <span class=\"release-end\">2029-10</span>\r\n <span class=\"release-pep\"><a href=\"https://peps.python.org/pep-0719/\">PEP 719</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.12</span>\r\n <span class=\"release-status\">security</span>\r\n <span class=\"release-dl\"><a href=\"/downloads/latest/python3.12/\"><span aria-hidden=\"true\" class=\"icon-download\"></span>Download</a></span>\r\n <span class=\"release-start\">2023-10-02</span>\r\n <span class=\"release-end\">2028-10</span>\r\n <span class=\"release-pep\"><a href=\"https://peps.python.org/pep-0693/\">PEP 693</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.11</span>\r\n <span class=\"release-status\">security</span>\r\n <span class=\"release-dl\"><a href=\"/downloads/latest/python3.11/\"><span aria-hidden=\"true\" class=\"icon-download\"></span>Download</a></span>\r\n <span class=\"release-start\">2022-10-24</span>\r\n <span class=\"release-end\">2027-10</span>\r\n <span class=\"release-pep\"><a href=\"https://peps.python.org/pep-0664/\">PEP 664</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.10</span>\r\n <span class=\"release-status\">security</span>\r\n <span class=\"release-dl\"><a href=\"/downloads/latest/python3.10/\"><span aria-hidden=\"true\" class=\"icon-download\"></span>Download</a></span>\r\n <span class=\"release-start\">2021-10-04</span>\r\n <span class=\"release-end\">2026-10</span>\r\n <span class=\"release-pep\"><a href=\"https://peps.python.org/pep-0619/\">PEP 619</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.9</span>\r\n <span class=\"release-status\">end of life, last release was <a href=\"https://www.python.org/downloads/release/python-3925/\">3.9.25</a></span>\r\n <span class=\"release-dl\"><a href=\"/downloads/latest/python3.9/\"><span aria-hidden=\"true\" class=\"icon-download\"></span>Download</a></span>\r\n <span class=\"release-start\">2020-10-05</span>\r\n <span class=\"release-end\">2025-10-31</span>\r\n <span class=\"release-pep\"><a href=\"https://peps.python.org/pep-0596/\">PEP 596</a></span>\r\n </li>\r\n</ol>", "content_markup_type": "html", - "_content_rendered": "<div class=\"list-row-headings\">\r\n <span class=\"release-version\">Python version</span>\r\n <span class=\"release-status\">Maintenance status</span>\r\n <span class=\"release-start\">First released</span>\r\n <span class=\"release-end\">End of support</span>\r\n <span class=\"release-pep\">Release schedule</span>\r\n</div>\r\n<ol class=\"list-row-container menu\">\r\n <li>\r\n <span class=\"release-version\">3.10</span>\r\n <span class=\"release-status\">bugfix</span>\r\n <span class=\"release-start\">2021-10-04</span>\r\n <span class=\"release-end\">2026-10</span>\r\n <span class=\"release-pep\"><a href=\"https://www.python.org/dev/peps/pep-0619\">PEP 619</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.9</span>\r\n <span class=\"release-status\">security</span>\r\n <span class=\"release-start\">2020-10-05</span>\r\n <span class=\"release-end\">2025-10</span>\r\n <span class=\"release-pep\"><a href=\"https://www.python.org/dev/peps/pep-0596\">PEP 596</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.8</span>\r\n <span class=\"release-status\">security</span>\r\n <span class=\"release-start\">2019-10-14</span>\r\n <span class=\"release-end\">2024-10</span>\r\n <span class=\"release-pep\"><a href=\"https://www.python.org/dev/peps/pep-0569\">PEP 569</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.7</span>\r\n <span class=\"release-status\">security</span>\r\n <span class=\"release-start\">2018-06-27</span>\r\n <span class=\"release-end\">2023-06-27</span>\r\n <span class=\"release-pep\"><a href=\"https://www.python.org/dev/peps/pep-0537\">PEP 537</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">2.7</span>\r\n <span class=\"release-status\">end-of-life</span>\r\n <span class=\"release-start\">2010-07-03</span>\r\n <span class=\"release-end\">2020-01-01</span>\r\n <span class=\"release-pep\"><a href=\"https://www.python.org/dev/peps/pep-0373\">PEP 373</a></span>\r\n </li>\r\n</ol>" + "_content_rendered": "<div class=\"list-row-headings\">\r\n <span class=\"release-version\">Python version</span>\r\n <span class=\"release-status\">Maintenance status</span>\r\n <span class=\"release-dl\"> </span>\r\n <span class=\"release-start\">First released</span>\r\n <span class=\"release-end\">End of support</span>\r\n <span class=\"release-pep\">Release schedule</span>\r\n</div>\r\n<ol class=\"list-row-container menu\">\r\n <li>\r\n <span class=\"release-version\">3.15</span>\r\n <span class=\"release-status\"><a href=\"/downloads/latest/prerelease/\">pre-release</a></span>\r\n <span class=\"release-dl\"><a href=\"/downloads/latest/python3.15/\"><span aria-hidden=\"true\" class=\"icon-download\"></span>Download</a></span>\r\n <span class=\"release-start\">2026-10-07 (planned)</span>\r\n <span class=\"release-end\">2031-10</span>\r\n <span class=\"release-pep\"><a href=\"https://peps.python.org/pep-0790/\">PEP 790</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.14</span>\r\n <span class=\"release-status\">bugfix</span>\r\n <span class=\"release-dl\"><a href=\"/downloads/latest/python3.14/\"><span aria-hidden=\"true\" class=\"icon-download\"></span>Download</a></span>\r\n <span class=\"release-start\">2025-10-07</span>\r\n <span class=\"release-end\">2030-10</span>\r\n <span class=\"release-pep\"><a href=\"https://peps.python.org/pep-0745/\">PEP 745</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.13</span>\r\n <span class=\"release-status\">bugfix</span>\r\n <span class=\"release-dl\"><a href=\"/downloads/latest/python3.13/\"><span aria-hidden=\"true\" class=\"icon-download\"></span>Download</a></span>\r\n <span class=\"release-start\">2024-10-07</span>\r\n <span class=\"release-end\">2029-10</span>\r\n <span class=\"release-pep\"><a href=\"https://peps.python.org/pep-0719/\">PEP 719</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.12</span>\r\n <span class=\"release-status\">security</span>\r\n <span class=\"release-dl\"><a href=\"/downloads/latest/python3.12/\"><span aria-hidden=\"true\" class=\"icon-download\"></span>Download</a></span>\r\n <span class=\"release-start\">2023-10-02</span>\r\n <span class=\"release-end\">2028-10</span>\r\n <span class=\"release-pep\"><a href=\"https://peps.python.org/pep-0693/\">PEP 693</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.11</span>\r\n <span class=\"release-status\">security</span>\r\n <span class=\"release-dl\"><a href=\"/downloads/latest/python3.11/\"><span aria-hidden=\"true\" class=\"icon-download\"></span>Download</a></span>\r\n <span class=\"release-start\">2022-10-24</span>\r\n <span class=\"release-end\">2027-10</span>\r\n <span class=\"release-pep\"><a href=\"https://peps.python.org/pep-0664/\">PEP 664</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.10</span>\r\n <span class=\"release-status\">security</span>\r\n <span class=\"release-dl\"><a href=\"/downloads/latest/python3.10/\"><span aria-hidden=\"true\" class=\"icon-download\"></span>Download</a></span>\r\n <span class=\"release-start\">2021-10-04</span>\r\n <span class=\"release-end\">2026-10</span>\r\n <span class=\"release-pep\"><a href=\"https://peps.python.org/pep-0619/\">PEP 619</a></span>\r\n </li>\r\n <li>\r\n <span class=\"release-version\">3.9</span>\r\n <span class=\"release-status\">end of life, last release was <a href=\"https://www.python.org/downloads/release/python-3925/\">3.9.25</a></span>\r\n <span class=\"release-dl\"><a href=\"/downloads/latest/python3.9/\"><span aria-hidden=\"true\" class=\"icon-download\"></span>Download</a></span>\r\n <span class=\"release-start\">2020-10-05</span>\r\n <span class=\"release-end\">2025-10-31</span>\r\n <span class=\"release-pep\"><a href=\"https://peps.python.org/pep-0596/\">PEP 596</a></span>\r\n </li>\r\n</ol>" } }, { From 901285e790098f84e179de94d113ff827bcf8ec0 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Tue, 25 Nov 2025 23:53:56 +0200 Subject: [PATCH 247/256] Rename to /doc/versions (#2824) --- pydotorg/urls.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pydotorg/urls.py b/pydotorg/urls.py index bd5496fb6..dbcbcd888 100644 --- a/pydotorg/urls.py +++ b/pydotorg/urls.py @@ -32,7 +32,7 @@ path('getit/', include('downloads.urls', namespace='getit')), path('downloads/', include('downloads.urls', namespace='download')), path('doc/', views.DocumentationIndexView.as_view(), name='documentation'), - path('doc/versions2/', views.DocsByVersionView.as_view(), name='docs-versions'), + path('doc/versions/', views.DocsByVersionView.as_view(), name='docs-versions'), path('blogs/', include('blogs.urls')), path('inner/', TemplateView.as_view(template_name="python/inner.html"), name='inner'), From 652484d3f2d0162a7d607a8db11f560a545bb96b Mon Sep 17 00:00:00 2001 From: Chen Zichan <139482965+czc0407@users.noreply.github.com> Date: Wed, 26 Nov 2025 17:36:12 +0800 Subject: [PATCH 248/256] Fix PSF membership link (#2787) with dynamic logic (#2799) Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Co-authored-by: Jacob Coffee <jacob@z7x.org> --- templates/includes/authenticated.html | 14 ++++++++++- users/tests/test_membership_links.py | 36 +++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 users/tests/test_membership_links.py diff --git a/templates/includes/authenticated.html b/templates/includes/authenticated.html index 82d5b38f6..662872a27 100644 --- a/templates/includes/authenticated.html +++ b/templates/includes/authenticated.html @@ -7,7 +7,19 @@ <li class="tier-2 element-1" role="treeitem"><a href="{% url 'users:user_profile_edit' %}">Edit your user profile</a></li> <li class="tier-2 element-2" role="treeitem"><a href="{% url 'account_change_password' %}">Change your password</a></li> {% if request.user.has_membership %} - <li class="tier-2 element-3" role="treeitem"><a href="{% url 'users:user_membership_edit' %}">Edit your PSF Basic membership</a></li> + <li class="tier-2 element-3" role="treeitem"> + {% if user.is_authenticated %} + {% if user.has_membership %} + <a href="{% url 'users:user_membership_edit' %}">Edit your PSF Basic membership</a> + {% else %} + <a href="{% url 'users:user_membership_create' %}">Join the PSF</a> + {% endif %} + {% else %} + <a href="{% url 'account_login' %}?next=https://psfmember.org/membership/"> + Log in to manage membership + </a> + {% endif %} + </li> {% else %} <li class="tier-2 element-3" role="treeitem"><a href="{% url 'users:user_membership_create' %}">Become a PSF Basic member</a></li> {% endif %} diff --git a/users/tests/test_membership_links.py b/users/tests/test_membership_links.py new file mode 100644 index 000000000..234832c65 --- /dev/null +++ b/users/tests/test_membership_links.py @@ -0,0 +1,36 @@ +from django.test import TestCase, RequestFactory +from django.template import Context, Template +from django.contrib.auth import get_user_model +from django.contrib.auth.models import AnonymousUser +from users.models import Membership + +User = get_user_model() + +class MembershipLinkTests(TestCase): + + def setUp(self): + self.factory = RequestFactory() + self.user = User.objects.create_user(username='testuser', password='123') + self.template = Template(""" + {% include 'includes/authenticated.html' %} + """) + + def render_template(self, user): + request = self.factory.get('/') + request.user = user + return self.template.render(Context({'user': user, 'request': request})) + + def test_anonymous_user(self): + html = self.render_template(AnonymousUser()) + # Anonymous users should see "Sign In" + self.assertIn('Sign In', html) + + def test_logged_in_non_member(self): + html = self.render_template(self.user) + # Logged-in but not a member -> should see the membership join link + self.assertIn('Become a PSF Basic member', html) + + def test_logged_in_member(self): + Membership.objects.create(creator=self.user) + html = self.render_template(self.user) + self.assertIn('Edit your PSF Basic membership', html) From b51e4f8bd5428b6eaed4253e4f14a06206262f25 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Wed, 26 Nov 2025 21:51:00 +0200 Subject: [PATCH 249/256] Add 'superseded by' notice to older Python 3 releases (#2827) --- downloads/tests/test_views.py | 31 +++++++++++++++++++++++++ downloads/views.py | 12 ++++++++++ templates/downloads/release_detail.html | 6 ++++- 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/downloads/tests/test_views.py b/downloads/tests/test_views.py index 5c5471d5a..247da04c8 100644 --- a/downloads/tests/test_views.py +++ b/downloads/tests/test_views.py @@ -46,6 +46,37 @@ def test_download_release_detail(self): response = self.client.get(url) self.assertEqual(response.status_code, 404) + def test_download_release_detail_not_superseded(self): + """Test that latest releases and Python 2 do not show a superseded notice.""" + for release in [self.python_3, self.python_3_8_20, self.release_275]: + with self.subTest(release=release.name): + url = reverse( + "download:download_release_detail", + kwargs={"release_slug": release.slug}, + ) + response = self.client.get(url) + self.assertEqual(response.status_code, 200) + self.assertNotIn("latest_in_series", response.context) + self.assertNotContains(response, "has been superseded by") + + def test_download_release_detail_superseded(self): + """Test that older releases show a superseded notice.""" + tests = [ + (self.python_3_10_18, self.python_3), + (self.python_3_8_19, self.python_3_8_20), + ] + for old_release, latest_release in tests: + with self.subTest(release=old_release.name): + url = reverse( + "download:download_release_detail", + kwargs={"release_slug": old_release.slug}, + ) + response = self.client.get(url) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.context["latest_in_series"], latest_release) + self.assertContains(response, "has been superseded by") + self.assertContains(response, latest_release.name) + def test_download_os_list(self): url = reverse('download:download_os_list', kwargs={'slug': self.linux.slug}) response = self.client.get(url) diff --git a/downloads/views.py b/downloads/views.py index fd1141c14..41e8839ff 100644 --- a/downloads/views.py +++ b/downloads/views.py @@ -1,5 +1,6 @@ from typing import Any +import re from datetime import datetime from django.db.models import Case, IntegerField, Prefetch, When @@ -216,6 +217,17 @@ def get_context_data(self, **kwargs): ) ) + # Find the latest release in the feature series (such as 3.14.x) + # to show a "superseded by" notice on older releases + version = self.object.get_version() + if version and self.object.version == Release.PYTHON3: + match = re.match(r"^3\.(\d+)", version) + if match: + minor_version = int(match.group(1)) + latest_in_series = Release.objects.latest_python3(minor_version) + if latest_in_series and latest_in_series.pk != self.object.pk: + context["latest_in_series"] = latest_in_series + return context diff --git a/templates/downloads/release_detail.html b/templates/downloads/release_detail.html index 5959dfe30..4faf51749 100644 --- a/templates/downloads/release_detail.html +++ b/templates/downloads/release_detail.html @@ -26,7 +26,11 @@ <h1 class="page-title">{{ release.name }}</h1> </header> - <p><strong>Release Date:</strong> {{ release.release_date|date }}</p> + {% if latest_in_series %} + <p><strong>Note:</strong> {{ release.name }} has been superseded by <a href="{{ latest_in_series.get_absolute_url }}">{{ latest_in_series.name }}</a>.</p> + {% endif %} + + <p><strong>Release date:</strong> {{ release.release_date|date }}</p> {% if release.content.raw %} {{ release.content.rendered|safe }} From 197ddadc388152a6aa0ad2f57a29570197099014 Mon Sep 17 00:00:00 2001 From: Dorian Adams <104034366+dorian-adams@users.noreply.github.com> Date: Thu, 27 Nov 2025 10:56:00 -0500 Subject: [PATCH 250/256] fix(frontend): HTML leak in `job_detail` (#2316) Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Co-authored-by: Jacob Coffee <jacob@z7x.org> --- templates/jobs/job_detail.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/jobs/job_detail.html b/templates/jobs/job_detail.html index be073e551..cef7c1f2f 100644 --- a/templates/jobs/job_detail.html +++ b/templates/jobs/job_detail.html @@ -8,7 +8,7 @@ {% block content_attributes %}with-right-sidebar{% endblock %} {% block og_title %}Job: {{ object.job_title }} at {{ object.company_name }}{% endblock %} -{% block og-descript %}{{ object.description|escape|truncatechars:200 }}{% endblock %} +{% block og-descript %}{{ object.description.rendered|striptags|truncatechars:200 }}{% endblock %} {% block content %} {% load companies %} From e94fa01abbab23b50d74fe9099b9c42273c19118 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Thu, 27 Nov 2025 17:56:31 +0200 Subject: [PATCH 251/256] Prefill release notes URL field (#2828) --- downloads/admin.py | 3 ++ static/js/admin/releaseAdmin.js | 53 +++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 static/js/admin/releaseAdmin.js diff --git a/downloads/admin.py b/downloads/admin.py index da5d94ad8..d0b93c3eb 100644 --- a/downloads/admin.py +++ b/downloads/admin.py @@ -31,3 +31,6 @@ def formfield_for_dbfield(self, db_field, request, **kwargs): if db_field.name == "name": field.widget.attrs["placeholder"] = "Python 3.X.YaN" return field + + class Media: + js = ["js/admin/releaseAdmin.js"] diff --git a/static/js/admin/releaseAdmin.js b/static/js/admin/releaseAdmin.js new file mode 100644 index 000000000..0eb13baac --- /dev/null +++ b/static/js/admin/releaseAdmin.js @@ -0,0 +1,53 @@ +'use strict'; + +function generateReleaseNotesUrl(name) { + // Match "Python X.Y.Z[aN]" + const match = name.match(/^Python (\d+)\.(\d+)\.(\d+)((?:a|b|rc)\d*)?$/); + if (!match) { + return ''; + } + + const major = match[1]; + const minor = match[2]; + const patch = match[3]; + const prerelease = match[4]; // e.g., "a2", "b1", "rc1" or undefined + + if (prerelease) { + // Prerelease: https://docs.python.org/3.15/whatsnew/3.15.html + return `https://docs.python.org/${major}.${minor}/whatsnew/${major}.${minor}.html`; + } else { + // Regular release: https://docs.python.org/release/3.13.9/whatsnew/changelog.html + return `https://docs.python.org/release/${major}.${minor}.${patch}/whatsnew/changelog.html`; + } +} + +document.addEventListener('DOMContentLoaded', function() { + // Only run on add page, not edit + if (!window.location.pathname.endsWith('/add/')) { + return; + } + + const nameField = document.getElementById('id_name'); + const releaseNotesUrlField = document.getElementById('id_release_notes_url'); + + if (!nameField || !releaseNotesUrlField) { + return; + } + + // Track if user has manually edited the field + let changed = false; + releaseNotesUrlField.addEventListener('change', function() { + changed = true; + }); + + nameField.addEventListener('keyup', populate); + nameField.addEventListener('change', populate); + nameField.addEventListener('focus', populate); + + function populate() { + if (changed) { + return; + } + releaseNotesUrlField.value = generateReleaseNotesUrl(nameField.value); + } +}); From b7f1cd287694d443b478a380c503e0a7a74c9e32 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Fri, 28 Nov 2025 18:56:44 +0200 Subject: [PATCH 252/256] Remove unused Requests security extra (#2831) --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index bfd2dece1..84fd40677 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -31,7 +31,7 @@ django-tastypie==0.14.7 # 0.14.6 is first version that supports Django 4.2 pytz==2021.1 python-dateutil==2.8.2 -requests[security]>=2.26.0 +requests>=2.26.0 django-honeypot==1.0.4 # 1.0.4 is first version that supports Django 4.2 django-markupfield==2.0.1 From 27aef89cab44c2126d1a934b0da86bfd1f42211d Mon Sep 17 00:00:00 2001 From: Ee Durbin <ewdurbin@gmail.com> Date: Tue, 2 Dec 2025 10:36:03 -0500 Subject: [PATCH 253/256] load fundraiser banner from donate.python.org (#2838) --- static/sass/style.css | 6 +++--- templates/base.html | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/static/sass/style.css b/static/sass/style.css index 894cd6214..d66c03a58 100644 --- a/static/sass/style.css +++ b/static/sass/style.css @@ -2267,7 +2267,7 @@ table tfoot { /* ! ===== Success Stories landing page ===== */ .featured-success-story { padding: 1.3125em 0; - background: center -230px no-repeat url('../img/success-glow2.png?1726783859') transparent; + background: center -230px no-repeat url('../img/success-glow2.png?1646853871') transparent; /*blockquote*/ } .featured-success-story img { padding: 10px 30px; } @@ -3271,11 +3271,11 @@ span.highlighted { .python .site-headline a:before { width: 290px; height: 82px; - content: url('../img/python-logo_print.png?1726783859'); } + content: url('../img/python-logo_print.png?1646853871'); } .psf .site-headline a:before { width: 334px; height: 82px; - content: url('../img/psf-logo_print.png?1726783859'); } } + content: url('../img/psf-logo_print.png?1646853871'); } } /* * When we want to review the markup for W3 and similar errors, turn some of these on * Uses :not selectors a bunch, so only modern browsers will support them diff --git a/templates/base.html b/templates/base.html index e0b692407..04e0c4036 100644 --- a/templates/base.html +++ b/templates/base.html @@ -31,6 +31,9 @@ crossorigin="anonymous" ></script> <script src="{{ STATIC_URL }}js/libs/modernizr.js"></script> + <script async + src="https://donate.python.org/fundraiser-banner/fundraiser-banner.js"></script> + {% stylesheet 'style' %} {% stylesheet 'mq' %} From 0d94709b269a0979a26079627841e590e3fc95e6 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Sun, 7 Dec 2025 21:19:48 +0200 Subject: [PATCH 254/256] Track file downloads via Plausible (#2845) * Remove obsolete Google Analytics JS * Track file downloads via Plausible --- templates/base.html | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/templates/base.html b/templates/base.html index 04e0c4036..c12e87b6f 100644 --- a/templates/base.html +++ b/templates/base.html @@ -5,7 +5,10 @@ <!--[if gt IE 8]><!--><html class="no-js" lang="en" dir="ltr"> <!--<![endif]--> {% load pipeline sitetree %} <head> - <script defer data-domain="python.org" src="https://analytics.python.org/js/script.outbound-links.js"></script> + <script defer + file-types="bz2,chm,dmg,exe,gz,json,msi,msix,pdf,pkg,tgz,xz,zip" + data-domain="python.org" + src="https://analytics.python.org/js/script.file-downloads.outbound-links.js"></script> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> @@ -133,18 +136,6 @@ } </script> - {# Asynchronous Analytics snippet #} - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-39055973-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> {% block head %}{% endblock %} </head> From aff342dc2a623c9ef1d74742eaf3fb6fa6ad3a28 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Dec 2025 17:15:24 -0600 Subject: [PATCH 255/256] chore(deps): bump django from 4.2.26 to 4.2.27 (#2840) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- base-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-requirements.txt b/base-requirements.txt index 84fd40677..428c85c60 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -4,7 +4,7 @@ django-sitetree==1.18.0 # >=1.17.1 is (?) first version that supports Django 4. django-apptemplates==1.5 django-admin-interface==0.28.9 django-translation-aliases==0.1.0 -Django==4.2.26 +Django==4.2.27 docutils==0.21.2 Markdown==3.7 cmarkgfm==2024.11.20 From f3699748a008b40d69bb9a9743c52da93c4f1de5 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Fri, 12 Dec 2025 01:16:18 +0200 Subject: [PATCH 256/256] Add "Edit this release" button to release pages (#2843) --- templates/downloads/release_detail.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/templates/downloads/release_detail.html b/templates/downloads/release_detail.html index 4faf51749..35d3ce316 100644 --- a/templates/downloads/release_detail.html +++ b/templates/downloads/release_detail.html @@ -21,6 +21,9 @@ {% block content %} <article class="text"> + {% if request.user.is_staff %} + <a role="button" class="button" href="{% url 'admin:downloads_release_change' release.pk %}">Edit this release</a> + {% endif %} <header class="article-header"> <h1 class="page-title">{{ release.name }}</h1>