]> mj.ucw.cz Git - pynsc.git/commitdiff
Use @overload to derive result type of Nsc.add_zone()
authorMartin Mareš <mj@ucw.cz>
Sat, 22 Nov 2025 17:29:33 +0000 (18:29 +0100)
committerMartin Mareš <mj@ucw.cz>
Sat, 22 Nov 2025 17:29:33 +0000 (18:29 +0100)
nsconfig/core.py

index 0c76eb5d3f28fa4f6479b0da0ab1ad4a122d3bad..1eb12a84e1807d5f5520df0bf51aee04d8937d7e 100644 (file)
@@ -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,
                  *,