Our messages crossed, my previous one contains the answer to your question:

https://github.com/Pylons/pastedeploy/blame/main/src/paste/deploy/util.py#L36

Le mar. 14 nov. 2023 à 21:13, Oberdan Santos <[email protected]> a écrit :
>
> 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 <[email protected]> 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 [email protected].
>>> >> > 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 [email protected].
>>> > 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 [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/pylons-discuss/f175279d-69fc-46fb-81dd-55b88aa93974n%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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pylons-discuss/CAB7cU6watDy5-huP8kH%3DmJxJgV8LRJcrUdKDTUig73ELuWA%2B9w%40mail.gmail.com.

Reply via email to