Mypy एक त्रुटि देता है यदि सेट को add() का उपयोग करके नए tuple के साथ अपडेट किया जाता है

code.py

adgroups_by_campaign_id: Dict[CampaignId, Set[str]] = defaultdict(set)
for customer_id, campaign_ids in campaigns_per_customer_id.items():
    adgroups = get_adgroups_in_campaings(ads_client, customer_id, campaign_ids, adgroup_names)
    for adgroup in adgroups:
        adgroups_by_campaign_id[CampaignId(adgroup['campaign_id'])].add(
            (adgroup['adgroup_name'], adgroup['adgroup_resource_name']) -> RETURN ERROR
        )

त्रुटि का मुख्य भाग

 error: Argument 1 to "add" of "set" has incompatible type "Tuple[str, str]"; expected "str"

जहाँ तक मुझे पता है, सेट में नए टुपलेट जोड़ना आम बात है।

ऐड () विधि सेट में एक तत्व के रूप में एक टपल ऑब्जेक्ट जोड़ सकती है

Mypy को ऐसा क्यों लगता है कि इसकी अनुमति नहीं है?

0
Jekson 8 नवम्बर 2021, 19:44
1
क्योंकि आपने mypy को पहले बताया था कि यह एक Set[str] है
 – 
rdas
8 नवम्बर 2021, 19:48
1
त्रुटि संदेश स्पष्ट है, आपने इसे Set[str] के रूप में एनोटेट किया है, लेकिन आप इस सेट में एक Tuple[str, str] जोड़ने का प्रयास कर रहे हैं, लेकिन इसके लिए str....
 – 
juanpa.arrivillaga
8 नवम्बर 2021, 19:57

1 उत्तर

सबसे बढ़िया उत्तर

adgroups_by_campaign_id को Dict[CampaignId, Set[str]] के रूप में चिह्नित किया गया है, जिसका अर्थ है कि mypy सभी मानों को सेट करने की अपेक्षा करेगा जिसमें स्ट्रिंग्स हों, स्ट्रिंग्स के टुपल्स नहीं।

Set[str] को Set[Tuple[str, str]] में बदला जाना चाहिए।

0
DeepSpace 8 नवम्बर 2021, 19:48
मेरी असावधानी। शुक्रिया!
 – 
Jekson
8 नवम्बर 2021, 19:55