Python inspect.isgenerator() Examples
The following are 30
code examples of inspect.isgenerator().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
inspect
, or try the search function
.
Example #1
Source File: utils.py From quart with MIT License | 8 votes |
def run_sync(func: Callable[..., Any]) -> Callable[..., Coroutine[Any, None, None]]: """Ensure that the sync function is run within the event loop. If the *func* is not a coroutine it will be wrapped such that it runs in the default executor (use loop.set_default_executor to change). This ensures that synchronous functions do not block the event loop. """ @wraps(func) async def _wrapper(*args: Any, **kwargs: Any) -> Any: loop = asyncio.get_running_loop() result = await loop.run_in_executor( None, copy_context().run, partial(func, *args, **kwargs) ) if isgenerator(result): return run_sync_iterable(result) # type: ignore else: return result _wrapper._quart_async_wrapper = True # type: ignore return _wrapper
Example #2
Source File: base.py From revrand with Apache License 2.0 | 6 votes |
def atleast_list(a): """ Promote an object to a list if not a list or generator. Parameters ---------- a: object any object you want to at least be a list with one element Returns ------- list or generator: untounched if :code:`a` was a generator or list, otherwise :code:`[a]`. Examples -------- >>> a = 1. >>> atleast_list(a) [1.0] >>> a = [1.] >>> atleast_list(a) [1.0] """ return a if isinstance(a, list) or isgenerator(a) else [a]
Example #3
Source File: engine.py From hiku with BSD 3-Clause "New" or "Revised" License | 6 votes |
def store_fields(index, node, query_fields, ids, query_result): if inspect.isgenerator(query_result): warnings.warn('Data loading functions should not return generators', DeprecationWarning) query_result = list(query_result) _check_store_fields(node, query_fields, ids, query_result) names = [f.index_key for f in query_fields] if node.name is not None: assert ids is not None node_idx = index[node.name] for i, row in zip(ids, query_result): node_idx[i].update(zip(names, row)) else: assert ids is None index.root.update(zip(names, query_result))
Example #4
Source File: test_socrata.py From sodapy with MIT License | 6 votes |
def test_get_all(): mock_adapter = {} mock_adapter["prefix"] = PREFIX adapter = requests_mock.Adapter() mock_adapter["adapter"] = adapter client = Socrata(DOMAIN, APPTOKEN, session_adapter=mock_adapter) setup_mock(adapter, "GET", "bike_counts_page_1.json", 200, query="$offset=0") setup_mock(adapter, "GET", "bike_counts_page_2.json", 200, query="$offset=1000") response = client.get_all(DATASET_IDENTIFIER) assert inspect.isgenerator(response) data = list(response) assert len(data) == 1001 assert data[0]["date"] == "2016-09-21T15:45:00.000" assert data[-1]["date"] == "2016-10-02T01:45:00.000" client.close()
Example #5
Source File: __init__.py From cherrypy with BSD 3-Clause "New" or "Revised" License | 6 votes |
def is_closable_iterator(obj): """Detect if the given object is both closable and iterator.""" # Not an iterator. if not is_iterator(obj): return False # A generator - the easiest thing to deal with. import inspect if inspect.isgenerator(obj): return True # A custom iterator. Look for a close method... if not (hasattr(obj, 'close') and callable(obj.close)): return False # ... which doesn't require any arguments. try: inspect.getcallargs(obj.close) except TypeError: return False else: return True
Example #6
Source File: response.py From python-ddd with MIT License | 6 votes |
def default(self, obj): if isinstance(obj, datetime): return obj.isoformat() + 'Z' if hasattr(obj, "to_json"): return self.default(obj.to_json()) elif hasattr(obj, "__dict__"): d = dict( (key, value) for key, value in inspect.getmembers(obj) if not key.startswith("_") and not inspect.isabstract(value) and not inspect.isbuiltin(value) and not inspect.isfunction(value) and not inspect.isgenerator(value) and not inspect.isgeneratorfunction(value) and not inspect.ismethod(value) and not inspect.ismethoddescriptor(value) and not inspect.isroutine(value) ) return self.default(d) return obj
Example #7
Source File: simTestCase.py From hwt with MIT License | 6 votes |
def allValuesToInts(sequenceOrVal): if isinstance(sequenceOrVal, HArrayVal): sequenceOrVal = sequenceOrVal.val if isinstance(sequenceOrVal, (Value, Bits3val)): return valToInt(sequenceOrVal) elif not sequenceOrVal: return sequenceOrVal elif (isinstance(sequenceOrVal, (list, tuple, deque)) or isgenerator(sequenceOrVal)): seq = [] for i in sequenceOrVal: seq.append(allValuesToInts(i)) if isinstance(sequenceOrVal, tuple): return tuple(seq) return seq else: return sequenceOrVal
Example #8
Source File: test_inspect.py From gcblue with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_excluding_predicates(self): self.istest(inspect.isbuiltin, 'sys.exit') self.istest(inspect.isbuiltin, '[].append') self.istest(inspect.iscode, 'mod.spam.func_code') self.istest(inspect.isframe, 'tb.tb_frame') self.istest(inspect.isfunction, 'mod.spam') self.istest(inspect.ismethod, 'mod.StupidGit.abuse') self.istest(inspect.ismethod, 'git.argue') self.istest(inspect.ismodule, 'mod') self.istest(inspect.istraceback, 'tb') self.istest(inspect.isdatadescriptor, '__builtin__.file.closed') self.istest(inspect.isdatadescriptor, '__builtin__.file.softspace') self.istest(inspect.isgenerator, '(x for x in xrange(2))') self.istest(inspect.isgeneratorfunction, 'generator_function_example') if hasattr(types, 'GetSetDescriptorType'): self.istest(inspect.isgetsetdescriptor, 'type(tb.tb_frame).f_locals') else: self.assertFalse(inspect.isgetsetdescriptor(type(tb.tb_frame).f_locals)) if hasattr(types, 'MemberDescriptorType'): self.istest(inspect.ismemberdescriptor, 'datetime.timedelta.days') else: self.assertFalse(inspect.ismemberdescriptor(datetime.timedelta.days))
Example #9
Source File: base.py From mistral-extra with Apache License 2.0 | 6 votes |
def run(self, context): try: method = self._get_client_method(self._get_client(context)) result = method(**self._kwargs_for_run) if inspect.isgenerator(result): return [v for v in result] return result except Exception as e: # Print the traceback for the last exception so that we can see # where the issue comes from. LOG.warning(traceback.format_exc()) raise exc.ActionException( "%s.%s failed: %s" % (self.__class__.__name__, self.client_method_name, str(e)) )
Example #10
Source File: base.py From revrand with Apache License 2.0 | 6 votes |
def atleast_tuple(a): """ Promote an object to a tuple if not a tuple or generator. Parameters ---------- a: object any object you want to at least be a tuple with one element Returns ------- tuple or generator: untounched if :code:`a` was a generator or tuple, otherwise :code:`(a,)`. Examples -------- >>> a = 1. >>> atleast_tuple(a) (1.0,) >>> a = (1.,) >>> atleast_tuple(a) (1.0,) """ return a if isinstance(a, tuple) or isgenerator(a) else (a,)
Example #11
Source File: __init__.py From opsbro with MIT License | 6 votes |
def is_closable_iterator(obj): # Not an iterator. if not is_iterator(obj): return False # A generator - the easiest thing to deal with. import inspect if inspect.isgenerator(obj): return True # A custom iterator. Look for a close method... if not (hasattr(obj, 'close') and callable(obj.close)): return False # ... which doesn't require any arguments. try: inspect.getcallargs(obj.close) except TypeError: return False else: return True
Example #12
Source File: hnmp.py From hnmp with ISC License | 6 votes |
def cached_property(prop): """ A replacement for the property decorator that will only compute the attribute's value on the first call and serve a cached copy from then on. """ def cache_wrapper(self): if not hasattr(self, "_cache"): self._cache = {} if prop.__name__ not in self._cache: return_value = prop(self) if isgenerator(return_value): return_value = tuple(return_value) self._cache[prop.__name__] = return_value return self._cache[prop.__name__] return property(cache_wrapper)
Example #13
Source File: write_only.py From vnpy_crypto with MIT License | 6 votes |
def append(self, row): """ :param row: iterable containing values to append :type row: iterable """ if (not isgenerator(row) and not isinstance(row, (list, tuple, range)) ): self._invalid_row(row) self._max_row += 1 if self.writer is None: self.writer = self._write_header() next(self.writer) try: self.writer.send(row) except StopIteration: self._already_saved()
Example #14
Source File: test_inspect.py From BinderFilter with MIT License | 6 votes |
def test_excluding_predicates(self): self.istest(inspect.isbuiltin, 'sys.exit') self.istest(inspect.isbuiltin, '[].append') self.istest(inspect.iscode, 'mod.spam.func_code') self.istest(inspect.isframe, 'tb.tb_frame') self.istest(inspect.isfunction, 'mod.spam') self.istest(inspect.ismethod, 'mod.StupidGit.abuse') self.istest(inspect.ismethod, 'git.argue') self.istest(inspect.ismodule, 'mod') self.istest(inspect.istraceback, 'tb') self.istest(inspect.isdatadescriptor, '__builtin__.file.closed') self.istest(inspect.isdatadescriptor, '__builtin__.file.softspace') self.istest(inspect.isgenerator, '(x for x in xrange(2))') self.istest(inspect.isgeneratorfunction, 'generator_function_example') if hasattr(types, 'GetSetDescriptorType'): self.istest(inspect.isgetsetdescriptor, 'type(tb.tb_frame).f_locals') else: self.assertFalse(inspect.isgetsetdescriptor(type(tb.tb_frame).f_locals)) if hasattr(types, 'MemberDescriptorType'): self.istest(inspect.ismemberdescriptor, 'datetime.timedelta.days') else: self.assertFalse(inspect.ismemberdescriptor(datetime.timedelta.days))
Example #15
Source File: utils.py From imap_tools with Apache License 2.0 | 6 votes |
def cleaned_uid_set(uid_set: str or [str] or iter) -> str: """ Prepare set of uid for use in commands: delete/copy/move/seen uid_set may be: str, that is comma separated uids Iterable, that contains str uids Generator with "fetch" name, implicitly gets all non-empty uids """ if type(uid_set) is str: uid_set = uid_set.split(',') if inspect.isgenerator(uid_set) and getattr(uid_set, '__name__', None) == 'fetch': uid_set = tuple(msg.uid for msg in uid_set if msg.uid) try: uid_set_iter = iter(uid_set) except TypeError: raise ValueError('Wrong uid type: "{}"'.format(type(uid_set))) for uid in uid_set_iter: if type(uid) is not str: raise ValueError('uid "{}" is not string'.format(str(uid))) if not uid.strip().isdigit(): raise ValueError('Wrong uid: "{}"'.format(uid)) return ','.join((i.strip() for i in uid_set))
Example #16
Source File: test_inspect.py From oss-ftp with MIT License | 6 votes |
def test_excluding_predicates(self): self.istest(inspect.isbuiltin, 'sys.exit') self.istest(inspect.isbuiltin, '[].append') self.istest(inspect.iscode, 'mod.spam.func_code') self.istest(inspect.isframe, 'tb.tb_frame') self.istest(inspect.isfunction, 'mod.spam') self.istest(inspect.ismethod, 'mod.StupidGit.abuse') self.istest(inspect.ismethod, 'git.argue') self.istest(inspect.ismodule, 'mod') self.istest(inspect.istraceback, 'tb') self.istest(inspect.isdatadescriptor, '__builtin__.file.closed') self.istest(inspect.isdatadescriptor, '__builtin__.file.softspace') self.istest(inspect.isgenerator, '(x for x in xrange(2))') self.istest(inspect.isgeneratorfunction, 'generator_function_example') if hasattr(types, 'GetSetDescriptorType'): self.istest(inspect.isgetsetdescriptor, 'type(tb.tb_frame).f_locals') else: self.assertFalse(inspect.isgetsetdescriptor(type(tb.tb_frame).f_locals)) if hasattr(types, 'MemberDescriptorType'): self.istest(inspect.ismemberdescriptor, 'datetime.timedelta.days') else: self.assertFalse(inspect.ismemberdescriptor(datetime.timedelta.days))
Example #17
Source File: test_inspect.py From ironpython2 with Apache License 2.0 | 6 votes |
def test_excluding_predicates(self): self.istest(inspect.isbuiltin, 'sys.exit') self.istest(inspect.isbuiltin, '[].append') self.istest(inspect.iscode, 'mod.spam.func_code') self.istest(inspect.isframe, 'tb.tb_frame') self.istest(inspect.isfunction, 'mod.spam') self.istest(inspect.ismethod, 'mod.StupidGit.abuse') self.istest(inspect.ismethod, 'git.argue') self.istest(inspect.ismodule, 'mod') self.istest(inspect.istraceback, 'tb') self.istest(inspect.isdatadescriptor, '__builtin__.file.closed') self.istest(inspect.isdatadescriptor, '__builtin__.file.softspace') self.istest(inspect.isgenerator, '(x for x in xrange(2))') self.istest(inspect.isgeneratorfunction, 'generator_function_example') if hasattr(types, 'GetSetDescriptorType'): self.istest(inspect.isgetsetdescriptor, 'type(tb.tb_frame).f_locals') else: self.assertFalse(inspect.isgetsetdescriptor(type(tb.tb_frame).f_locals)) if hasattr(types, 'MemberDescriptorType'): self.istest(inspect.ismemberdescriptor, 'datetime.timedelta.days') else: self.assertFalse(inspect.ismemberdescriptor(datetime.timedelta.days))
Example #18
Source File: test_inspect.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_iscoroutine(self): gen_coro = gen_coroutine_function_example(1) coro = coroutine_function_example(1) self.assertFalse( inspect.iscoroutinefunction(gen_coroutine_function_example)) self.assertFalse(inspect.iscoroutine(gen_coro)) self.assertTrue( inspect.isgeneratorfunction(gen_coroutine_function_example)) self.assertTrue(inspect.isgenerator(gen_coro)) self.assertTrue( inspect.iscoroutinefunction(coroutine_function_example)) self.assertTrue(inspect.iscoroutine(coro)) self.assertFalse( inspect.isgeneratorfunction(coroutine_function_example)) self.assertFalse(inspect.isgenerator(coro)) coro.close(); gen_coro.close() # silence warnings
Example #19
Source File: py3support.py From python-aspectlib with BSD 2-Clause "Simplified" License | 5 votes |
def decorate_advising_generator_py3(advising_function, cutpoint_function, bind): assert isgeneratorfunction(cutpoint_function) def advising_generator_wrapper_py3(*args, **kwargs): if bind: advisor = advising_function(cutpoint_function, *args, **kwargs) else: advisor = advising_function(*args, **kwargs) if not isgenerator(advisor): raise ExpectedGenerator("advising_function %s did not return a generator." % advising_function) try: advice = next(advisor) while True: logdebug('Got advice %r from %s', advice, advising_function) if advice is Proceed or advice is None or isinstance(advice, Proceed): if isinstance(advice, Proceed): args = advice.args kwargs = advice.kwargs gen = cutpoint_function(*args, **kwargs) try: result = yield from gen except BaseException: advice = advisor.throw(*sys.exc_info()) else: try: advice = advisor.send(result) except StopIteration: return result finally: gen.close() elif advice is Return: return elif isinstance(advice, Return): raise StopIteration(advice.value) else: raise UnacceptableAdvice("Unknown advice %s" % advice) finally: advisor.close() return mimic(advising_generator_wrapper_py3, cutpoint_function)
Example #20
Source File: fake.py From python-tools with MIT License | 5 votes |
def is_class_instance(obj): """Like inspect.* methods.""" return not (inspect.isclass(obj) or inspect.ismodule(obj) or inspect.isbuiltin(obj) or inspect.ismethod(obj) or inspect.ismethoddescriptor(obj) or inspect.iscode(obj) or inspect.isgenerator(obj))
Example #21
Source File: wsgi.py From masakari with Apache License 2.0 | 5 votes |
def post_process_extensions(self, extensions, resp_obj, request, action_args): for ext in extensions: response = None if inspect.isgenerator(ext): # If it's a generator, run the second half of # processing try: with ResourceExceptionHandler(): response = ext.send(resp_obj) except StopIteration: # Normal exit of generator continue except Fault as ex: response = ex else: # Regular functions get post-processing... try: with ResourceExceptionHandler(): response = ext(req=request, resp_obj=resp_obj, **action_args) except exception.VersionNotFoundForAPIMethod: # If an attached extension (@wsgi.extends) for the # method has no version match its not an error. We # just don't run the extends code continue except Fault as ex: response = ex # We had a response... if response: return response return None
Example #22
Source File: __init__.py From dagster with Apache License 2.0 | 5 votes |
def generator(obj): if not inspect.isgenerator(obj): raise ParameterCheckError( 'Not a generator (return value of function that yields) Got {obj} instead'.format( obj=obj ) ) return obj
Example #23
Source File: peewee_validates.py From peewee-validates with MIT License | 5 votes |
def isiterable_notstring(value): """ Returns True if the value is iterable but not a string. Otherwise returns False. :param value: Value to check. """ if isinstance(value, str): return False return isinstance(value, Iterable) or isgeneratorfunction(value) or isgenerator(value)
Example #24
Source File: test_wsgi.py From manila with Apache License 2.0 | 5 votes |
def test_pre_process_extensions_generator(self): class Controller(object): def index(self, req, pants=None): return pants controller = Controller() resource = wsgi.Resource(controller) called = [] def extension1(req): called.append('pre1') resp_obj = yield self.assertIsNone(resp_obj) called.append('post1') def extension2(req): called.append('pre2') resp_obj = yield self.assertIsNone(resp_obj) called.append('post2') extensions = [extension1, extension2] response, post = resource.pre_process_extensions(extensions, None, {}) post = list(post) self.assertEqual(['pre1', 'pre2'], called) self.assertIsNone(response) self.assertEqual(2, len(post)) self.assertTrue(inspect.isgenerator(post[0])) self.assertTrue(inspect.isgenerator(post[1])) for gen in post: try: gen.send(None) except StopIteration: continue self.assertEqual(['pre1', 'pre2', 'post2', 'post1'], called)
Example #25
Source File: wsgi.py From manila with Apache License 2.0 | 5 votes |
def post_process_extensions(self, extensions, resp_obj, request, action_args): for ext in extensions: response = None if inspect.isgenerator(ext): # If it's a generator, run the second half of # processing try: with ResourceExceptionHandler(): response = ext.send(resp_obj) except StopIteration: # Normal exit of generator continue except Fault as ex: response = ex else: # Regular functions get post-processing... try: with ResourceExceptionHandler(): response = ext(req=request, resp_obj=resp_obj, **action_args) except exception.VersionNotFoundForAPIMethod: # If an attached extension (@wsgi.extends) for the # method has no version match its not an error. We # just don't run the extends code continue except Fault as ex: response = ex # We had a response... if response: return response return None
Example #26
Source File: test_inspect.py From ironpython3 with Apache License 2.0 | 5 votes |
def test_excluding_predicates(self): global tb self.istest(inspect.isbuiltin, 'sys.exit') self.istest(inspect.isbuiltin, '[].append') self.istest(inspect.iscode, 'mod.spam.__code__') try: 1/0 except: tb = sys.exc_info()[2] self.istest(inspect.isframe, 'tb.tb_frame') self.istest(inspect.istraceback, 'tb') if hasattr(types, 'GetSetDescriptorType'): self.istest(inspect.isgetsetdescriptor, 'type(tb.tb_frame).f_locals') else: self.assertFalse(inspect.isgetsetdescriptor(type(tb.tb_frame).f_locals)) finally: # Clear traceback and all the frames and local variables hanging to it. tb = None self.istest(inspect.isfunction, 'mod.spam') self.istest(inspect.isfunction, 'mod.StupidGit.abuse') self.istest(inspect.ismethod, 'git.argue') self.istest(inspect.ismodule, 'mod') self.istest(inspect.isdatadescriptor, 'collections.defaultdict.default_factory') self.istest(inspect.isgenerator, '(x for x in range(2))') self.istest(inspect.isgeneratorfunction, 'generator_function_example') if hasattr(types, 'MemberDescriptorType'): self.istest(inspect.ismemberdescriptor, 'datetime.timedelta.days') else: self.assertFalse(inspect.ismemberdescriptor(datetime.timedelta.days))
Example #27
Source File: coroutines.py From ironpython3 with Apache License 2.0 | 5 votes |
def __init__(self, gen, func=None): assert inspect.isgenerator(gen) or inspect.iscoroutine(gen), gen self.gen = gen self.func = func # Used to unwrap @coroutine decorator self._source_traceback = traceback.extract_stack(sys._getframe(1)) self.__name__ = getattr(gen, '__name__', None) self.__qualname__ = getattr(gen, '__qualname__', None)
Example #28
Source File: py35support.py From python-aspectlib with BSD 2-Clause "Simplified" License | 5 votes |
def decorate_advising_generator_py35(advising_function, cutpoint_function, bind): assert isgeneratorfunction(cutpoint_function) def advising_generator_wrapper_py35(*args, **kwargs): if bind: advisor = advising_function(cutpoint_function, *args, **kwargs) else: advisor = advising_function(*args, **kwargs) if not isgenerator(advisor): raise ExpectedGenerator("advising_function %s did not return a generator." % advising_function) try: advice = next(advisor) while True: logdebug('Got advice %r from %s', advice, advising_function) if advice is Proceed or advice is None or isinstance(advice, Proceed): if isinstance(advice, Proceed): args = advice.args kwargs = advice.kwargs gen = cutpoint_function(*args, **kwargs) try: result = yield from gen except BaseException: advice = advisor.throw(*sys.exc_info()) else: try: advice = advisor.send(result) except StopIteration: return result finally: gen.close() elif advice is Return: return elif isinstance(advice, Return): return advice.value else: raise UnacceptableAdvice("Unknown advice %s" % advice) finally: advisor.close() return mimic(advising_generator_wrapper_py35, cutpoint_function)
Example #29
Source File: py35support.py From python-aspectlib with BSD 2-Clause "Simplified" License | 5 votes |
def decorate_advising_asyncgenerator_py35(advising_function, cutpoint_function, bind): assert isasyncgenfunction(cutpoint_function) or iscoroutinefunction(cutpoint_function) async def advising_asyncgenerator_wrapper_py35(*args, **kwargs): if bind: advisor = advising_function(cutpoint_function, *args, **kwargs) else: advisor = advising_function(*args, **kwargs) if not isgenerator(advisor): raise ExpectedGenerator("advising_function %s did not return a generator." % advising_function) try: advice = next(advisor) while True: logdebug('Got advice %r from %s', advice, advising_function) if advice is Proceed or advice is None or isinstance(advice, Proceed): if isinstance(advice, Proceed): args = advice.args kwargs = advice.kwargs gen = cutpoint_function(*args, **kwargs) try: result = await gen except BaseException: advice = advisor.throw(*sys.exc_info()) else: try: advice = advisor.send(result) except StopIteration: return result finally: gen.close() elif advice is Return: return elif isinstance(advice, Return): return advice.value else: raise UnacceptableAdvice("Unknown advice %s" % advice) finally: advisor.close() return mimic(advising_asyncgenerator_wrapper_py35, cutpoint_function)
Example #30
Source File: coroutines.py From Imogen with MIT License | 5 votes |
def __init__(self, gen, func=None): assert inspect.isgenerator(gen) or inspect.iscoroutine(gen), gen self.gen = gen self.func = func # Used to unwrap @coroutine decorator self._source_traceback = format_helpers.extract_stack(sys._getframe(1)) self.__name__ = getattr(gen, '__name__', None) self.__qualname__ = getattr(gen, '__qualname__', None)