Changes by Glenn Linderman :
--
nosy: +v+python
___
Python tracker
<http://bugs.python.org/issue11050>
___
___
Python-bugs-list mailing list
Unsubscribe:
Changes by Glenn Linderman :
--
nosy: +v+python
___
Python tracker
<http://bugs.python.org/issue5689>
___
___
Python-bugs-list mailing list
Unsubscribe:
Glenn Linderman added the comment:
I just "discovered" that attempting to open zip member "test\file" fails where
attempting to open "test/file" works. Granted the zip contains "/" not "\"
characters, but using the os.path stuff (on windows)
New submission from Glenn Linderman <[EMAIL PROTECTED]>:
Py3.0 has
bin(x)
Convert an integer number to a binary string. The result is a valid
Python expression. If x is not a Python int object, it has to define an
__index__() method that returns an integer.
Py2.6 doesn't document
Glenn Linderman <[EMAIL PROTECTED]> added the comment:
Perhaps there are other 3.0 builtins that were also missed, in the 2.6 docs?
___
Python tracker <[EMAIL PROTECTED]>
<http://bugs.pytho
New submission from Glenn Linderman <[EMAIL PROTECTED]>:
Here's how I set up my computer, for multiple versions. Now to change
the "default", I just use the assoc command to change the association
for .py to one of the three listed ftypes. Simple and quick.
c:\>f
Glenn Linderman <[EMAIL PROTECTED]> added the comment:
Since Python hasn't done that until now, it won't help much with the
transition from 2to3. The earliest versions that could add that would
be 3.1 and 2.7, it would seem, as it is a new fetaure. Perhaps it would
be worth do
Glenn Linderman <[EMAIL PROTECTED]> added the comment:
Ah yes, it could work as a front-end launcher, since # is a comment
character for Python anyway, so all Pythons would ignore such a line.
So that can be done completely independently of python itself, and
installed separately, and u
New submission from Glenn Linderman :
External code that temporarily replaces warnings.formatwarning, a
technique used in IDLE and worked around (see issue 4043), is broken by
the addition of the optional parameter lineno to the formatwarning function.
While normal calls to functions can be
Glenn Linderman added the comment:
For reference, the issue on the CherryPy tracker is #891 (amazing
numerical coincidence 891 there and 4891 here).
___
Python tracker
<http://bugs.python.org/issue4
Glenn Linderman added the comment:
As the original author of this report, getting significant pushback from the
then maintainer of the code, I went ahead and implemented what I considered to
be a useful set of features to make CGI work on Windows.
I never proposed them as a patch, because
Glenn Linderman added the comment:
Ethan, 3.7.2 at the moment. I doubt there'd be any issues moving it to 3.11,
unless there have been significant changes to the main branch in that area, I
just haven't bothered because it is working for me as is. I forget what
version I st
Glenn Linderman added the comment:
On 11/18/2021 7:36 AM, STINNER Victor wrote:
> STINNER Victor added the comment:
>
> I searched for open issues which contain "cgi" in their title. I found 43
> open issues. The oldest is 101 months ago.
>
> In 10 years, Lib/cg
Glenn Linderman added the comment:
Seems like another example of the CGI module not getting much support. While I
haven't looked at all the details of the patches, it seems that several people
have contributed enhancements or clarifications. and it would be a shame to
discard them r
Glenn Linderman added the comment:
First I would have to learn how GitHub works, and how PRs work. And I haven't
found time for that, as yet.
--
___
Python tracker
<https://bugs.python.org/is
Glenn Linderman added the comment:
Thanks Stèphańe and Serhiy, I just discovered this strange behavior in 3.8, and
wondered how my logic was wrong, until I pinpointed the inconsistent behaviour
of str.replace with an empty first parameter and replace count of 1.
Glad to see it is fixed in
Glenn Linderman added the comment:
Nope:
I guess for x.replace( a, b, c ) the workaround would be
x.replace( a, b, c ) if x else x.replace( a, b )
--
___
Python tracker
<https://bugs.python.org/issue28
Glenn Linderman added the comment:
Yes, I laud this effort. I don't care if it is called SimpleNamespace (which I
didn't use because it was insufficient), or anything else, but it would be
extremely handy to have this battery.
I eventually found one called Dotable (or did I re
Glenn Linderman added the comment:
Here's what I have.
Maybe it would be better if parse and dump were under or dunder names, although
I think parse was in the original implementation I found.
Is this the derived from the same original as PyPI dotable? Not sure.
--
Added
Change by Glenn Linderman :
--
nosy: +v+python
___
Python tracker
<https://bugs.python.org/issue42973>
___
___
Python-bugs-list mailing list
Unsubscribe:
Glenn Linderman added the comment:
On 1/25/2021 12:43 PM, Tadek Kijkowski wrote:
> Tadek Kijkowski added the comment:
>
> I added tests and docs to the PR. How does it look now?
Could you send me the docs privately?
I'm trying to understand what you are suggesting, without re
Glenn Linderman added the comment:
OK, I think I see what you are doing here. Thanks for your responses.
And probably it is the bare-bones minimum feature that allows
user-implementation of "as complex as desired" combinations of optionals and
context-sensitive positionals.
I
Glenn Linderman added the comment:
for more helpful => far more helpful
--
___
Python tracker
<https://bugs.python.org/issue42973>
___
___
Python-bugs-lis
Glenn Linderman added the comment:
This sounds very good to me. Might also want action='store_capture' for a
single positional definition?
capture could be a string, or any iterable of strings (tuple comes to mind)
capture_once have similar value as capture, but I wonder if
Glenn Linderman added the comment:
Paul said:
I haven't had a chance to study your longer posts, but it seems to me that the
AddFruitAction example could just as well be implemented with
parser.add_argument('--color', nargs='*', action='append')
wit
Glenn Linderman added the comment:
Yes I think this is a useful enabling step toward enhanced functionality, as is.
But I think the learning curve to achieve the enhanced functionality is a bit
high for most people, as it requires too much knowledge of argparse internals,
so I really look
Glenn Linderman added the comment:
I'm a little confused by the mention of the "key" keyword argument. I suspect
that is an internal concept to argparse, possibly passed that way to internal
methods, but on the add_argument interface, it doesn't exist... instead ther
Glenn Linderman added the comment:
paul j3 said:
Given how different this is from the normal argparse parsing (and the POSIX
parsing argparse seeks to emulate), I question the wisdom of adding this, in
part or whole, to the stock distribution. It could certainly be published as a
pypi
Glenn Linderman added the comment:
So the missing signature is why I didn't understand, probably. At least, it
seems reasonable to blame that :) You didn't include [version] in the
signature, but that isn't your fault: it isn't in the original and should be
(see action
Glenn Linderman added the comment:
Raymond said:
ISTM the scope of argparse was never intended to capture all possible patterns
for command line argument parsing. Instead, it aimed at to address the common
cases.
I say:
Sounds like another wet blanket argpment. Refer to the section &quo
Glenn Linderman added the comment:
Raymond Hettinger added the comment:
>> Sounds like another wet blanket argpment
> Please watch your tone. It borders on being abusive.
I considered that as a canonical description of the type of negativity
presented by your comment. It was not
Glenn Linderman added the comment:
This seems related to issue 10487. Some of the code is different in Python 3.
Since this is an enhancement, it seems unlikely to ever be accepted for 2.x,
which is in bugfix-only mode.
Sadly, most hosting companies are still running Python 2.x, with many
Glenn Linderman added the comment:
Add version of server.py source. This was originally revised from Python 3.1,
I just now merged the Python 3.2 changes. I've been running it for months in
3.2, but without the 3.2 changes. Will be running it now in this form, so if
something goes wro
Glenn Linderman added the comment:
Uploaded version of CGIHTTPServer.py that is based on Python 2.6 runs well
there on Windows, but which also works under Python 2.4 on Linux.
I should mention that the server.py I upload moments ago has mostly run on
Windows, and I might not have fixed all
Glenn Linderman added the comment:
Oh, and I submit all my changes to the public domain to be re-licensed as
needed by anyone that works with it. Not sure if these few changes need a
contributor agreement, I'd be glad to sign one if
Changes by Glenn Linderman :
--
nosy: +v+python
___
Python tracker
<http://bugs.python.org/issue14123>
___
___
Python-bugs-list mailing list
Unsubscribe:
Glenn Linderman added the comment:
issue 13893 contains code that fixes this, and several other open issues.
Sadly, I created that code by "debugging and rewriting until it worked", and
only then teased apart the specific, separable issues that I had debugged and
fixed, and crea
New submission from Glenn Linderman :
To me, "all positional parameters" mean whether they are in the front, back or
middle, as long as they are not diriectly preceded by an option that can accept
an unlimited number of parameters.
from argparse import ArgumentParser, SUPPRESS,
Glenn Linderman added the comment:
Interesting that the behavior is intentional, yet it accepts positional
parameters either before, or after, or between optional (flag) parameters.
This seems to me to be a case where proper documentation of the intention would
have led to the realization
Glenn Linderman added the comment:
Improved documentation would certainly help the situation.
And yes, I understand that optparse simply returned the set of positional
parameters without giving them names, types, or groups. So does getopt, and
pretty much all previous art in the arena of
Glenn Linderman added the comment:
Ah yes, argparse had a life outside the stdlib, so now I understand your
compatibility concerns.
Mind you, I think the overall technology of argparse is superior to optparse,
which is why, together with the optparse deprecation, I am trying to port to
use
Glenn Linderman added the comment:
*Very* interesting, Steven.
Looking again at section 15.4.6, and recognizing that positional arguments were
never parsed by optparse, then we discover that with two minor tweaks, removing
"and add additional ArgumentParser.add_argument() calls fo
Glenn Linderman added the comment:
Sad. That means all the documentation of workarounds needs to be written, even
figured out in the first place. Steven's code, while being a nice
implementation when proper arguments are provided, produces inappropriate
errors, because only the posit
Glenn Linderman added the comment:
Of course, if a "real" solution can only be shipped in 3.3, it may want to use
a different API than parse_args to avoid the parameter, parse_intermixed_args,
perhaps. But my t18.py uses the name parse_args, but just always does the
intermixed p
Glenn Linderman added the comment:
I'm not sure what tests break or why, I suppose it is the ones for the security
patch. I'm not sure which code you are referring to... the code in msg122259 I
tested only cursorily, the (different) code in issue 13893 is what I'm running
to
Glenn Linderman added the comment:
In reviewing my code in this area, I also see that in addition to fixing
_url_collapse_path_split, I override the location that uses it, which is the
is_cgi function. Here is my code for the override, which actually creates a
proper PATH_INFO string
Glenn Linderman added the comment:
Senthil, the patch you submitted breaks the encapsulation of cgi_directories --
this should be changeable per particular application via subclassing or
assignment, but you've built those directories into the code. Perhaps you
should take a look at my
Glenn Linderman added the comment:
Another issue with the patch, is that it doesn't do .. and . collapsing on the
PATH_INFO part of the path.
It is possible for a path like
/cgi-bin/script.py/../../plain-file.html
to be passed to the server. I guess the question is if it should
Glenn Linderman added the comment:
I just tested what Apache does with such a path as
/cgi-bin/script.py/../../plain-file.html, and it serves the plain-file.html.
--
___
Python tracker
<http://bugs.python.org/issue10
Glenn Linderman added the comment:
Senthil, from you patch, I discovered where the test_httpservers.py lives, and
added
'/cgi-bin/file1.py/../../a': ('/', 'a'),
to a local copy, and it worked fine against whatever version of the server and
tests
Glenn Linderman added the comment:
While Amaury's comment is no doubt true, shouldn't z.read raise an exception if
it encounters an unsupported compression type?
--
nosy: +v+python
___
Python tracker
<http://bugs.python.o
Glenn Linderman added the comment:
msg156410 sounds good to me... +1
If the conversion is optional in 3.3, that would seem to solve the problem; if
BinaryDir is added, people can use that for 3.3; if people want to use software
that hasn't migrated yet, they choose the default path of
Glenn Linderman added the comment:
Senthil, thanks for your work on this. Regarding:
I also looked at changes in the patches contained in issue 13893, but I found
that those broke behavior or exhibited the security issue again.
I'd be curious to know what problems you discovered, si
Glenn Linderman added the comment:
A minor detail of efficiency:
_url_collapse_path_split is used only one place, from is_cgi.
_url_collapse_path_split splits the path, and is_cgi now puts it back together.
This seems inefficient. Would it not be better for _url_collapse_path_split
to be
Glenn Linderman added the comment:
I note that there is no test for tail_part == '.'. I suggest adding a couple,
such as the following which I added to my local copy for testing of the next
item:
'/a/b/.': ('/a/b', ''),
New submission from Glenn Linderman :
I notice a deficiency in is_cgi: there is no documentation requiring
cgi_directories to be a single part, only that the initial value happens to be
a list of two directories, each of which have only a single part or level. The
description of is_cgi
Changes by Glenn Linderman :
--
nosy: +orsenthil
___
Python tracker
<http://bugs.python.org/issue14565>
___
___
Python-bugs-list mailing list
Unsubscribe:
New submission from Glenn Linderman :
While is_cgi carefully normalizes the path using _url_collapse_path, if it
returns True, then run_cgi is called... which sort of starts out using the
cgi_info created by is_cgi, but then compares and searches using the original
self.path value instead
Glenn Linderman added the comment:
Happily, this can be cured by overriding and replacing is_cgi, but it shouldn't
be necessary to do so.
--
components: +Library (Lib)
type: -> behavior
versions: +Python 2.6, Python 2.7, Python 3.1, Python 3.2, Py
New submission from Glenn Linderman :
A URL potentially consists of four parts: path, PATH_INFO, anchor,
QUERY_STRING. The syntax is roughly:
/path/parts/cgi-script/path/info/parts#anchor?query-string
where # and ? characters play key roles.
is_cgi not-so-cleverly passes the whole request
Glenn Linderman added the comment:
A bit of experimentation indicates that for regular file access, there probably
is no security problem, but bad paths will look in weird places, and if they
find a file of the right name, will return it. It would be much better to
diagnose such paths
Glenn Linderman added the comment:
I finally understand the purpose of the checks in translate path...
Basically, translate path is concatenating the URL path to the current
directory (because that is considered the root for Web service by this
server). But along the way, it does
Glenn Linderman added the comment:
Reading the CGI 1.1 spec, it says:
The QUERY_STRING value provides the query-string part of the
Script-URI. (See section 3.3).
The server MUST set this variable; if the Script-URI does not include
a query component, the QUERY_STRING MUST be
New submission from Glenn Linderman :
The idea inspired by the email exchange below is basically in three parts:
1. investigate the various popular web server frameworks, to determine what
parts of http.server they depend on. For example, bottle.py depends only on
BaseHTTPRequestHandler and
New submission from Glenn Linderman :
The documentation is reasonably clear regarding the first parameter, which can
be a string or a tuple of strings to match at the start or end of a string.
However, the other two parameters are much less clear in their effect.
text = "Now the day is
Glenn Linderman added the comment:
Or is
text.startswith(('day', 'month', 'year'), 8, 12)
the same as
text[8:12] in ('day', 'month', 'year')
What happens if the text doesn't have as many
Glenn Linderman added the comment:
Thanks for the explanations and suggestions. Now that I think I know what those
parameters are used for...
Sorry, my first example was tweaked on the fly, and doesn't make as much sense
as it could because it wound up being a mix of pre-tweaked and tw
New submission from Glenn Linderman :
I noticed the following description for f-strings:
> Escape sequences are decoded like in ordinary string literals (except when a
> literal is also marked as a raw string). After decoding, the grammar for the
> contents of the string is:
fo
Glenn Linderman added the comment:
@martin sez:
It may be reasonable to serve the Content-Encoding field based on the stored
file though. If the client requests file “xyz”, there should be no encoding,
but if the request was explicitly for “xyz.gz”, the server could add
Content-Encoding. But
Glenn Linderman added the comment:
Martin, I understood what you meant, but sadly, doing that least to confusion.
Follow your link, it displays fine, and then save the file. At least in
Firefox, the default name to save as is "nGzip — A File Compressor.html". This
looks appropriat
Glenn Linderman added the comment:
"veery" should be "veering" in above comment, sorry.
--
___
Python tracker
<http://bugs.python.org/issue30576>
___
_
Glenn Linderman added the comment:
I would dearly love to discard my private copies of argparse subclasses to
implement this that I have been using for the last 5 years. Please, some other
committer, concur here!
--
___
Python tracker
<h
Changes by Glenn Linderman :
--
nosy: +v+python
___
Python tracker
<http://bugs.python.org/issue29654>
___
___
Python-bugs-list mailing list
Unsubscribe:
Glenn Linderman added the comment:
It is certainly true that getallmatchingheaders is broken... because the data
it is looking at has changed format.
Here is a replacement that is as compatible as can be, based on the changed
format.
name = name.lower()
n = len(name
Glenn Linderman added the comment:
I don't understand fully what you are planning here: to pre-compress the files,
or to compress on the fly as mentioned by another commenter?
I've implemented, in a CGI behind http.server, both .gz and .br (gzip and
brotli) compression, following t
Change by Glenn Linderman :
--
nosy: +v+python
___
Python tracker
<https://bugs.python.org/issue36863>
___
___
Python-bugs-list mailing list
Unsubscribe:
Glenn Linderman added the comment:
Characters should not be stripped during compilation. But I can see where it
might be helpful if the codepoint of the character, and the printed form just
in case it is printable, could helpfully be included in the error message, as
well as having the
Glenn Linderman added the comment:
The problem here is that the error message is trying to write to an output
device using ASCII. If there is no error, there is no error message print
attempt. The error message, when written to an ASCII device, needs to be
escaped.
You don't show the
New submission from Glenn Linderman :
At least as far back as Python 3.1, the description for Template strings
(section 6.1.5 in version 3.6.4rc1 docs) starts by differentiating what
Template strings do, as:
Instead of the normal %-based substitutions, Templates support $-based
substitutions
Glenn Linderman added the comment:
Same behavior on Windows.
--
components: +Windows
nosy: +paul.moore, steve.dower, tim.golden, v+python, zach.ware
___
Python tracker
<https://bugs.python.org/issue31
Glenn Linderman added the comment:
This probably has been around for a while: this 2011 thread in a Chromium
wontfix bug is enlightening, but the solution suggested, a ThreadingMixIn for
the HTTPServer, didn't help me.
https://bugs.chromium.org/p/chromium/issues/detail?id=1
Glenn Linderman added the comment:
I tried the approach in the PR "externally" (when starting the server using a
test program), and I couldn't get it to work. But my test case was probably
different: I was using Chrome rather than Chromium, and while they both work
for me
Glenn Linderman added the comment:
I don't know how to look back at the previous version of the PR, I was barely
able to find the "current version" each time. The following line is in the
current version:
daemon_threads = True
Whether it was in the previous version, I do
Glenn Linderman added the comment:
Nice implementation of sticky sidebar.
https://css-tricks.com/sticky-smooth-active-nav/#more-273952
I haven't looked at the patch, and don't know what R. David Murray doesn't like
about how it works, but I find the Python sidebar extremely a
Glenn Linderman added the comment:
Uh, thanks, I guess, but it wasn't marked out of date or resolved or closed
when I commented. I haven't used the GitHub issue tracker. Sigh. There should
be a link here to the issue that was copied there, to make it easy and obvious?
-
Glenn Linderman added the comment:
Rémi Lapeyre, glad to see your interest here, as this is an old and languishing
bug.
I would have hoped based on my input, that had there been anyone that was
maintaining the Python web server code, that they might have done a more
complete analysis than I
Glenn Linderman added the comment:
That's interesting, Pierre, I hadn't really read the RFC carefully, to realize
that many of the "missing" variables from Apache are HTTP headers, and that
section 4.1.18 tell how to convert HTTP headers to meta variables.
The code in ser
Glenn Linderman added the comment:
These sound like good refinements. You've been thinking. By making the
fallback happen externally, it simplifies the implementation of
parse_intermixed_args, and forces the application to accept responsibility for
calling it with a consistent s
Glenn Linderman added the comment:
Paul, is this ready to merge, or are you thinking of more refinements?
--
___
Python tracker
<http://bugs.python.org/issue14
Glenn Linderman added the comment:
So I read over your code again, and even read the documentation this time, and
it all looks good, and I know it works good because I've been using the code. I
tried to send a notice through Reitveld, and maybe did, but I don't know where
it went, s
Glenn Linderman added the comment:
Hi Pierre, Nice to see your name pop up again.
Your suggestion is certainly simpler... but unfortunately, too much simpler.
One reason, is that in configuring a path to contain CGI files, the CGI files
are allowed to be there, or anywhere deeper in the
Glenn Linderman added the comment:
Hi Pierre,
You are right, the "found" variable is not needed, I guess the reason I coded
it that way, is I had some validation code before the return, during testing,
so it was easier not to have it in three places.
Regarding precalculating l
New submission from Glenn Linderman :
t33a.py demonstrates a compilation problem. OK, it has a long line, but making
it one space longer (add a space after the left parenthesis) makes it work...
so it must not be line length alone. Rather, since the error is about a bad
UTF-8 character
Glenn Linderman added the comment:
Forgot to mention that I was running on Windows, 64-bit.
--
___
Python tracker
<http://bugs.python.org/issue14811>
___
___
Glenn Linderman added the comment:
There is no traceback. Here is the text of the Syntax error.
d:\my\im\infiles>c:\python32\python.exe d:\my\py\t33a.py -h
File "d:\my\py\t33a.py", line 2
SyntaxError: Non-UTF-8 code starting with '\xc3' in file d:\my\py\t33a.py on
Glenn Linderman added the comment:
Thanks, David, for the clarification. I had been mentally separating
syntax errors from other errors.
--
___
Python tracker
<http://bugs.python.org/issue14
Glenn Linderman added the comment:
Has something incompatible changed between 3.2.2 and 3.2.3 with respect to this
bug?
I have a program that had an earlier version of the workaround (Michael's
original, I think), and it worked fine, then I upgraded from 3.2.2 to 3.2.3 due
to testin
Glenn Linderman added the comment:
Oh, and is this issues going to be fixed for 3.3, so we don't have to use the
workaround in the future?
--
___
Python tracker
<http://bugs.python.org/i
Glenn Linderman added the comment:
I actually had to go back to 3.1.2 to get it to run, I guess I had never run
with Unicode output after installing 3.2. So it isn't an incompatibility
between 3.2.2 and 3.2.3, but more likely a change between 3.1 and 3.2 that
invalidates this patc
Glenn Linderman added the comment:
A little more empirical info: the missing "errors" attribute doesn't show up
except for input. print works fine.
--
___
Python tracker
<http://bugs.py
101 - 200 of 248 matches
Mail list logo