Re:Go 1.17 is deprecating the traditional use of 'go get'
by pwdisswordfish8 on Friday June 25, 2021 @02:20PM
(#27634489)
This couldn’t work. For starters, the names of classes, attributes and functions are str in both versions, which is to say, bytestrings in Python 2 and Unicode strings in Python 3. This cannot be handwaved away with a pragma.
[ Parent
| on HN ]
Re:Go 1.17 is deprecating the traditional use of 'go get'
by ByteJockey on Friday June 25, 2021 @02:59PM
(#27634896)
That ignores how python scoping works. Built-ins are actually the last thing python checks.
You can override the built-ins by re-defining the symbol in any of: local functions, enclosing functions, or the global scope and it will impact the entirety of that scope.
Re:Go 1.17 is deprecating the traditional use of 'go get'
by pwdisswordfish8 on Saturday June 26, 2021 @04:34AM
(#27640210)
You missed the point. It’s not about names themselves. What happens if I want to lookup bytestring-named attributes on a class defined in a Unicode-string module or vice versa?
Re:Go 1.17 is deprecating the traditional use of 'go get'
by ByteJockey on Sunday June 27, 2021 @01:42AM
(#27648916)
Ahh, the wording screwed me up.
If I'm understanding your comment correctly this time, it would look something like:
getattr(thing, b'attribute_name')
Re:Go 1.17 is deprecating the traditional use of 'go get'
by im3w1l on Sunday June 27, 2021 @08:54PM
(#27656961)
I guess you could make it work as long as everything is ascii right? And if it's not then raise exception.
Re:Go 1.17 is deprecating the traditional use of 'go get'
by ByteJockey on Saturday July 03, 2021 @11:01AM
(#27722027)
If it's not ascii, you would just do:
getattr(thing, u'attribute_with_unicode_characters')
This would work in both python 2.7 and 3.9 (probably works with other 3.X versions but it's the one I actually tried).
Re:Go 1.17 is deprecating the traditional use of 'go get'
by im3w1l on Friday June 25, 2021 @02:44PM
(#27634745)
str = int
is perfectly valid python. So having str mean different things in different modules is already possible.
Re:Go 1.17 is deprecating the traditional use of 'go get'
by pwdisswordfish8 on Saturday June 26, 2021 @04:34AM
(#27640209)
You missed the point. It’s not about names themselves. What happens if I want to lookup bytestring-named attributes on a class defined in a Unicode-string module or vice versa?
Re:Go 1.17 is deprecating the traditional use of 'go get'
by im3w1l on Saturday June 26, 2021 @03:56PM
(#27645262)
I'm afraid I don't understand your question completely, so I'll answer what I guess you mean. Let's say you have a function in one module that expects a bytestring. This function is called from another module, and a unicode string is passed. What happens?
Well python is a duck-typed language, so it will handle the unicode string as if it was a bytestring, and this may or may not work correctly. It's up to the modern code to interface correctly with the legacy code. This could mean manually converting between bytestring and unicode string.