Coder Social home page Coder Social logo

Comments (10)

stefan6419846 avatar stefan6419846 commented on September 27, 2024

This is a typing issue, no "real" bug. Feel free to provide a PR to update the corresponding type hint and regenerate the typing stubs.

from faker.

sshishov avatar sshishov commented on September 27, 2024

@stefan6419846 how I can report typing issues? Because we are havily using faker, and we are requiring strict typing, that's why I have noticed these errors...

If you will give me a way to report typing issues, then I will report there.

from faker.

stefan6419846 avatar stefan6419846 commented on September 27, 2024

It is indeed correct to report this here, but your initial report sounded like an implementation bug and not a type hint issue.

from faker.

parsariyahi avatar parsariyahi commented on September 27, 2024

If we want to fix that, we can add more annotation in code

    def pydecimal(
        self,
        left_digits: Optional[int] = None,
        right_digits: Optional[int] = None,
        positive: bool = False,
        min_value: Optional[Union[float, int, Decimal]] = None,
        max_value: Optional[Union[float, int, Decimal]] = None,
    ) -> Decimal:

but I think a problem is, we can have another types of numbers that are subclass of int or something like this,
how we can handle that in here?

from faker.

sshishov avatar sshishov commented on September 27, 2024

Hi @parsariyahi , any subclass should be okay, I guess. We need to check though...

from faker.

parsariyahi avatar parsariyahi commented on September 27, 2024

After some research, I found something, the built-in numbers module, this module has a class Number which is a abstract base class for all numbers I think.
you can read it here: https://docs.python.org/3/library/numbers.html
as the docs said:

The numbers module (PEP 3141) defines a hierarchy of numeric abstract base classes which progressively define more operations. None of the types defined in this module are intended to be instantiated.

I think it's fit the needs for this annotation

from faker.

fcurella avatar fcurella commented on September 27, 2024

@parsariyahi using numbers.Number seems like the right solution here. Do y ou have time to prepare a Pull Request?

from faker.

parsariyahi avatar parsariyahi commented on September 27, 2024

@fcurella Yes sure, you can asign this issue to me, I will prepare a PR

from faker.

fcurella avatar fcurella commented on September 27, 2024

turns out, Decimal is not part of numbers.Number.

I've tried using Union[Decimal, int, float], but looks like abs() doesn't accept Decimal, so the best I can do is to define a new type BasicNumber = [int, float]

from faker.

jamescooke avatar jamescooke commented on September 27, 2024

@fcurella Could you share a bit more about what you wrote above?

but looks like abs() doesn't accept Decimal,

abs() says:

The argument may be an integer, a floating-point number, or an object implementing __abs__().

And we have:

In [12]: Decimal.__abs__?
Signature:      Decimal.__abs__(self, /)
Call signature: Decimal.__abs__(*args, **kwargs)
Type:           wrapper_descriptor
String form:    <slot wrapper '__abs__' of 'decimal.Decimal' objects>
Docstring:      abs(self)

Plus it's clearly possible to call abs(Decimal(-1)) and get a reasonable result.

So I'm confused why you'd say it's not supported - could you help me understand 🙏🏻

from faker.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.