GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||
GeezerVison is showing github.com — gh-120220: Deprecate legacy methods for tracing variables in Tkinter by serhiy-storchaka · Pull Request #120223 · python/cpython Conversation
|
|
@terryjreedy, could you please take a look? Are the warning messages OK? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Wording seems good enough.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
| "use trace_add() instead", | ||
| DeprecationWarning, stacklevel=2) | ||
| cbname = self._register(callback) | ||
| self._tk.call("trace", "variable", self._name, mode, cbname) |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Should this line be wrapped in try...except TclError... for when run with tcl/tk 9?
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
And what to do after catching the exception?
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Raise a better error message -- IF the TclError message is unclear, such as not specifying that failure us 9.0 specific. I don't have 9.0 installed to test this.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
The error message is "bad option "variable": must be add, info, or remove". It may be not so clear from Python's point of view, but you get a deprecation warning emitted immediately before error. I think that it is not worth to change the error. The error can also be raised for other reasons, so we would need to rely on parsing the error message, which can be changed in future.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
I was thinking about the case when people have DeprecationWarnings turned off. A possibility would be, when running tk9+, to immediately raise an error with more direct message 'This method does not exist in tk9, use...' right in trace_xyz itself.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Do you suggest to write something like this?
try: self._tk.call("trace", "variable", self._name, mode, cbname) except _tkinter.TclError as err: if str(err) == 'bad option "variable": must be add, info, or remove': raise TypeError('trace_variable() is not supported ' 'with Tcl 9; use trace_add() instead') raise
This is too verbose and fragile. If they change the error message it will not work.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Perhaps this could use an exception note, that way it won't change the type. Just needs the message to be clear another error may have occurred.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
When you're done making the requested changes, leave the comment: |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
@terryjreedy, are you insisting on wrapping TclError? I don't like this, there is no precedence. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Whatever I said was meant to be suggestion. I dismissed change request. Merge when you want. My personal priority for tkinter is to be able to have 9.0 available in a Windows installer. Let me know if I can do anything to help (other than the above). |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.