| Deutsch English Français Italiano |
|
<mailman.90.1737217058.2912.python-list@python.org> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!fu-berlin.de!uni-berlin.de!not-for-mail
From: Ian Pilcher <arequipeno@gmail.com>
Newsgroups: comp.lang.python
Subject: [SOLVED] Struggling to understand Callable type hinting
Date: Sat, 18 Jan 2025 10:17:31 -0600
Lines: 35
Message-ID: <mailman.90.1737217058.2912.python-list@python.org>
References: <f01d0808-16fb-4b91-a518-a84d6973fee1@gmail.com>
<113709c0-0530-47c7-ad8d-8294dd00924f@DancesWithMice.info>
<3da391eb-b245-429b-bcc1-3c88ef557241@gmail.com>
<11ea559c-26da-4676-8bfc-1e58660d45cd@gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: news.uni-berlin.de jbnJYezT60ClfET1VeSRdwqlkaWO1O8eBnnyrKFenuMg==
Cancel-Lock: sha1:UIhbEdrGuhy0kKG5DrY1s3CKRj0= sha256:HH2Z9uTeXFEU0GawWJEMzFE0pPDAsvP9hZZANbj0Z70=
Return-Path: <arequipeno@gmail.com>
X-Original-To: python-list@python.org
Delivered-To: python-list@mail.python.org
Authentication-Results: mail.python.org; dkim=pass
reason="2048-bit key; unprotected key"
header.d=gmail.com header.i=@gmail.com header.b=ePRg8u7E;
dkim-adsp=pass; dkim-atps=neutral
X-Spam-Status: OK 0.034
X-Spam-Evidence: '*H*': 0.93; '*S*': 0.00; 'skip:@ 10': 0.03; 'def':
0.04; 'parameter': 0.04; 'arguments': 0.16; 'instance': 0.16;
'intuitive': 0.16; 'received:mail-oi1-x22a.google.com': 0.16;
'subject:hinting': 0.16; 'threading': 0.16; 'wrote:': 0.16;
'message-id:@gmail.com': 0.18; 'to:addr:python-list': 0.20;
'subject:] ': 0.20; 'unable': 0.21; 'to:name:python-
list@python.org': 0.24; '(and': 0.25; 'cc:2**0': 0.25;
'interface': 0.26; "isn't": 0.27; 'fact': 0.28; 'think': 0.29;
'header:User-Agent:1': 0.30; 'seem': 0.31; 'takes': 0.31; 'am,':
0.31; "doesn't": 0.32; 'disabled': 0.32; "wouldn't": 0.32; 'but':
0.32; "i'm": 0.33; 'there': 0.33; 'header:In-Reply-To:1': 0.34;
'received:google.com': 0.34; 'subject:[': 0.34;
'from:addr:gmail.com': 0.34; 'really': 0.36; '...': 0.37; 'way':
0.38; 'read': 0.38; 'list': 0.39; 'use': 0.39; 'two': 0.39;
'this,': 0.39; 'try': 0.40; 'method': 0.61; 'skip:b 10': 0.63;
'delivery': 0.64; 'your': 0.64; 'skip:t 20': 0.65; 'types': 0.67;
'skip:t 30': 0.67; 'respond': 0.68; 'supposed': 0.76; 'out.':
0.80; 'skip:= 70': 0.84; 'subject:type': 0.93
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1737217056; x=1737821856; darn=python.org;
h=content-transfer-encoding:in-reply-to:content-language:references
:cc:to:from:subject:user-agent:mime-version:date:message-id:from:to
:cc:subject:date:message-id:reply-to;
bh=hkaKBrxdtnC5nLVrGw3oas86Oz1EVuYAJeItB1wKkSs=;
b=ePRg8u7EJodJvxMmFqpPGV+0c8fJJ7QU8e6O3SkGBMwoP6ivxkNRXxcwHydPM+20uS
Wcl4FbOuUbRoMCjQ2X8zQht9lH+xV5rAtQUVK3Hy7iAQY7cvK7el1PInTw4MMJuNNpUG
h0H5sfjk0wxp01u5EgnVVrphc6cspg5fpqML8gQxuqAEz3Wyv03FCCPpaXH1CfsJJus9
yOkiIHMbmGlCXj+O9dA4dZ9sBWoKnYOFldP2xRaZzFU5OUSw0pZUrIUyvWNdyrTJPIPA
r/esPIoMq+dGGWeWKq2W4pk5lJ0FGidjivXGj1g8kW88PEnp/o4y7M5cpAM4Z7aClhmV
9I9A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1737217056; x=1737821856;
h=content-transfer-encoding:in-reply-to:content-language:references
:cc:to:from:subject:user-agent:mime-version:date:message-id
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=hkaKBrxdtnC5nLVrGw3oas86Oz1EVuYAJeItB1wKkSs=;
b=W7xIb0AHs08uHJ0vKaLJJT2gcCt3Cvzmxen8VWhZLiZgtv3fAeAvs1cZnGbS0TXpkG
KPvLR9U3uBO6KzFHtgrOMEfUhS1+lozf20i7sGvZnctuwfmK0x/lrdnMHigRWbWjSTR2
DUDgADc+Gg9gwPQCRNLUui3tggBbqPoS4r7brwIwpjYSHk2XPX2XSmc/hCASSy/suss1
yK6NVrOueR+2r+cyRhI2iVNngG+/VOC/BHhA5aGxFQa00X/3OKUWRj0E58lgPxetE0iP
uLPS/r/7yOfHLL7exHVYRTqdEVeXcNz+/xgvmNyBqmjjAtDPCoRpwtL+e5wIiY/yNllf
yXiA==
X-Gm-Message-State: AOJu0YzK30iqPNWK0ryzAMrIzbHNGnzjRboFZ1GbEnAW0VlkbnAYvcwF
atovpr55FJWrGIf+I1vfKlYL80gxpCx2HgyrV6WCw8cwbTNQhE1VjRkXKw==
X-Gm-Gg: ASbGnctGCheGiuJ4ROsfaSSrs0Sm4ECIXP9qEw43DUZOhc1ZDdLRXl4XiVFUjLPjxWL
l7q89mhZu/7aafJYotre5jzDYbYOHNQKyXqjtf8VTsKeI0E+g6x9EBmCFW/Alx8YshVdCfDFGN4
UWmKh96RsqLp/ogdxH9uQ5L5DtM7BUUReKtlVjNIEQx6HWb+IJEDOorlb9BIZ+wRBqkBDd3Q8Vr
F6ZlxhmW1lGFmYHyowRomfm4Lr8WatNf8JePSGte7mXMXZ0KlS8ebvCt3n5j8ZwLxZgiF6ReUEc
PhLcJI3mq+t2p769WLqBUrlcivOKyRBGvPAs2PY=
X-Google-Smtp-Source: AGHT+IFckYehh53Xottxt2BX+z4AkphOch797iEaho8D/y/3p5RPo2sPpSHnHEhTbbXKTYzpVF4xCA==
X-Received: by 2002:a05:6808:179d:b0:3eb:7c84:a808 with SMTP id
5614622812f47-3f095a5f4c4mr9334532b6e.5.1737217054328;
Sat, 18 Jan 2025 08:17:34 -0800 (PST)
User-Agent: Mozilla Thunderbird
Content-Language: en-US
In-Reply-To: <3da391eb-b245-429b-bcc1-3c88ef557241@gmail.com>
X-BeenThere: python-list@python.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: General discussion list for the Python programming language
<python-list.python.org>
List-Unsubscribe: <https://mail.python.org/mailman/options/python-list>,
<mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive: <https://mail.python.org/pipermail/python-list/>
List-Post: <mailto:python-list@python.org>
List-Help: <mailto:python-list-request@python.org?subject=help>
List-Subscribe: <https://mail.python.org/mailman/listinfo/python-list>,
<mailto:python-list-request@python.org?subject=subscribe>
X-Mailman-Original-Message-ID: <11ea559c-26da-4676-8bfc-1e58660d45cd@gmail.com>
X-Mailman-Original-References: <f01d0808-16fb-4b91-a518-a84d6973fee1@gmail.com>
<113709c0-0530-47c7-ad8d-8294dd00924f@DancesWithMice.info>
<3da391eb-b245-429b-bcc1-3c88ef557241@gmail.com>
Bytes: 6898
(Note: I have mail delivery disabled for this list and read it through
GMane, so I am unable to respond with correct threading if I'm not cc'ed
directly.)
On 1/18/25 8:52 AM, Ian Pilcher wrote:
> (And even that wouldn't really be correct, if it worked, because it
> doesn't express the fact that the arguments of the two Callables are the
> same. I believe that ParamSpecs are supposed to address this, but there
> doesn't seem to be any way to use a ParamSpec when one or more of the
> parameter types is known.
I think that I figured it out.
__P = typing.ParamSpec('__P')
@staticmethod
def _check_eof(
method: collections.abc.Callable[
typing.Concatenate[BufferScanner, __P], None
]
) -> (
collections.abc.Callable[
typing.Concatenate[BufferScanner, __P], bool
]
):
...
Mypy is happy, and it catches me if I try to use the decorator on some-
thing that isn't a method of BufferScanner (or some other callable that
takes an instance of BufferScanner as its first positional argument).
--
========================================================================
If your user interface is intuitive in retrospect ... it isn't intuitive
========================================================================