From 08756e00480c372a48ce10459724b683b8cde679 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Martin=20Mare=C5=A1?= Date: Sat, 22 Nov 2025 18:29:33 +0100 Subject: [PATCH] Use @overload to derive result type of Nsc.add_zone() --- nsconfig/core.py | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/nsconfig/core.py b/nsconfig/core.py index 0c76eb5..1eb12a8 100644 --- a/nsconfig/core.py +++ b/nsconfig/core.py @@ -28,7 +28,7 @@ import json from pathlib import Path import socket import sys -from typing import Optional, Dict, List, Self, DefaultDict, TextIO, Tuple, TYPE_CHECKING +from typing import Optional, Dict, List, Self, DefaultDict, TextIO, Tuple, TYPE_CHECKING, overload from nsconfig.util import flatten_list, parse_address, parse_network, parse_name, parse_duration, parse_rname from nsconfig.util import IPAddress, IPNetwork, IPAddr, NameParseMode @@ -487,6 +487,39 @@ class Nsc: self.daemon = daemon daemon.setup(self) + @overload + def add_zone(self, + name: Optional[str] = None, + *, + reverse_for: str | IPNetwork | None = None, + alias_for: NscZonePrimary, + secondary_to: None = None, + inherit_config: Optional[NscZoneConfig] = None, + **kwargs) -> NscZoneAlias: + pass + + @overload + def add_zone(self, + name: Optional[str] = None, + *, + reverse_for: str | IPNetwork | None = None, + alias_for: None = None, + secondary_to: None = None, + inherit_config: Optional[NscZoneConfig] = None, + **kwargs) -> NscZonePrimary: + pass + + @overload + def add_zone(self, + name: Optional[str] = None, + *, + reverse_for: str | IPNetwork | None = None, + alias_for: None = None, + secondary_to: str | IPAddress, + inherit_config: Optional[NscZoneConfig] = None, + **kwargs) -> NscZoneSecondary: + pass + def add_zone(self, name: Optional[str] = None, *, -- 2.47.3