Checking the literature on some sites, I see that I have two options ( 
inspect.signature() or inspect.getfullargspec() to solve the problem. The 
question is: How to use inspect.signature() or the other option, where to 
change it ? .The following is the function that was throwing error.

import inspect 
import sys

try:
    import importlib.metadata as importlib_metadata  # noqa F401
except ImportError:  # pragma: no cover
    # bw-compat shim for py37
    import importlib_metadata  # noqa F401


def fix_type_error(exc_info, callable, varargs, kwargs):
    """
    Given an exception, this will test if the exception was due to a
    signature error, and annotate the error with better information if
    so.

    Usage::

      try:
          val = callable(*args, **kw)
      except TypeError:
          exc_info = fix_type_error(None, callable, args, kw)
          raise exc_info[0], exc_info[1], exc_info[2]
    """
    if exc_info is None:
        exc_info = sys.exc_info()
    if (
        exc_info[0] != TypeError
        or str(exc_info[1]).find('arguments') == -1
        or getattr(exc_info[1], '_type_error_fixed', False)
    ):
        return exc_info
    exc_info[1]._type_error_fixed = True
    argspec = inspect.formatargspec(*inspect.getargspec(callable))
    args = ', '.join(map(_short_repr, varargs))
    if kwargs and args:
        args += ', '
    if kwargs:
        kwargs = sorted(kwargs.items())
        args += ', '.join(['%s=...' % n for n, v in kwargs])
    gotspec = '(%s)' % args
    msg = f'{exc_info[1]}; got {gotspec}, wanted {argspec}'
    exc_info[1].args = (msg,)
    return exc_info



Desde já agradeço,
]
Oberdan Costa

Em terça-feira, 14 de novembro de 2023 às 16:15:50 UTC-3, Oberdan Santos 
escreveu:

> Thanks again for your attention. I will provide a brief contextualization.
> I have a script based on FASTAPI for predicting the risk of chronic 
> non-communicable diseases to aid clinical decision making in primary health 
> care (backend), for now I will leave it like that. it works perfectly. 
> On the frontend I use streamlit to obtain the results of up to 10 chronic 
> diseases simultaneously. This ended up growing to include other modules 
> (routing and intelligent management). At the moment I'm looking for a 
> robust framework for this application purpose and the pyramid environment 
> has allowed me to move in this direction (I'm based on cookiecutter) for my 
> first experiences. I have a modular division already structured. 
> Now I'm trying to connect to my database structure and I'm encountering 
> this error when I run my application. From the request: I need help to take 
> this step and fix this problem.
>
> Em terça-feira, 14 de novembro de 2023 às 16:00:06 UTC-3, Laurent Daverio 
> escreveu:
>
>> > The application I am requesting support for is based on the Pyramd 
>> Cookiecutter application framework. In this sense, my question is 
>> pertinent. 
>>
>> Oh, I see why you posted here, sorry then. For my defence, you 
>> provided no context, no traceback, nothing indicating you were indeed 
>> referring to Pyramid. You only wrote "When trying to run my code I am 
>> receiving an error", and your code was only standard Python. 
>>
>> > Why does pyramid continue to carry this module in its base application 
>> structures, such as cookiecutter? 
>>
>> Actually, I'm not sure what problem you encountered : 
>>
>> - it could be in the cookiecutter module, which is not related to 
>> Pyramid at all. It's definitely not a "base application structure" of 
>> Pyramid. I don't use "cookiecutter" very often, but I'm pretty sure I 
>> have used it with Python 3.11, and had no problem. 
>>
>> - it could be in the Pyramid scaffold you used, which is indirectly 
>> related to Pyramid. I haven't used the "official" scaffold in a while, 
>> but I fail to see why it would create a base application which 
>> includes the "inspect" module. 
>>
>> - it could be in Pyramid itself. But I would rule out that choice, as 
>> I use Pyramid with Python 3.11 daily, and the problem doesn't exist 
>> for me. 
>>
>> When does your problem happen? When you're trying to use cookiecutter, 
>> or when you try to launch the generated app? 
>>
>> Laurent. 
>>
>> PS: just a clarification in what I wrote previously: standard module 
>> "inspect" is not deprecated at all, only function "formatargspec" is. 
>>
>> > 
>> > Em terça-feira, 14 de novembro de 2023 às 15:30:53 UTC-3, Laurent 
>> Daverio escreveu: 
>> >> 
>> >> Hello, 
>> >> 
>> >> a couple of remarks before replying to your question : 
>> >> 
>> >> 1/ This list is dedicated to Pylons and Pyramid, so a general question 
>> >> about the Python standard library is off-topic 
>> >> 2/ You could have googled "inspect formatargspec" and found answers 
>> >> 3/ You could have read the documentation of the standard library 
>> >> 
>> >> The documentation of "inspect" for Python 3.10 
>> >> (https://docs.python.org/3.10/library/inspect.html) states : 
>> >> 
>> >> "Deprecated since version 3.5: Use signature() and Signature Object, 
>> >> which provide a better introspecting API for callables." 
>> >> 
>> >> And indeed, if you switch to the Python 3.11 / 3.12 versions of the 
>> >> docs, you'll find that the function has been removed. You certainly 
>> >> had a deprecation warning in Python 3.9/3.10, which you ignored 
>> >> 
>> >> My $0.02, 
>> >> 
>> >> Laurent. 
>> >> 
>> >> 
>> >> Le mar. 14 nov. 2023 à 19:17, Oberdan Santos <sc.ob...@gmail.com> a 
>> écrit : 
>> >> > 
>> >> > Hello!! 
>> >> > When trying to run my code I am receiving an error. 
>> >> > 
>> >> > import inspect 
>> >> > import sys 
>> >> > 
>> >> > try: 
>> >> > import importlib.metadata as importlib_metadata # noqa F401 
>> >> > except ImportError: # pragma: no cover 
>> >> > # bw-compat shim for py37 
>> >> > import importlib_metadata # noqa F401 
>> >> > 
>> >> > 
>> >> > def fix_type_error(exc_info, callable, varargs, kwargs): 
>> >> > """ 
>> >> > Given an exception, this will test if the exception was due to a 
>> >> > signature error, and annotate the error with better information if 
>> >> > so. 
>> >> > 
>> >> > Usage:: 
>> >> > 
>> >> > try: 
>> >> > val = callable(*args, **kw) 
>> >> > except TypeError: 
>> >> > exc_info = fix_type_error(None, callable, args, kw) 
>> >> > raise exc_info[0], exc_info[1], exc_info[2] 
>> >> > """ 
>> >> > if exc_info is None: 
>> >> > exc_info = sys.exc_info() 
>> >> > if ( 
>> >> > exc_info[0] != TypeError 
>> >> > or str(exc_info[1]).find('arguments') == -1 
>> >> > or getattr(exc_info[1], '_type_error_fixed', False) 
>> >> > ): 
>> >> > return exc_info 
>> >> > exc_info[1]._type_error_fixed = True 
>> >> > argspec = inspect.formatargspec(*inspect.getargspec(callable)) 
>> >> > args = ', '.join(map(_short_repr, varargs)) 
>> >> > if kwargs and args: 
>> >> > args += ', ' 
>> >> > if kwargs: 
>> >> > kwargs = sorted(kwargs.items()) 
>> >> > args += ', '.join(['%s=...' % n for n, v in kwargs]) 
>> >> > gotspec = '(%s)' % args 
>> >> > msg = f'{exc_info[1]}; got {gotspec}, wanted {argspec}' 
>> >> > exc_info[1].args = (msg,) 
>> >> > return exc_info 
>> >> > 
>> >> > 
>> >> > 
>> >> > ERRO: 
>> >> > AttributeError: module 'inspect' has no attribute 'formatargspec'. 
>> >> > Did you mean: 'formatargvalues'? 
>> >> > 
>> >> > 
>> >> > I've tried some changes to the code line, but to no avail. 
>> >> > argspec = inspect.formatargspec(*inspect.getargspec(callable)) 
>> >> > Every help is welcome 
>> >> > 
>> >> > 
>> >> > 
>> >> > -- 
>> >> > You received this message because you are subscribed to the Google 
>> Groups "pylons-discuss" group. 
>> >> > To unsubscribe from this group and stop receiving emails from it, 
>> send an email to pylons-discus...@googlegroups.com. 
>> >> > To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/pylons-discuss/cab4b239-75df-44ba-9d39-4fea371e2b6dn%40googlegroups.com.
>>  
>>
>> > 
>> > -- 
>> > You received this message because you are subscribed to the Google 
>> Groups "pylons-discuss" group. 
>> > To unsubscribe from this group and stop receiving emails from it, send 
>> an email to pylons-discus...@googlegroups.com. 
>> > To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/pylons-discuss/82cb0cf3-0b00-4e6c-b788-3c71905f196an%40googlegroups.com.
>>  
>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to pylons-discuss+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pylons-discuss/f175279d-69fc-46fb-81dd-55b88aa93974n%40googlegroups.com.

Reply via email to