A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/python/cpython/commit/fcbe0cb04d35189401c0c880ebfb4311e952d776 below:

only use '&' as a query string separator (#24297) · python/cpython@fcbe0cb · GitHub

@@ -115,7 +115,8 @@ def closelog():

115 115

# 0 ==> unlimited input

116 116

maxlen = 0

117 117 118 -

def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0):

118 +

def parse(fp=None, environ=os.environ, keep_blank_values=0,

119 +

strict_parsing=0, separator='&'):

119 120

"""Parse a query in the environment or from a file (default stdin)

120 121 121 122

Arguments, all optional:

@@ -134,6 +135,9 @@ def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0):

134 135

strict_parsing: flag indicating what to do with parsing errors.

135 136

If false (the default), errors are silently ignored.

136 137

If true, errors raise a ValueError exception.

138 + 139 +

separator: str. The symbol to use for separating the query arguments.

140 +

Defaults to &.

137 141

"""

138 142

if fp is None:

139 143

fp = sys.stdin

@@ -154,7 +158,7 @@ def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0):

154 158

if environ['REQUEST_METHOD'] == 'POST':

155 159

ctype, pdict = parse_header(environ['CONTENT_TYPE'])

156 160

if ctype == 'multipart/form-data':

157 -

return parse_multipart(fp, pdict)

161 +

return parse_multipart(fp, pdict, separator=separator)

158 162

elif ctype == 'application/x-www-form-urlencoded':

159 163

clength = int(environ['CONTENT_LENGTH'])

160 164

if maxlen and clength > maxlen:

@@ -178,10 +182,10 @@ def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0):

178 182

qs = ""

179 183

environ['QUERY_STRING'] = qs # XXX Shouldn't, really

180 184

return urllib.parse.parse_qs(qs, keep_blank_values, strict_parsing,

181 -

encoding=encoding)

185 +

encoding=encoding, separator=separator)

182 186 183 187 184 -

def parse_multipart(fp, pdict, encoding="utf-8", errors="replace"):

188 +

def parse_multipart(fp, pdict, encoding="utf-8", errors="replace", separator='&'):

185 189

"""Parse multipart input.

186 190 187 191

Arguments:

@@ -205,7 +209,7 @@ def parse_multipart(fp, pdict, encoding="utf-8", errors="replace"):

205 209

except KeyError:

206 210

pass

207 211

fs = FieldStorage(fp, headers=headers, encoding=encoding, errors=errors,

208 -

environ={'REQUEST_METHOD': 'POST'})

212 +

environ={'REQUEST_METHOD': 'POST'}, separator=separator)

209 213

return {k: fs.getlist(k) for k in fs}

210 214 211 215

def _parseparam(s):

@@ -315,7 +319,7 @@ class FieldStorage:

315 319

def __init__(self, fp=None, headers=None, outerboundary=b'',

316 320

environ=os.environ, keep_blank_values=0, strict_parsing=0,

317 321

limit=None, encoding='utf-8', errors='replace',

318 -

max_num_fields=None):

322 +

max_num_fields=None, separator='&'):

319 323

"""Constructor. Read multipart/* until last part.

320 324 321 325

Arguments, all optional:

@@ -363,6 +367,7 @@ def __init__(self, fp=None, headers=None, outerboundary=b'',

363 367

self.keep_blank_values = keep_blank_values

364 368

self.strict_parsing = strict_parsing

365 369

self.max_num_fields = max_num_fields

370 +

self.separator = separator

366 371

if 'REQUEST_METHOD' in environ:

367 372

method = environ['REQUEST_METHOD'].upper()

368 373

self.qs_on_post = None

@@ -589,7 +594,7 @@ def read_urlencoded(self):

589 594

query = urllib.parse.parse_qsl(

590 595

qs, self.keep_blank_values, self.strict_parsing,

591 596

encoding=self.encoding, errors=self.errors,

592 -

max_num_fields=self.max_num_fields)

597 +

max_num_fields=self.max_num_fields, separator=self.separator)

593 598

self.list = [MiniFieldStorage(key, value) for key, value in query]

594 599

self.skip_lines()

595 600

@@ -605,7 +610,7 @@ def read_multi(self, environ, keep_blank_values, strict_parsing):

605 610

query = urllib.parse.parse_qsl(

606 611

self.qs_on_post, self.keep_blank_values, self.strict_parsing,

607 612

encoding=self.encoding, errors=self.errors,

608 -

max_num_fields=self.max_num_fields)

613 +

max_num_fields=self.max_num_fields, separator=self.separator)

609 614

self.list.extend(MiniFieldStorage(key, value) for key, value in query)

610 615 611 616

klass = self.FieldStorageClass or self.__class__

@@ -649,7 +654,7 @@ def read_multi(self, environ, keep_blank_values, strict_parsing):

649 654

else self.limit - self.bytes_read

650 655

part = klass(self.fp, headers, ib, environ, keep_blank_values,

651 656

strict_parsing, limit,

652 -

self.encoding, self.errors, max_num_fields)

657 +

self.encoding, self.errors, max_num_fields, self.separator)

653 658 654 659

if max_num_fields is not None:

655 660

max_num_fields -= 1


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4