From 1ec6cb14da52cfdd951c9b32d0fe2579ac1653bd Mon Sep 17 00:00:00 2001 From: Helio Chissini de Castro Date: Thu, 2 Jul 2026 11:05:07 +0200 Subject: [PATCH 01/13] fix(copyrights): Do not ignore secondary parenthesis Signed-off-by: Helio Chissini de Castro --- src/cluecode/copyrights.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/cluecode/copyrights.py b/src/cluecode/copyrights.py index 6d17467acf..20509240cb 100644 --- a/src/cluecode/copyrights.py +++ b/src/cluecode/copyrights.py @@ -1234,9 +1234,6 @@ def build_detection_from_node( (r"^[a-z].+\(s\)[\.,]?$", 'JUNK'), - # parens in the middle: for(var - (r"^[a-zA-Z]+[\)\(]+,?[\)\(]?[a-zA-Z]+[\.,]?$", 'JUNK'), - # single period (r"^\.$", 'JUNK'), From 5ff94d286d505b92ea6d53c9e7b1a0be031f7cec Mon Sep 17 00:00:00 2001 From: Philippe Ombredanne Date: Fri, 3 Jul 2026 10:16:16 +0200 Subject: [PATCH 02/13] Detect copyright with parens in word Signed-off-by: Philippe Ombredanne --- src/cluecode/copyrights.py | 24 +++++++++++++++++-- src/cluecode/copyrights_hint.py | 2 ++ src/cluecode/finder_data.py | 13 ++++++++++ .../copyrights/misco4/linux4/venky.txt.yml | 4 ++-- .../to_improve/junk-copyright-13.txt.yml | 4 ++-- .../to_improve/junk-copyright-23.txt.yml | 4 ---- tests/cluecode/data/copyrights/rimini.c.yml | 6 ++--- 7 files changed, 44 insertions(+), 13 deletions(-) diff --git a/src/cluecode/copyrights.py b/src/cluecode/copyrights.py index 6d17467acf..2746760917 100644 --- a/src/cluecode/copyrights.py +++ b/src/cluecode/copyrights.py @@ -427,7 +427,10 @@ def get_tokens(numbered_lines, splitter=re.compile(r'[\t =;]+').split): if TRACE_TOK: logger_debug(' get_tokens: preped line: ' + repr(line)) - + + # when there is a an openning parens in the middle of a word, add a + # space before in some cases: exclude (digit , (s , (c , (- + line = re.sub(pattern=r'(\([^rsc\-\d])', repl=' \g<1>', string=line, flags=re.IGNORECASE) for tok in splitter(line): # strip trailing quotes+comma if tok.endswith("',"): @@ -729,6 +732,10 @@ def build_detection_from_node( # SPDX-FileContributor as defined in SPDX and seen used in KDE (r'^[Ss][Pp][Dd][Xx]-[Ff]ile[Cc]ontributor', 'SPDX-CONTRIB'), + # damaged PDF to text conversion with (cid:13) and rarer (cid:2) + (r'^[Cc]?\(cid:13\)$','COPY'), + (r'^[Cc]?\(cid:2\)$','COPY'), + ############################################################################ # ALL Rights Reserved. ############################################################################ @@ -991,6 +998,7 @@ def build_detection_from_node( (r'^.?(null|function|try|catch|except|throw|typeof|catch|switch).?$', 'JUNK'), (r'^.*[\.:](?:value|ref|key|case|type|typeof|props|state|error|null)$', 'JUNK'), (r'^[a-z]{,5}\[!?]+', 'JUNK'), + (r'^(fprintf|stderr)$', 'JUNK'), # func call with short var in minified code (r'^\w{2,6}\([a-z, ]{1,6}\)', 'JUNK'), @@ -1284,6 +1292,12 @@ def build_detection_from_node( (r'^[Bb]oth$', 'JUNK'), (r'^[Cc]aller$', 'JUNK'), + #'!(r)' + (r'^!\(r\)$', 'JUNK'), + + # vars with curly braces + (r'\(var', 'JUNK'), + # tags (r'^E-?[Mm]ail:?$', 'JUNK'), (r'^URL:?$', 'JUNK'), @@ -2924,7 +2938,8 @@ def build_detection_from_node( # Copyright 2015 The Happy Campers # Copyright 2015 The Error Prone Authors. # Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic, - COPYRIGHT: {? + (+ ? ? + ?)+ ?} #1630 + # AssemblyCopyright("(c) 2004 by Henrik Ravn")] + COPYRIGHT: {? + ? ? (+ ? ? + ?)+ ?} #1630 COPYRIGHT: {+ } #1650 @@ -4013,6 +4028,11 @@ def remove_dupe_copyright_words(c): c = c.replace("copyright\'", 'Copyright') c = c.replace('and later', ' ') c = c.replace('build.year', ' ') + + # PDF to text damages + c = c.replace('(cid:13)', '(c)') + c = c.replace('(cid:2)', '(c)') + return c diff --git a/src/cluecode/copyrights_hint.py b/src/cluecode/copyrights_hint.py index 958ee0f5e8..7f2f0f171c 100644 --- a/src/cluecode/copyrights_hint.py +++ b/src/cluecode/copyrights_hint.py @@ -159,4 +159,6 @@ univ upstream write +cid:13 +cid:2 '''.split() diff --git a/src/cluecode/finder_data.py b/src/cluecode/finder_data.py index 1d7d34b057..42575e2455 100644 --- a/src/cluecode/finder_data.py +++ b/src/cluecode/finder_data.py @@ -7,6 +7,8 @@ # See https://aboutcode.org for more information about nexB OSS projects. # +import re + from functools import partial @@ -239,8 +241,19 @@ def classify(s, data_set, suffixes=None, ignored_hosts=None): ignored_hosts=JUNK_EXACT_DOMAIN_NAMES, ) +# a regex for copyright lexer +JUNK_URLS_RE = [f"^\/*{re.escape(u)}\/*$" for u in JUNK_URLS] +JUNK_URL_PREFIXES_RE = [f"^\/*{re.escape(u)}\/*" for u in JUNK_URL_PREFIXES] +JUNK_DOMAIN_SUFFIXES_RE = [f"\/*{re.escape(u)}\/*$" for u in JUNK_DOMAIN_SUFFIXES] +JUNK_ALL_URLS = "|".join(JUNK_URLS_RE + JUNK_URL_PREFIXES_RE + JUNK_DOMAIN_SUFFIXES_RE) +JUNK_ALL_URLS = f"({JUNK_ALL_URLS})" +IS_JUNK_URL = re.compile(JUNK_ALL_URLS, flags=re.IGNORECASE).search + def classify_url(url): + """ + Return True if a URL is a proper URL, or False if this is a JUNK URL + """ if not url: return False u = url.lower().strip('/') diff --git a/tests/cluecode/data/copyrights/misco4/linux4/venky.txt.yml b/tests/cluecode/data/copyrights/misco4/linux4/venky.txt.yml index e7dda6af1c..91a2ee2d9b 100644 --- a/tests/cluecode/data/copyrights/misco4/linux4/venky.txt.yml +++ b/tests/cluecode/data/copyrights/misco4/linux4/venky.txt.yml @@ -3,6 +3,6 @@ what: - holders - authors copyrights: - - Copyright (c) 2004 Venky Raju(dev@venky.ws) + - Copyright (c) 2004 Venky Raju (dev@venky.ws) holders: - - Venky + - Venky Raju diff --git a/tests/cluecode/data/copyrights/misco4/to_improve/junk-copyright-13.txt.yml b/tests/cluecode/data/copyrights/misco4/to_improve/junk-copyright-13.txt.yml index 0f18d8dd9c..20477c88d4 100644 --- a/tests/cluecode/data/copyrights/misco4/to_improve/junk-copyright-13.txt.yml +++ b/tests/cluecode/data/copyrights/misco4/to_improve/junk-copyright-13.txt.yml @@ -3,6 +3,6 @@ what: - holders - authors copyrights: - - (c) ,r s(t),r.length&& o document.createElementNS http://www.w3.org/1999/xhtml,'div + - (c) ,r s (t),r.length&& o document.createElementNS http://www.w3.org/1999/xhtml,'div holders: - - r s(t),r.length&& o document.createElementNS + - r s (t),r.length&& o document.createElementNS diff --git a/tests/cluecode/data/copyrights/misco4/to_improve/junk-copyright-23.txt.yml b/tests/cluecode/data/copyrights/misco4/to_improve/junk-copyright-23.txt.yml index b5bf2acfbc..b11f4412e3 100644 --- a/tests/cluecode/data/copyrights/misco4/to_improve/junk-copyright-23.txt.yml +++ b/tests/cluecode/data/copyrights/misco4/to_improve/junk-copyright-23.txt.yml @@ -2,7 +2,3 @@ what: - copyrights - holders - authors -copyrights: - - (c) !(r) (c) SSY -holders: - - (r) SSY diff --git a/tests/cluecode/data/copyrights/rimini.c.yml b/tests/cluecode/data/copyrights/rimini.c.yml index 77da480ca9..0b9dd4f279 100644 --- a/tests/cluecode/data/copyrights/rimini.c.yml +++ b/tests/cluecode/data/copyrights/rimini.c.yml @@ -3,9 +3,9 @@ what: - holders - holders_summary copyrights: - - (c) Copyright 2000 Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it + - (c) Copyright 2000 Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI (ITALY), arsenio@tin.it holders: - - Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY) + - Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI (ITALY) holders_summary: - - value: Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY) + - value: Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI (ITALY) count: 1 From 7af79ebfc06824584fc4e8075c3091951fdee3aa Mon Sep 17 00:00:00 2001 From: Philippe Ombredanne Date: Fri, 3 Jul 2026 10:18:12 +0200 Subject: [PATCH 03/13] Add empty copyright tests For copyright with parens Signed-off-by: Philippe Ombredanne --- .../data/copyrights/copyrights_with_parens/cop-kisa.txt | 1 + .../data/copyrights/copyrights_with_parens/cop-kisa.txt.yml | 3 +++ .../copyrights/copyrights_with_parens/copy-with-cid13-1.txt | 3 +++ .../copyrights_with_parens/copy-with-cid13-1.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-10.txt | 1 + .../copyrights_with_parens/copy-with-cid13-10.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-11.txt | 2 ++ .../copyrights_with_parens/copy-with-cid13-11.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-12.txt | 2 ++ .../copyrights_with_parens/copy-with-cid13-12.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-13.txt | 1 + .../copyrights_with_parens/copy-with-cid13-13.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-14.txt | 2 ++ .../copyrights_with_parens/copy-with-cid13-14.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-15.txt | 3 +++ .../copyrights_with_parens/copy-with-cid13-15.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-16.txt | 1 + .../copyrights_with_parens/copy-with-cid13-16.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-17.txt | 1 + .../copyrights_with_parens/copy-with-cid13-17.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-18.txt | 1 + .../copyrights_with_parens/copy-with-cid13-18.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-19.txt | 1 + .../copyrights_with_parens/copy-with-cid13-19.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-2.txt | 1 + .../copyrights_with_parens/copy-with-cid13-2.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-20.txt | 2 ++ .../copyrights_with_parens/copy-with-cid13-20.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-21.txt | 3 +++ .../copyrights_with_parens/copy-with-cid13-21.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-22.txt | 4 ++++ .../copyrights_with_parens/copy-with-cid13-22.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-23.txt | 1 + .../copyrights_with_parens/copy-with-cid13-23.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-3.txt | 1 + .../copyrights_with_parens/copy-with-cid13-3.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-4.txt | 2 ++ .../copyrights_with_parens/copy-with-cid13-4.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-5.txt | 1 + .../copyrights_with_parens/copy-with-cid13-5.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-6.txt | 1 + .../copyrights_with_parens/copy-with-cid13-6.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-7.txt | 1 + .../copyrights_with_parens/copy-with-cid13-7.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-8.txt | 1 + .../copyrights_with_parens/copy-with-cid13-8.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-cid13-9.txt | 2 ++ .../copyrights_with_parens/copy-with-cid13-9.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-1.txt | 1 + .../copyrights_with_parens/copy-with-parens-1.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-10.txt | 1 + .../copyrights_with_parens/copy-with-parens-10.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-11.txt | 1 + .../copyrights_with_parens/copy-with-parens-11.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-12.txt | 1 + .../copyrights_with_parens/copy-with-parens-12.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-13.txt | 1 + .../copyrights_with_parens/copy-with-parens-13.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-14.txt | 1 + .../copyrights_with_parens/copy-with-parens-14.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-15.txt | 1 + .../copyrights_with_parens/copy-with-parens-15.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-16.txt | 1 + .../copyrights_with_parens/copy-with-parens-16.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-17.txt | 1 + .../copyrights_with_parens/copy-with-parens-17.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-18.txt | 1 + .../copyrights_with_parens/copy-with-parens-18.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-19.txt | 1 + .../copyrights_with_parens/copy-with-parens-19.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-2.txt | 1 + .../copyrights_with_parens/copy-with-parens-2.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-3.txt | 1 + .../copyrights_with_parens/copy-with-parens-3.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-4.txt | 1 + .../copyrights_with_parens/copy-with-parens-4.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-5.txt | 1 + .../copyrights_with_parens/copy-with-parens-5.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-6.txt | 2 ++ .../copyrights_with_parens/copy-with-parens-6.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-7.txt | 1 + .../copyrights_with_parens/copy-with-parens-7.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-8.txt | 1 + .../copyrights_with_parens/copy-with-parens-8.txt.yml | 4 ++++ .../copyrights/copyrights_with_parens/copy-with-parens-9.txt | 1 + .../copyrights_with_parens/copy-with-parens-9.txt.yml | 4 ++++ 86 files changed, 230 insertions(+) create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/cop-kisa.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/cop-kisa.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-1.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-1.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-10.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-10.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-11.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-11.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-12.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-12.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-13.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-13.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-14.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-14.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-15.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-15.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-16.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-16.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-17.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-17.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-18.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-18.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-19.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-19.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-2.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-2.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-20.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-20.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-21.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-21.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-22.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-22.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-23.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-23.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-3.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-3.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-4.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-4.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-5.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-5.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-6.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-6.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-7.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-7.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-8.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-8.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-9.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-9.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-1.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-1.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-10.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-10.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-11.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-11.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-12.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-12.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-13.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-13.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-14.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-14.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-15.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-15.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-16.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-16.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-17.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-17.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-18.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-18.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-19.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-19.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-2.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-2.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-3.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-3.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-4.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-4.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-5.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-5.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-6.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-6.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-7.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-7.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-8.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-8.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-9.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-9.txt.yml diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/cop-kisa.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-kisa.txt new file mode 100644 index 0000000000..edea401ab3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-kisa.txt @@ -0,0 +1 @@ +Copyright (c) 2007 KISA(Korea Information Security Agency) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/cop-kisa.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-kisa.txt.yml new file mode 100644 index 0000000000..ed048a797c --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-kisa.txt.yml @@ -0,0 +1,3 @@ +what: + - copyrights + - holders diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-1.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-1.txt new file mode 100644 index 0000000000..ff23f5e41d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-1.txt @@ -0,0 +1,3 @@ +Portions of this article are derived from [31], [30] and [28]. +Copyright c(cid:13)1989 ITAA, formerly ADAPSO, and 1991, 1993 by Eugene H. Spafford. Used with permission. +To appear in the JournalofArtificialLife, MIT Press, 1994. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-1.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-1.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-1.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-10.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-10.txt new file mode 100644 index 0000000000..dd71d90e5a --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-10.txt @@ -0,0 +1 @@ +c(cid:13) 2016 Copyright held by the owner/author(s). \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-10.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-10.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-10.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-11.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-11.txt new file mode 100644 index 0000000000..ffe400af41 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-11.txt @@ -0,0 +1,2 @@ +c(cid:13)Tsukasa Fushimi/ASCII MEDIA WORKS/OIP2 c(cid:13)BANDAI NAMCO +Entertainment Inc. Copyright c(cid:13)2017 Live2D Inc. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-11.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-11.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-11.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-12.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-12.txt new file mode 100644 index 0000000000..93ed13d55e --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-12.txt @@ -0,0 +1,2 @@ +Copyright c(cid:2) 2006, American Association for Articial Intelli- +gence (www.aaai.org). All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-12.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-12.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-12.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-13.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-13.txt new file mode 100644 index 0000000000..2b4b529712 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-13.txt @@ -0,0 +1 @@ +c(cid:2) 2016 ACM. ISBN 978-1-4503-4139-4/16/10. . . $15.00 \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-13.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-13.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-13.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-14.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-14.txt new file mode 100644 index 0000000000..45a780d8f7 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-14.txt @@ -0,0 +1,2 @@ +Copyright c(cid:2) 2006 +All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-14.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-14.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-14.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-15.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-15.txt new file mode 100644 index 0000000000..e179aeeef1 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-15.txt @@ -0,0 +1,3 @@ +C(cid:2) Crown copyright 2017. This article contains public sector informa- +tion licensed under the Open Government Licence v3.0 (http://www. +nationalarchives.gov.uk/doc/open-government-licence/version/3/). \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-15.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-15.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-15.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-16.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-16.txt new file mode 100644 index 0000000000..3f042ca676 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-16.txt @@ -0,0 +1 @@ +structures with the layers perpendic(cid:2) ular to the current flow \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-16.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-16.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-16.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-17.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-17.txt new file mode 100644 index 0000000000..ae2926126a --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-17.txt @@ -0,0 +1 @@ +Copyright (cid:23) 1999 by Academic Press \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-17.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-17.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-17.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-18.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-18.txt new file mode 100644 index 0000000000..d30cc4a87c --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-18.txt @@ -0,0 +1 @@ +c(cid:2) Springer-Verlag Berlin Heidelberg 2010 \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-18.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-18.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-18.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-19.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-19.txt new file mode 100644 index 0000000000..7a9a6d2a9a --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-19.txt @@ -0,0 +1 @@ +J. Functional Programming 9(4) 471477, July 1999. c(cid:13) 1999 Cambridge University Press 471 \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-19.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-19.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-19.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-2.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-2.txt new file mode 100644 index 0000000000..36a8cb724a --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-2.txt @@ -0,0 +1 @@ +c(cid:13) 2006 International Society for Bayesian Analysis \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-2.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-2.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-2.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-20.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-20.txt new file mode 100644 index 0000000000..bc130ec368 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-20.txt @@ -0,0 +1,2 @@ +Copyright c(cid:13) 2020, Association for the Advancement of Artificial +Intelligence (www.aaai.org). All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-20.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-20.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-20.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-21.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-21.txt new file mode 100644 index 0000000000..d57de0327d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-21.txt @@ -0,0 +1,3 @@ +Copyright c(cid:13) 2019 for this paper by its authors. Use permitted under Creative Com- +mons License Attribution 4.0 International (CC BY 4.0). CLEF 2019, 9-12 Septem- +ber 2019, Lugano, Switzerland. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-21.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-21.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-21.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-22.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-22.txt new file mode 100644 index 0000000000..de0ee19b1d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-22.txt @@ -0,0 +1,4 @@ +Copyright c(cid:13) 1990 W. N. Venables +Copyright c(cid:13) 1992 W. N. Venables & D. M. Smith +Copyright c(cid:13) 1997 R. Gentleman & R. Ihaka +Copyright c(cid:13) 1997, 1998 M. Maechler \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-22.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-22.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-22.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-23.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-23.txt new file mode 100644 index 0000000000..28d5cc0432 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-23.txt @@ -0,0 +1 @@ +c(cid:13)ESO 2014 \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-23.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-23.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-23.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-3.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-3.txt new file mode 100644 index 0000000000..2a9d7dac17 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-3.txt @@ -0,0 +1 @@ +c(cid:13) 2017 Association for Computational Linguistics \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-3.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-3.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-3.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-4.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-4.txt new file mode 100644 index 0000000000..79b6aa4d3e --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-4.txt @@ -0,0 +1,2 @@ +c(cid:13) 2017 The Author(s) +Eurographics Proceedings c(cid:13) 2017 The Eurographics Association. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-4.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-4.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-4.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-5.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-5.txt new file mode 100644 index 0000000000..0dccb595b9 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-5.txt @@ -0,0 +1 @@ +c(cid:13) WILEY-VCH Verlag GmbH & Co. KGaA, Weinheim \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-5.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-5.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-5.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-6.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-6.txt new file mode 100644 index 0000000000..21bd7c2b4a --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-6.txt @@ -0,0 +1 @@ +c(cid:13) 2016 ACM. ISBN 978-1-4503-4573-6/16/10. . . $15.00 \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-6.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-6.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-6.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-7.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-7.txt new file mode 100644 index 0000000000..6796baa161 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-7.txt @@ -0,0 +1 @@ +c(cid:13) 2006 Optical Society of America \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-7.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-7.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-7.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-8.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-8.txt new file mode 100644 index 0000000000..8c76f8e555 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-8.txt @@ -0,0 +1 @@ +Copyright c(cid:13) Matthew Pulver 2018-2019 \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-8.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-8.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-8.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-9.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-9.txt new file mode 100644 index 0000000000..4e5e68faa8 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-9.txt @@ -0,0 +1,2 @@ +noah a. smith +c(cid:13) 2017 \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-9.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-9.txt.yml new file mode 100644 index 0000000000..da26f73b5d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-9.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-1.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-1.txt new file mode 100644 index 0000000000..572f123883 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-1.txt @@ -0,0 +1 @@ +Copyright 2014(c) - All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-1.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-1.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-1.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-10.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-10.txt new file mode 100644 index 0000000000..915c13feac --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-10.txt @@ -0,0 +1 @@ +Copyright 2018 두나무(주) All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-10.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-10.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-10.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-11.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-11.txt new file mode 100644 index 0000000000..8eddb4e843 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-11.txt @@ -0,0 +1 @@ +Copyright (C) 2023 Wolken(zwolken@foxmail.com | zharry@web.de) \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-11.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-11.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-11.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-12.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-12.txt new file mode 100644 index 0000000000..67a80df32e --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-12.txt @@ -0,0 +1 @@ +Copyright (C) 2002 Obviex(TM). All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-12.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-12.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-12.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-13.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-13.txt new file mode 100644 index 0000000000..42a3df814f --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-13.txt @@ -0,0 +1 @@ +Copyright (C) 2018 qiuri(邱日) \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-13.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-13.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-13.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-14.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-14.txt new file mode 100644 index 0000000000..c9f48587a1 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-14.txt @@ -0,0 +1 @@ +Copyright 1996 V(DL)2 inc. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-14.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-14.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-14.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-15.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-15.txt new file mode 100644 index 0000000000..a5f0909337 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-15.txt @@ -0,0 +1 @@ +Xfrom Elsevier, Copyright 2016. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-15.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-15.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-15.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-16.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-16.txt new file mode 100644 index 0000000000..1102123654 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-16.txt @@ -0,0 +1 @@ +Copyright 2018 Hiroki11x(Hiroki Naganuma) \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-16.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-16.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-16.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-17.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-17.txt new file mode 100644 index 0000000000..1a6d4bc5ed --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-17.txt @@ -0,0 +1 @@ +Copyright 2021 SDT(CN) Ltd. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-17.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-17.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-17.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-18.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-18.txt new file mode 100644 index 0000000000..22f3497e53 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-18.txt @@ -0,0 +1 @@ +SAE Tech Pap Ser 2014. doi: 10.4271/2014-01-1612.Copyright 2014-01-1612. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-18.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-18.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-18.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-19.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-19.txt new file mode 100644 index 0000000000..8b5f45c6c4 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-19.txt @@ -0,0 +1 @@ +This article is copyrighted as indicated in the abstract. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-19.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-19.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-19.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-2.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-2.txt new file mode 100644 index 0000000000..7a6a475757 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-2.txt @@ -0,0 +1 @@ +Copyright NVARCHAR(200) NULL, -- 版權所有 \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-2.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-2.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-2.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-3.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-3.txt new file mode 100644 index 0000000000..52f26e176c --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-3.txt @@ -0,0 +1 @@ +Copyright 2017 nanchen(刘世麟) \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-3.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-3.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-3.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-4.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-4.txt new file mode 100644 index 0000000000..1b1982a5d8 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-4.txt @@ -0,0 +1 @@ +Copyright 2015 Photubias(c) \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-4.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-4.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-4.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-5.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-5.txt new file mode 100644 index 0000000000..cdbd557c93 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-5.txt @@ -0,0 +1 @@ +Copyright 2018 goldze(曾宪泽) \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-5.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-5.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-5.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-6.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-6.txt new file mode 100644 index 0000000000..2b5e213b98 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-6.txt @@ -0,0 +1,2 @@ +Copyright 2019 Dave Peterson (dave@dspeterson.com) +Copyright 2014 if(we), Inc. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-6.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-6.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-6.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-7.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-7.txt new file mode 100644 index 0000000000..b399581ad0 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-7.txt @@ -0,0 +1 @@ +Copyright 2019 ditclear(https://github.com/ditclear) \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-7.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-7.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-7.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-8.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-8.txt new file mode 100644 index 0000000000..c22678e26f --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-8.txt @@ -0,0 +1 @@ +Copyright 2016 AriaLyy(https://github.com/AriaLyy/Aria) \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-8.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-8.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-8.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-9.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-9.txt new file mode 100644 index 0000000000..c9b6af5ff3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-9.txt @@ -0,0 +1 @@ +MIT License Copyright 2025 花雪(X: @Yuk1_Works) \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-9.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-9.txt.yml new file mode 100644 index 0000000000..51a9550884 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-9.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - holders_summary \ No newline at end of file From 42cd565714a926d20b7f76bdcaaacbe42546443b Mon Sep 17 00:00:00 2001 From: Philippe Ombredanne Date: Fri, 3 Jul 2026 12:04:08 +0200 Subject: [PATCH 04/13] Detect copyright from damaged PDF Signed-off-by: Philippe Ombredanne --- src/cluecode/copyrights.py | 34 +++++++++++++------ .../copyrights_with_parens/cop-kisa.txt.yml | 4 +++ .../copy-with-cid13-1.txt.yml | 5 ++- .../copy-with-cid13-10.txt | 11 +++++- .../copy-with-cid13-10.txt.yml | 11 +++++- .../copy-with-cid13-11.txt.yml | 7 +++- .../copy-with-cid13-12.txt.yml | 5 ++- .../copy-with-cid13-13.txt.yml | 5 ++- .../copy-with-cid13-14.txt.yml | 3 +- .../copy-with-cid13-15.txt.yml | 5 ++- .../copy-with-cid13-16.txt.yml | 1 - .../copy-with-cid13-17.txt.yml | 5 ++- .../copy-with-cid13-18.txt.yml | 5 ++- .../copy-with-cid13-19.txt.yml | 5 ++- .../copy-with-cid13-2.txt.yml | 5 ++- .../copy-with-cid13-20.txt.yml | 5 ++- .../copy-with-cid13-21.txt.yml | 3 +- .../copy-with-cid13-22.txt.yml | 11 +++++- .../copy-with-cid13-23.txt.yml | 5 ++- .../copy-with-cid13-3.txt.yml | 5 ++- .../copy-with-cid13-4.txt.yml | 7 +++- .../copy-with-cid13-5.txt.yml | 5 ++- .../copy-with-cid13-6.txt.yml | 5 ++- .../copy-with-cid13-7.txt.yml | 5 ++- .../copy-with-cid13-8.txt.yml | 5 ++- .../copy-with-cid13-9.txt.yml | 3 +- 26 files changed, 135 insertions(+), 35 deletions(-) diff --git a/src/cluecode/copyrights.py b/src/cluecode/copyrights.py index 2746760917..91d42a307a 100644 --- a/src/cluecode/copyrights.py +++ b/src/cluecode/copyrights.py @@ -61,7 +61,6 @@ def logger_debug(*args): if TRACE_DEEP: logger_debug = print - """ Detect and collect copyright statements. @@ -427,9 +426,9 @@ def get_tokens(numbered_lines, splitter=re.compile(r'[\t =;]+').split): if TRACE_TOK: logger_debug(' get_tokens: preped line: ' + repr(line)) - + # when there is a an openning parens in the middle of a word, add a - # space before in some cases: exclude (digit , (s , (c , (- + # space before in some cases: exclude (digit , (s , (c , (- line = re.sub(pattern=r'(\([^rsc\-\d])', repl=' \g<1>', string=line, flags=re.IGNORECASE) for tok in splitter(line): # strip trailing quotes+comma @@ -733,8 +732,8 @@ def build_detection_from_node( (r'^[Ss][Pp][Dd][Xx]-[Ff]ile[Cc]ontributor', 'SPDX-CONTRIB'), # damaged PDF to text conversion with (cid:13) and rarer (cid:2) - (r'^[Cc]?\(cid:13\)$','COPY'), - (r'^[Cc]?\(cid:2\)$','COPY'), + (r'^[Cc]?\(cid:13\)$', 'COPY'), + (r'^[Cc]?\(cid:2\)$', 'COPY'), ############################################################################ # ALL Rights Reserved. @@ -821,6 +820,9 @@ def build_detection_from_node( (r'^W3C\(r\)$', 'COMP'), (r'^TeX$', 'NNP'), + # Copyright (c) 1989 ITAA, formerly ADAPSO + (r'^formerly', 'NNP'), + # Three or more AsCamelCase GetQueueReference, with some exceptions (r'^(?:OpenStreetMap|AliasDotCom|AllThingsTalk).?$', 'NAME'), @@ -1240,6 +1242,9 @@ def build_detection_from_node( # owlocationNameEntitieship. (r"^([a-z]{2,}[A-Z]){2,}[a-z]+[\.,]?", 'JUNK'), + # lower case with (s) + # but not owner/author(s). + (r"^owner/author\(s\)\.?$", 'NNP'), (r"^[a-z].+\(s\)[\.,]?$", 'JUNK'), # parens in the middle: for(var @@ -1292,7 +1297,7 @@ def build_detection_from_node( (r'^[Bb]oth$', 'JUNK'), (r'^[Cc]aller$', 'JUNK'), - #'!(r)' + # '!(r)' (r'^!\(r\)$', 'JUNK'), # vars with curly braces @@ -2248,6 +2253,7 @@ def build_detection_from_node( (r"^[a-z]'[A-Z]?[a-z]+[,\.]?$", 'NNP'), # exceptions to all CAPS words + (r'^ISBN$', 'NN'), (r'^[A-Z]{3,4}[0-9]{4},?$', 'NN'), # exceptions to CAPS used in obfuscated emails like in joe AT foo DOT com @@ -3091,8 +3097,13 @@ def build_detection_from_node( # Author: Jeff LaBundy COPYRIGHT: { } #2280-3 + # Common for ACM notices + # Copyright is held by the owner/author(s). + # (c) 2016 Copyright held by the owner/author(s). + COPYRIGHT2: {+ + ??} #2280-9 COPYRIGHT2: {+ ? + *} #2280 + COPYRIGHT2: {??} #2280-12 COPYRIGHT: { ? ? } #2280-4 @@ -3122,7 +3133,8 @@ def build_detection_from_node( # Rare form Copyright (c) 2008 All rights reserved by Amalasoft Corporation. COPYRIGHT: { } #2861 - # Copyright (c) 1996 Adrian Rodriguez (adrian@franklins-tower.rutgers.edu) Laboratory for Computer Science Research Computing Facility + # Copyright (c) 1996 Adrian Rodriguez (adrian@franklins-tower.rutgers.edu) L + # aboratory for Computer Science Research Computing Facility COPYRIGHT: { } #2400 # copyrights in the style of Scilab/INRIA @@ -4029,10 +4041,6 @@ def remove_dupe_copyright_words(c): c = c.replace('and later', ' ') c = c.replace('build.year', ' ') - # PDF to text damages - c = c.replace('(cid:13)', '(c)') - c = c.replace('(cid:2)', '(c)') - return c @@ -4565,6 +4573,10 @@ def prepare_text_line(line): .replace('\xc2', '') .replace('\\xc2', '') + # PDF to text damages + .replace('c(cid:13)', '(c) ') + .replace('c(cid:2)', '(c) ') + # not really a dash: an emdash .replace('–', '-') diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/cop-kisa.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-kisa.txt.yml index ed048a797c..49bcca58ba 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/cop-kisa.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-kisa.txt.yml @@ -1,3 +1,7 @@ what: - copyrights - holders +copyrights: + - Copyright (c) 2007 KISA (Korea Information Security Agency) +holders: + - KISA (Korea Information Security Agency) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-1.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-1.txt.yml index da26f73b5d..aa79309944 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-1.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-1.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary +copyrights: + - Copyright (c) 1989 ITAA, formerly ADAPSO, and 1991, 1993 +holders: + - ITAA, formerly ADAPSO, diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-10.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-10.txt index dd71d90e5a..ff195eb6d8 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-10.txt +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-10.txt @@ -1 +1,10 @@ -c(cid:13) 2016 Copyright held by the owner/author(s). \ No newline at end of file +c(cid:13) 2016 Copyright held by the owner/author(s). + + +(c) 2016 Copyright held by the owner/author(s). + + +Copyright held by the owner/author(s). + + +Copyright is held by the owner/author(s) \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-10.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-10.txt.yml index da26f73b5d..3ecaa121b3 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-10.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-10.txt.yml @@ -1,4 +1,13 @@ what: - copyrights - holders - - holders_summary +copyrights: + - (c) 2016 Copyright held by the owner/author(s) + - (c) 2016 Copyright held by the owner/author(s) + - Copyright held by the owner/author(s) + - Copyright is held by the owner/author(s) +holders: + - the owner/author(s) + - the owner/author(s) + - the owner/author(s) + - the owner/author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-11.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-11.txt.yml index da26f73b5d..3635a2b63a 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-11.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-11.txt.yml @@ -1,4 +1,9 @@ what: - copyrights - holders - - holders_summary +copyrights: + - (c) BANDAI NAMCO Entertainment Inc. + - Copyright (c) 2017 Live2D Inc. +holders: + - BANDAI NAMCO Entertainment Inc. + - Live2D Inc. diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-12.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-12.txt.yml index da26f73b5d..3ddeaabec4 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-12.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-12.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary +copyrights: + - Copyright (c) 2006, American Association for Articial Intelli- gence (www.aaai.org) +holders: + - American Association for Articial Intelli- gence diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-13.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-13.txt.yml index da26f73b5d..bf89a2b2b3 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-13.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-13.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary +copyrights: + - (c) 2016 ACM. +holders: + - ACM diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-14.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-14.txt.yml index da26f73b5d..f390d7df52 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-14.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-14.txt.yml @@ -1,4 +1,5 @@ what: - copyrights - holders - - holders_summary +copyrights: + - Copyright (c) 2006 diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-15.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-15.txt.yml index da26f73b5d..b3a95c0475 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-15.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-15.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary +copyrights: + - Crown copyright 2017 +holders: + - Crown diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-16.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-16.txt.yml index da26f73b5d..ed048a797c 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-16.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-16.txt.yml @@ -1,4 +1,3 @@ what: - copyrights - holders - - holders_summary diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-17.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-17.txt.yml index da26f73b5d..8a1581a47c 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-17.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-17.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary +copyrights: + - Copyright (cid:23) 1999 by Academic Press +holders: + - (cid:23) by Academic Press diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-18.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-18.txt.yml index da26f73b5d..3c090dc2af 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-18.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-18.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary +copyrights: + - (c) Springer-Verlag Berlin Heidelberg 2010 +holders: + - Springer-Verlag Berlin Heidelberg diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-19.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-19.txt.yml index da26f73b5d..a46163b997 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-19.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-19.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary +copyrights: + - (c) 1999 Cambridge University Press +holders: + - Cambridge University Press diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-2.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-2.txt.yml index da26f73b5d..e4901c71d1 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-2.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-2.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary +copyrights: + - (c) 2006 International Society for Bayesian Analysis +holders: + - International Society for Bayesian Analysis diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-20.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-20.txt.yml index da26f73b5d..e2c84c308d 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-20.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-20.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary +copyrights: + - Copyright (c) 2020, Association for the Advancement of Artificial Intelligence (www.aaai.org) +holders: + - Association for the Advancement of Artificial Intelligence diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-21.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-21.txt.yml index da26f73b5d..9fde0083e3 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-21.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-21.txt.yml @@ -1,4 +1,5 @@ what: - copyrights - holders - - holders_summary +copyrights: + - Copyright (c) 2019 for diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-22.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-22.txt.yml index da26f73b5d..609ead5c30 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-22.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-22.txt.yml @@ -1,4 +1,13 @@ what: - copyrights - holders - - holders_summary +copyrights: + - Copyright (c) 1990 W. N. Venables + - Copyright (c) 1992 W. N. Venables & D. M. Smith + - Copyright (c) 1997 R. Gentleman & R. Ihaka + - Copyright (c) 1997, 1998 M. Maechler +holders: + - W. N. Venables + - W. N. Venables & D. M. Smith + - R. Gentleman & R. Ihaka + - M. Maechler diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-23.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-23.txt.yml index da26f73b5d..058d7b577d 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-23.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-23.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary +copyrights: + - (c) ESO 2014 +holders: + - ESO diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-3.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-3.txt.yml index da26f73b5d..a6fe3c4537 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-3.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-3.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary +copyrights: + - (c) 2017 Association for Computational Linguistics +holders: + - Association for Computational Linguistics diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-4.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-4.txt.yml index da26f73b5d..347409f5e0 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-4.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-4.txt.yml @@ -1,4 +1,9 @@ what: - copyrights - holders - - holders_summary +copyrights: + - (c) 2017 The Author(s) Eurographics Proceedings + - (c) 2017 The Eurographics Association +holders: + - The Author(s) Eurographics Proceedings + - The Eurographics Association diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-5.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-5.txt.yml index da26f73b5d..df864673e8 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-5.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-5.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary +copyrights: + - (c) WILEY-VCH Verlag GmbH & Co. +holders: + - WILEY-VCH Verlag GmbH & Co. diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-6.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-6.txt.yml index da26f73b5d..bf89a2b2b3 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-6.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-6.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary +copyrights: + - (c) 2016 ACM. +holders: + - ACM diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-7.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-7.txt.yml index da26f73b5d..8bbb0e4f44 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-7.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-7.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary +copyrights: + - (c) 2006 Optical Society of America +holders: + - Optical Society of America diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-8.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-8.txt.yml index da26f73b5d..4682c20742 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-8.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-8.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary +copyrights: + - Copyright (c) Matthew Pulver 2018-2019 +holders: + - Matthew Pulver diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-9.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-9.txt.yml index da26f73b5d..f82bd0eb5e 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-9.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-cid13-9.txt.yml @@ -1,4 +1,5 @@ what: - copyrights - holders - - holders_summary +copyrights: + - (c) 2017 From 9c12d939b254bfba772ea0b966e8dab0a55d7d59 Mon Sep 17 00:00:00 2001 From: Philippe Ombredanne Date: Fri, 3 Jul 2026 15:04:04 +0200 Subject: [PATCH 05/13] Detect copyright with parens Signed-off-by: Philippe Ombredanne --- src/cluecode/copyrights.py | 14 +++++++++----- .../copy-with-parens-1.txt.yml | 3 ++- .../copy-with-parens-10.txt.yml | 5 ++++- .../copy-with-parens-11.txt.yml | 5 ++++- .../copy-with-parens-12.txt.yml | 5 ++++- .../copy-with-parens-13.txt.yml | 5 ++++- .../copy-with-parens-14.txt.yml | 5 ++++- .../copy-with-parens-15.txt.yml | 5 ++++- .../copy-with-parens-16.txt.yml | 5 ++++- .../copy-with-parens-17.txt.yml | 1 - .../copy-with-parens-18.txt.yml | 1 - .../copy-with-parens-19.txt.yml | 1 - .../copy-with-parens-2.txt.yml | 1 - .../copy-with-parens-3.txt.yml | 5 ++++- .../copy-with-parens-4.txt.yml | 5 ++++- .../copy-with-parens-5.txt.yml | 5 ++++- .../copy-with-parens-6.txt.yml | 7 ++++++- .../copy-with-parens-7.txt.yml | 5 ++++- .../copy-with-parens-8.txt.yml | 5 ++++- .../copy-with-parens-9.txt.yml | 5 ++++- 20 files changed, 69 insertions(+), 24 deletions(-) diff --git a/src/cluecode/copyrights.py b/src/cluecode/copyrights.py index 91d42a307a..027fb8d20b 100644 --- a/src/cluecode/copyrights.py +++ b/src/cluecode/copyrights.py @@ -429,7 +429,8 @@ def get_tokens(numbered_lines, splitter=re.compile(r'[\t =;]+').split): # when there is a an openning parens in the middle of a word, add a # space before in some cases: exclude (digit , (s , (c , (- - line = re.sub(pattern=r'(\([^rsc\-\d])', repl=' \g<1>', string=line, flags=re.IGNORECASE) + # this allows to recover from words like KISA(Korean + line = re.sub(pattern=r'(\([^rsc\-\d])', repl=' \g<1>', string=line) for tok in splitter(line): # strip trailing quotes+comma if tok.endswith("',"): @@ -1236,6 +1237,10 @@ def build_detection_from_node( (r'^param$', 'JUNK'), (r'^which$', 'JUNK'), + # github/gitlab usernames + (r'^Hiroki11x$', 'NNP'), + (r'^goldze$', 'NNP'), + # "Es6ToEs3ClassSideInheritance. and related names (r"^[A-Z]([a-zA-Z]*[0-9]){2,}[a-zA-Z]+[\.,]?", 'JUNK'), @@ -1300,7 +1305,7 @@ def build_detection_from_node( # '!(r)' (r'^!\(r\)$', 'JUNK'), - # vars with curly braces + # vars with parens (r'\(var', 'JUNK'), # tags @@ -1895,7 +1900,7 @@ def build_detection_from_node( # rare form of trailing punct in name: Ian Robertson). (r'^Robert.*', 'NNP'), - + ############################################################################ # Named entities: companies, groups, universities, etc ############################################################################ @@ -2233,6 +2238,7 @@ def build_detection_from_node( (r'^Xiph.Org$', 'NNP'), (r'^iClick,?$', 'NNP'), (r'^electronics?$', 'NNP'), + (r'^semiconductors?[\.,]?$', 'NNP'), # proper nouns with digits (r'^([A-Z][a-z0-9]+){1,2}[\.,]?$', 'NNP'), @@ -2370,8 +2376,6 @@ def build_detection_from_node( # some punctuation combos (r'^(?:=>|->|<-|<=)$', 'JUNK'), - (r'^semiconductors?[\.,]?$', 'NNP'), - ############################################################################ # catch all other as Nouns ############################################################################ diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-1.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-1.txt.yml index 51a9550884..5019014388 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-1.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-1.txt.yml @@ -1,4 +1,5 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file +copyrights: + - Copyright 2014 diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-10.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-10.txt.yml index 51a9550884..1c044bd881 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-10.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-10.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file +copyrights: + - Copyright 2018 dunamu (ju) +holders: + - dunamu (ju) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-11.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-11.txt.yml index 51a9550884..430e5cf7ae 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-11.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-11.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file +copyrights: + - Copyright (c) 2023 Wolken (zwolken@foxmail.com zharry@web.de) +holders: + - Wolken diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-12.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-12.txt.yml index 51a9550884..ee2784e28d 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-12.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-12.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file +copyrights: + - Copyright (c) 2002 Obviex (TM) +holders: + - Obviex (TM) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-13.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-13.txt.yml index 51a9550884..d3411e545f 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-13.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-13.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file +copyrights: + - Copyright (c) 2018 qiuri Qiu Ri +holders: + - qiuri Qiu Ri diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-14.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-14.txt.yml index 51a9550884..6fc9d76541 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-14.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-14.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file +copyrights: + - Copyright 1996 V (DL)2 inc. +holders: + - V (DL)2 inc. diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-15.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-15.txt.yml index 51a9550884..48547b0c9f 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-15.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-15.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file +copyrights: + - Xfrom Elsevier, Copyright 2016 +holders: + - Xfrom Elsevier diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-16.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-16.txt.yml index 51a9550884..8c24efc28e 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-16.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-16.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file +copyrights: + - Copyright 2018 Hiroki11x (Hiroki Naganuma) +holders: + - Hiroki11x (Hiroki Naganuma) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-17.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-17.txt.yml index 51a9550884..ed048a797c 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-17.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-17.txt.yml @@ -1,4 +1,3 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-18.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-18.txt.yml index 51a9550884..ed048a797c 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-18.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-18.txt.yml @@ -1,4 +1,3 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-19.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-19.txt.yml index 51a9550884..ed048a797c 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-19.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-19.txt.yml @@ -1,4 +1,3 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-2.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-2.txt.yml index 51a9550884..ed048a797c 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-2.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-2.txt.yml @@ -1,4 +1,3 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-3.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-3.txt.yml index 51a9550884..4d7e3bf18e 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-3.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-3.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file +copyrights: + - Copyright 2017 nanchen Liu Shi Lin +holders: + - nanchen Liu Shi Lin diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-4.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-4.txt.yml index 51a9550884..894ecb57f5 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-4.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-4.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file +copyrights: + - Copyright 2015 Photubias (c) +holders: + - Photubias diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-5.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-5.txt.yml index 51a9550884..beeabc87f4 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-5.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-5.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file +copyrights: + - Copyright 2018 goldze Ceng Xian Ze +holders: + - goldze Ceng Xian Ze diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-6.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-6.txt.yml index 51a9550884..ec10817ccf 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-6.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-6.txt.yml @@ -1,4 +1,9 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file +copyrights: + - Copyright 2019 Dave Peterson (dave@dspeterson.com) + - Copyright 2014 if (we), Inc. +holders: + - Dave Peterson + - if (we), Inc. diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-7.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-7.txt.yml index 51a9550884..841664cd1b 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-7.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-7.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file +copyrights: + - Copyright 2019 ditclear (https://github.com/ditclear) +holders: + - ditclear diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-8.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-8.txt.yml index 51a9550884..59a67b23e2 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-8.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-8.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file +copyrights: + - Copyright 2016 AriaLyy (https://github.com/AriaLyy/Aria) +holders: + - AriaLyy diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-9.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-9.txt.yml index 51a9550884..0d698e6f54 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-9.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-parens-9.txt.yml @@ -1,4 +1,7 @@ what: - copyrights - holders - - holders_summary \ No newline at end of file +copyrights: + - Copyright 2025 Hua Xue +holders: + - Hua Xue From b410594bcdce2d5a056c9c77882e19faca420744 Mon Sep 17 00:00:00 2001 From: Philippe Ombredanne Date: Sun, 5 Jul 2026 12:11:38 +0200 Subject: [PATCH 06/13] Improve detection of junk URLs This help make the function reusable for use elsewhere. Signed-off-by: Philippe Ombredanne --- src/cluecode/finder_data.py | 94 +++------- .../data/licenses/componentace-jcraft.LICENSE | 2 + src/licensedcode/data/licenses/saf.LICENSE | 4 +- src/licensedcode/data/licenses/sata.LICENSE | 4 +- tests/cluecode/test_finder_data.py | 171 ++++++++++++++++++ tests/licensedcode/test_detect.py | 4 +- 6 files changed, 209 insertions(+), 70 deletions(-) create mode 100644 tests/cluecode/test_finder_data.py diff --git a/src/cluecode/finder_data.py b/src/cluecode/finder_data.py index 42575e2455..578bd76d23 100644 --- a/src/cluecode/finder_data.py +++ b/src/cluecode/finder_data.py @@ -16,6 +16,16 @@ def set_from_text(text): return set(u.lower().strip('/') for u in text.split()) +def urls_set_from_text(text): + """ + Return a set from text, ensuring that both http and https scheme are + injected for every URL. + """ + https_urls = text.replace("http://", "https://").split() + http_urls = text.replace("https://", "http://").split() + return set(u.lower().strip('/') for u in http_urls + https_urls) + + JUNK_EMAILS = set_from_text(u''' test@test.com exmaple.com @@ -26,7 +36,6 @@ def set_from_text(text): localhost ''') - JUNK_HOSTS_AND_DOMAINS = set_from_text(u''' exmaple.com example.com @@ -60,37 +69,15 @@ def set_from_text(text): some.com ''') -JUNK_URLS = set_from_text(u''' +JUNK_URLS = urls_set_from_text(u''' http://www.adobe.com/2006/mxml - http://www.w3.org/1999/XSL/Transform http://docs.oasis-open.org/ns/xri/xrd-1.0 - http://www.w3.org/2001/XMLSchema-instance - http://www.w3.org/2001/XMLSchema}string - http://www.w3.org/2001/XMLSchema - http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd http://bing.com http://google.com http://msn.com http://maven.apache.org/maven-v4_0_0.xsd http://maven.apache.org/POM/4.0.0 http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd - http://www.w3.org/1999/02/22-rdf-syntax-ns - http://www.w3.org/1999/xhtml - http://www.w3.org/1999/XMLSchema - http://www.w3.org/1999/XMLSchema-instance - http://www.w3.org/2000/svg - http://www.w3.org/2001/XMLSchema - http://www.w3.org/2000/10/XMLSchema - http://www.w3.org/2000/10/XMLSchema-instance - http://www.w3.org/2001/XMLSchema - http://www.w3.org/2001/XMLSchema-instance - http://www.w3.org/2002/12/soap-encoding - http://www.w3.org/2002/12/soap-envelope - http://www.w3.org/2005/Atom - http://www.w3.org/2006/01/wsdl - http://www.w3.org/2006/01/wsdl/http - http://www.w3.org/2006/01/wsdl/soap - http://www.w3.org/2006/vcard/ns http://www.w3.org/International/O-URL-and-ident.html http://www.w3.org/MarkUp http://www.w3.org/WAI/GL @@ -106,26 +93,10 @@ def set_from_text(text): http://]hostname http://+ http://www - http://www.w3.org/1999/xhtml - http://www.w3.org/1999/XSL/Transform - http://www.w3.org/2001/XMLSchema - http://www.w3.org/2001/XMLSchema-instance - http://www.w3.org/hypertext/WWW/Protocols/HTTP/HTRESP.html - http://www.w3.org/hypertext/WWW/Protocols/HTTP/Object_Headers.html http://www.w3.org/P3P http://www.w3.org/pub/WWW - http://www.w3.org/TR/html4/strict.dtd - http://www.w3.org/TR/REC-html40/loose.dtd - http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd - http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd - http://www.w3.org/TR/xslt https: https://+ - http://www.example.com - http://www.example.com/dir/file - http://www.example.com:dir/file - http://www.your.org.here - http://hostname https://www.trustedcomputinggroup.org/XML/SCHEMA/TNCCS_1.0.xsd http://glade.gnome.org/glade-2.0.dtd http://pagesperso-orange.fr/sebastien.godard/sysstat.dtd @@ -133,10 +104,13 @@ def set_from_text(text): http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd http://gcc.gnu.org/bugs.html http://nsis.sf.net/NSIS_Error + http://www.your.org.here ''') - -JUNK_URL_PREFIXES = tuple(sorted(set_from_text(''' +JUNK_URL_PREFIXES = sorted(urls_set_from_text(''' + http://hostname + http://www.example.com + http://example.com http://www.springframework.org/dtd/ http://www.slickedit.com/dtd/ http://www.oexchange.org/spec/0.8/ @@ -146,15 +120,21 @@ def set_from_text(text): http://foo.bar.baz http://foo.bar.com http://foobar.com - http://java.sun.com/xml/ns/ + http://java.sun.com/xml/ns http://java.sun.com/j2se/1.4/docs/ http://java.sun.com/j2se/1.5.0/docs/ + http://java.sun.com/dtd/ + http://java.sun.com/j2ee/dtds/ + http://java.sun.com/xml/ns/ http://developer.apple.com/certificationauthority/ http://www.apple.com/appleca/ https://www.apple.com/certificateauthority/ http://schemas.microsoft.com/ http://dublincore.org/schemas/ http://www.w3.org/TR/ + http://www.w3.org/1 + http://www.w3.org/2 + http://www.w3.org/hypertext/WWW/Protocols/ http://www.apple.com/DTDs http://apache.org/xml/features/ http://apache.org/xml/properties/ @@ -166,8 +146,6 @@ def set_from_text(text): http://csc3-2009-2-crl.verisign.com http://dellincca.dell.com/crl http://ts-crl.ws.symantec.com - http://java.sun.com/dtd/ - http://java.sun.com/j2ee/dtds/ http://jakarta.apache.org/commons/dtds/ http://jakarta.apache.org/struts/dtds/ http://www.jboss.org/j2ee/dtd/ @@ -193,14 +171,9 @@ def set_from_text(text): http://www.microsoft.com/pki/certs/ http://www.microsoft.com/pkiops/crl http://www.microsoft.com/PKI/ -'''))) +''')) -JUNK_DOMAIN_SUFFIXES = tuple(sorted(set_from_text(''' - .png - .jpg - .gif - .jpeg -'''))) +JUNK_DOMAIN_SUFFIXES = ('.gif', '.jpeg', '.jpg', '.png') def classify(s, data_set, suffixes=None, ignored_hosts=None): @@ -241,10 +214,10 @@ def classify(s, data_set, suffixes=None, ignored_hosts=None): ignored_hosts=JUNK_EXACT_DOMAIN_NAMES, ) -# a regex for copyright lexer -JUNK_URLS_RE = [f"^\/*{re.escape(u)}\/*$" for u in JUNK_URLS] -JUNK_URL_PREFIXES_RE = [f"^\/*{re.escape(u)}\/*" for u in JUNK_URL_PREFIXES] -JUNK_DOMAIN_SUFFIXES_RE = [f"\/*{re.escape(u)}\/*$" for u in JUNK_DOMAIN_SUFFIXES] +# a Junk URL big regex for use in copyright lexers +JUNK_URLS_RE = [fr"^/?{re.escape(u)}/?$" for u in JUNK_URLS] +JUNK_URL_PREFIXES_RE = [fr"^/?{re.escape(u)}/?" for u in JUNK_URL_PREFIXES] +JUNK_DOMAIN_SUFFIXES_RE = [fr"{re.escape(u)}/?$" for u in JUNK_DOMAIN_SUFFIXES] JUNK_ALL_URLS = "|".join(JUNK_URLS_RE + JUNK_URL_PREFIXES_RE + JUNK_DOMAIN_SUFFIXES_RE) JUNK_ALL_URLS = f"({JUNK_ALL_URLS})" IS_JUNK_URL = re.compile(JUNK_ALL_URLS, flags=re.IGNORECASE).search @@ -254,11 +227,4 @@ def classify_url(url): """ Return True if a URL is a proper URL, or False if this is a JUNK URL """ - if not url: - return False - u = url.lower().strip('/') - if (u in JUNK_URLS or - u.startswith(JUNK_URL_PREFIXES) - or u.endswith(JUNK_DOMAIN_SUFFIXES)): - return False - return True + return url and not IS_JUNK_URL(url) diff --git a/src/licensedcode/data/licenses/componentace-jcraft.LICENSE b/src/licensedcode/data/licenses/componentace-jcraft.LICENSE index c2ca068127..46c16757e7 100644 --- a/src/licensedcode/data/licenses/componentace-jcraft.LICENSE +++ b/src/licensedcode/data/licenses/componentace-jcraft.LICENSE @@ -13,6 +13,8 @@ ignorable_copyrights: ignorable_holders: - ComponentAce - ymnk, JCraft,Inc. +ignorable_authors: + - Jean-loup Gailly (jloup@gzip.org) and Mark Adler (madler@alumni.caltech.edu) and contributors ignorable_urls: - http://www.componentace.com/ ignorable_emails: diff --git a/src/licensedcode/data/licenses/saf.LICENSE b/src/licensedcode/data/licenses/saf.LICENSE index 5e092f6963..797da1c892 100644 --- a/src/licensedcode/data/licenses/saf.LICENSE +++ b/src/licensedcode/data/licenses/saf.LICENSE @@ -6,9 +6,9 @@ category: Permissive owner: Service Availability Forum spdx_license_key: LicenseRef-scancode-saf ignorable_copyrights: - - Copyright (c) Service Availability(TM) Forum + - Copyright (c) Service Availability (TM) Forum ignorable_holders: - - Service Availability(TM) Forum + - Service Availability (TM) Forum --- Service Availability Forum License diff --git a/src/licensedcode/data/licenses/sata.LICENSE b/src/licensedcode/data/licenses/sata.LICENSE index 130f4fc686..d2338854cb 100644 --- a/src/licensedcode/data/licenses/sata.LICENSE +++ b/src/licensedcode/data/licenses/sata.LICENSE @@ -10,9 +10,9 @@ other_urls: - https://github.com/zTrix/sata-license - https://github.com/kongtianyi/sata-license ignorable_copyrights: - - Copyright (c) 2014 zTrix(i@ztrix.me) kongtianyi(kongtianyi@foxmail.com) + - Copyright (c) 2014 zTrix (i@ztrix.me) kongtianyi (kongtianyi@foxmail.com) ignorable_holders: - - zTrix(i@ztrix.me) kongtianyi(kongtianyi@foxmail.com) + - zTrix ignorable_urls: - https://github.com/kongtianyi/sata-license - https://github.com/zTrix/sata-license diff --git a/tests/cluecode/test_finder_data.py b/tests/cluecode/test_finder_data.py new file mode 100644 index 0000000000..ea0dd59983 --- /dev/null +++ b/tests/cluecode/test_finder_data.py @@ -0,0 +1,171 @@ +# -*- coding: utf-8 -*- +# +# Copyright (c) nexB Inc. and others. All rights reserved. +# ScanCode is a trademark of nexB Inc. +# SPDX-License-Identifier: Apache-2.0 +# See http://www.apache.org/licenses/LICENSE-2.0 for the license text. +# See https://github.com/nexB/scancode-toolkit for support or download. +# See https://aboutcode.org for more information about nexB OSS projects. +# + +import pytest + +from cluecode.finder_data import JUNK_URL_PREFIXES +from cluecode.finder_data import JUNK_URLS +from cluecode.finder_data import JUNK_DOMAIN_SUFFIXES +from cluecode.finder_data import classify_url + + +@pytest.mark.parametrize('url_prefix', sorted(JUNK_URL_PREFIXES)) +def test_classify_url__junk_urls_prefixes(url_prefix): + assert not classify_url(url_prefix) + assert classify_url(f"foobar/{url_prefix}") + + +@pytest.mark.parametrize('url', sorted(JUNK_URLS)) +def test_classify_url__junk_urls(url): + assert not classify_url(url) + assert classify_url(f"{url}/foobar") + + +@pytest.mark.parametrize('suffix', sorted(JUNK_DOMAIN_SUFFIXES)) +def test_classify_url__junk_domain_suffix(suffix): + assert not classify_url(f"http://foo/bar{suffix}") + assert classify_url(f"{suffix}/some/bar") + + +MORE_JUNK_URLS = ''' + http://www.adobe.com/2006/mxml + http://www.w3.org/1999/XSL/Transform + http://docs.oasis-open.org/ns/xri/xrd-1.0 + http://www.w3.org/2001/XMLSchema-instance + http://www.w3.org/2001/XMLSchema}string + http://www.w3.org/2001/XMLSchema + http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd + http://bing.com + http://google.com + http://msn.com + http://maven.apache.org/maven-v4_0_0.xsd + http://maven.apache.org/POM/4.0.0 + http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd + http://www.w3.org/1999/02/22-rdf-syntax-ns + http://www.w3.org/1999/xhtml + http://www.w3.org/1999/XMLSchema + http://www.w3.org/1999/XMLSchema-instance + http://www.w3.org/2000/svg + http://www.w3.org/2001/XMLSchema + http://www.w3.org/2000/10/XMLSchema + http://www.w3.org/2000/10/XMLSchema-instance + http://www.w3.org/2001/XMLSchema + http://www.w3.org/2001/XMLSchema-instance + http://www.w3.org/2002/12/soap-encoding + http://www.w3.org/2002/12/soap-envelope + http://www.w3.org/2005/Atom + http://www.w3.org/2006/01/wsdl + http://www.w3.org/2006/01/wsdl/http + http://www.w3.org/2006/01/wsdl/soap + http://www.w3.org/2006/vcard/ns + http://www.w3.org/International/O-URL-and-ident.html + http://www.w3.org/MarkUp + http://www.w3.org/WAI/GL + http://xml.apache.org/axis/session + http://xml.apache.org/xml-soap + http://docs.oasis-open.org/ns/xri/xrd-1.0 + http://cobertura.sourceforge.net/xml/coverage-01.dtd + http://findbugs.googlecode.com/svn/trunk/findbugs/etc/docbook/docbookx.dtd + http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd + http://hibernate.sourceforge.net/hibernate-generic.dtd + http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd + http://www.opensymphony.com/xwork/xwork-1.0.dtd + http://]hostname + http://+ + http://www + http://www.w3.org/1999/xhtml + http://www.w3.org/1999/XSL/Transform + http://www.w3.org/2001/XMLSchema + http://www.w3.org/2001/XMLSchema-instance + http://www.w3.org/hypertext/WWW/Protocols/HTTP/HTRESP.html + http://www.w3.org/hypertext/WWW/Protocols/HTTP/Object_Headers.html + http://www.w3.org/P3P + http://www.w3.org/pub/WWW + http://www.w3.org/TR/html4/strict.dtd + http://www.w3.org/TR/REC-html40/loose.dtd + http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd + http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd + http://www.w3.org/TR/xslt + https: + https://+ + http://www.example.com + http://www.example.com/dir/file + http://www.example.com:dir/file + http://www.your.org.here + http://hostname + https://www.trustedcomputinggroup.org/XML/SCHEMA/TNCCS_1.0.xsd + http://glade.gnome.org/glade-2.0.dtd + http://pagesperso-orange.fr/sebastien.godard/sysstat.dtd + http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd + http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd + http://gcc.gnu.org/bugs.html + http://nsis.sf.net/NSIS_Error + http://www.springframework.org/dtd/ + http://www.slickedit.com/dtd/ + http://www.oexchange.org/spec/0.8/ + http://www.puppycrawl.com/dtds/ + http://adobe.com/AS3/2006/builtin + http://careers.msn.com + http://foo.bar.baz + http://foo.bar.com + http://foobar.com + http://java.sun.com/xml/ns/ + http://java.sun.com/j2se/1.4/docs/ + http://java.sun.com/j2se/1.5.0/docs/ + http://developer.apple.com/certificationauthority/ + http://www.apple.com/appleca/ + https://www.apple.com/certificateauthority/ + http://schemas.microsoft.com/ + http://dublincore.org/schemas/ + http://www.w3.org/TR/ + http://www.apple.com/DTDs + http://apache.org/xml/features/ + http://apache.org/xml/properties/ + http://crl.verisign.com/ + http://crl.globalsign.net/ + http://crl.microsoft.com/ + http://crl.thawte.com/ + http://CSC3-2004-crl.verisign.com + http://csc3-2009-2-crl.verisign.com + http://dellincca.dell.com/crl + http://ts-crl.ws.symantec.com + http://java.sun.com/dtd/ + http://java.sun.com/j2ee/dtds/ + http://jakarta.apache.org/commons/dtds/ + http://jakarta.apache.org/struts/dtds/ + http://www.jboss.org/j2ee/dtd/ + http://glassfish.org/dtds/ + http://docbook.org/xml/simple/ + http://www.oasis-open.org/docbook/xml/ + http://www.w3.org/XML/1998/namespace + https://www.w3.org/XML/1998/namespace + http://www.w3.org/2000/xmlns/ + https://www.w3.org/2000/xmlns/ + http://ts-aia.ws.symantec.com/ + https://ts-aia.ws.symantec.com/ + https://www.verisign.com/rpa + http://csc3-2010-crl.verisign.com/ + https://www.verisign.com/rpa + http://csc3-2010-aia.verisign.com/ + https://www.verisign.com/cps + http://logo.verisign.com/ + http://ocsp2.globalsign.com/ + http://crl.globalsign.com/ + http://secure.globalsign.com/cacert/ + https://www.globalsign.com/repository/ + http://www.microsoft.com/pki/certs/ + http://www.microsoft.com/pkiops/crl + http://www.microsoft.com/PKI/ +'''.split() + + +@pytest.mark.parametrize('url', sorted(MORE_JUNK_URLS)) +def test_classify_url__more_junk_urls(url): + assert not classify_url(url) diff --git a/tests/licensedcode/test_detect.py b/tests/licensedcode/test_detect.py index 5dbf7b369b..a1475c390f 100644 --- a/tests/licensedcode/test_detect.py +++ b/tests/licensedcode/test_detect.py @@ -1075,8 +1075,8 @@ def test_match_has_correct_line_positions_in_automake_perl_file(self): expected = [ # detected, match.lines(), match.qspan, ('gpl-2.0-plus', (12, 25), Span(51, 160)), - ('fsf-unlimited-no-warranty', (231, 238), Span(986, 1049)), - ('warranty-disclaimer', (306, 307), Span(1359, 1381)), + ('fsf-unlimited-no-warranty', (231, 238), Span(998, 1061)), + ('warranty-disclaimer', (306, 307), Span(1371, 1393)), ] self.check_position('positions/automake.pl', expected) From ca6854e0861d96d2431dbb53400b69488622f672 Mon Sep 17 00:00:00 2001 From: Philippe Ombredanne Date: Sun, 5 Jul 2026 13:49:13 +0200 Subject: [PATCH 07/13] Remove warning on re Signed-off-by: Philippe Ombredanne --- src/cluecode/copyrights.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cluecode/copyrights.py b/src/cluecode/copyrights.py index 027fb8d20b..a381f4a387 100644 --- a/src/cluecode/copyrights.py +++ b/src/cluecode/copyrights.py @@ -430,7 +430,7 @@ def get_tokens(numbered_lines, splitter=re.compile(r'[\t =;]+').split): # when there is a an openning parens in the middle of a word, add a # space before in some cases: exclude (digit , (s , (c , (- # this allows to recover from words like KISA(Korean - line = re.sub(pattern=r'(\([^rsc\-\d])', repl=' \g<1>', string=line) + line = re.sub(pattern=r'(\([^rsc\-\d])', repl=r' \g<1>', string=line) for tok in splitter(line): # strip trailing quotes+comma if tok.endswith("',"): From 08af0ce98451cdd43b9eb5c1cfe1d514664275e2 Mon Sep 17 00:00:00 2001 From: Philippe Ombredanne Date: Tue, 7 Jul 2026 18:10:14 +0200 Subject: [PATCH 08/13] Add new copyright tests this is for AUTHDOT cases Signed-off-by: Philippe Ombredanne --- .../copy-with-auth-parens-dot-1.txt | 1 + .../copy-with-auth-parens-dot-1.txt.yml | 4 +++ .../copy-with-auth-parens-dot-10.txt | 1 + .../copy-with-auth-parens-dot-10.txt.yml | 4 +++ .../copy-with-auth-parens-dot-11.txt | 1 + .../copy-with-auth-parens-dot-11.txt.yml | 4 +++ .../copy-with-auth-parens-dot-12.txt | 1 + .../copy-with-auth-parens-dot-12.txt.yml | 4 +++ .../copy-with-auth-parens-dot-13.txt | 1 + .../copy-with-auth-parens-dot-13.txt.yml | 4 +++ .../copy-with-auth-parens-dot-14.txt | 2 ++ .../copy-with-auth-parens-dot-14.txt.yml | 4 +++ .../copy-with-auth-parens-dot-15.txt | 2 ++ .../copy-with-auth-parens-dot-15.txt.yml | 4 +++ .../copy-with-auth-parens-dot-16.txt | 1 + .../copy-with-auth-parens-dot-16.txt.yml | 4 +++ .../copy-with-auth-parens-dot-17.txt | 1 + .../copy-with-auth-parens-dot-17.txt.yml | 4 +++ .../copy-with-auth-parens-dot-18.txt | 1 + .../copy-with-auth-parens-dot-18.txt.yml | 4 +++ .../copy-with-auth-parens-dot-19.txt | 1 + .../copy-with-auth-parens-dot-19.txt.yml | 4 +++ .../copy-with-auth-parens-dot-2.txt | 1 + .../copy-with-auth-parens-dot-2.txt.yml | 4 +++ .../copy-with-auth-parens-dot-20.txt | 1 + .../copy-with-auth-parens-dot-20.txt.yml | 4 +++ .../copy-with-auth-parens-dot-21.txt | 1 + .../copy-with-auth-parens-dot-21.txt.yml | 4 +++ .../copy-with-auth-parens-dot-22.txt | 1 + .../copy-with-auth-parens-dot-22.txt.yml | 4 +++ .../copy-with-auth-parens-dot-23.txt | 3 ++ .../copy-with-auth-parens-dot-23.txt.yml | 4 +++ .../copy-with-auth-parens-dot-24.txt | 1 + .../copy-with-auth-parens-dot-24.txt.yml | 4 +++ .../copy-with-auth-parens-dot-25.txt | 1 + .../copy-with-auth-parens-dot-25.txt.yml | 4 +++ .../copy-with-auth-parens-dot-26.txt | 2 ++ .../copy-with-auth-parens-dot-26.txt.yml | 4 +++ .../copy-with-auth-parens-dot-27.txt | 1 + .../copy-with-auth-parens-dot-27.txt.yml | 4 +++ .../copy-with-auth-parens-dot-28.txt | 1 + .../copy-with-auth-parens-dot-28.txt.yml | 4 +++ .../copy-with-auth-parens-dot-29.txt | 1 + .../copy-with-auth-parens-dot-29.txt.yml | 4 +++ .../copy-with-auth-parens-dot-3.txt | 1 + .../copy-with-auth-parens-dot-3.txt.yml | 4 +++ .../copy-with-auth-parens-dot-30.txt | 1 + .../copy-with-auth-parens-dot-30.txt.yml | 4 +++ .../copy-with-auth-parens-dot-31.txt | 1 + .../copy-with-auth-parens-dot-31.txt.yml | 4 +++ .../copy-with-auth-parens-dot-32.txt | 1 + .../copy-with-auth-parens-dot-32.txt.yml | 4 +++ .../copy-with-auth-parens-dot-33.txt | 1 + .../copy-with-auth-parens-dot-33.txt.yml | 4 +++ .../copy-with-auth-parens-dot-34.txt | 1 + .../copy-with-auth-parens-dot-34.txt.yml | 4 +++ .../copy-with-auth-parens-dot-35.txt | 1 + .../copy-with-auth-parens-dot-35.txt.yml | 4 +++ .../copy-with-auth-parens-dot-36.txt | 1 + .../copy-with-auth-parens-dot-36.txt.yml | 4 +++ .../copy-with-auth-parens-dot-37.txt | 1 + .../copy-with-auth-parens-dot-37.txt.yml | 4 +++ .../copy-with-auth-parens-dot-38.txt | 9 ++++++ .../copy-with-auth-parens-dot-38.txt.yml | 4 +++ .../copy-with-auth-parens-dot-39.txt | 2 ++ .../copy-with-auth-parens-dot-39.txt.yml | 4 +++ .../copy-with-auth-parens-dot-4.txt | 1 + .../copy-with-auth-parens-dot-4.txt.yml | 4 +++ .../copy-with-auth-parens-dot-40.txt | 28 +++++++++++++++++++ .../copy-with-auth-parens-dot-40.txt.yml | 4 +++ .../copy-with-auth-parens-dot-41.txt | 1 + .../copy-with-auth-parens-dot-41.txt.yml | 4 +++ .../copy-with-auth-parens-dot-42.txt | 1 + .../copy-with-auth-parens-dot-42.txt.yml | 4 +++ .../copy-with-auth-parens-dot-43.txt | 2 ++ .../copy-with-auth-parens-dot-43.txt.yml | 4 +++ .../copy-with-auth-parens-dot-44.txt | 1 + .../copy-with-auth-parens-dot-44.txt.yml | 4 +++ .../copy-with-auth-parens-dot-45.txt | 2 ++ .../copy-with-auth-parens-dot-45.txt.yml | 4 +++ .../copy-with-auth-parens-dot-46.txt | 1 + .../copy-with-auth-parens-dot-46.txt.yml | 4 +++ .../copy-with-auth-parens-dot-47.txt | 1 + .../copy-with-auth-parens-dot-47.txt.yml | 4 +++ .../copy-with-auth-parens-dot-48.txt | 2 ++ .../copy-with-auth-parens-dot-48.txt.yml | 4 +++ .../copy-with-auth-parens-dot-49.txt | 1 + .../copy-with-auth-parens-dot-49.txt.yml | 4 +++ .../copy-with-auth-parens-dot-5.txt | 1 + .../copy-with-auth-parens-dot-5.txt.yml | 4 +++ .../copy-with-auth-parens-dot-50.txt | 2 ++ .../copy-with-auth-parens-dot-50.txt.yml | 4 +++ .../copy-with-auth-parens-dot-6.txt | 2 ++ .../copy-with-auth-parens-dot-6.txt.yml | 4 +++ .../copy-with-auth-parens-dot-7.txt | 4 +++ .../copy-with-auth-parens-dot-7.txt.yml | 4 +++ .../copy-with-auth-parens-dot-8.txt | 1 + .../copy-with-auth-parens-dot-8.txt.yml | 4 +++ .../copy-with-auth-parens-dot-9.txt | 1 + .../copy-with-auth-parens-dot-9.txt.yml | 4 +++ 100 files changed, 299 insertions(+) create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-1.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-1.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-10.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-10.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-11.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-11.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-12.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-12.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-13.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-13.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-14.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-14.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-15.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-15.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-16.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-16.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-17.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-17.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-18.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-18.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-19.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-19.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-2.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-2.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-20.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-20.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-21.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-21.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-22.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-22.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-23.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-23.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-24.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-24.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-25.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-25.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-26.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-26.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-27.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-27.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-28.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-28.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-29.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-29.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-3.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-3.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-30.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-30.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-31.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-31.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-32.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-32.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-33.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-33.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-34.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-34.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-35.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-35.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-36.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-36.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-37.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-37.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-38.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-38.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-39.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-39.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-4.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-4.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-40.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-40.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-41.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-41.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-42.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-42.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-43.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-43.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-44.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-44.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-45.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-45.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-46.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-46.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-47.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-47.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-48.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-48.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-49.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-49.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-5.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-5.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-50.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-50.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-6.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-6.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-7.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-7.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-8.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-8.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-9.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-9.txt.yml diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-1.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-1.txt new file mode 100644 index 0000000000..1cbd46f55e --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-1.txt @@ -0,0 +1 @@ +3. All patches / PRs are owned by their authors. There SHALL NOT be any copyright assignment process. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-1.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-1.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-1.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-10.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-10.txt new file mode 100644 index 0000000000..874f2e8322 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-10.txt @@ -0,0 +1 @@ +| Copyright (C) 2010 - 2014 lovepsone \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-10.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-10.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-10.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-11.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-11.txt new file mode 100644 index 0000000000..6e555e491e --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-11.txt @@ -0,0 +1 @@ +| Author: lovepsone \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-11.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-11.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-11.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-12.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-12.txt new file mode 100644 index 0000000000..976a62129f --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-12.txt @@ -0,0 +1 @@ +Copyright © 2018 the Author(s). Published by PNAS. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-12.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-12.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-12.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-13.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-13.txt new file mode 100644 index 0000000000..f7da4f297e --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-13.txt @@ -0,0 +1 @@ +Copyright © 2021 The Author(s). Published by Elsevier B.V. All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-13.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-13.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-13.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-14.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-14.txt new file mode 100644 index 0000000000..ad644c21bf --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-14.txt @@ -0,0 +1,2 @@ +== AUTHORS +See file AUTHORS \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-14.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-14.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-14.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-15.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-15.txt new file mode 100644 index 0000000000..7b0754cb37 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-15.txt @@ -0,0 +1,2 @@ +== COPYRIGHT +(c) 2024- \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-15.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-15.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-15.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-16.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-16.txt new file mode 100644 index 0000000000..fec24c5ebf --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-16.txt @@ -0,0 +1 @@ +Copyright (c) 1995-2012 held by the author(s). All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-16.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-16.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-16.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-17.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-17.txt new file mode 100644 index 0000000000..89da081b5b --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-17.txt @@ -0,0 +1 @@ +# EXAMPLES are from http://X3dGraphics.com © Don Brutzman and Len Daly \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-17.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-17.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-17.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-18.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-18.txt new file mode 100644 index 0000000000..8a32615991 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-18.txt @@ -0,0 +1 @@ +Copyright (c) 1995-2008 held by the author(s). All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-18.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-18.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-18.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-19.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-19.txt new file mode 100644 index 0000000000..07967dad1c --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-19.txt @@ -0,0 +1 @@ +# Copyright (C) YEAR i-MSCP Team - All rights reserved \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-19.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-19.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-19.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-2.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-2.txt new file mode 100644 index 0000000000..6f80c027d5 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-2.txt @@ -0,0 +1 @@ +Copyright 2018 The Abseil Authors. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-2.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-2.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-2.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-20.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-20.txt new file mode 100644 index 0000000000..4a41ec4052 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-20.txt @@ -0,0 +1 @@ +Copyright 2011 the above author(s). \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-20.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-20.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-20.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-21.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-21.txt new file mode 100644 index 0000000000..7c59d0288e --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-21.txt @@ -0,0 +1 @@ +Copyright (C) 2011 onwards by Yury V. Zaytsev . \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-21.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-21.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-21.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-22.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-22.txt new file mode 100644 index 0000000000..9ee165e286 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-22.txt @@ -0,0 +1 @@ +All SOPAC code is Copyright 2001 - 2009 by the original author(s). \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-22.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-22.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-22.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-23.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-23.txt new file mode 100644 index 0000000000..8e30d2e472 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-23.txt @@ -0,0 +1,3 @@ +© 2025 The Author(s). Published by Informa +UK Limited, trading as Taylor & Francis +Group \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-23.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-23.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-23.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-24.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-24.txt new file mode 100644 index 0000000000..2321af83c8 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-24.txt @@ -0,0 +1 @@ +© The Author(s). 2019 Open Access This article is distributed under the terms \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-24.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-24.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-24.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-25.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-25.txt new file mode 100644 index 0000000000..90b25c75dc --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-25.txt @@ -0,0 +1 @@ +© 2025 Copyright held by the owner/author(s). \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-25.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-25.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-25.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-26.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-26.txt new file mode 100644 index 0000000000..26638482a5 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-26.txt @@ -0,0 +1,2 @@ +© 2020 The Author(s). Published with +license by Taylor & Francis Group, LLC. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-26.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-26.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-26.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-27.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-27.txt new file mode 100644 index 0000000000..e33fcbe5db --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-27.txt @@ -0,0 +1 @@ +© 2020 The Author(s). Published with license by Taylor & Francis Group, LLC. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-27.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-27.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-27.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-28.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-28.txt new file mode 100644 index 0000000000..058f18c69a --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-28.txt @@ -0,0 +1 @@ +© 2020 The Author(s). Published by Elsevier Ltd. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-28.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-28.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-28.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-29.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-29.txt new file mode 100644 index 0000000000..7f66c63513 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-29.txt @@ -0,0 +1 @@ +written by the Author(s). \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-29.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-29.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-29.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-3.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-3.txt new file mode 100644 index 0000000000..d843622552 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-3.txt @@ -0,0 +1 @@ +// Copyright 2009 The Go Authors. All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-3.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-3.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-3.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-30.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-30.txt new file mode 100644 index 0000000000..8dd5db6394 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-30.txt @@ -0,0 +1 @@ +© 2022. The Author(s). \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-30.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-30.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-30.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-31.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-31.txt new file mode 100644 index 0000000000..b9cd21cd2f --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-31.txt @@ -0,0 +1 @@ +Technische Universiteit Delft hereby disclaims all copyright interest in the package written by the Author(s). \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-31.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-31.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-31.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-32.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-32.txt new file mode 100644 index 0000000000..8f2f49a758 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-32.txt @@ -0,0 +1 @@ +Copyright (C) 2010-2012 The Async HBase Authors. All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-32.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-32.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-32.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-33.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-33.txt new file mode 100644 index 0000000000..5908f88e19 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-33.txt @@ -0,0 +1 @@ +Copyright (c) 2026, the Luo project authors. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-33.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-33.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-33.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-34.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-34.txt new file mode 100644 index 0000000000..b37f38a00f --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-34.txt @@ -0,0 +1 @@ +Copyright (c) 2012-2016 The go-diff Authors. All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-34.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-34.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-34.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-35.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-35.txt new file mode 100644 index 0000000000..41116ad89e --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-35.txt @@ -0,0 +1 @@ +Copyright © 2020 Beni. This is an open-access \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-35.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-35.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-35.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-36.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-36.txt new file mode 100644 index 0000000000..6bd684edaa --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-36.txt @@ -0,0 +1 @@ +Copyright © 2020 Kell, Heyden and Pretorius. This is an open-access article \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-36.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-36.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-36.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-37.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-37.txt new file mode 100644 index 0000000000..98fc83b6d7 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-37.txt @@ -0,0 +1 @@ +Copyright © 1999-2026 [John Wiley & Sons, Inc](https://www.wiley.com) or related companies. All rights reserved, including rights for text and data mining and training of artificial intelligence technologies or similar technologies. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-37.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-37.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-37.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-38.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-38.txt new file mode 100644 index 0000000000..31aeda4c24 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-38.txt @@ -0,0 +1,9 @@ +Copyright remains with the author/s. + + + Copyright © 2025 by Author/s. This is an open access article distributed under the Creative Commons Attribution License which permits unrestricted use, + + +Copyright © 2021 Ha and Maguire. +2021 +Ha and Maguire \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-38.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-38.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-38.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-39.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-39.txt new file mode 100644 index 0000000000..87eeefd880 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-39.txt @@ -0,0 +1,2 @@ +// Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved. +// Copyright 2018 Atelier Disko. All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-39.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-39.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-39.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-4.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-4.txt new file mode 100644 index 0000000000..31068dfac6 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-4.txt @@ -0,0 +1 @@ +Copyright (C) 2011-2012 The OpenTSDB Authors. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-4.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-4.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-4.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-40.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-40.txt new file mode 100644 index 0000000000..c1b50774d6 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-40.txt @@ -0,0 +1,28 @@ +* + * All portions of code are copyright by their respective author/s. + * Copyright (c) 1997-2001 Geoff Wing + * Copyright (C) 2000,2001 Teepanis Chachiyo + * Copyright (c) 2001 Marius Gedminas + * Copyright (c) 2003 David Hull + * Copyright (c) 2003 Yamanobe Kiichiro + * Copyright (c) 2003 Mamoru Komachi + * Copyright (c) 2005 William P. Y. Hadisoeseno + * Copyright (c) 2004-2005 Jingmin Zhou + * + + * All portions of code are copyright by their respective author/s. + * Copyright (c) 1992 John Bovey, University of Kent at Canterbury + * - original version + * Copyright (c) 1994 Robert Nation + * - extensive modifications + * Copyright (c) 1996 Chuck Blake + * Copyright (c) 1997 mj olesen + * Copyright (c) 1997,1998 Oezguer Kesim + * Copyright (c) 1998-2001 Geoff Wing + * - extensive modifications + * Copyright (c) 2003-2008 Marc Lehmann + + + (a book serving as documentation for various tooling +surrounding TeachBooks) written by the Author(s). +Stefan Aarninkhof, Dean of Civil Engineering & Geosciences \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-40.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-40.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-40.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-41.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-41.txt new file mode 100644 index 0000000000..f0cf1b5900 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-41.txt @@ -0,0 +1 @@ +48. Copyright 2016 by the author(s). \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-41.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-41.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-41.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-42.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-42.txt new file mode 100644 index 0000000000..e58cc7f88a --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-42.txt @@ -0,0 +1 @@ +Copyright (c) 2012, the above named author(s). \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-42.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-42.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-42.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-43.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-43.txt new file mode 100644 index 0000000000..af5a08a05e --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-43.txt @@ -0,0 +1,2 @@ +% Copyright (c) 2016 the Institute of Power System Optimization, Guangxi University (the iPso) +% and original author(s). This file is licensed \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-43.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-43.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-43.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-44.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-44.txt new file mode 100644 index 0000000000..e911597d08 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-44.txt @@ -0,0 +1 @@ +Copyright 2018, The Author(s). All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-44.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-44.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-44.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-45.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-45.txt new file mode 100644 index 0000000000..bd64e2224c --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-45.txt @@ -0,0 +1,2 @@ +Copyright © 2020 The Author(s). Published by Elsevier Masson SAS.. All rights +reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-45.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-45.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-45.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-46.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-46.txt new file mode 100644 index 0000000000..5dfc4d4b80 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-46.txt @@ -0,0 +1 @@ +Copyright © 2021 the Author(s). Published by PNAS. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-46.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-46.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-46.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-47.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-47.txt new file mode 100644 index 0000000000..0c9aae31e8 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-47.txt @@ -0,0 +1 @@ +Copyright © 2020 The Author(s). Published by Elsevier Inc. All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-47.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-47.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-47.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-48.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-48.txt new file mode 100644 index 0000000000..3cdf02befb --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-48.txt @@ -0,0 +1,2 @@ +# note: no trailing dot +PMLR: Volume 206. Copyright 2023 by the author(s) \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-48.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-48.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-48.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-49.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-49.txt new file mode 100644 index 0000000000..d40192e235 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-49.txt @@ -0,0 +1 @@ +Copyright 2025 by the author(s).} \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-49.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-49.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-49.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-5.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-5.txt new file mode 100644 index 0000000000..8bd38a67ca --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-5.txt @@ -0,0 +1 @@ +Copyright (c) 2020 Gustavo Magaña López \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-5.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-5.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-5.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-50.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-50.txt new file mode 100644 index 0000000000..17a0fb6cab --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-50.txt @@ -0,0 +1,2 @@ +# Copyright (c) 2017-2019 by the author(s) +# \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-50.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-50.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-50.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-6.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-6.txt new file mode 100644 index 0000000000..ce2f1bceb3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-6.txt @@ -0,0 +1,2 @@ +All credits go to original Author(s). +Publisher of this fork version (Md Nazrul Islam) doest not reserve any Copyright rights. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-6.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-6.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-6.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-7.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-7.txt new file mode 100644 index 0000000000..5fdaa3e1d4 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-7.txt @@ -0,0 +1,4 @@ +Copyright 2018, 2019, 2020, 2021, 2022, 2023, 2024 PySimpleGUI(tm) +Copyright 2024 PySimpleSoft, Inc. +Copyright 2024 MB +Copyright 2024 FreeSimpleGUI (Spencer Phillip Young) \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-7.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-7.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-7.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-8.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-8.txt new file mode 100644 index 0000000000..b66c90e507 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-8.txt @@ -0,0 +1 @@ +Copyright © 2021 The Author(s). Published by Elsevier Inc. All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-8.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-8.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-8.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-9.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-9.txt new file mode 100644 index 0000000000..0aba13d892 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-9.txt @@ -0,0 +1 @@ +Copyright © 2022 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-9.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-9.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-9.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors From df30ae5bba7915ed1c1f7627091b6f9a97e3968d Mon Sep 17 00:00:00 2001 From: Philippe Ombredanne Date: Tue, 7 Jul 2026 23:17:23 +0200 Subject: [PATCH 09/13] Detect copyrights with parens/onwards/beyond Signed-off-by: Philippe Ombredanne --- src/cluecode/copyrights.py | 27 ++++++++++++++-- .../copy-with-auth-parens-dot-10.txt.yml | 4 +++ .../copy-with-auth-parens-dot-12.txt.yml | 4 +++ .../copy-with-auth-parens-dot-13.txt.yml | 4 +++ .../copy-with-auth-parens-dot-15.txt.yml | 2 ++ .../copy-with-auth-parens-dot-16.txt.yml | 4 +++ .../copy-with-auth-parens-dot-17.txt.yml | 4 +++ .../copy-with-auth-parens-dot-18.txt.yml | 4 +++ .../copy-with-auth-parens-dot-19.txt.yml | 4 +++ .../copy-with-auth-parens-dot-2.txt.yml | 4 +++ .../copy-with-auth-parens-dot-20.txt.yml | 4 +++ .../copy-with-auth-parens-dot-21.txt.yml | 4 +++ .../copy-with-auth-parens-dot-22.txt.yml | 4 +++ .../copy-with-auth-parens-dot-23.txt.yml | 4 +++ .../copy-with-auth-parens-dot-24.txt.yml | 4 +++ .../copy-with-auth-parens-dot-25.txt.yml | 4 +++ .../copy-with-auth-parens-dot-26.txt.yml | 4 +++ .../copy-with-auth-parens-dot-27.txt.yml | 4 +++ .../copy-with-auth-parens-dot-28.txt.yml | 4 +++ .../copy-with-auth-parens-dot-3.txt.yml | 4 +++ .../copy-with-auth-parens-dot-30.txt.yml | 4 +++ .../copy-with-auth-parens-dot-32.txt.yml | 2 ++ .../copy-with-auth-parens-dot-33.txt.yml | 4 +++ .../copy-with-auth-parens-dot-34.txt.yml | 4 +++ .../copy-with-auth-parens-dot-35.txt.yml | 4 +++ .../copy-with-auth-parens-dot-36.txt.yml | 4 +++ .../copy-with-auth-parens-dot-37.txt.yml | 4 +++ .../copy-with-auth-parens-dot-38.txt.yml | 6 ++++ .../copy-with-auth-parens-dot-39.txt.yml | 6 ++++ .../copy-with-auth-parens-dot-4.txt.yml | 4 +++ .../copy-with-auth-parens-dot-40.txt.yml | 32 +++++++++++++++++++ .../copy-with-auth-parens-dot-41.txt.yml | 4 +++ .../copy-with-auth-parens-dot-42.txt.yml | 4 +++ .../copy-with-auth-parens-dot-43.txt.yml | 4 +++ .../copy-with-auth-parens-dot-44.txt.yml | 4 +++ .../copy-with-auth-parens-dot-45.txt.yml | 4 +++ .../copy-with-auth-parens-dot-46.txt.yml | 4 +++ .../copy-with-auth-parens-dot-47.txt.yml | 4 +++ .../copy-with-auth-parens-dot-48.txt.yml | 4 +++ .../copy-with-auth-parens-dot-49.txt.yml | 4 +++ .../copy-with-auth-parens-dot-5.txt.yml | 4 +++ .../copy-with-auth-parens-dot-50.txt.yml | 4 +++ .../copy-with-auth-parens-dot-51.txt | 4 +++ .../copy-with-auth-parens-dot-51.txt.yml | 8 +++++ .../copy-with-auth-parens-dot-7.txt.yml | 10 ++++++ .../copy-with-auth-parens-dot-8.txt.yml | 4 +++ .../copy-with-auth-parens-dot-9.txt.yml | 6 ++++ .../copy-with-based-1.txt | 1 + .../copy-with-based-1.txt.yml | 4 +++ .../copy-with-beyond-1.txt | 4 +++ .../copy-with-beyond-1.txt.yml | 10 ++++++ .../copy-with-beyond-2.txt | 1 + .../copy-with-beyond-2.txt.yml | 8 +++++ .../copy-with-beyond-3.txt | 2 ++ .../copy-with-beyond-3.txt.yml | 8 +++++ .../copy-with-beyond-4.txt | 1 + .../copy-with-beyond-4.txt.yml | 8 +++++ .../copy-with-beyond-5.txt | 2 ++ .../copy-with-beyond-5.txt.yml | 8 +++++ .../copy-with-beyond-6.txt | 9 ++++++ .../copy-with-beyond-6.txt.yml | 16 ++++++++++ .../copy-with-onwards-1.txt | 1 + .../copy-with-onwards-1.txt.yml | 8 +++++ .../copy-with-onwards-10.txt | 1 + .../copy-with-onwards-10.txt.yml | 8 +++++ .../copy-with-onwards-11.txt | 3 ++ .../copy-with-onwards-11.txt.yml | 10 ++++++ .../copy-with-onwards-12.txt | 1 + .../copy-with-onwards-12.txt.yml | 6 ++++ .../copy-with-onwards-13.txt | 1 + .../copy-with-onwards-13.txt.yml | 8 +++++ .../copy-with-onwards-2.txt | 2 ++ .../copy-with-onwards-2.txt.yml | 8 +++++ .../copy-with-onwards-3.txt | 5 +++ .../copy-with-onwards-3.txt.yml | 10 ++++++ .../copy-with-onwards-4.txt | 1 + .../copy-with-onwards-4.txt.yml | 8 +++++ .../copy-with-onwards-5.txt | 1 + .../copy-with-onwards-5.txt.yml | 8 +++++ .../copy-with-onwards-6.txt | 2 ++ .../copy-with-onwards-6.txt.yml | 8 +++++ .../copy-with-onwards-7.txt | 6 ++++ .../copy-with-onwards-7.txt.yml | 12 +++++++ .../copy-with-onwards-8.txt | 1 + .../copy-with-onwards-8.txt.yml | 8 +++++ .../copy-with-onwards-9.txt | 2 ++ .../copy-with-onwards-9.txt.yml | 8 +++++ .../misco3/apache-mit-copyright.txt.yml | 7 ++++ 88 files changed, 475 insertions(+), 2 deletions(-) create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-51.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-51.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-based-1.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-based-1.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-1.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-1.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-2.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-2.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-3.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-3.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-4.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-4.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-5.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-5.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-6.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-6.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-1.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-1.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-10.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-10.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-11.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-11.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-12.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-12.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-13.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-13.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-2.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-2.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-3.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-3.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-4.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-4.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-5.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-5.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-6.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-6.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-7.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-7.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-8.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-8.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-9.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-9.txt.yml diff --git a/src/cluecode/copyrights.py b/src/cluecode/copyrights.py index a381f4a387..e89ea4a4d0 100644 --- a/src/cluecode/copyrights.py +++ b/src/cluecode/copyrights.py @@ -1003,6 +1003,8 @@ def build_detection_from_node( (r'^[a-z]{,5}\[!?]+', 'JUNK'), (r'^(fprintf|stderr)$', 'JUNK'), + (r'^[Aa]uthor\(s\)\.?$', 'AUTHDOT'), + # func call with short var in minified code (r'^\w{2,6}\([a-z, ]{1,6}\)', 'JUNK'), @@ -2047,9 +2049,9 @@ def build_detection_from_node( (r'^[Aa]uthor$', 'AUTH'), (r'^[Aa]uthor\.$', 'AUTHDOT'), (r'^[Aa]uthors?\.$', 'AUTHDOT'), + (r'^[Aa]uthor\(s\)\.?$', 'AUTHDOT'), (r'^([Aa]uthors|author\')$', 'AUTHS'), (r'^[Aa]uthor\(s\)$', 'AUTHS'), - (r'^[Aa]uthor\(s\)\.?$', 'AUTHDOT'), # as javadoc (r'^@[Aa]uthors?:?$', 'AUTH'), @@ -2219,6 +2221,12 @@ def build_detection_from_node( # all other cardinal numbers (r'^-?[0-9]+(.[0-9]+)?[\.,]?$', 'CD'), + # onwards used in year ranges + (r'^onwards,?$', 'ONWARDS'), + # beyond is the same + (r'^beyond,?$', 'ONWARDS'), + + ############################################################################ # All caps and proper nouns ############################################################################ @@ -2409,6 +2417,9 @@ def build_detection_from_node( # 5 Jan 2003 YR-RANGE: { } #72.3 + + # 2024 and? onwards + YR-RANGE: {?} ####################################### @@ -3071,6 +3082,9 @@ def build_detection_from_node( # Copyright base-x contributors (c) 2016 COPYRIGHT: {+ } #22793.2 + # Copyright © 2021 Ha and Maguire. + COPYRIGHT: {+ } #22793.31 + # Copyright (c) 2017 odahcam # Copyright (C) 2006 XStream committers. # Copyright (c) 2019-2021, Open source contributors. @@ -3109,6 +3123,9 @@ def build_detection_from_node( COPYRIGHT2: {+ ? + *} #2280 COPYRIGHT2: {??} #2280-12 + # Copyright (c) 1995-2012 held by the author(s). All rights reserved.' + COPYRIGHT: {} #2280-40 + COPYRIGHT: { ? ? } #2280-4 # using #2280 above: Copyright 2018 Developers of the Rand project @@ -3319,7 +3336,8 @@ def build_detection_from_node( COPYRIGHT: { } #2841 # Copyright (c) 1995-2018 The PNG Reference Library Authors. (with and without trailing dot) - COPYRIGHT: { } #35011 + # Copyright 2001 - 2009 by the original author(s). + COPYRIGHT: { {0,2} } #35011 ############ All right reserved in the middle ############################## @@ -3437,6 +3455,11 @@ def build_detection_from_node( NAME-EMAIL: { ?} #157999.14 COPYRIGHT: { + } #157999.14 + # Copyright (C) 2011-2012 The OpenTSDB Authors. + COPYRIGHT: { } #160000 + + # (c) The Author(s). + COPYRIGHT: { } ####################################### # Copyright is held by .... diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-10.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-10.txt.yml index b11f4412e3..6442df3f94 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-10.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-10.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2010 - 2014 lovepsone +holders: + - lovepsone diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-12.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-12.txt.yml index b11f4412e3..d75dd0e7f3 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-12.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-12.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2018 the Author(s) +holders: + - the Author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-13.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-13.txt.yml index b11f4412e3..952e993dcd 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-13.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-13.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2021 The Author(s). Published by Elsevier B.V. +holders: + - The Author(s). Published by Elsevier B.V. diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-15.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-15.txt.yml index b11f4412e3..5147cc6b0d 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-15.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-15.txt.yml @@ -2,3 +2,5 @@ what: - copyrights - holders - authors +copyrights: + - COPYRIGHT (c) 2024 diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-16.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-16.txt.yml index b11f4412e3..52de1f99ef 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-16.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-16.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 1995-2012 held by the author(s) +holders: + - the author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-17.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-17.txt.yml index b11f4412e3..8dc76b0e49 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-17.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-17.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - (c) Don Brutzman and Len Daly +holders: + - Don Brutzman and Len Daly diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-18.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-18.txt.yml index b11f4412e3..e32ccb7565 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-18.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-18.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 1995-2008 held by the author(s) +holders: + - the author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-19.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-19.txt.yml index b11f4412e3..506e9c2182 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-19.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-19.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) YEAR i-MSCP Team +holders: + - i-MSCP Team diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-2.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-2.txt.yml index b11f4412e3..15d485c3fc 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-2.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-2.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright 2018 The Abseil Authors +holders: + - The Abseil Authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-20.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-20.txt.yml index b11f4412e3..4c708a635e 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-20.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-20.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright 2011 the above author(s) +holders: + - the above author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-21.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-21.txt.yml index b11f4412e3..8cf2eefbfc 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-21.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-21.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2011 onwards by Yury V. Zaytsev +holders: + - Yury V. Zaytsev diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-22.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-22.txt.yml index b11f4412e3..4232d28a0a 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-22.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-22.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright 2001 - 2009 by the original author(s) +holders: + - the original author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-23.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-23.txt.yml index b11f4412e3..f19db7a65a 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-23.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-23.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - (c) 2025 The Author(s) +holders: + - The Author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-24.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-24.txt.yml index b11f4412e3..40b0830437 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-24.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-24.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - (c) The Author(s) +holders: + - The Author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-25.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-25.txt.yml index b11f4412e3..244509caf7 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-25.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-25.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - (c) 2025 Copyright held by the owner/author(s) +holders: + - the owner/author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-26.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-26.txt.yml index b11f4412e3..549350b78f 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-26.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-26.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - (c) 2020 The Author(s) +holders: + - The Author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-27.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-27.txt.yml index b11f4412e3..549350b78f 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-27.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-27.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - (c) 2020 The Author(s) +holders: + - The Author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-28.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-28.txt.yml index b11f4412e3..549350b78f 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-28.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-28.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - (c) 2020 The Author(s) +holders: + - The Author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-3.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-3.txt.yml index b11f4412e3..ce91f6e3cd 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-3.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-3.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright 2009 The Go Authors +holders: + - The Go Authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-30.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-30.txt.yml index b11f4412e3..c1953b7621 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-30.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-30.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - (c) 2022. The Author(s) +holders: + - The Author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-32.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-32.txt.yml index b11f4412e3..a9598141d7 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-32.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-32.txt.yml @@ -2,3 +2,5 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2010-2012 The diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-33.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-33.txt.yml index b11f4412e3..866917a09b 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-33.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-33.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2026, the Luo project authors +holders: + - the Luo project authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-34.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-34.txt.yml index b11f4412e3..a37e306e4d 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-34.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-34.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2012-2016 The go-diff Authors +holders: + - The go-diff Authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-35.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-35.txt.yml index b11f4412e3..e8a1222d0e 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-35.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-35.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2020 Beni +holders: + - Beni diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-36.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-36.txt.yml index b11f4412e3..53a4d06137 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-36.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-36.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2020 Kell, Heyden and Pretorius +holders: + - Kell, Heyden and Pretorius diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-37.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-37.txt.yml index b11f4412e3..f5c8f5c0f5 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-37.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-37.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 1999-2026 John Wiley & Sons, Inc (https://www.wiley.com) or related companies +holders: + - John Wiley & Sons, Inc or related companies diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-38.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-38.txt.yml index b11f4412e3..0a1b120372 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-38.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-38.txt.yml @@ -2,3 +2,9 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2025 by Author/s + - Copyright (c) 2021 Ha and Maguire +holders: + - Author/s + - Ha and Maguire diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-39.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-39.txt.yml index b11f4412e3..4a25ce6838 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-39.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-39.txt.yml @@ -2,3 +2,9 @@ what: - copyrights - holders - authors +copyrights: + - Copyright 2020 Marius Wilms, Christoph Labacher + - Copyright 2018 Atelier Disko +holders: + - Marius Wilms, Christoph Labacher + - Atelier Disko diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-4.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-4.txt.yml index b11f4412e3..2cf9d97948 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-4.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-4.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2011-2012 The OpenTSDB Authors +holders: + - The OpenTSDB Authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-40.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-40.txt.yml index b11f4412e3..b11a4618ac 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-40.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-40.txt.yml @@ -2,3 +2,35 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 1997-2001 Geoff Wing + - Copyright (c) 2000,2001 Teepanis Chachiyo + - Copyright (c) 2001 Marius Gedminas + - Copyright (c) 2003 David Hull + - Copyright (c) 2003 Yamanobe Kiichiro + - Copyright (c) 2003 Mamoru Komachi + - Copyright (c) 2005 William P. Y. Hadisoeseno + - Copyright (c) 2004-2005 Jingmin Zhou + - Copyright (c) 1992 John Bovey, University of Kent at Canterbury + - Copyright (c) 1994 Robert Nation + - Copyright (c) 1996 Chuck Blake + - Copyright (c) 1997 mj olesen + - Copyright (c) 1997,1998 Oezguer Kesim + - Copyright (c) 1998-2001 Geoff Wing + - Copyright (c) 2003-2008 Marc Lehmann +holders: + - Geoff Wing + - Teepanis Chachiyo + - Marius Gedminas + - David Hull + - Yamanobe Kiichiro + - Mamoru Komachi + - William P. Y. Hadisoeseno + - Jingmin Zhou + - John Bovey, University of Kent at Canterbury + - Robert Nation + - Chuck Blake + - mj olesen + - Oezguer Kesim + - Geoff Wing + - Marc Lehmann diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-41.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-41.txt.yml index b11f4412e3..f4ce099bd8 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-41.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-41.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright 2016 by the author(s) +holders: + - the author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-42.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-42.txt.yml index b11f4412e3..128f36cfb8 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-42.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-42.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2012, the above named author(s) +holders: + - the above named author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-43.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-43.txt.yml index b11f4412e3..a9f028c029 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-43.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-43.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2016 the Institute of Power System Optimization, Guangxi University +holders: + - the Institute of Power System Optimization, Guangxi University diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-44.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-44.txt.yml index b11f4412e3..12c8e815b9 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-44.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-44.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright 2018, The Author(s) +holders: + - The Author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-45.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-45.txt.yml index b11f4412e3..b40bc13646 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-45.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-45.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2020 The Author(s). Published by Elsevier Masson SAS +holders: + - The Author(s). Published by Elsevier Masson SAS diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-46.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-46.txt.yml index b11f4412e3..a828da5770 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-46.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-46.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2021 the Author(s) +holders: + - the Author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-47.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-47.txt.yml index b11f4412e3..04d04d2443 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-47.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-47.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2020 The Author(s). Published by Elsevier Inc. +holders: + - The Author(s). Published by Elsevier Inc. diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-48.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-48.txt.yml index b11f4412e3..262ed833d2 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-48.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-48.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright 2023 by the author(s) +holders: + - the author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-49.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-49.txt.yml index b11f4412e3..050076779c 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-49.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-49.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright 2025 by the author(s) +holders: + - the author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-5.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-5.txt.yml index b11f4412e3..ed404145ba 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-5.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-5.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2020 Gustavo Magana Lopez +holders: + - Gustavo Magana Lopez diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-50.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-50.txt.yml index b11f4412e3..49be1226fa 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-50.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-50.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2017-2019 by the author(s) +holders: + - the author(s) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-51.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-51.txt new file mode 100644 index 0000000000..2dfcda7819 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-51.txt @@ -0,0 +1,4 @@ + +Copyright © 2021 Ha and Maguire. +2021 +Ha and Maguire \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-51.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-51.txt.yml new file mode 100644 index 0000000000..ae8d96d765 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-51.txt.yml @@ -0,0 +1,8 @@ +what: + - copyrights + - holders + - authors +copyrights: + - Copyright (c) 2021 Ha and Maguire +holders: + - Ha and Maguire diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-7.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-7.txt.yml index b11f4412e3..1684c0f6ed 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-7.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-7.txt.yml @@ -2,3 +2,13 @@ what: - copyrights - holders - authors +copyrights: + - Copyright 2018, 2019, 2020, 2021, 2022, 2023, 2024 PySimpleGUI (tm) + - Copyright 2024 PySimpleSoft, Inc. + - Copyright 2024 MB + - Copyright 2024 FreeSimpleGUI (Spencer Phillip Young) +holders: + - PySimpleGUI (tm) + - PySimpleSoft, Inc. + - MB + - FreeSimpleGUI (Spencer Phillip Young) diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-8.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-8.txt.yml index b11f4412e3..46896f1ef7 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-8.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-8.txt.yml @@ -2,3 +2,7 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2021 The Author(s). Published by Elsevier Inc. +holders: + - The Author(s). Published by Elsevier Inc. diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-9.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-9.txt.yml index b11f4412e3..e6e4cc0fce 100644 --- a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-9.txt.yml +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-auth-parens-dot-9.txt.yml @@ -2,3 +2,9 @@ what: - copyrights - holders - authors +copyrights: + - Copyright (c) 2022 United States Government as represented by the Administrator of the National + Aeronautics and Space Administration +holders: + - United States Government as represented by the Administrator of the National Aeronautics + and Space Administration diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-based-1.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-based-1.txt new file mode 100644 index 0000000000..981a1e86eb --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-based-1.txt @@ -0,0 +1 @@ + * @copyright based on the work by 2013 Itamar Tzadok diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-based-1.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-based-1.txt.yml new file mode 100644 index 0000000000..b11f4412e3 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-based-1.txt.yml @@ -0,0 +1,4 @@ +what: + - copyrights + - holders + - authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-1.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-1.txt new file mode 100644 index 0000000000..cc59c538c8 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-1.txt @@ -0,0 +1,4 @@ + Copyright 2017 and beyond Isomorphic Software, Inc. All rights reserved. + + + * Copyright 2008 and beyond, Isomorphic Software, Inc. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-1.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-1.txt.yml new file mode 100644 index 0000000000..b4826654e8 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-1.txt.yml @@ -0,0 +1,10 @@ +what: + - copyrights + - holders + - authors +copyrights: + - Copyright 2017 and beyond Isomorphic Software, Inc. + - Copyright 2008 and beyond, Isomorphic Software, Inc. +holders: + - Isomorphic Software, Inc. + - Isomorphic Software, Inc. diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-2.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-2.txt new file mode 100644 index 0000000000..53d635c7b1 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-2.txt @@ -0,0 +1 @@ +Copyright 2020 and beyond [unlimitDesign](https://unlimit.design). Codes are released under [the MIT license](https://github.com/unlimitDesign/timbercss/blob/master/LICENSE). diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-2.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-2.txt.yml new file mode 100644 index 0000000000..3b406b272f --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-2.txt.yml @@ -0,0 +1,8 @@ +what: + - copyrights + - holders + - authors +copyrights: + - Copyright 2020 and beyond unlimitDesign (https://unlimit.design) +holders: + - unlimitDesign diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-3.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-3.txt new file mode 100644 index 0000000000..f02ead10f0 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-3.txt @@ -0,0 +1,2 @@ + +Copyright 2014 and beyond The Australian Access Federation (http://www.aaf.edu.au). diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-3.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-3.txt.yml new file mode 100644 index 0000000000..3c0ce2e657 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-3.txt.yml @@ -0,0 +1,8 @@ +what: + - copyrights + - holders + - authors +copyrights: + - Copyright 2014 and beyond The Australian Access Federation (http://www.aaf.edu.au) +holders: + - The Australian Access Federation diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-4.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-4.txt new file mode 100644 index 0000000000..2f83b06a19 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-4.txt @@ -0,0 +1 @@ +[PHPMUSSEL](https://phpmussel.github.io/) COPYRIGHT 2013 and beyond GNU/GPLv2 by [Caleb M (Maikuolan)](https://github.com/Maikuolan). diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-4.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-4.txt.yml new file mode 100644 index 0000000000..675b12d3f6 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-4.txt.yml @@ -0,0 +1,8 @@ +what: + - copyrights + - holders + - authors +copyrights: + - COPYRIGHT 2013 and beyond GNU/GPLv2 +holders: + - GNU/GPLv2 diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-5.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-5.txt new file mode 100644 index 0000000000..8103ec162e --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-5.txt @@ -0,0 +1,2 @@ + +CIDRAM COPYRIGHT 2016 and beyond by Caleb Mazalevskis (Maikuolan). diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-5.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-5.txt.yml new file mode 100644 index 0000000000..113eb16bfa --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-5.txt.yml @@ -0,0 +1,8 @@ +what: + - copyrights + - holders + - authors +copyrights: + - COPYRIGHT 2016 and beyond by Caleb Mazalevskis +holders: + - Caleb Mazalevskis diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-6.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-6.txt new file mode 100644 index 0000000000..b8fb1fde01 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-6.txt @@ -0,0 +1,9 @@ +Copyright 2001 and beyond, Ron Gage - Saginaw, MI + +Copyright 2013 and beyond, Zhaowei Ding. + +Copyright 2010 and beyond, Juan Luis Paz + +Copyright 2013 and beyond | Benbodhi (email : wp@benbodhi.com) + +Copyright 2025 and beyond by AsterionDB, Inc. All rights reserved diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-6.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-6.txt.yml new file mode 100644 index 0000000000..35a4324e83 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-beyond-6.txt.yml @@ -0,0 +1,16 @@ +what: + - copyrights + - holders + - authors +copyrights: + - Copyright 2001 and beyond, Ron Gage - Saginaw, MI + - Copyright 2013 and beyond, Zhaowei Ding + - Copyright 2010 and beyond, Juan Luis Paz + - Copyright 2013 and beyond Benbodhi (email wp@benbodhi.com) + - Copyright 2025 and beyond by AsterionDB, Inc. +holders: + - Ron Gage - Saginaw, MI + - Zhaowei Ding + - Juan Luis Paz + - Benbodhi + - AsterionDB, Inc. diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-1.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-1.txt new file mode 100644 index 0000000000..26acc815f7 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-1.txt @@ -0,0 +1 @@ +* Copyright © 2016 onwards by TNG Consulting Inc. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-1.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-1.txt.yml new file mode 100644 index 0000000000..7d7084514a --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-1.txt.yml @@ -0,0 +1,8 @@ +what: + - copyrights + - holders + - authors +copyrights: + - Copyright (c) 2016 onwards by TNG Consulting Inc. +holders: + - TNG Consulting Inc. diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-10.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-10.txt new file mode 100644 index 0000000000..581d4f0b20 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-10.txt @@ -0,0 +1 @@ +This work is (c) 2017 - onwards by Georgios Gousios and Diomidis Spinellis, \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-10.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-10.txt.yml new file mode 100644 index 0000000000..08d1f2b0ba --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-10.txt.yml @@ -0,0 +1,8 @@ +what: + - copyrights + - holders + - authors +copyrights: + - (c) 2017 - onwards by Georgios Gousios and Diomidis Spinellis +holders: + - Georgios Gousios and Diomidis Spinellis diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-11.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-11.txt new file mode 100644 index 0000000000..c6b569ff1b --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-11.txt @@ -0,0 +1,3 @@ +* @copyright 2014 onwards by edulabs.org and associated programmers + +Copyright © 1999 onwards, [Martin Dougiamas](http://dougiamas.com/) \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-11.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-11.txt.yml new file mode 100644 index 0000000000..bb7d43d88a --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-11.txt.yml @@ -0,0 +1,10 @@ +what: + - copyrights + - holders + - authors +copyrights: + - copyright 2014 onwards by edulabs.org + - Copyright (c) 1999 onwards, Martin Dougiamas (http://dougiamas.com/) +holders: + - edulabs.org + - Martin Dougiamas diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-12.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-12.txt new file mode 100644 index 0000000000..fbcef3001f --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-12.txt @@ -0,0 +1 @@ +Copyright © 2005 onwards by the individual authors of each page \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-12.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-12.txt.yml new file mode 100644 index 0000000000..d31a87e685 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-12.txt.yml @@ -0,0 +1,6 @@ +what: + - copyrights + - holders + - authors +copyrights: + - Copyright (c) 2005 onwards by the diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-13.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-13.txt new file mode 100644 index 0000000000..10e940501f --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-13.txt @@ -0,0 +1 @@ +@copyright 2016-2021 TNG Consulting Inc. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-13.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-13.txt.yml new file mode 100644 index 0000000000..15cb602c0d --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-13.txt.yml @@ -0,0 +1,8 @@ +what: + - copyrights + - holders + - authors +copyrights: + - copyright 2016-2021 TNG Consulting Inc. +holders: + - TNG Consulting Inc. diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-2.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-2.txt new file mode 100644 index 0000000000..7839d7f51a --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-2.txt @@ -0,0 +1,2 @@ +This work is (c) 2017 - onwards by TU Delft, Georgios Gousios and his co-authors +and licensed under the [Creative Commons Attribution-NonCommercial-ShareAlike \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-2.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-2.txt.yml new file mode 100644 index 0000000000..aec850618a --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-2.txt.yml @@ -0,0 +1,8 @@ +what: + - copyrights + - holders + - authors +copyrights: + - (c) 2017 - onwards by TU Delft, Georgios Gousios +holders: + - TU Delft, Georgios Gousios diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-3.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-3.txt new file mode 100644 index 0000000000..4eb78ea683 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-3.txt @@ -0,0 +1,5 @@ +* Copyright (c) 2011 onwards by WeaveBytes InfoTech Pvt. Ltd. + + +All Kleosis code in this folder is Copyright (c) 2010 onwards by +Ken DeVellis and/or the original authors. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-3.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-3.txt.yml new file mode 100644 index 0000000000..b23813e737 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-3.txt.yml @@ -0,0 +1,10 @@ +what: + - copyrights + - holders + - authors +copyrights: + - Copyright (c) 2011 onwards by WeaveBytes InfoTech Pvt. Ltd. + - Copyright (c) 2010 onwards by Ken DeVellis +holders: + - WeaveBytes InfoTech Pvt. Ltd. + - Ken DeVellis diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-4.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-4.txt new file mode 100644 index 0000000000..f9f9c24a6f --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-4.txt @@ -0,0 +1 @@ +Copyright 2004 and onwards by Google Inc. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-4.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-4.txt.yml new file mode 100644 index 0000000000..4b91005c03 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-4.txt.yml @@ -0,0 +1,8 @@ +what: + - copyrights + - holders + - authors +copyrights: + - Copyright 2004 and onwards by Google Inc. +holders: + - Google Inc. diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-5.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-5.txt new file mode 100644 index 0000000000..afb37b187e --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-5.txt @@ -0,0 +1 @@ +MUSHclient is copyright 1995 onwards by Nick Gammon. All rights reserved worldwide. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-5.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-5.txt.yml new file mode 100644 index 0000000000..2e9e5c1da8 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-5.txt.yml @@ -0,0 +1,8 @@ +what: + - copyrights + - holders + - authors +copyrights: + - copyright 1995 onwards by Nick Gammon +holders: + - Nick Gammon diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-6.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-6.txt new file mode 100644 index 0000000000..3b836480be --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-6.txt @@ -0,0 +1,2 @@ +Copyright (c) 2003 onwards by Metamedia Technology Co., Ltd. + All rights reserved. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-6.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-6.txt.yml new file mode 100644 index 0000000000..8753977c03 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-6.txt.yml @@ -0,0 +1,8 @@ +what: + - copyrights + - holders + - authors +copyrights: + - Copyright (c) 2003 onwards by Metamedia Technology Co., Ltd. +holders: + - Metamedia Technology Co., Ltd. diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-7.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-7.txt new file mode 100644 index 0000000000..9866a68a1a --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-7.txt @@ -0,0 +1,6 @@ +Copyright (C) 2005 and onwards by AmbieSense Limited, + and/or its subsidiaries and co-founders. + + +copyright = '2006 and onwards by the authors' +author = 'Neos Team and Contributors' \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-7.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-7.txt.yml new file mode 100644 index 0000000000..a9c5999976 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-7.txt.yml @@ -0,0 +1,12 @@ +what: + - copyrights + - holders + - authors +copyrights: + - Copyright (c) 2005 and onwards by AmbieSense Limited, and/or its subsidiaries + - copyright 2006 and onwards by the authors +holders: + - AmbieSense Limited, and/or its subsidiaries + - the authors +authors: + - Neos Team and Contributors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-8.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-8.txt new file mode 100644 index 0000000000..80aa75e556 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-8.txt @@ -0,0 +1 @@ +Copyright 2008 onwards by the Wire Team \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-8.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-8.txt.yml new file mode 100644 index 0000000000..c6f1e841d9 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-8.txt.yml @@ -0,0 +1,8 @@ +what: + - copyrights + - holders + - authors +copyrights: + - Copyright 2008 onwards by the Wire Team +holders: + - the Wire Team diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-9.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-9.txt new file mode 100644 index 0000000000..158971fce2 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-9.txt @@ -0,0 +1,2 @@ +This work is (c) 2017 - onwards by TU Delft, Georgios Gousios and the book +co-authors \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-9.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-9.txt.yml new file mode 100644 index 0000000000..aec850618a --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/copy-with-onwards-9.txt.yml @@ -0,0 +1,8 @@ +what: + - copyrights + - holders + - authors +copyrights: + - (c) 2017 - onwards by TU Delft, Georgios Gousios +holders: + - TU Delft, Georgios Gousios diff --git a/tests/cluecode/data/copyrights/misco3/apache-mit-copyright.txt.yml b/tests/cluecode/data/copyrights/misco3/apache-mit-copyright.txt.yml index d2d767fb09..72741dc978 100644 --- a/tests/cluecode/data/copyrights/misco3/apache-mit-copyright.txt.yml +++ b/tests/cluecode/data/copyrights/misco3/apache-mit-copyright.txt.yml @@ -3,3 +3,10 @@ what: - holders - holders_summary - authors +copyrights: + - copyright its authors +holders: + - its authors +holders_summary: + - value: its authors + count: 1 From 7fd389c2f668d68edd0a63f4db443f1644791238 Mon Sep 17 00:00:00 2001 From: Philippe Ombredanne Date: Wed, 8 Jul 2026 17:23:24 +0200 Subject: [PATCH 10/13] Add tests for copyrights with trailing "Authors." Reference: https://github.com/aboutcode-org/scancode-toolkit/issues/5125 Reference: https://github.com/aboutcode-org/scancode-toolkit/pull/5225 Reported-by: Frank Viernau @fviernau Assisted-by: Helio Chissini de Castro @heliocastro Signed-off-by: Philippe Ombredanne --- .../copyrights_with_parens/cop-auth-dot-1.txt | 7 +++++++ .../copyrights_with_parens/cop-auth-dot-1.txt.yml | 13 +++++++++++++ .../copyrights_with_parens/cop-auth-dot-2.txt | 1 + .../copyrights_with_parens/cop-auth-dot-2.txt.yml | 7 +++++++ .../copyrights_with_parens/cop-auth-dot-3.txt | 1 + .../copyrights_with_parens/cop-auth-dot-3.txt.yml | 7 +++++++ 6 files changed, 36 insertions(+) create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-1.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-1.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-2.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-2.txt.yml create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-3.txt create mode 100644 tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-3.txt.yml diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-1.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-1.txt new file mode 100644 index 0000000000..fb84d124cc --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-1.txt @@ -0,0 +1,7 @@ +Copyright 2019 The logr Authors. | Copyright 2020 The logr Authors. + + +Copyright 2019 - 2021 The logr Authors. + + +Copyright 2019 The logr Authors. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-1.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-1.txt.yml new file mode 100644 index 0000000000..e410901c47 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-1.txt.yml @@ -0,0 +1,13 @@ +what: + - copyrights + - holders +copyrights: + - Copyright 2019 The logr Authors + - Copyright 2020 The logr Authors + - Copyright 2019 - 2021 The logr Authors + - Copyright 2019 The logr Authors +holders: + - The logr Authors + - The logr Authors + - The logr Authors + - The logr Authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-2.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-2.txt new file mode 100644 index 0000000000..ff753bfaa0 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-2.txt @@ -0,0 +1 @@ +Copyright 2022 The JSpecify Authors. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-2.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-2.txt.yml new file mode 100644 index 0000000000..55dfb159a6 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-2.txt.yml @@ -0,0 +1,7 @@ +what: + - copyrights + - holders +copyrights: + - Copyright 2022 The JSpecify Authors +holders: + - The JSpecify Authors diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-3.txt b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-3.txt new file mode 100644 index 0000000000..80e9149880 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-3.txt @@ -0,0 +1 @@ +Copyright © 2004-2009 the Tomboy original authors. \ No newline at end of file diff --git a/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-3.txt.yml b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-3.txt.yml new file mode 100644 index 0000000000..3a802b1284 --- /dev/null +++ b/tests/cluecode/data/copyrights/copyrights_with_parens/cop-auth-dot-3.txt.yml @@ -0,0 +1,7 @@ +what: + - copyrights + - holders +copyrights: + - Copyright (c) 2004-2009 the Tomboy original authors +holders: + - the Tomboy original authors From a565e7c91ad422624f997c87f133186c6107f0c9 Mon Sep 17 00:00:00 2001 From: Helio Chissini de Castro Date: Mon, 6 Jul 2026 17:30:52 +0200 Subject: [PATCH 11/13] Merge cariad-tech/develop Signed-off-by: Philippe Ombredanne --- src/cluecode/copyrights.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/cluecode/copyrights.py b/src/cluecode/copyrights.py index eff44ac55a..2987608416 100644 --- a/src/cluecode/copyrights.py +++ b/src/cluecode/copyrights.py @@ -3334,6 +3334,10 @@ def build_detection_from_node( # Copyright (c) 1995-2018 The PNG Reference Library Authors. (with and without trailing dot) # Copyright 2001 - 2009 by the original author(s). + # Copyright 2021 The logr Authors. + # Copyright 2022 The JSpecify Authors. + # attach a trailing "Authors." even when the preceding name was already + # absorbed into the COPYRIGHT node (e.g. names tagged NN like "logr", "JSpecify") COPYRIGHT: { {0,2} } #35011 ############ All right reserved in the middle ############################## From 94da6c4c8783e8b1f48688b210fc7933d671ad4e Mon Sep 17 00:00:00 2001 From: Philippe Ombredanne Date: Thu, 9 Jul 2026 11:20:41 +0200 Subject: [PATCH 12/13] Update changelog for improved copyrights Signed-off-by: Philippe Ombredanne --- CHANGELOG.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index d9a5a6b402..cf4db41092 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -8,6 +8,9 @@ Next release ``licensedcode-data``. https://github.com/aboutcode-org/scancode-toolkit/pull/5056 +- Improve copyright detection for statements with parens or trailing "authors" + + v33.0.0rc1 - 2026-05-14 ------------------------ From 2029cf19ead5c0d8df03f197771ffbb8f667392a Mon Sep 17 00:00:00 2001 From: Philippe Ombredanne Date: Thu, 9 Jul 2026 20:01:40 +0200 Subject: [PATCH 13/13] Fix unrelated CLI test Signed-off-by: Philippe Ombredanne --- tests/scancode/test_cli.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/scancode/test_cli.py b/tests/scancode/test_cli.py index 9d038f71e6..4878770880 100644 --- a/tests/scancode/test_cli.py +++ b/tests/scancode/test_cli.py @@ -167,8 +167,8 @@ def test_scan_info_returns_full_root(): result_data = json.loads(open(result_file).read()) file_paths = [f['path'] for f in result_data['files']] assert len(file_paths) == 12 - # note that we strip paths from leading and trailing slashes - root = fileutils.as_posixpath(test_dir).strip('/') + # note that we strip paths from trailing slashes + root = fileutils.as_posixpath(test_dir).rstrip('/') assert all(p.startswith(root) for p in file_paths) @@ -184,7 +184,7 @@ def test_scan_info_returns_correct_full_root_with_single_file(): scanned_file = files[0] # and we check that the path is the full path without repeating the file name # note that the path never contain leading and trailing slashes - assert scanned_file['path'] == fileutils.as_posixpath(test_file).strip('/') + assert scanned_file['path'] == fileutils.as_posixpath(test_file).rstrip('/') def test_scan_info_returns_does_not_strip_root_with_single_file():