Created on 2011-11-01 18:02 by Rob Bairos, last changed 2022-04-11 14:57 by admin. This issue is now closed.
Messages (4) |
|
|
msg146799 - (view) |
Author: Rob Bairos (Rob Bairos) |
Date: 2011-11-01 18:02 |
When adding hooks to sys.meta_path, to correctly deal with arbitrarily named non-disk module definitions, module names with slashes should still be processed. As it stands when executing statements such as: import my_module_123#/123 or even __import__('my_module_123#/123') the following exception is raised: ImportError: Import by filename is not supported. This stops sys.meta_path from handling arbitrarily named modules. Shouldn't the ImportError be raised *after* the meta_path processing, at which point, its safe to assume the name is a disk name, in which case slashes are relevant? |
|
|
msg146980 - (view) |
Author: Brett Cannon (brett.cannon) *  |
Date: 2011-11-03 21:20 |
This is working as intended. Importers on sys.meta_path should be able to rely on the assumption that the names they are given are syntactically proper module names and not just any random string. You could perform a transform from module name to random string name in an importer or whatever to support some funky naming scheme under the hood. You could also walk sys.meta_path yourself to get around this sanity check, but I see no value in changing import itself to support this use case. |
|
|
msg146982 - (view) |
Author: Rob Bairos (Rob Bairos) |
Date: 2011-11-03 21:36 |
Why is a module name syntactically improper simply because it contains a slash? That seems an arbitrary definition, that serves no purpose, except to discourage accidentally specifying a filename. Module with unusual characters all reach the meta_path stage, eg: my,mo*d1?2my##m;o#d13 But as soon as a slash is introduced, a warning that filenames not being supported is thrown. 1) If the issue is that its not syntactically correct, it should state so. 2) If the issue is that its not syntactically correct, the syntax of a module name should be documented to include *,?# or throw the same exception. 3) Whats the purpose of the 'Import my filename' exception anyhow? Will it not fail soon thereafter at any rate? This behaviour is definitely inconsistent and arbitrary. |
|
|
msg147021 - (view) |
Author: Rob Bairos (Rob Bairos) |
Date: 2011-11-04 17:47 |
Yah, thinking about this further, the real error is that sys.meta_path allows processing of names with #,?* etc. I can see why this would cause problems, as python names must only be _ and alphanumeric characters. I'll re-implement this. Thanks. |
|
|
History |
|
|
|
Date |
User |
Action |
Args |
2022-04-11 14:57:23 |
admin |
set |
github: 57523 |
2011-11-04 17:47:12 |
Rob Bairos |
set |
status: open -> closedmessages: + |
2011-11-03 21:36:32 |
Rob Bairos |
set |
status: closed -> openmessages: + |
2011-11-03 21:20:39 |
brett.cannon |
set |
status: open -> closedresolution: rejectedmessages: + |
2011-11-03 16:39:04 |
eric.araujo |
set |
nosy: + eric.araujo |
2011-11-03 02:00:36 |
pitrou |
set |
nosy: + brett.cannon, ncoghlan |
2011-11-01 20:45:31 |
eric.smith |
set |
nosy: + eric.smith |
2011-11-01 18:05:34 |
Rob Bairos |
set |
type: behavior |
2011-11-01 18:02:26 |
Rob Bairos |
create |
|