ddns 4.1.1b1__tar.gz → 4.1.2b1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ddns might be problematic. Click here for more details.

Files changed (92) hide show
  1. {ddns-4.1.1b1 → ddns-4.1.2b1}/PKG-INFO +1 -1
  2. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/__init__.py +2 -2
  3. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/config/config.py +1 -0
  4. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns.egg-info/PKG-INFO +1 -1
  5. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_config_extra.py +21 -0
  6. {ddns-4.1.1b1 → ddns-4.1.2b1}/LICENSE +0 -0
  7. {ddns-4.1.1b1 → ddns-4.1.2b1}/README.md +0 -0
  8. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/__builtins__.pyi +0 -0
  9. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/__main__.py +0 -0
  10. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/cache.py +0 -0
  11. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/config/__init__.py +0 -0
  12. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/config/cli.py +0 -0
  13. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/config/env.py +0 -0
  14. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/config/file.py +0 -0
  15. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/ip.py +0 -0
  16. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/__init__.py +0 -0
  17. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/_base.py +0 -0
  18. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/_signature.py +0 -0
  19. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/alidns.py +0 -0
  20. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/aliesa.py +0 -0
  21. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/callback.py +0 -0
  22. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/cloudflare.py +0 -0
  23. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/debug.py +0 -0
  24. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/dnscom.py +0 -0
  25. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/dnspod.py +0 -0
  26. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/dnspod_com.py +0 -0
  27. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/edgeone.py +0 -0
  28. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/he.py +0 -0
  29. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/huaweidns.py +0 -0
  30. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/namesilo.py +0 -0
  31. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/noip.py +0 -0
  32. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/provider/tencentcloud.py +0 -0
  33. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/scheduler/__init__.py +0 -0
  34. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/scheduler/_base.py +0 -0
  35. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/scheduler/cron.py +0 -0
  36. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/scheduler/launchd.py +0 -0
  37. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/scheduler/schtasks.py +0 -0
  38. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/scheduler/systemd.py +0 -0
  39. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/util/__init__.py +0 -0
  40. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/util/comment.py +0 -0
  41. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/util/fileio.py +0 -0
  42. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/util/http.py +0 -0
  43. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns/util/try_run.py +0 -0
  44. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns.egg-info/SOURCES.txt +0 -0
  45. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns.egg-info/dependency_links.txt +0 -0
  46. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns.egg-info/entry_points.txt +0 -0
  47. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns.egg-info/requires.txt +0 -0
  48. {ddns-4.1.1b1 → ddns-4.1.2b1}/ddns.egg-info/top_level.txt +0 -0
  49. {ddns-4.1.1b1 → ddns-4.1.2b1}/pyproject.toml +0 -0
  50. {ddns-4.1.1b1 → ddns-4.1.2b1}/setup.cfg +0 -0
  51. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_cache.py +0 -0
  52. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_config_cli.py +0 -0
  53. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_config_cli_extra.py +0 -0
  54. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_config_cli_task.py +0 -0
  55. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_config_config.py +0 -0
  56. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_config_env.py +0 -0
  57. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_config_env_extra.py +0 -0
  58. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_config_file.py +0 -0
  59. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_config_file_remote.py +0 -0
  60. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_config_init.py +0 -0
  61. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_config_init_multi.py +0 -0
  62. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_config_schema_v4_1.py +0 -0
  63. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_ip.py +0 -0
  64. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider__signature.py +0 -0
  65. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_alidns.py +0 -0
  66. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_aliesa.py +0 -0
  67. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_base.py +0 -0
  68. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_base_simple.py +0 -0
  69. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_callback.py +0 -0
  70. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_cloudflare.py +0 -0
  71. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_debug.py +0 -0
  72. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_dnscom.py +0 -0
  73. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_dnspod.py +0 -0
  74. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_dnspod_com.py +0 -0
  75. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_edgeone.py +0 -0
  76. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_he.py +0 -0
  77. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_huaweidns.py +0 -0
  78. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_namesilo.py +0 -0
  79. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_noip.py +0 -0
  80. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_proxy_list.py +0 -0
  81. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_provider_tencentcloud.py +0 -0
  82. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_scheduler_base.py +0 -0
  83. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_scheduler_cron.py +0 -0
  84. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_scheduler_init.py +0 -0
  85. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_scheduler_launchd.py +0 -0
  86. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_scheduler_schtasks.py +0 -0
  87. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_scheduler_systemd.py +0 -0
  88. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_util_comment.py +0 -0
  89. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_util_fileio.py +0 -0
  90. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_util_http.py +0 -0
  91. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_util_http_proxy_list.py +0 -0
  92. {ddns-4.1.1b1 → ddns-4.1.2b1}/tests/test_util_http_retry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ddns
3
- Version: 4.1.1b1
3
+ Version: 4.1.2b1
4
4
  Summary: Dynamic DNS client for multiple providers, supporting IPv4 and IPv6.
5
5
  Author-email: NewFuture <python@newfuture.cc>
6
6
  License-Expression: MIT
@@ -6,7 +6,7 @@ ddns Package
6
6
  __description__ = "automatically update DNS records to my IP [域名自动指向本机IP]"
7
7
 
8
8
  # 编译时,版本会被替换
9
- __version__ = "4.1.1b1"
9
+ __version__ = "4.1.2b1"
10
10
 
11
11
  # 时间也会被替换掉
12
- build_date = "2025-10-22T01:08:44Z"
12
+ build_date = "2025-11-05T07:25:35Z"
@@ -97,6 +97,7 @@ class Config(object):
97
97
  "debug",
98
98
  "config",
99
99
  "command",
100
+ "$schema", # JSON schema reference, should not be sent to API
100
101
  }
101
102
 
102
103
  # dns related configurations
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ddns
3
- Version: 4.1.1b1
3
+ Version: 4.1.2b1
4
4
  Summary: Dynamic DNS client for multiple providers, supporting IPv4 and IPv6.
5
5
  Author-email: NewFuture <python@newfuture.cc>
6
6
  License-Expression: MIT
@@ -163,6 +163,27 @@ class TestConfigExtra(unittest.TestCase):
163
163
  # Only custom field should be in extra
164
164
  self.assertEqual(config.extra.get("custom"), "custom_value")
165
165
 
166
+ def test_extra_does_not_include_schema_field(self):
167
+ """Test that $schema field from JSON config is not collected as extra"""
168
+ json_config = {
169
+ "$schema": "https://ddns.newfuture.cc/schema/v4.1.json",
170
+ "dns": "tencentcloud",
171
+ "id": "test_id",
172
+ "token": "test_token",
173
+ "ipv4": ["example.com"],
174
+ "extra": {
175
+ "proxied": True,
176
+ },
177
+ }
178
+ config = Config(json_config=json_config)
179
+ # $schema should not be in extra
180
+ self.assertNotIn("$schema", config.extra)
181
+ # Other extra fields should be collected
182
+ self.assertTrue(config.extra.get("proxied"))
183
+ # Known fields should be accessible
184
+ self.assertEqual(config.dns, "tencentcloud")
185
+ self.assertEqual(config.id, "test_id")
186
+
166
187
  def test_extra_with_json_extra_object_and_undefined_fields(self):
167
188
  """Test JSON config with both extra object and undefined fields"""
168
189
  json_config = {
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes