Hi Bruno,
I want to make the imports and use of functions from other modules
consistent. This patch makes all files use absolute imports like
main.py. So this:
from pygnulib.GLEmiter import GLEmiter
instead of:
from .GLEmiter import GLEmiter
I want to make another change but would like opinions before writing
the patch. Right now we have:
import os.path
from pygnulib import constants
[...]
DIRS = constants.DIRS
substart = constants.substart
isfile = os.path.isfile
This works fine, but stops editors from tracking function usage
properly. For example, GLEmiter might use 'substart' 30 times but an
editor will say there is only 1 usage since we define
'constants.substart' to a variable. Therefore, I would prefer:
from constants import substart, bold_escapes, ...
If lines get too long you can do something like:
from constants import (
substart,
bold_escapes,
...
)
While making that change it would also be a good time to fix another
inconsistency. Right now some files will use a mix of functions
prefixed and not prefixed by a module. For example, both
'os.path.isfile' and 'isfile'. I think the best solution is to import
our own code directly and use the module prefix for standard library
(and third-party code if ever needed). So like this:
# Import like this.
import os.path
from constants import substart
# Use them like this.
os.path.join(...)
substart(...)
This feels like what I am used to seeing. It also should be clear when
we have situations like 'constants.rmtree()' vs. 'shutil.rmtree()'.
Slight exception for the subprocess module, since everyone does
'import subprocess as sp'. It would feel strange not too. :)
Any disagreement with those changes?
Collin
From 740b31905915daa3bab5e7cfbd8347ea9f35ef3b Mon Sep 17 00:00:00 2001
From: Collin Funk <collin.fu...@gmail.com>
Date: Sun, 21 Apr 2024 16:58:26 -0700
Subject: [PATCH] gnulib-tool.py: Use absolute imports consistently.
* pygnulib/*.py: Update imports.
---
ChangeLog | 5 +++++
pygnulib/GLConfig.py | 4 ++--
pygnulib/GLEmiter.py | 12 ++++++------
pygnulib/GLError.py | 2 +-
pygnulib/GLFileSystem.py | 6 +++---
pygnulib/GLImport.py | 18 +++++++++---------
pygnulib/GLInfo.py | 2 +-
pygnulib/GLMakefileTable.py | 4 ++--
pygnulib/GLModuleSystem.py | 8 ++++----
pygnulib/GLTestDir.py | 20 ++++++++++----------
10 files changed, 43 insertions(+), 38 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index b3cef64936..923d59287c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2024-04-21 Collin Funk <collin.fu...@gmail.com>
+
+ gnulib-tool.py: Use absolute imports consistently.
+ * pygnulib/*.py: Update imports.
+
2024-04-21 Collin Funk <collin.fu...@gmail.com>
gnulib-tool.py: Make temporary directories recognizable.
diff --git a/pygnulib/GLConfig.py b/pygnulib/GLConfig.py
index 05947e8ed3..81973b8e16 100644
--- a/pygnulib/GLConfig.py
+++ b/pygnulib/GLConfig.py
@@ -22,8 +22,8 @@
import copy
import tempfile
from typing import Any
-from . import constants
-from .GLError import GLError
+from pygnulib import constants
+from pygnulib.GLError import GLError
from pygnulib.enums import CopyAction
diff --git a/pygnulib/GLEmiter.py b/pygnulib/GLEmiter.py
index 91077a0325..bdc0d0649a 100644
--- a/pygnulib/GLEmiter.py
+++ b/pygnulib/GLEmiter.py
@@ -22,12 +22,12 @@
import re
import subprocess as sp
from collections.abc import Callable
-from . import constants
-from .GLInfo import GLInfo
-from .GLConfig import GLConfig
-from .GLModuleSystem import GLModule
-from .GLModuleSystem import GLModuleTable
-from .GLMakefileTable import GLMakefileTable
+from pygnulib import constants
+from pygnulib.GLInfo import GLInfo
+from pygnulib.GLConfig import GLConfig
+from pygnulib.GLModuleSystem import GLModule
+from pygnulib.GLModuleSystem import GLModuleTable
+from pygnulib.GLMakefileTable import GLMakefileTable
#===============================================================================
diff --git a/pygnulib/GLError.py b/pygnulib/GLError.py
index 47d1e97fdc..1ccbe3b29b 100644
--- a/pygnulib/GLError.py
+++ b/pygnulib/GLError.py
@@ -19,7 +19,7 @@
# Define global imports
#===============================================================================
import os
-from . import constants
+from pygnulib import constants
#===============================================================================
diff --git a/pygnulib/GLFileSystem.py b/pygnulib/GLFileSystem.py
index 1cad7f5bad..f2a6f64123 100644
--- a/pygnulib/GLFileSystem.py
+++ b/pygnulib/GLFileSystem.py
@@ -22,10 +22,10 @@
import re
import filecmp
import subprocess as sp
-from . import constants
+from pygnulib import constants
from pygnulib.enums import CopyAction
-from .GLError import GLError
-from .GLConfig import GLConfig
+from pygnulib.GLError import GLError
+from pygnulib.GLConfig import GLConfig
#===============================================================================
diff --git a/pygnulib/GLImport.py b/pygnulib/GLImport.py
index cc7648890d..dcb07dc183 100644
--- a/pygnulib/GLImport.py
+++ b/pygnulib/GLImport.py
@@ -21,15 +21,15 @@
import os
import re
import subprocess as sp
-from . import constants
-from .GLError import GLError
-from .GLConfig import GLConfig
-from .GLModuleSystem import GLModuleTable
-from .GLModuleSystem import GLModuleSystem
-from .GLFileSystem import GLFileSystem
-from .GLFileSystem import GLFileAssistant
-from .GLMakefileTable import GLMakefileTable
-from .GLEmiter import GLEmiter
+from pygnulib import constants
+from pygnulib.GLError import GLError
+from pygnulib.GLConfig import GLConfig
+from pygnulib.GLModuleSystem import GLModuleTable
+from pygnulib.GLModuleSystem import GLModuleSystem
+from pygnulib.GLFileSystem import GLFileSystem
+from pygnulib.GLFileSystem import GLFileAssistant
+from pygnulib.GLMakefileTable import GLMakefileTable
+from pygnulib.GLEmiter import GLEmiter
#===============================================================================
diff --git a/pygnulib/GLInfo.py b/pygnulib/GLInfo.py
index 37d8560af0..4cad898f99 100644
--- a/pygnulib/GLInfo.py
+++ b/pygnulib/GLInfo.py
@@ -22,7 +22,7 @@
import re
import subprocess as sp
from pygnulib import __author__, __copyright__
-from . import constants
+from pygnulib import constants
#===============================================================================
diff --git a/pygnulib/GLMakefileTable.py b/pygnulib/GLMakefileTable.py
index a38276c665..1683a6cce9 100644
--- a/pygnulib/GLMakefileTable.py
+++ b/pygnulib/GLMakefileTable.py
@@ -19,8 +19,8 @@
# Define global imports
#===============================================================================
import os
-from . import constants
-from .GLConfig import GLConfig
+from pygnulib import constants
+from pygnulib.GLConfig import GLConfig
#===============================================================================
diff --git a/pygnulib/GLModuleSystem.py b/pygnulib/GLModuleSystem.py
index c28f2ddd73..c89d65c0bc 100644
--- a/pygnulib/GLModuleSystem.py
+++ b/pygnulib/GLModuleSystem.py
@@ -24,10 +24,10 @@
import hashlib
import subprocess as sp
from collections import defaultdict
-from . import constants
-from .GLError import GLError
-from .GLConfig import GLConfig
-from .GLFileSystem import GLFileSystem
+from pygnulib import constants
+from pygnulib.GLError import GLError
+from pygnulib.GLConfig import GLConfig
+from pygnulib.GLFileSystem import GLFileSystem
#===============================================================================
diff --git a/pygnulib/GLTestDir.py b/pygnulib/GLTestDir.py
index 9673a5bd26..e4e033023c 100644
--- a/pygnulib/GLTestDir.py
+++ b/pygnulib/GLTestDir.py
@@ -23,16 +23,16 @@
import sys
import subprocess as sp
from pathlib import Path
-from . import constants
-from .enums import CopyAction
-from .GLError import GLError
-from .GLConfig import GLConfig
-from .GLModuleSystem import GLModuleTable
-from .GLModuleSystem import GLModuleSystem
-from .GLFileSystem import GLFileSystem
-from .GLFileSystem import GLFileAssistant
-from .GLMakefileTable import GLMakefileTable
-from .GLEmiter import GLEmiter
+from pygnulib import constants
+from pygnulib.enums import CopyAction
+from pygnulib.GLError import GLError
+from pygnulib.GLConfig import GLConfig
+from pygnulib.GLModuleSystem import GLModuleTable
+from pygnulib.GLModuleSystem import GLModuleSystem
+from pygnulib.GLFileSystem import GLFileSystem
+from pygnulib.GLFileSystem import GLFileAssistant
+from pygnulib.GLMakefileTable import GLMakefileTable
+from pygnulib.GLEmiter import GLEmiter
#===============================================================================
--
2.44.0