Comments (7)
How can it call Telnet.__exit__
before finishing Telnet.__init__
?
from cpython.
How can it call
Telnet.__exit__
before finishingTelnet.__init__
?
I am confused. I think I gave an example for this in the report. The short answer is "subclasses". Here is the relevant part of the example:
class AliasTelnet(telnetlib.Telnet):
def __init__(self, alias):
host = ALIAS_TO_HOST.get(alias)
if not host:
raise ValueError(f'cannot map alias "{alias}" to host name')
super().__init__(host)
Raising something in AliasTelnet.__init__
will call Telnet.__exit__
on its way out.
from cpython.
Why does it call __exit__
on its way out? Normally, __exit__
is only called after __enter__
, implicitly in the with
statement, and you need already created object for this. __init__
should finish successfully before you can use the object as a context manager.
from cpython.
I am sorry, I misread the traceback. It does not happen in __exit__
but in __del__
. It's actually saying that in the traceback:
Exception ignored in: <function Telnet.__del__ at 0x7faeb8656ee0>
from cpython.
I updated the report accordingly.
from cpython.
Indeed, this is a bug. Your second version is more preferable because it is simpler. There is already a check for self.sock
.
Note that the telnetlib
module was deprecated in Python 3.11 and removed in 3.13.
3.12 is the only version that will get the fix. 3.11 and older only accept security fixes.
from cpython.
Your second version is more preferable because it is simpler. There is already a check for
self.sock
.
I would have argued the opposite. In particular since you felt it was needed to add the comment:
# for __del__()
So, solving the problem where it happens (reading sock = self.sock
) feels cleaner.
But both are fine ...
Note that the
telnetlib
module was deprecated in Python 3.11 and removed in 3.13.3.12 is the only version that will get the fix. 3.11 and older only accept security fixes.
Yes, I figured that -- see last paragraph in the report :)
from cpython.
Related Issues (20)
- Allow perf to work without frame pointers
- The check to see if we have no weakrefs isn't correct
- gc.get_referrers() returns an empty list for an object with references HOT 9
- Allow unions as simple match patterns HOT 2
- Scaling bottlenecks in the free-threaded build
- drop_gil in ceval_gil.c checks locked using _Py_atomic_load_ptr_relaxed instead of _Py_atomic_load_int_relaxed HOT 3
- Cannot pickle private inner classes HOT 1
- Tier 2 trace projection does not insert necessary guards
- `sys.stdout.write('hello\n')` flushes HOT 10
- `utcnow` deprecation note is misleading HOT 5
- 'set()' would is as same as '{}' HOT 2
- Segmentation Fault when statically nesting EXACTLY 20 content managers. HOT 1
- `test_os.test_timerfd_initval` flaky test
- argparse with option/value like --gpg-options "--homedir=/home/user" errors out but adding binding op works. HOT 2
- Window does not resize correctly on KDE HOT 2
- Support loading keys and certificates as variables (bytes) in particular in the load_cert_chain function
- `test_free_threading.test_racing_iter_extend` crash HOT 2
- How to dynamically create PEP695 classes? Let's add a test for it
- inspect.signature.BoundArguments "POSITIONAL_OR_KEYWORD" Arguments are always args HOT 6
- #L1-L783 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cpython.