Git Product home page Git Product logo

Comments (9)

gvanrossum avatar gvanrossum commented on May 26, 2024

This is one of my least favorite parts of the draft. I haven't had time to
come up with something better, but the dictionary notation is too verbose
to my taste. I'm not sure that your TaggedType proposal is any less verbose
though.

On Thu, Nov 6, 2014 at 4:45 PM, Michael Vitousek [email protected]
wrote:

Currently the proposal suggests a dictionary-based syntax for allowing the
arbitrary annotations currently used in Python 3 to coexist with type
annotations (
https://github.com/ambv/typehinting/blob/master/pep-NNNN.txt#L194):

def notify_by_email(employees: {'type': List[Employee], 'min_size': 1, 'max_size': 100}): ...

This meshes well with existing usage if the existing non-type annotation
is already a dictionary, but if it's some other kind of value it forces
additional refactoring. Maybe instead, typing could provide a TaggedType
or similar class, which cleanly separates type information from other
information that the programmer wants in their annotations:

def notify_by_email(employees: TaggedType(List[Employee], {'min_size': 1, 'max_size': 100}): ...
or
def notify_by_email(employees: TaggedType(List[Employee], 'list of employees to be notified')): ...

The first argument is always a type, and the second argument is any
arbitrary value.

This would also free up dictionaries for possibly representing structural
types/protocols (see #11 #11).


Reply to this email directly or view it on GitHub
#26.

--Guido van Rossum (python.org/~guido)

from typing.

JukkaL avatar JukkaL commented on May 26, 2024

I don't like this much. I think having function or file level granularity would probably be sufficient. Perhaps use a function decorator for escaping out of type annotations (somebody suggested this already). Here is the first thing than came to mind:

from typing import ignore_annotation as mydecorator

@mydecorator
def f(x: ('my', 'own', 'annotation')) -> 'not a type':
    ...

If we have a fallback approach for annotating Python 2 code in a way that makes the types available for introspection, we could use this to have multiple annotations. For example (similar to the proposal by Andrey Vlasovskikh -- https://github.com/JukkaL/typing/issues/12):

from typing import annotations, ignore_annotation

@annotations(x=int, returns=str)
@ignore_annotation
def f(x: 'my annotation') -> 'totally non-standard':
    print(x + 'x')   # type error

This is still not great, IMHO, but I think that it's less bad than the alternatives that have been proposed.

from typing.

ambv avatar ambv commented on May 26, 2024

The decorator idea to turn off the checker is a good one.

from typing.

gvanrossum avatar gvanrossum commented on May 26, 2024

Let's do a decorator in typing.py to silence the static checker. It should
work for classes and functions/methods.

Let's not do a decorator to add annotations (I think the use cases would be
too uncommon).

Proposal for the name: @no_type_check or @skip_type_check.

On Wed, Jan 7, 2015 at 12:11 AM, Łukasz Langa [email protected]
wrote:

The decorator idea to turn off the checker is a good one.


Reply to this email directly or view it on GitHub
#26 (comment).

--Guido van Rossum (python.org/~guido)

from typing.

ambv avatar ambv commented on May 26, 2024

@gvanrossum, agreed with just adding the silencing decorator.

Bike shedding for a second, you decide. Skip underscores maybe?

  1. @classmethod, @staticmethod, @contextmanager, lots of single word ones like @asyncio.coroutine.
  2. Counter examples: @lru_cache, @total_ordering, etc.

from typing.

gvanrossum avatar gvanrossum commented on May 26, 2024

Let's do @no_type_checks. (Or, more verbose, @typing.no_type_checks.)

We may still have a comment too (I'm undecided on that, but comments are not ruled out).

from typing.

ambv avatar ambv commented on May 26, 2024

Fixed in e2e6fc4 (comment named as "type: ignore" for now).

from typing.

JukkaL avatar JukkaL commented on May 26, 2024

Added mypy issue: python/mypy#557

from typing.

gvanrossum avatar gvanrossum commented on May 26, 2024

Update: it should be @no_type_check and @no_type_check_decorator as was chosen for the PEP and in some other discussion (can't find the issue right now).

from typing.

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.