summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mailman/__init__.py17
-rw-r--r--src/mailman/config/__init__.py5
-rw-r--r--src/mailman/core/constants.py4
-rw-r--r--src/mailman/core/i18n.py3
-rw-r--r--src/mailman/core/initialize.py3
-rw-r--r--src/mailman/core/system.py5
-rw-r--r--src/mailman/database/alembic/__init__.py4
-rw-r--r--src/mailman/database/model.py6
-rw-r--r--src/mailman/docs/__init__.py5
-rw-r--r--src/mailman/interfaces/autorespond.py3
-rw-r--r--src/mailman/rest/docs/__init__.py5
-rw-r--r--src/mailman/utilities/datetime.py24
12 files changed, 38 insertions, 46 deletions
diff --git a/src/mailman/__init__.py b/src/mailman/__init__.py
index 716e7aecf..c54830915 100644
--- a/src/mailman/__init__.py
+++ b/src/mailman/__init__.py
@@ -30,15 +30,16 @@ except ImportError: # pragma: no cover
# I hate myself: http://bugs.python.org/issue26632
-def public(thing):
- if isinstance(thing, str):
- mdict = sys._getframe(1).f_globals
- name = thing
- else:
- mdict = sys.modules[thing.__module__].__dict__
- name = thing.__name__
+def public(thing=None, **kws):
+ mdict = (sys._getframe(1).f_globals
+ if thing is None
+ else sys.modules[thing.__module__].__dict__)
dunder_all = mdict.setdefault('__all__', [])
- dunder_all.append(name)
+ if thing is not None:
+ dunder_all.append(thing.__name__)
+ for key, value in kws.items():
+ dunder_all.append(key)
+ mdict[key] = value
return thing
diff --git a/src/mailman/config/__init__.py b/src/mailman/config/__init__.py
index 7711fba09..5c45d6599 100644
--- a/src/mailman/config/__init__.py
+++ b/src/mailman/config/__init__.py
@@ -17,7 +17,8 @@
"""Mailman configuration package."""
+from mailman import public
from mailman.config.config import Configuration
-config = Configuration()
-__all__ = ['config']
+
+public(config=Configuration())
diff --git a/src/mailman/core/constants.py b/src/mailman/core/constants.py
index 167ffef8b..f82783e9f 100644
--- a/src/mailman/core/constants.py
+++ b/src/mailman/core/constants.py
@@ -17,6 +17,7 @@
"""Various constants and enumerations."""
+from mailman import public
from mailman.config import config
from mailman.interfaces.languages import ILanguageManager
from mailman.interfaces.member import DeliveryMode, DeliveryStatus
@@ -42,5 +43,4 @@ class SystemDefaultPreferences:
return getUtility(ILanguageManager)[config.mailman.default_language]
-system_preferences = SystemDefaultPreferences()
-__all__ = ['system_preferences']
+public(system_preferences=SystemDefaultPreferences())
diff --git a/src/mailman/core/i18n.py b/src/mailman/core/i18n.py
index 0f13f90c0..5536fcdaf 100644
--- a/src/mailman/core/i18n.py
+++ b/src/mailman/core/i18n.py
@@ -24,8 +24,7 @@ from mailman import public
from mailman.interfaces.configuration import ConfigurationUpdatedEvent
-_ = None
-__all__ = ['_']
+public(_=None)
@public
diff --git a/src/mailman/core/initialize.py b/src/mailman/core/initialize.py
index 3c724aecd..1a6c800e6 100644
--- a/src/mailman/core/initialize.py
+++ b/src/mailman/core/initialize.py
@@ -40,8 +40,7 @@ from zope.configuration import xmlconfig
# The test infrastructure uses this to prevent the search and loading of any
# existing configuration file. Otherwise the existence of say a
# ~/.mailman.cfg file can break tests.
-INHIBIT_CONFIG_FILE = object()
-__all__ = ['INHIBIT_CONFIG_FILE']
+public(INHIBIT_CONFIG_FILE=object())
def search_for_configuration_file():
diff --git a/src/mailman/core/system.py b/src/mailman/core/system.py
index c4489d926..ee88c5adf 100644
--- a/src/mailman/core/system.py
+++ b/src/mailman/core/system.py
@@ -19,7 +19,7 @@
import sys
-from mailman import version
+from mailman import public, version
from mailman.interfaces.system import ISystem
from zope.interface import implementer
@@ -39,5 +39,4 @@ class System:
return sys.version
-system = System()
-__all__ = ['system']
+public(system=System())
diff --git a/src/mailman/database/alembic/__init__.py b/src/mailman/database/alembic/__init__.py
index c9626cc9f..af2596f04 100644
--- a/src/mailman/database/alembic/__init__.py
+++ b/src/mailman/database/alembic/__init__.py
@@ -18,8 +18,8 @@
"""Alembic configuration initization."""
from alembic.config import Config
+from mailman import public
from mailman.utilities.modules import expand_path
-alembic_cfg = Config(expand_path('python:mailman.config.alembic'))
-__all__ = ['alembic_cfg']
+public(alembic_cfg=Config(expand_path('python:mailman.config.alembic')))
diff --git a/src/mailman/database/model.py b/src/mailman/database/model.py
index b9ba54c8d..6019b7488 100644
--- a/src/mailman/database/model.py
+++ b/src/mailman/database/model.py
@@ -18,6 +18,7 @@
"""Base class for all database classes."""
from contextlib import closing
+from mailman import public
from mailman.config import config
from sqlalchemy.ext.declarative import declarative_base
@@ -36,7 +37,7 @@ class ModelMeta:
try:
# Delete all the tables in reverse foreign key dependency
# order. http://tinyurl.com/on8dy6f
- for table in reversed(Model.metadata.sorted_tables):
+ for table in reversed(Model.metadata.sorted_tables): # noqa
connection.execute(table.delete())
except:
transaction.rollback()
@@ -45,5 +46,4 @@ class ModelMeta:
transaction.commit()
-Model = declarative_base(cls=ModelMeta)
-__all__ = ['Model']
+public(Model=declarative_base(cls=ModelMeta))
diff --git a/src/mailman/docs/__init__.py b/src/mailman/docs/__init__.py
index dc5c1f040..68c7bb4cf 100644
--- a/src/mailman/docs/__init__.py
+++ b/src/mailman/docs/__init__.py
@@ -17,7 +17,8 @@
"""General Mailman doc tests."""
+from mailman import public
from mailman.testing.layers import ConfigLayer
-layer = ConfigLayer
-__all__ = ['layer']
+
+public(layer=ConfigLayer)
diff --git a/src/mailman/interfaces/autorespond.py b/src/mailman/interfaces/autorespond.py
index a67cf6aaf..645a6c76b 100644
--- a/src/mailman/interfaces/autorespond.py
+++ b/src/mailman/interfaces/autorespond.py
@@ -23,8 +23,7 @@ from mailman import public
from zope.interface import Attribute, Interface
-ALWAYS_REPLY = timedelta()
-__all__ = ['ALWAYS_REPLY']
+public(ALWAYS_REPLY=timedelta())
@public
diff --git a/src/mailman/rest/docs/__init__.py b/src/mailman/rest/docs/__init__.py
index 4b83845fc..113e299c3 100644
--- a/src/mailman/rest/docs/__init__.py
+++ b/src/mailman/rest/docs/__init__.py
@@ -17,7 +17,8 @@
"""Doctest layer setup."""
+from mailman import public
from mailman.testing.layers import RESTLayer
-layer = RESTLayer
-__all__ = ['layer']
+
+public(layer=RESTLayer)
diff --git a/src/mailman/utilities/datetime.py b/src/mailman/utilities/datetime.py
index ba7ce9de2..9c1ffb125 100644
--- a/src/mailman/utilities/datetime.py
+++ b/src/mailman/utilities/datetime.py
@@ -32,8 +32,7 @@ from mailman.testing import layers
# locale.setlocale(locale.LC_ALL, ''). Since we never do this in Mailman (and
# no library better do it either!) this will safely give us expected RFC 5322
# Date headers.
-RFC822_DATE_FMT = '%a, %d %b %Y %H:%M:%S %z'
-__all__ = ['RFC822_DATE_FMT']
+public(RFC822_DATE_FMT='%a, %d %b %Y %H:%M:%S %z')
# Definition of UTC timezone, taken from
@@ -53,8 +52,7 @@ class UTC(datetime.tzinfo):
return ZERO
-utc = UTC()
-__all__.append('utc')
+public(utc=UTC())
_missing = object()
@@ -69,7 +67,7 @@ class DateFactory:
# We can't automatically fast-forward because some tests require us to
# stay on the same day for a while, e.g. autorespond.txt.
if tz is _missing:
- tz = utc
+ tz = utc # noqa
# Storm cannot yet handle datetimes with tz suffixes. Assume we're
# using UTC datetimes everywhere, so set the tzinfo to None. This
# does *not* change the actual time values. LP: #280708
@@ -97,14 +95,8 @@ class DateFactory:
cls.predictable_today = cls.predictable_now.date()
-factory = DateFactory()
-factory.reset()
-today = factory.today
-now = factory.now
-layers.MockAndMonkeyLayer.register_reset(factory.reset)
-
-__all__.extend([
- 'factory',
- 'now',
- 'today',
- ])
+public(factory=DateFactory())
+factory.reset() # noqa
+public(today=factory.today) # noqa
+public(now=factory.now) # noqa
+layers.MockAndMonkeyLayer.register_reset(factory.reset) # noqa