Compare commits

..

5 commits

Author SHA1 Message Date
Pavel Bar
64a81b4064 Add changelog fragment for deprecated imports fix
Added changelog entry documenting the bugfixes for synchronize
and mount modules' deprecated import issues.

Related to #686

Co-authored-by: Cursor AI
Signed-off-by: Pavel Bar <pbar@redhat.com>
2025-12-24 15:45:30 +02:00
Pavel Bar
87307a91a2 Fix deprecated six imports for CI compliance
Replace deprecated ansible.module_utils.six imports with Python 3
standard library equivalents to pass pylint sanity checks.

plugins/action/synchronize.py:
- ansible.module_utils.six.string_types → str
- ansible.module_utils.six.moves.shlex_quote → shlex.quote

plugins/modules/synchronize.py:
- ansible.module_utils.six.moves.shlex_quote → shlex.quote

plugins/modules/mount.py:
- ansible.module_utils.six.iteritems → dict.items()
2025-12-24 15:45:24 +02:00
Pavel Bar
dda97be28a Fix deprecated imports in plugins/modules/mount.py
Replace deprecated module_utils imports:
- ansible.module_utils._text -> ansible.module_utils.common.text.converters

Fixes #686
2025-12-24 01:38:57 +02:00
Pavel Bar
94089b00f7 Fix deprecated imports in plugins/modules/synchronize.py
Replace deprecated module_utils import:
- ansible.module_utils._text -> ansible.module_utils.common.text.converters

Fixes #686
2025-12-24 01:38:41 +02:00
Pavel Bar
3cbaff144c Fix deprecated imports in plugins/action/synchronize.py
Replace deprecated module_utils imports:
- ansible.module_utils._text -> ansible.module_utils.common.text.converters
- ansible.module_utils.common._collections_compat -> collections.abc

Fixes #686
2025-12-24 01:38:33 +02:00
25 changed files with 78 additions and 72 deletions

View file

@ -1,28 +1,8 @@
--- ---
minor_changes: minor_changes:
- mount - fix deprecated ``ansible.module_utils._text`` and ``ansible.module_utils.six`` imports (https://github.com/ansible-collections/ansible.posix/issues/686). - plugins/action/synchronize.py - fix deprecated ``ansible.module_utils._text`` and ``ansible.module_utils.common._collections_compat`` imports (https://github.com/ansible-collections/ansible.posix/issues/686).
- plugins/action/patch.py - fix deprecated ``ansible.module_utils._text`` import (https://github.com/ansible-collections/ansible.posix/issues/686). - plugins/action/synchronize.py - fix deprecated ``ansible.module_utils.six`` imports for CI compliance.
- plugins/action/synchronize.py - fix deprecated ``ansible.module_utils._text``, ``ansible.module_utils.common._collections_compat``, and ``ansible.module_utils.six`` imports (https://github.com/ansible-collections/ansible.posix/issues/686). - plugins/modules/synchronize.py - fix deprecated ``ansible.module_utils._text`` import (https://github.com/ansible-collections/ansible.posix/issues/686).
- plugins/callback/cgroup_perf_recap.py - fix deprecated ``ansible.module_utils._text`` and ``ansible.module_utils.six`` imports (https://github.com/ansible-collections/ansible.posix/issues/686). - plugins/modules/synchronize.py - fix deprecated ``ansible.module_utils.six`` imports for CI compliance.
- plugins/callback/json.py - fix deprecated ``ansible.module_utils._text`` import (https://github.com/ansible-collections/ansible.posix/issues/686). - mount - fix deprecated ``ansible.module_utils._text`` import (https://github.com/ansible-collections/ansible.posix/issues/686).
- plugins/callback/jsonl.py - fix deprecated ``ansible.module_utils._text`` import (https://github.com/ansible-collections/ansible.posix/issues/686). - mount - fix deprecated ``ansible.module_utils.six`` imports for CI compliance.
- plugins/callback/profile_roles.py - fix deprecated ``ansible.module_utils.six`` import (https://github.com/ansible-collections/ansible.posix/issues/686).
- plugins/callback/profile_tasks.py - fix deprecated ``ansible.module_utils.six`` import (https://github.com/ansible-collections/ansible.posix/issues/686).
- plugins/modules/acl.py - fix deprecated ``ansible.module_utils._text`` import (https://github.com/ansible-collections/ansible.posix/issues/686).
- plugins/modules/authorized_key.py - fix deprecated ``ansible.module_utils._text`` and ``ansible.module_utils.six`` imports (https://github.com/ansible-collections/ansible.posix/issues/686).
- plugins/modules/firewalld_info.py - fix deprecated ``ansible.module_utils._text`` import (https://github.com/ansible-collections/ansible.posix/issues/686).
- plugins/modules/patch.py - fix deprecated ``ansible.module_utils._text`` import (https://github.com/ansible-collections/ansible.posix/issues/686).
- plugins/modules/rhel_rpm_ostree.py - fix deprecated ``ansible.module_utils._text`` import (https://github.com/ansible-collections/ansible.posix/issues/686).
- plugins/modules/rpm_ostree_upgrade.py - fix deprecated ``ansible.module_utils._text`` import (https://github.com/ansible-collections/ansible.posix/issues/686).
- plugins/modules/seboolean.py - fix deprecated ``ansible.module_utils._text`` import (https://github.com/ansible-collections/ansible.posix/issues/686).
- plugins/modules/synchronize.py - fix deprecated ``ansible.module_utils._text`` and ``ansible.module_utils.six`` imports (https://github.com/ansible-collections/ansible.posix/issues/686).
- plugins/modules/sysctl.py - fix deprecated ``ansible.module_utils._text`` and ``ansible.module_utils.six`` imports (https://github.com/ansible-collections/ansible.posix/issues/686).
- plugins/shell/csh.py - fix deprecated ``ansible.module_utils.six`` imports (https://github.com/ansible-collections/ansible.posix/issues/686).
- plugins/shell/fish.py - fix deprecated ``ansible.module_utils.six`` imports (https://github.com/ansible-collections/ansible.posix/issues/686).
- tests/unit/mock/loader.py - fix deprecated ``ansible.module_utils._text`` import (https://github.com/ansible-collections/ansible.posix/issues/686).
- tests/unit/mock/procenv.py - fix deprecated ``ansible.module_utils._text`` and ``ansible.module_utils.six`` imports (https://github.com/ansible-collections/ansible.posix/issues/686).
- tests/unit/mock/vault_helper.py - fix deprecated ``ansible.module_utils._text`` import (https://github.com/ansible-collections/ansible.posix/issues/686).
- tests/unit/mock/yaml_helper.py - fix deprecated ``ansible.module_utils.six`` import (https://github.com/ansible-collections/ansible.posix/issues/686).
- tests/unit/modules/conftest.py - fix deprecated ``ansible.module_utils._text``, ``ansible.module_utils.six``, and ``ansible.module_utils.common._collections_compat`` imports (https://github.com/ansible-collections/ansible.posix/issues/686).
- tests/unit/modules/system/test_mount.py - fix deprecated ``ansible.module_utils._text`` import (https://github.com/ansible-collections/ansible.posix/issues/686).
- tests/unit/modules/utils.py - fix deprecated ``ansible.module_utils._text`` import (https://github.com/ansible-collections/ansible.posix/issues/686).

View file

@ -21,7 +21,7 @@ __metaclass__ = type
import os import os
from ansible.errors import AnsibleError, AnsibleAction, _AnsibleActionDone, AnsibleActionFail from ansible.errors import AnsibleError, AnsibleAction, _AnsibleActionDone, AnsibleActionFail
from ansible.module_utils.common.text.converters import to_native from ansible.module_utils._text import to_native
from ansible.module_utils.parsing.convert_bool import boolean from ansible.module_utils.parsing.convert_bool import boolean
from ansible.plugins.action import ActionBase from ansible.plugins.action import ActionBase

View file

@ -141,7 +141,8 @@ from abc import ABCMeta, abstractmethod
from functools import partial from functools import partial
from ansible.module_utils.common.text.converters import to_bytes, to_text from ansible.module_utils._text import to_bytes, to_text
from ansible.module_utils.six import with_metaclass
from ansible.parsing.ajson import AnsibleJSONEncoder from ansible.parsing.ajson import AnsibleJSONEncoder
from ansible.plugins.callback import CallbackBase from ansible.plugins.callback import CallbackBase
@ -157,7 +158,7 @@ def dict_fromkeys(keys, default=None):
return d return d
class BaseProf(threading.Thread, metaclass=ABCMeta): class BaseProf(with_metaclass(ABCMeta, threading.Thread)):
def __init__(self, path, obj=None, writer=None): def __init__(self, path, obj=None, writer=None):
threading.Thread.__init__(self) # pylint: disable=non-parent-init-called threading.Thread.__init__(self) # pylint: disable=non-parent-init-called
self.obj = obj self.obj = obj

View file

@ -48,7 +48,7 @@ import json
from functools import partial from functools import partial
from ansible.inventory.host import Host from ansible.inventory.host import Host
from ansible.module_utils.common.text.converters import to_text from ansible.module_utils._text import to_text
from ansible.parsing.ajson import AnsibleJSONEncoder from ansible.parsing.ajson import AnsibleJSONEncoder
from ansible.plugins.callback import CallbackBase from ansible.plugins.callback import CallbackBase

View file

@ -50,7 +50,7 @@ import copy
from functools import partial from functools import partial
from ansible.inventory.host import Host from ansible.inventory.host import Host
from ansible.module_utils.common.text.converters import to_text from ansible.module_utils._text import to_text
from ansible.parsing.ajson import AnsibleJSONEncoder from ansible.parsing.ajson import AnsibleJSONEncoder
from ansible.plugins.callback import CallbackBase from ansible.plugins.callback import CallbackBase

View file

@ -33,7 +33,7 @@ import collections
import time import time
from ansible.plugins.callback import CallbackBase from ansible.plugins.callback import CallbackBase
from functools import reduce from ansible.module_utils.six.moves import reduce
# define start time # define start time
t0 = tn = time.time() t0 = tn = time.time()

View file

@ -86,7 +86,7 @@ import collections
from datetime import datetime from datetime import datetime
from functools import reduce from ansible.module_utils.six.moves import reduce
from ansible.plugins.callback import CallbackBase from ansible.plugins.callback import CallbackBase

View file

@ -147,7 +147,7 @@ import os
import platform import platform
from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.common.text.converters import to_native from ansible.module_utils._text import to_native
def split_entry(entry): def split_entry(entry):

View file

@ -229,17 +229,10 @@ import errno
import traceback import traceback
from operator import itemgetter from operator import itemgetter
# TODO(Python2): urllib.parse is available in Python 3. This module may run on from ansible.module_utils._text import to_native
# target hosts with Python 2.7 (e.g., older RHEL systems in CI integration tests).
# Remove the try/except fallback to urlparse when Python 2 support is dropped.
try:
from urllib.parse import urlparse
except ImportError:
from urlparse import urlparse
from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.common.text.converters import to_native
from ansible.module_utils.urls import fetch_url from ansible.module_utils.urls import fetch_url
from ansible.module_utils.six.moves.urllib.parse import urlparse
class keydict(dict): class keydict(dict):

View file

@ -210,7 +210,7 @@ firewalld_info:
''' '''
from ansible.module_utils.basic import AnsibleModule, missing_required_lib from ansible.module_utils.basic import AnsibleModule, missing_required_lib
from ansible.module_utils.common.text.converters import to_native from ansible.module_utils._text import to_native
from ansible_collections.ansible.posix.plugins.module_utils._respawn import respawn_module, HAS_RESPAWN_UTIL from ansible_collections.ansible.posix.plugins.module_utils._respawn import respawn_module, HAS_RESPAWN_UTIL
from ansible_collections.ansible.posix.plugins.module_utils.version import StrictVersion from ansible_collections.ansible.posix.plugins.module_utils.version import StrictVersion

View file

@ -106,7 +106,7 @@ import os
import platform import platform
from traceback import format_exc from traceback import format_exc
from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.common.text.converters import to_native from ansible.module_utils._text import to_native
class PatchError(Exception): class PatchError(Exception):

View file

@ -73,7 +73,7 @@ import os
import traceback import traceback
from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.common.text.converters import to_text from ansible.module_utils._text import to_text
def locally_installed(module, pkgname): def locally_installed(module, pkgname):

View file

@ -71,7 +71,7 @@ import os
import traceback import traceback
from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.common.text.converters import to_native, to_text from ansible.module_utils._text import to_native, to_text
def rpm_ostree_transaction(module): def rpm_ostree_transaction(module):

View file

@ -73,7 +73,7 @@ except ImportError:
HAVE_SEMANAGE = False HAVE_SEMANAGE = False
from ansible.module_utils.basic import AnsibleModule, missing_required_lib from ansible.module_utils.basic import AnsibleModule, missing_required_lib
from ansible.module_utils.common.text.converters import to_text from ansible.module_utils._text import to_text
from ansible_collections.ansible.posix.plugins.module_utils._respawn import respawn_module, HAS_RESPAWN_UTIL from ansible_collections.ansible.posix.plugins.module_utils._respawn import respawn_module, HAS_RESPAWN_UTIL

View file

@ -110,8 +110,9 @@ import re
import tempfile import tempfile
from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.common.text.converters import to_native from ansible.module_utils.six import string_types
from ansible.module_utils.parsing.convert_bool import BOOLEANS_FALSE, BOOLEANS_TRUE from ansible.module_utils.parsing.convert_bool import BOOLEANS_FALSE, BOOLEANS_TRUE
from ansible.module_utils._text import to_native
class SysctlModule(object): class SysctlModule(object):
@ -223,7 +224,7 @@ class SysctlModule(object):
return '1' return '1'
else: else:
return '0' return '0'
elif isinstance(value, str): elif isinstance(value, string_types):
if value.lower() in BOOLEANS_TRUE: if value.lower() in BOOLEANS_TRUE:
return '1' return '1'
elif value.lower() in BOOLEANS_FALSE: elif value.lower() in BOOLEANS_FALSE:

View file

@ -13,7 +13,8 @@ DOCUMENTATION = '''
- shell_common - shell_common
''' '''
from shlex import quote as shlex_quote from ansible.module_utils.six import text_type
from ansible.module_utils.six.moves import shlex_quote
from ansible.plugins.shell import ShellBase from ansible.plugins.shell import ShellBase
@ -42,5 +43,5 @@ class ShellModule(ShellBase):
ret = [] ret = []
# All the -u options must be first, so we process them first # All the -u options must be first, so we process them first
ret += ['-u %s' % k for k, v in kwargs.items() if v is None] ret += ['-u %s' % k for k, v in kwargs.items() if v is None]
ret += ['%s=%s' % (k, shlex_quote(str(v))) for k, v in kwargs.items() if v is not None] ret += ['%s=%s' % (k, shlex_quote(text_type(v))) for k, v in kwargs.items() if v is not None]
return 'env %s' % ' '.join(ret) return 'env %s' % ' '.join(ret)

View file

@ -13,7 +13,8 @@ DOCUMENTATION = '''
- shell_common - shell_common
''' '''
from shlex import quote as shlex_quote from ansible.module_utils.six import text_type
from ansible.module_utils.six.moves import shlex_quote
from ansible.plugins.shell.sh import ShellModule as ShModule from ansible.plugins.shell.sh import ShellModule as ShModule
@ -41,7 +42,7 @@ class ShellModule(ShModule):
if v is None: if v is None:
ret.append('set -e %s;' % k) ret.append('set -e %s;' % k)
else: else:
ret.append('set -lx %s %s;' % (k, shlex_quote(str(v)))) ret.append('set -lx %s %s;' % (k, shlex_quote(text_type(v))))
return ' '.join(ret) return ' '.join(ret)
def build_module_command(self, env_string, shebang, cmd, arg_path=None): def build_module_command(self, env_string, shebang, cmd, arg_path=None):

View file

@ -1 +1,8 @@
tests/utils/shippable/timing.py shebang tests/utils/shippable/timing.py shebang
plugins/callback/cgroup_perf_recap.py pylint:ansible-bad-import-from
plugins/modules/sysctl.py pylint:ansible-bad-import-from
plugins/shell/csh.py pylint:ansible-bad-import-from
plugins/shell/fish.py pylint:ansible-bad-import-from
tests/unit/mock/procenv.py pylint:ansible-bad-import-from
tests/unit/mock/yaml_helper.py pylint:ansible-bad-import-from
tests/unit/modules/conftest.py pylint:ansible-bad-import-from

View file

@ -23,7 +23,7 @@ import os
from ansible.errors import AnsibleParserError from ansible.errors import AnsibleParserError
from ansible.parsing.dataloader import DataLoader from ansible.parsing.dataloader import DataLoader
from ansible.module_utils.common.text.converters import to_bytes, to_text from ansible.module_utils._text import to_bytes, to_text
class DictDataLoader(DataLoader): class DictDataLoader(DataLoader):

View file

@ -26,7 +26,8 @@ import json
from contextlib import contextmanager from contextlib import contextmanager
from io import BytesIO, StringIO from io import BytesIO, StringIO
from ansible_collections.ansible.posix.tests.unit.compat import unittest from ansible_collections.ansible.posix.tests.unit.compat import unittest
from ansible.module_utils.common.text.converters import to_bytes from ansible.module_utils.six import PY3
from ansible.module_utils._text import to_bytes
@contextmanager @contextmanager
@ -37,8 +38,11 @@ def swap_stdin_and_argv(stdin_data='', argv_data=tuple()):
real_stdin = sys.stdin real_stdin = sys.stdin
real_argv = sys.argv real_argv = sys.argv
if PY3:
fake_stream = StringIO(stdin_data) fake_stream = StringIO(stdin_data)
fake_stream.buffer = BytesIO(to_bytes(stdin_data)) fake_stream.buffer = BytesIO(to_bytes(stdin_data))
else:
fake_stream = BytesIO(to_bytes(stdin_data))
try: try:
sys.stdin = fake_stream sys.stdin = fake_stream
@ -57,7 +61,10 @@ def swap_stdout():
""" """
old_stdout = sys.stdout old_stdout = sys.stdout
if PY3:
fake_stream = StringIO() fake_stream = StringIO()
else:
fake_stream = BytesIO()
try: try:
sys.stdout = fake_stream sys.stdout = fake_stream

View file

@ -15,7 +15,7 @@
from __future__ import (absolute_import, division, print_function) from __future__ import (absolute_import, division, print_function)
__metaclass__ = type __metaclass__ = type
from ansible.module_utils.common.text.converters import to_bytes from ansible.module_utils._text import to_bytes
from ansible.parsing.vault import VaultSecret from ansible.parsing.vault import VaultSecret

View file

@ -5,6 +5,7 @@ __metaclass__ = type
import io import io
import yaml import yaml
from ansible.module_utils.six import PY3
from ansible.parsing.yaml.loader import AnsibleLoader from ansible.parsing.yaml.loader import AnsibleLoader
from ansible.parsing.yaml.dumper import AnsibleDumper from ansible.parsing.yaml.dumper import AnsibleDumper
@ -19,11 +20,17 @@ class YamlTestUtils(object):
def _dump_stream(self, obj, stream, dumper=None): def _dump_stream(self, obj, stream, dumper=None):
"""Dump to a py2-unicode or py3-string stream.""" """Dump to a py2-unicode or py3-string stream."""
if PY3:
return yaml.dump(obj, stream, Dumper=dumper) return yaml.dump(obj, stream, Dumper=dumper)
else:
return yaml.dump(obj, stream, Dumper=dumper, encoding=None)
def _dump_string(self, obj, dumper=None): def _dump_string(self, obj, dumper=None):
"""Dump to a py2-unicode or py3-string""" """Dump to a py2-unicode or py3-string"""
if PY3:
return yaml.dump(obj, Dumper=dumper) return yaml.dump(obj, Dumper=dumper)
else:
return yaml.dump(obj, Dumper=dumper, encoding=None)
def _dump_load_cycle(self, obj): def _dump_load_cycle(self, obj):
# Each pass though a dump or load revs the 'generation' # Each pass though a dump or load revs the 'generation'
@ -81,8 +88,12 @@ class YamlTestUtils(object):
stream_obj_from_stream = io.StringIO() stream_obj_from_stream = io.StringIO()
stream_obj_from_string = io.StringIO() stream_obj_from_string = io.StringIO()
if PY3:
yaml.dump(obj_from_stream, stream_obj_from_stream, Dumper=AnsibleDumper) yaml.dump(obj_from_stream, stream_obj_from_stream, Dumper=AnsibleDumper)
yaml.dump(obj_from_stream, stream_obj_from_string, Dumper=AnsibleDumper) yaml.dump(obj_from_stream, stream_obj_from_string, Dumper=AnsibleDumper)
else:
yaml.dump(obj_from_stream, stream_obj_from_stream, Dumper=AnsibleDumper, encoding=None)
yaml.dump(obj_from_stream, stream_obj_from_string, Dumper=AnsibleDumper, encoding=None)
yaml_string_stream_obj_from_stream = stream_obj_from_stream.getvalue() yaml_string_stream_obj_from_stream = stream_obj_from_stream.getvalue()
yaml_string_stream_obj_from_string = stream_obj_from_string.getvalue() yaml_string_stream_obj_from_string = stream_obj_from_string.getvalue()
@ -90,8 +101,12 @@ class YamlTestUtils(object):
stream_obj_from_stream.seek(0) stream_obj_from_stream.seek(0)
stream_obj_from_string.seek(0) stream_obj_from_string.seek(0)
if PY3:
yaml_string_obj_from_stream = yaml.dump(obj_from_stream, Dumper=AnsibleDumper) yaml_string_obj_from_stream = yaml.dump(obj_from_stream, Dumper=AnsibleDumper)
yaml_string_obj_from_string = yaml.dump(obj_from_string, Dumper=AnsibleDumper) yaml_string_obj_from_string = yaml.dump(obj_from_string, Dumper=AnsibleDumper)
else:
yaml_string_obj_from_stream = yaml.dump(obj_from_stream, Dumper=AnsibleDumper, encoding=None)
yaml_string_obj_from_string = yaml.dump(obj_from_string, Dumper=AnsibleDumper, encoding=None)
assert yaml_string == yaml_string_obj_from_stream assert yaml_string == yaml_string_obj_from_stream
assert yaml_string == yaml_string_obj_from_stream == yaml_string_obj_from_string assert yaml_string == yaml_string_obj_from_stream == yaml_string_obj_from_string

View file

@ -9,14 +9,14 @@ import json
import pytest import pytest
from collections.abc import MutableMapping from ansible.module_utils.six import string_types
from ansible.module_utils._text import to_bytes
from ansible.module_utils.common.text.converters import to_bytes from ansible.module_utils.common._collections_compat import MutableMapping
@pytest.fixture @pytest.fixture
def patch_ansible_module(request, mocker): def patch_ansible_module(request, mocker):
if isinstance(request.param, str): if isinstance(request.param, string_types):
args = request.param args = request.param
elif isinstance(request.param, MutableMapping): elif isinstance(request.param, MutableMapping):
if 'ANSIBLE_MODULE_ARGS' not in request.param: if 'ANSIBLE_MODULE_ARGS' not in request.param:

View file

@ -7,7 +7,7 @@ import tempfile
from ansible_collections.ansible.posix.tests.unit.compat import unittest from ansible_collections.ansible.posix.tests.unit.compat import unittest
from ansible_collections.ansible.posix.tests.unit.compat.mock import MagicMock from ansible_collections.ansible.posix.tests.unit.compat.mock import MagicMock
from ansible.module_utils.common.text.converters import to_bytes from ansible.module_utils._text import to_bytes
from ansible_collections.ansible.posix.plugins.modules.mount import ( from ansible_collections.ansible.posix.plugins.modules.mount import (
get_linux_mounts, get_linux_mounts,

View file

@ -7,7 +7,7 @@ import json
from ansible_collections.ansible.posix.tests.unit.compat import unittest from ansible_collections.ansible.posix.tests.unit.compat import unittest
from ansible_collections.ansible.posix.tests.unit.compat.mock import patch from ansible_collections.ansible.posix.tests.unit.compat.mock import patch
from ansible.module_utils import basic from ansible.module_utils import basic
from ansible.module_utils.common.text.converters import to_bytes from ansible.module_utils._text import to_bytes
def set_module_args(args): def set_module_args(args):