Skip to content

Commit

Permalink
Backport Morsel creation speed up patch from cpython gh-126156 (#284)
Browse files Browse the repository at this point in the history
  • Loading branch information
bdraco authored Nov 7, 2024
1 parent 26a71a0 commit 23602a3
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
From dd3c0fa3fd2795326dae0e0ed63c668f5506cf32 Mon Sep 17 00:00:00 2001
From: "J. Nick Koston" <[email protected]>
Date: Thu, 31 Oct 2024 14:05:40 -0500
Subject: [PATCH] gh-126156: Improve performance of creating `Morsel` objects
(#126157)

Replaces the manually constructed loop with a call to `dict.update`
---
Lib/http/cookies.py | 5 +++--
.../Library/2024-10-30-00-12-22.gh-issue-126156.BOSqv0.rst | 1 +
2 files changed, 4 insertions(+), 2 deletions(-)
create mode 100644 Misc/NEWS.d/next/Library/2024-10-30-00-12-22.gh-issue-126156.BOSqv0.rst

diff --git a/Lib/http/cookies.py b/Lib/http/cookies.py
index 6b9ed24ad8e..d7e8d08b2d9 100644
--- a/Lib/http/cookies.py
+++ b/Lib/http/cookies.py
@@ -266,6 +266,8 @@ class Morsel(dict):
"samesite" : "SameSite",
}

+ _reserved_defaults = dict.fromkeys(_reserved, "")
+
_flags = {'secure', 'httponly'}

def __init__(self):
@@ -273,8 +275,7 @@ def __init__(self):
self._key = self._value = self._coded_value = None

# Set default attributes
- for key in self._reserved:
- dict.__setitem__(self, key, "")
+ dict.update(self, self._reserved_defaults)

@property
def key(self):
--
2.39.3 (Apple Git-145)

Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
From dd3c0fa3fd2795326dae0e0ed63c668f5506cf32 Mon Sep 17 00:00:00 2001
From: "J. Nick Koston" <[email protected]>
Date: Thu, 31 Oct 2024 14:05:40 -0500
Subject: [PATCH] gh-126156: Improve performance of creating `Morsel` objects
(#126157)

Replaces the manually constructed loop with a call to `dict.update`
---
Lib/http/cookies.py | 5 +++--
.../Library/2024-10-30-00-12-22.gh-issue-126156.BOSqv0.rst | 1 +
2 files changed, 4 insertions(+), 2 deletions(-)
create mode 100644 Misc/NEWS.d/next/Library/2024-10-30-00-12-22.gh-issue-126156.BOSqv0.rst

diff --git a/Lib/http/cookies.py b/Lib/http/cookies.py
index 6b9ed24ad8e..d7e8d08b2d9 100644
--- a/Lib/http/cookies.py
+++ b/Lib/http/cookies.py
@@ -266,6 +266,8 @@ class Morsel(dict):
"samesite" : "SameSite",
}

+ _reserved_defaults = dict.fromkeys(_reserved, "")
+
_flags = {'secure', 'httponly'}

def __init__(self):
@@ -273,8 +275,7 @@ def __init__(self):
self._key = self._value = self._coded_value = None

# Set default attributes
- for key in self._reserved:
- dict.__setitem__(self, key, "")
+ dict.update(self, self._reserved_defaults)

@property
def key(self):
--
2.39.3 (Apple Git-145)

0 comments on commit 23602a3

Please sign in to comment.