Skip to content

Commit 1109830

Browse files
committed
[ADD] misc.Sentinel
Light object to represent a sentinel (surprising, isn't it?) that render well in function's help() output. closes #238 Signed-off-by: Christophe Simonis (chs) <[email protected]>
1 parent 599aa0e commit 1109830

File tree

4 files changed

+19
-7
lines changed

4 files changed

+19
-7
lines changed

src/util/convert_bootstrap.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
from lxml import etree
1010

11+
from .misc import Sentinel
1112
from .misc import parse_version as Version
1213

1314
_logger = logging.getLogger(__name__)
@@ -228,7 +229,7 @@ def edit_element_classes(element, add, remove, is_qweb=False):
228229
edit_element_t_classes(element, add, remove)
229230

230231

231-
ALL = object()
232+
ALL = Sentinel("ALL")
232233
"""Sentinel object to indicate "all items" in a collection"""
233234

234235

src/util/inconsistencies.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from psycopg2.sql import SQL
99

1010
from .helpers import _validate_model, table_of_model
11-
from .misc import chunks, str2bool
11+
from .misc import Sentinel, chunks, str2bool
1212
from .pg import format_query, get_value_or_en_translation, target_of
1313
from .report import add_to_migration_reports, get_anchor_link_to_record, html_escape
1414

@@ -20,7 +20,7 @@
2020
)
2121
FIX_PRODUCT_UOM = str2bool(os.environ.get("ODOO_MIG_FIX_ALL_UOM_INCONSISTENCIES"), default=False)
2222

23-
FROM_ENV = object()
23+
FROM_ENV = Sentinel("FROM_ENV")
2424

2525

2626
def break_recursive_loops(cr, model, field, name_field="name"):

src/util/misc.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,19 @@
3939
_logger = logging.getLogger(__name__)
4040

4141

42+
class Sentinel:
43+
# waiting PEP661...
44+
__slots__ = ("name",)
45+
46+
def __init__(self, name):
47+
self.name = name
48+
49+
def __repr__(self):
50+
return self.name
51+
52+
4253
def _cached(func):
43-
sentinel = object()
54+
sentinel = Sentinel("sentinel")
4455

4556
@functools.wraps(func)
4657
def wrapper(*args, **kwargs):

src/util/pg.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343

4444
from .exceptions import MigrationError, SleepyDeveloperError
4545
from .helpers import _validate_table, model_of_table
46-
from .misc import log_progress
46+
from .misc import Sentinel, log_progress
4747

4848
_logger = logging.getLogger(__name__)
4949

@@ -541,7 +541,7 @@ def create_column(cr, table, column, definition, **kwargs):
541541
:rtype: bool
542542
"""
543543
# Manual PEP 3102
544-
no_def = object()
544+
no_def = Sentinel("no_def")
545545
default = kwargs.pop("default", no_def)
546546
fk_table = kwargs.pop("fk_table", no_def)
547547
on_delete_action = kwargs.pop("on_delete_action", no_def)
@@ -961,7 +961,7 @@ def get_depending_views(cr, table, column):
961961

962962

963963
# sentinel object for function parameters to not alter.
964-
KEEP_CURRENT = object()
964+
KEEP_CURRENT = Sentinel("KEEP_CURRENT")
965965

966966

967967
class ColumnList(UserList, sql.Composable):

0 commit comments

Comments
 (0)