From 443bb295cdb5ca1d96c737bbe7f27be57394742c Mon Sep 17 00:00:00 2001 From: William Brown Date: Mon, 6 Nov 2017 10:40:06 +1000 Subject: [PATCH 1/2] Ticket lib389 105 - TypeError: argument 1 must be str, not function Bug Description: In commandline argument processing we would try and prompt for dn if not provided. However, this was wrapped in a lambda so was lazy evaluated, which pyldap does not understand. As a result this would cause a type mismatch as the dn parameter was a lambda not a string. Fix Description: Remove the lambda in favour of direct call to _get_arg to prevent lazy eval, and remove the _input wrapper to simplify input management for cli_base. https://pagure.io/lib389/issue/105 Author: wibrown Review by: ??? --- src/lib389/lib389/cli_base/__init__.py | 19 ++++--------------- src/lib389/lib389/cli_idm/user.py | 4 ++-- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/src/lib389/lib389/cli_base/__init__.py b/src/lib389/lib389/cli_base/__init__.py index 21bf3cc..f89a0b5 100644 --- a/src/lib389/lib389/cli_base/__init__.py +++ b/src/lib389/lib389/cli_base/__init__.py @@ -7,22 +7,11 @@ # --- END COPYRIGHT BLOCK --- import logging -import sys from getpass import getpass from lib389 import DirSrv from lib389.properties import SER_LDAP_URL, SER_ROOT_DN, SER_ROOT_PW -MAJOR, MINOR, _, _, _ = sys.version_info - -# REALLY PYTHON 3? REALLY??? -def _input(msg): - if MAJOR >= 3: - return input(msg) - else: - return raw_input(msg) - - def _get_arg(args, msg=None): if args is not None and len(args) > 0: if type(args) is list: @@ -30,7 +19,7 @@ def _get_arg(args, msg=None): else: return args else: - return _input("%s : " % msg) + return input("%s : " % msg) def _get_args(args, kws): kwargs = {} @@ -43,7 +32,7 @@ def _get_args(args, kws): if priv: kwargs[kw] = getpass("%s : " % msg) else: - kwargs[kw] = _input("%s : " % msg) + kwargs[kw] = input("%s : " % msg) return kwargs # This is really similar to get_args, but generates from an array @@ -56,14 +45,14 @@ def _get_attributes(args, attrs): if attr.lower() == 'userpassword': kwargs[attr] = getpass("Enter value for %s : " % attr) else: - kwargs[attr] = _input("Enter value for %s : " % attr) + kwargs[attr] = input("Enter value for %s : " % attr) return kwargs def _warn(data, msg=None): if msg is not None: print("%s :" % msg) - if 'Yes I am sure' != _input("Type 'Yes I am sure' to continue: "): + if 'Yes I am sure' != input("Type 'Yes I am sure' to continue: "): raise Exception("Not sure if want") return data diff --git a/src/lib389/lib389/cli_idm/user.py b/src/lib389/lib389/cli_idm/user.py index 5b57862..a3add93 100644 --- a/src/lib389/lib389/cli_idm/user.py +++ b/src/lib389/lib389/cli_idm/user.py @@ -32,11 +32,11 @@ def list(inst, basedn, log, args): _generic_list(inst, basedn, log.getChild('_generic_list'), MANY) def get(inst, basedn, log, args): - rdn = _get_arg( args.selector, msg="Enter %s to retrieve" % RDN) + rdn = _get_arg(args.selector, msg="Enter %s to retrieve" % RDN) _generic_get(inst, basedn, log.getChild('_generic_get'), MANY, rdn) def get_dn(inst, basedn, log, args): - dn = lambda args: _get_arg( args.dn, msg="Enter dn to retrieve") + dn = _get_arg(args.dn, msg="Enter dn to retrieve") _generic_get_dn(inst, basedn, log.getChild('_generic_get_dn'), MANY, dn) def create(inst, basedn, log, args): -- 1.8.3.1