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__])