Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-cloudflare for 
openSUSE:Factory checked in at 2023-07-12 17:27:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-cloudflare (Old)
 and      /work/SRC/openSUSE:Factory/.python-cloudflare.new.8922 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-cloudflare"

Wed Jul 12 17:27:23 2023 rev:10 rq:1098206 version:2.11.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-cloudflare/python-cloudflare.changes      
2023-07-01 23:18:30.350423805 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-cloudflare.new.8922/python-cloudflare.changes
    2023-07-12 17:27:49.514699636 +0200
@@ -1,0 +2,9 @@
+Tue Jul 11 14:06:47 UTC 2023 - Dirk Müller <dmuel...@suse.com>
+
+- update to 2.11.6:
+  * handle multipart/form-data correctly for more than one file and with 
params/data
+  * keywords not handled correctly at command level
+  * added after openapi review
+  * added deprecated processing, now shows version
+
+-------------------------------------------------------------------

Old:
----
  cloudflare-2.11.1.tar.gz

New:
----
  cloudflare-2.11.6.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-cloudflare.spec ++++++
--- /var/tmp/diff_new_pack.SBh9Rr/_old  2023-07-12 17:27:50.122703845 +0200
+++ /var/tmp/diff_new_pack.SBh9Rr/_new  2023-07-12 17:27:50.126703872 +0200
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-cloudflare
-Version:        2.11.1
+Version:        2.11.6
 Release:        0
 Summary:        Python wrapper for the Cloudflare v4 API
 License:        MIT

++++++ cloudflare-2.11.1.tar.gz -> cloudflare-2.11.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cloudflare-2.11.1/CloudFlare/__init__.py 
new/cloudflare-2.11.6/CloudFlare/__init__.py
--- old/cloudflare-2.11.1/CloudFlare/__init__.py        2022-11-24 
19:52:10.000000000 +0100
+++ new/cloudflare-2.11.6/CloudFlare/__init__.py        2023-05-21 
19:54:08.000000000 +0200
@@ -1,7 +1,7 @@
 """ Cloudflare v4 API"""
 from __future__ import absolute_import
 
-__version__ = '2.11.1'
+__version__ = '2.11.6'
 
 from .cloudflare import CloudFlare
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cloudflare-2.11.1/CloudFlare/api_decode_from_openapi.py 
new/cloudflare-2.11.6/CloudFlare/api_decode_from_openapi.py
--- old/cloudflare-2.11.1/CloudFlare/api_decode_from_openapi.py 2022-11-19 
23:13:24.000000000 +0100
+++ new/cloudflare-2.11.6/CloudFlare/api_decode_from_openapi.py 2022-11-26 
23:35:22.000000000 +0100
@@ -9,7 +9,7 @@
 
 match_identifier = re.compile('\{[A-Za-z0-9_]*\}')
 
-def do_path(cmd, info):
+def do_path(cmd, values):
     """ do_path() """
 
     cmds = []
@@ -23,14 +23,18 @@
     if cmd[-4:] == '/:id':
         cmd = cmd[:-4]
 
-    for action in info:
-        action = action.upper()
-        if action == '' or action not in API_TYPES:
+    for action in values:
+        if action == '' or action.upper() not in API_TYPES:
             continue
-        deprecated = False
-        deprecated_date = ''
-        deprecated_already = False
-        v = {'action': action, 'cmd': cmd, 'deprecated': deprecated, 
'deprecated_date': deprecated_date, 'deprecated_already': deprecated_already}
+        if 'deprecated' in values[action] and values[action]['deprecated']:
+            deprecated = True
+            deprecated_date = datetime.datetime.now().strftime('%Y-%m-%d')
+            deprecated_already = True
+        else:
+            deprecated = False
+            deprecated_date = ''
+            deprecated_already = False
+        v = {'action': action.upper(), 'cmd': cmd, 'deprecated': deprecated, 
'deprecated_date': deprecated_date, 'deprecated_already': deprecated_already}
         cmds.append(v)
     return cmds
 
@@ -53,6 +57,8 @@
         sys.stderr.write("OpenAPI json format structure: %s\n" % (e))
         return None
 
+    sys.stderr.write("OpenAPI %s json file - version: %s\n" % (openapi, 
info['version']))
+
     all_cmds = []
     for path in paths:
         if path[0] != '/':
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cloudflare-2.11.1/CloudFlare/api_v4.py 
new/cloudflare-2.11.6/CloudFlare/api_v4.py
--- old/cloudflare-2.11.1/CloudFlare/api_v4.py  2022-11-24 20:02:27.000000000 
+0100
+++ new/cloudflare-2.11.6/CloudFlare/api_v4.py  2023-05-21 19:52:43.000000000 
+0200
@@ -231,7 +231,7 @@
     self.add('VOID', 'zones', 'logpush/datasets')
     self.add('AUTH', 'zones', 'logpush/datasets', 'fields')
     self.add('AUTH', 'zones', 'logpush/datasets', 'jobs')
-    self.add('VOID', 'zones', 'logpush/edge')
+    self.add('AUTH', 'zones', 'logpush/edge')
     self.add('AUTH', 'zones', 'logpush/edge/jobs')
     self.add('AUTH', 'zones', 'logpush/jobs')
     self.add('AUTH', 'zones', 'logpush/ownership')
@@ -383,11 +383,13 @@
     self.add('AUTH', 'accounts', 'cfd_tunnel')
     self.add('AUTH', 'accounts', 'cfd_tunnel', 'configurations')
     self.add('AUTH', 'accounts', 'cfd_tunnel', 'connections')
+    self.add('AUTH', 'accounts', 'cfd_tunnel', 'management')
     self.add('AUTH', 'accounts', 'cfd_tunnel', 'token')
     self.add('AUTH', 'accounts', 'custom_pages')
     self.add('VOID', 'accounts', 'dlp')
     self.add('VOID', 'accounts', 'dlp/patterns')
     self.add('AUTH', 'accounts', 'dlp/patterns/validate')
+    self.add('AUTH', 'accounts', 'dlp/payload_log')
     self.add('AUTH', 'accounts', 'dlp/profiles')
     self.add('AUTH', 'accounts', 'dlp/profiles/custom')
     self.add('AUTH', 'accounts', 'dlp/profiles/predefined')
@@ -433,8 +435,12 @@
     self.add('VOID', 'accounts', 'virtual_dns', 'dns_analytics')
     self.add('AUTH', 'accounts', 'virtual_dns', 'dns_analytics/report')
     self.add('AUTH', 'accounts', 'virtual_dns', 'dns_analytics/report/bytime')
+
     self.add('VOID', 'accounts', 'workers')
     self.add('AUTH', 'accounts', 'workers/account-settings')
+    self.add('VOID', 'accounts', 'workers/deployments')
+    self.add('AUTH', 'accounts', 'workers/deployments/by-script')
+    self.add('AUTH', 'accounts', 'workers/deployments/by-script', 'detail')
     self.add('VOID', 'accounts', 'workers/dispatch')
     self.add('AUTH', 'accounts', 'workers/dispatch/namespaces')
     self.add('AUTH', 'accounts', 'workers/dispatch/namespaces', 'scripts')
@@ -464,7 +470,9 @@
     self.add('AUTH', 'accounts', 'addressing/prefixes')
     self.add('VOID', 'accounts', 'addressing/prefixes', 'bgp')
     self.add('AUTH', 'accounts', 'addressing/prefixes', 'bgp/status')
+    self.add('AUTH', 'accounts', 'addressing/prefixes', 'bindings')
     self.add('AUTH', 'accounts', 'addressing/prefixes', 'delegations')
+    self.add('AUTH', 'accounts', 'addressing/services')
 
 def accounts_audit_logs(self):
     """ accounts audit_logs """
@@ -549,6 +557,7 @@
     self.add('AUTH', 'zones', 'access/apps', 'revoke_tokens')
     self.add('AUTH', 'zones', 'access/bookmarks')
     self.add('AUTH', 'zones', 'access/certificates')
+    self.add('AUTH', 'zones', 'access/certificates/settings')
 #   self.add('AUTH', 'zones', 'access/apps/ca')
     self.add('AUTH', 'zones', 'access/apps', 'ca')
     self.add('AUTH', 'zones', 'access/apps', 'user_policy_checks')
@@ -579,6 +588,7 @@
     self.add('AUTH', 'accounts', 'access/apps', 'revoke_tokens')
     self.add('AUTH', 'accounts', 'access/apps', 'user_policy_checks')
     self.add('AUTH', 'accounts', 'access/certificates')
+    self.add('AUTH', 'accounts', 'access/certificates/settings')
     self.add('AUTH', 'accounts', 'access/keys')
     self.add('AUTH', 'accounts', 'access/keys/rotate')
     self.add('VOID', 'accounts', 'access/logs')
@@ -602,6 +612,7 @@
     self.add('AUTH', 'zones', 'waiting_rooms', 'rules')
     self.add('AUTH', 'zones', 'waiting_rooms', 'status')
     self.add('AUTH', 'zones', 'waiting_rooms/preview')
+    self.add('AUTH', 'zones', 'waiting_rooms/settings')
 
 def accounts_extras(self):
     """ extras """
@@ -622,6 +633,8 @@
 
     self.add('AUTH', 'accounts', 'devices')
     self.add('AUTH', 'accounts', 'devices', 'override_codes')
+    self.add('AUTH', 'accounts', 'devices/dex_tests')
+    self.add('AUTH', 'accounts', 'devices/networks')
     self.add('AUTH', 'accounts', 'devices/policies')
     self.add('AUTH', 'accounts', 'devices/policy')
     self.add('AUTH', 'accounts', 'devices/policy', 'exclude')
@@ -636,6 +649,7 @@
     self.add('AUTH', 'accounts', 'devices/settings')
     self.add('AUTH', 'accounts', 'devices/unrevoke')
 
+
     self.add('AUTH', 'accounts', 'dns_firewall')
     self.add('VOID', 'accounts', 'dns_firewall', 'dns_analytics')
     self.add('AUTH', 'accounts', 'dns_firewall', 'dns_analytics/report')
@@ -710,8 +724,11 @@
     self.add('VOID', 'zones', 'cache')
     self.add('AUTH', 'zones', 'cache/variants')
     self.add('AUTH', 'zones', 'cache/cache_reserve')
+    self.add('AUTH', 'zones', 'cache/regional_tiered_cache')
+    self.add('AUTH', 'zones', 'cache/tiered_cache_smart_topology_enable')
     self.add('AUTH', 'zones', 'managed_headers')
     self.add('AUTH', 'zones', 'page_shield')
+    self.add('AUTH', 'zones', 'page_shield/policies')
     self.add('AUTH', 'zones', 'page_shield/scripts')
     self.add('AUTH', 'zones', 'page_shield/connections')
     self.add('AUTH', 'zones', 'rulesets')
@@ -775,11 +792,49 @@
     self.add('VOID', 'radar/annotations')
     self.add('AUTH', 'radar/annotations/outages')
     self.add('AUTH', 'radar/annotations/outages/locations')
+
+    self.add('VOID', 'radar/as112')
+    self.add('VOID', 'radar/as112/summary')
+    self.add('AUTH', 'radar/as112/summary/dnssec')
+    self.add('AUTH', 'radar/as112/summary/edns')
+    self.add('AUTH', 'radar/as112/summary/ip_version')
+    self.add('AUTH', 'radar/as112/summary/protocol')
+    self.add('AUTH', 'radar/as112/summary/query_type')
+    self.add('AUTH', 'radar/as112/summary/response_codes')
+    self.add('AUTH', 'radar/as112/timeseries')
+    self.add('AUTH', 'radar/as112/timeseries/dnssec')
+    self.add('AUTH', 'radar/as112/timeseries/edns')
+    self.add('AUTH', 'radar/as112/timeseries/ip_version')
+    self.add('AUTH', 'radar/as112/timeseries/protocol')
+    self.add('AUTH', 'radar/as112/timeseries/query_type')
+    self.add('AUTH', 'radar/as112/timeseries/response_codes')
+    self.add('VOID', 'radar/as112/top')
+    self.add('AUTH', 'radar/as112/top/locations')
+    self.add('AUTH', 'radar/as112/top/locations/dnssec')
+    self.add('AUTH', 'radar/as112/top/locations/edns')
+    self.add('AUTH', 'radar/as112/top/locations/ip_version')
+
     self.add('VOID', 'radar/attacks')
     self.add('VOID', 'radar/attacks/layer3')
     self.add('AUTH', 'radar/attacks/layer3/summary')
     self.add('AUTH', 'radar/attacks/layer3/timeseries')
     self.add('AUTH', 'radar/attacks/layer3/timeseries_groups')
+    self.add('AUTH', 'radar/attacks/layer3/summary/bitrate')
+    self.add('AUTH', 'radar/attacks/layer3/summary/duration')
+    self.add('AUTH', 'radar/attacks/layer3/summary/ip_version')
+    self.add('AUTH', 'radar/attacks/layer3/summary/protocol')
+    self.add('AUTH', 'radar/attacks/layer3/summary/vector')
+    self.add('AUTH', 'radar/attacks/layer3/timeseries_groups/bitrate')
+    self.add('AUTH', 'radar/attacks/layer3/timeseries_groups/duration')
+    self.add('AUTH', 'radar/attacks/layer3/timeseries_groups/industry')
+    self.add('AUTH', 'radar/attacks/layer3/timeseries_groups/ip_version')
+    self.add('AUTH', 'radar/attacks/layer3/timeseries_groups/protocol')
+    self.add('AUTH', 'radar/attacks/layer3/timeseries_groups/vector')
+    self.add('AUTH', 'radar/attacks/layer3/timeseries_groups/vertical')
+    self.add('VOID', 'radar/attacks/layer3/top')
+    self.add('AUTH', 'radar/attacks/layer3/top/industry')
+    self.add('AUTH', 'radar/attacks/layer3/top/vertical')
+
     self.add('VOID', 'radar/attacks/layer7')
     self.add('AUTH', 'radar/attacks/layer7/summary')
     self.add('AUTH', 'radar/attacks/layer7/timeseries')
@@ -791,20 +846,64 @@
     self.add('VOID', 'radar/attacks/layer7/top/locations')
     self.add('AUTH', 'radar/attacks/layer7/top/locations/origin')
     self.add('AUTH', 'radar/attacks/layer7/top/locations/target')
+
     self.add('VOID', 'radar/bgp')
+    self.add('VOID', 'radar/bgp/leaks')
+    self.add('AUTH', 'radar/bgp/leaks/events')
     self.add('AUTH', 'radar/bgp/timeseries')
     self.add('VOID', 'radar/bgp/top')
     self.add('AUTH', 'radar/bgp/top/ases')
     self.add('AUTH', 'radar/bgp/top/prefixes')
+    self.add('VOID', 'radar/bgp/hijacks')
+    self.add('AUTH', 'radar/bgp/hijacks/events')
+
+    self.add('AUTH', 'radar/datasets')
+    self.add('AUTH', 'radar/datasets/download')
+
     self.add('VOID', 'radar/dns')
-    self.add('AUTH', 'radar/dns/timeseries')
     self.add('VOID', 'radar/dns/top')
     self.add('AUTH', 'radar/dns/top/ases')
     self.add('AUTH', 'radar/dns/top/locations')
+
+    self.add('VOID', 'radar/email')
+    self.add('VOID', 'radar/email/security')
+    self.add('VOID', 'radar/email/security/summary')
+    self.add('AUTH', 'radar/email/security/summary/arc')
+    self.add('AUTH', 'radar/email/security/summary/dkim')
+    self.add('AUTH', 'radar/email/security/summary/dmarc')
+    self.add('AUTH', 'radar/email/security/summary/malicious')
+    self.add('AUTH', 'radar/email/security/summary/spam')
+    self.add('AUTH', 'radar/email/security/summary/spf')
+    self.add('AUTH', 'radar/email/security/summary/threat_category')
+    self.add('VOID', 'radar/email/security/timeseries')
+    self.add('AUTH', 'radar/email/security/timeseries/arc')
+    self.add('AUTH', 'radar/email/security/timeseries/dkim')
+    self.add('AUTH', 'radar/email/security/timeseries/dmarc')
+    self.add('AUTH', 'radar/email/security/timeseries/malicious')
+    self.add('AUTH', 'radar/email/security/timeseries/spam')
+    self.add('AUTH', 'radar/email/security/timeseries/spf')
+    self.add('AUTH', 'radar/email/security/timeseries/threat_category')
+    self.add('VOID', 'radar/email/security/top')
+    self.add('AUTH', 'radar/email/security/top/ases')
+    self.add('AUTH', 'radar/email/security/top/ases/arc')
+    self.add('AUTH', 'radar/email/security/top/ases/dkim')
+    self.add('AUTH', 'radar/email/security/top/ases/dmarc')
+    self.add('AUTH', 'radar/email/security/top/ases/malicious')
+    self.add('AUTH', 'radar/email/security/top/ases/spam')
+    self.add('AUTH', 'radar/email/security/top/ases/spf')
+    self.add('AUTH', 'radar/email/security/top/locations')
+    self.add('AUTH', 'radar/email/security/top/locations/arc')
+    self.add('AUTH', 'radar/email/security/top/locations/dkim')
+    self.add('AUTH', 'radar/email/security/top/locations/dmarc')
+    self.add('AUTH', 'radar/email/security/top/locations/malicious')
+    self.add('AUTH', 'radar/email/security/top/locations/spam')
+    self.add('AUTH', 'radar/email/security/top/locations/spf')
+
     self.add('VOID', 'radar/entities')
     self.add('AUTH', 'radar/entities/asns')
     self.add('AUTH', 'radar/entities/asns/ip')
     self.add('AUTH', 'radar/entities/locations')
+
     self.add('VOID', 'radar/http')
     self.add('VOID', 'radar/http/summary')
     self.add('AUTH', 'radar/http/summary/bot_class')
@@ -812,6 +911,7 @@
     self.add('AUTH', 'radar/http/summary/http_protocol')
     self.add('AUTH', 'radar/http/summary/http_version')
     self.add('AUTH', 'radar/http/summary/ip_version')
+    self.add('AUTH', 'radar/http/summary/os')
     self.add('AUTH', 'radar/http/summary/tls_version')
     self.add('VOID', 'radar/http/timeseries')
     self.add('AUTH', 'radar/http/timeseries/bot_class')
@@ -821,6 +921,7 @@
     self.add('AUTH', 'radar/http/timeseries/http_protocol')
     self.add('AUTH', 'radar/http/timeseries/http_version')
     self.add('AUTH', 'radar/http/timeseries/ip_version')
+    self.add('AUTH', 'radar/http/timeseries/os')
     self.add('AUTH', 'radar/http/timeseries/tls_version')
     self.add('VOID', 'radar/http/top')
     self.add('AUTH', 'radar/http/top/ases')
@@ -829,6 +930,7 @@
     self.add('AUTH', 'radar/http/top/ases/http_protocol')
     self.add('AUTH', 'radar/http/top/ases/http_version')
     self.add('AUTH', 'radar/http/top/ases/ip_version')
+    self.add('AUTH', 'radar/http/top/ases/os')
     self.add('AUTH', 'radar/http/top/ases/tls_version')
     self.add('AUTH', 'radar/http/top/browsers')
     self.add('AUTH', 'radar/http/top/browser_families')
@@ -838,18 +940,24 @@
     self.add('AUTH', 'radar/http/top/locations/http_protocol')
     self.add('AUTH', 'radar/http/top/locations/http_version')
     self.add('AUTH', 'radar/http/top/locations/ip_version')
+    self.add('AUTH', 'radar/http/top/locations/os')
     self.add('AUTH', 'radar/http/top/locations/tls_version')
+
     self.add('VOID', 'radar/netflows')
     self.add('AUTH', 'radar/netflows/timeseries')
     self.add('VOID', 'radar/netflows/top')
     self.add('AUTH', 'radar/netflows/top/ases')
     self.add('AUTH', 'radar/netflows/top/locations')
+
+    self.add('VOID', 'radar/performance')
+    self.add('VOID', 'radar/performance/iqi')
+    self.add('AUTH', 'radar/performance/iqi/summary')
+    self.add('AUTH', 'radar/performance/iqi/timeseries_groups')
+
     self.add('VOID', 'radar/ranking')
+    self.add('AUTH', 'radar/ranking/domain')
     self.add('AUTH', 'radar/ranking/timeseries')
     self.add('AUTH', 'radar/ranking/top')
-    self.add('VOID', 'radar/reports')
-    self.add('AUTH', 'radar/reports/datasets')
-    self.add('AUTH', 'radar/reports/datasets/download')
     self.add('VOID', 'radar/search')
     self.add('AUTH', 'radar/search/global')
     self.add('AUTH', 'radar/specialevents')
@@ -868,9 +976,21 @@
 
     self.add('VOID', 'accounts', 'logpush')
     self.add('AUTH', 'accounts', 'logpush/jobs')
+    self.add('VOID', 'accounts', 'logpush/datasets')
+    self.add('AUTH', 'accounts', 'logpush/datasets', 'fields')
+    self.add('AUTH', 'accounts', 'logpush/datasets', 'jobs')
+    self.add('AUTH', 'accounts', 'logpush/ownership')
+    self.add('AUTH', 'accounts', 'logpush/ownership/validate')
+    self.add('VOID', 'accounts', 'logpush/validate')
+    self.add('VOID', 'accounts', 'logpush/validate/destination')
+    self.add('AUTH', 'accounts', 'logpush/validate/destination/exists')
+    self.add('AUTH', 'accounts', 'logpush/validate/origin')
 
     self.add('VOID', 'accounts', 'logs')
     self.add('AUTH', 'accounts', 'logs/retrieve')
+    self.add('VOID', 'accounts', 'logs/control')
+    self.add('VOID', 'accounts', 'logs/control/cmb')
+    self.add('AUTH', 'accounts', 'logs/control/cmb/config')
 
     self.add('VOID', 'accounts', 'magic/advanced_tcp_protection')
     self.add('VOID', 'accounts', 'magic/advanced_tcp_protection/configs')
@@ -926,3 +1046,16 @@
     self.add('VOID', 'zones', 'rulesets/phases/http_request_firewall_managed')
     self.add('AUTH', 'zones', 
'rulesets/phases/http_request_firewall_managed/entrypoint')
     self.add('AUTH', 'zones', 
'rulesets/phases/http_request_firewall_managed/entrypoint/versions')
+
+    self.add('VOID', 'zones', 'certificate_authorities')
+    self.add('AUTH', 'zones', 'certificate_authorities/hostname_associations')
+    self.add('AUTH', 'zones', 'hold')
+
+    self.add('VOID', 'accounts', 'challenges')
+    self.add('AUTH', 'accounts', 'challenges/widgets')
+    self.add('AUTH', 'accounts', 'challenges/widgets', 'rotate_secret')
+    self.add('AUTH', 'accounts', 'mtls_certificates')
+    self.add('AUTH', 'accounts', 'mtls_certificates', 'associations')
+    self.add('VOID', 'accounts', 'request-tracer')
+    self.add('AUTH', 'accounts', 'request-tracer/trace')
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cloudflare-2.11.1/CloudFlare/cloudflare.py 
new/cloudflare-2.11.6/CloudFlare/cloudflare.py
--- old/cloudflare-2.11.1/CloudFlare/cloudflare.py      2022-11-24 
19:37:49.000000000 +0100
+++ new/cloudflare-2.11.6/CloudFlare/cloudflare.py      2023-05-21 
19:26:25.000000000 +0200
@@ -194,6 +194,14 @@
                     if parts[4]:
                         url += '/' + parts[4]
 
+            if files and data:
+                # Can't send data and form data - so move data into files and 
send as multipart/form-data
+                new_files = []
+                new_files += [(f, (files[f].name, files[f])) for f in files]
+                new_files += [(d, (None, data[d])) for d in data]
+                files = tuple(new_files)
+                data = None
+
             if self.logger:
                 msg = build_curl(method, url, headers, params, data, files)
                 self.logger.debug('Call: emulated curl command ...\n%s', msg)
@@ -531,13 +539,6 @@
             result = response_data
             return result
 
-        def api_from_web(self):
-            """ Cloudflare v4 API"""
-
-            # base url isn't enough; we need less
-            url = '/'.join(self.base_url.split('/')[0:3])
-            return self._read_from_web(url)
-
         def api_from_openapi(self, url):
             """ Cloudflare v4 API"""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cloudflare-2.11.1/CloudFlare/utils.py 
new/cloudflare-2.11.6/CloudFlare/utils.py
--- old/cloudflare-2.11.1/CloudFlare/utils.py   2022-11-23 22:05:15.000000000 
+0100
+++ new/cloudflare-2.11.6/CloudFlare/utils.py   2023-05-20 03:00:53.000000000 
+0200
@@ -63,7 +63,16 @@
         msg.append('            --data \'%s\' \\' % (str_data.replace('\n', ' 
')))
     # files
     if files is not None:
-        msg.append('            --form "file=@%s" \\' % (files))
+        if isinstance(files, (list, tuple)):
+            for f in files:
+                if f[1][0] is None:
+                    # not a file
+                    msg.append('            --form "%s=%s" \\' % (f[0], 
f[1][1]))
+                else:
+                    # a file
+                    msg.append('            --form "%s=@%s" \\' % (f[0], 
f[1][0]))
+        else:
+            msg.append('            --form "file=@%s" \\' % (files))
 
     # remove the last \ from the last line.
     msg[-1] = msg[-1][:-1]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cloudflare-2.11.1/PKG-INFO 
new/cloudflare-2.11.6/PKG-INFO
--- old/cloudflare-2.11.1/PKG-INFO      2022-11-24 20:05:11.165600300 +0100
+++ new/cloudflare-2.11.6/PKG-INFO      2023-05-21 19:58:05.450339600 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: cloudflare
-Version: 2.11.1
+Version: 2.11.6
 Summary: Python wrapper for the Cloudflare v4 API
 Home-page: https://github.com/cloudflare/python-cloudflare
 Author: Martin J. Levy
@@ -578,7 +578,7 @@
 The command will convert domain names prefixed with a colon (`:`) into 
zone_identifiers: e.g. to view `example.com` you must use `cli4 
/zones/:example.com` (the zone ID cannot be used).
 
 ```bash
-$ cli4 [-V|--version] [-h|--help] [-v|--verbose] [-q|--quiet] [-j|--json] 
[-y|--yaml] [-r|--raw] [-d|--dump] [--get|--patch|--post|--put|--delete] 
[item=value ...] /command...
+$ cli4 [-V|--version] [-h|--help] [-v|--verbose] [-q|--quiet] [-j|--json] 
[-y|--yaml] [-n|ndjson] [-r|--raw] [-d|--dump] [-A|--openapi url] [-b|--binary] 
[-p|--profile profile-name] [--get|--patch|--post|--put|--delete] 
[item=value|item=@filename|@filename ...] /command ...
 
 ```
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cloudflare-2.11.1/README.md 
new/cloudflare-2.11.6/README.md
--- old/cloudflare-2.11.1/README.md     2022-11-17 21:45:44.000000000 +0100
+++ new/cloudflare-2.11.6/README.md     2023-05-21 19:26:25.000000000 +0200
@@ -561,7 +561,7 @@
 The command will convert domain names prefixed with a colon (`:`) into 
zone_identifiers: e.g. to view `example.com` you must use `cli4 
/zones/:example.com` (the zone ID cannot be used).
 
 ```bash
-$ cli4 [-V|--version] [-h|--help] [-v|--verbose] [-q|--quiet] [-j|--json] 
[-y|--yaml] [-r|--raw] [-d|--dump] [--get|--patch|--post|--put|--delete] 
[item=value ...] /command...
+$ cli4 [-V|--version] [-h|--help] [-v|--verbose] [-q|--quiet] [-j|--json] 
[-y|--yaml] [-n|ndjson] [-r|--raw] [-d|--dump] [-A|--openapi url] [-b|--binary] 
[-p|--profile profile-name] [--get|--patch|--post|--put|--delete] 
[item=value|item=@filename|@filename ...] /command ...
 
 ```
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cloudflare-2.11.1/cli4/cli4.py 
new/cloudflare-2.11.6/cli4/cli4.py
--- old/cloudflare-2.11.1/cli4/cli4.py  2022-11-23 14:41:31.000000000 +0100
+++ new/cloudflare-2.11.6/cli4/cli4.py  2023-05-21 19:26:25.000000000 +0200
@@ -4,6 +4,7 @@
 import sys
 import re
 import getopt
+import keyword
 import json
 
 my_yaml = None
@@ -103,6 +104,9 @@
                 sys.exit('cli4: %s=%s - file open failure' % (tag_string, 
filename))
             # no need for param code below
             continue
+        elif (value_string[0] == '"' and value_string[-1] == '"') or 
(value_string[0] == '\'' and value_string[-1] == '\''):
+            # remove quotes
+            value = value_string[1:-1]
         else:
             value = value_string
 
@@ -237,13 +241,16 @@
                         raise e
         else:
             try:
-                # dashes (vs underscores) cause issues in Python and other 
languages
-                if '-' in element:
+                if keyword.iskeyword(element):
+                    # a keyword is appended with an extra underscore so it can 
used with Python code
+                    m = getattr(m, element + '_')
+                elif '-' in element:
+                    # dashes (vs underscores) cause issues in Python and other 
languages
                     m = getattr(m, element.replace('-','_'))
                 else:
                     m = getattr(m, element)
                 cmd.append(element)
-            except AttributeError:
+            except AttributeError as e:
                 # the verb/element was not found
                 sys.stderr.write('cli4: /%s - not found\n' % (command))
                 raise e
@@ -360,7 +367,6 @@
     output = 'json'
     raw = False
     dump = False
-    dump_from_web = False
     openapi_url = None
     binary_file = False
     profile = None
@@ -371,7 +377,6 @@
              + '[-j|--json] [-y|--yaml] [-n|ndjson] '
              + '[-r|--raw] '
              + '[-d|--dump] '
-             + '[-a|--api] '
              + '[-A|--openapi url] '
              + '[-b|--binary] '
              + '[-p|--profile profile-name] '
@@ -381,12 +386,12 @@
 
     try:
         opts, args = getopt.getopt(args,
-                                   'VhvqjyrdaA:bp:GPOUD',
+                                   'VhvqjyrdA:bp:GPOUD',
                                    [
                                        'version',
                                        'help', 'verbose', 'quiet', 'json', 
'yaml', 'ndjson',
                                        'raw',
-                                       'dump', 'api', 'openapi=',
+                                       'dump', 'openapi=',
                                        'binary',
                                        'profile=',
                                        'get', 'patch', 'post', 'put', 'delete'
@@ -420,8 +425,6 @@
             profile = arg
         elif opt in ('-d', '--dump'):
             dump = True
-        elif opt in ('-a', '--api'):
-            dump_from_web = True
         elif opt in ('-A', '--openapi'):
             openapi_url = arg
         elif opt in ('-b', '--binary'):
@@ -447,11 +450,6 @@
         sys.stdout.write(a)
         sys.exit(0)
 
-    if dump_from_web:
-        a = dump_commands_from_web(cf)
-        sys.stdout.write(a)
-        sys.exit(0)
-
     if openapi_url:
         a = dump_commands_from_web(cf, openapi_url)
         sys.stdout.write(a)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cloudflare-2.11.1/cli4/dump.py 
new/cloudflare-2.11.6/cli4/dump.py
--- old/cloudflare-2.11.1/cli4/dump.py  2022-11-22 13:40:45.000000000 +0100
+++ new/cloudflare-2.11.6/cli4/dump.py  2023-05-21 19:26:25.000000000 +0200
@@ -5,12 +5,9 @@
     w = cf.api_list()
     return '\n'.join(w) + '\n'
 
-def dump_commands_from_web(cf, url=None):
+def dump_commands_from_web(cf, url):
     """dump a tree of all the known API commands - from web"""
-    if url:
-        w = cf.api_from_openapi(url)
-    else:
-        w = cf.api_from_web()
+    w = cf.api_from_openapi(url)
 
     a = []
     for r in w:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cloudflare-2.11.1/cloudflare.egg-info/PKG-INFO 
new/cloudflare-2.11.6/cloudflare.egg-info/PKG-INFO
--- old/cloudflare-2.11.1/cloudflare.egg-info/PKG-INFO  2022-11-24 
20:05:11.000000000 +0100
+++ new/cloudflare-2.11.6/cloudflare.egg-info/PKG-INFO  2023-05-21 
19:58:05.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: cloudflare
-Version: 2.11.1
+Version: 2.11.6
 Summary: Python wrapper for the Cloudflare v4 API
 Home-page: https://github.com/cloudflare/python-cloudflare
 Author: Martin J. Levy
@@ -578,7 +578,7 @@
 The command will convert domain names prefixed with a colon (`:`) into 
zone_identifiers: e.g. to view `example.com` you must use `cli4 
/zones/:example.com` (the zone ID cannot be used).
 
 ```bash
-$ cli4 [-V|--version] [-h|--help] [-v|--verbose] [-q|--quiet] [-j|--json] 
[-y|--yaml] [-r|--raw] [-d|--dump] [--get|--patch|--post|--put|--delete] 
[item=value ...] /command...
+$ cli4 [-V|--version] [-h|--help] [-v|--verbose] [-q|--quiet] [-j|--json] 
[-y|--yaml] [-n|ndjson] [-r|--raw] [-d|--dump] [-A|--openapi url] [-b|--binary] 
[-p|--profile profile-name] [--get|--patch|--post|--put|--delete] 
[item=value|item=@filename|@filename ...] /command ...
 
 ```
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cloudflare-2.11.1/cloudflare.egg-info/SOURCES.txt 
new/cloudflare-2.11.6/cloudflare.egg-info/SOURCES.txt
--- old/cloudflare-2.11.1/cloudflare.egg-info/SOURCES.txt       2022-11-24 
20:05:11.000000000 +0100
+++ new/cloudflare-2.11.6/cloudflare.egg-info/SOURCES.txt       2023-05-21 
19:58:05.000000000 +0200
@@ -59,4 +59,5 @@
 examples/example_user_tokens.py
 examples/example_with_usage.py
 examples/example_zone_search.sh
-examples/example_zones.py
\ No newline at end of file
+examples/example_zones.py
+tests/test1.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cloudflare-2.11.1/tests/test1.py 
new/cloudflare-2.11.6/tests/test1.py
--- old/cloudflare-2.11.1/tests/test1.py        1970-01-01 01:00:00.000000000 
+0100
+++ new/cloudflare-2.11.6/tests/test1.py        2020-01-26 21:23:53.000000000 
+0100
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+
+import os
+import sys
+sys.path.insert(0, os.path.abspath('..'))
+import CloudFlare
+
+import pytest
+
+def test_ips():
+    cf = CloudFlare.CloudFlare()
+    ips = cf.ips.get()
+    assert ips
+
+if __name__ == '__main__':
+    pytest.main([__file__])

Reply via email to