Buckets:
| from __future__ import absolute_import | |
| from __future__ import print_function | |
| from __future__ import unicode_literals | |
| import argparse | |
| import io | |
| import re | |
| import sys | |
| import os | |
| import datetime | |
| COPYRIGHT = '''Copyright (c) 2026 SandAI. All Rights Reserved. | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License.''' | |
| def _generate_copyright(comment_mark): | |
| copyright=COPYRIGHT.split(os.linesep) | |
| header = copyright[0].rstrip() | |
| p = re.search('(\d{4})', header).group(0) | |
| now = datetime.datetime.now() | |
| header = header.replace(p,str(now.year)) | |
| ans=[comment_mark + " " + header + os.linesep] | |
| for idx, line in enumerate(copyright[1:]): | |
| ans.append(comment_mark + " " + line.rstrip() + os.linesep) | |
| return ans | |
| def _get_comment_mark(path): | |
| lang_type=re.compile(r"\.(py|sh)$") | |
| if lang_type.search(path) is not None: | |
| return "#" | |
| lang_type=re.compile(r"\.(h|c|hpp|cc|cpp|cu|go|cuh|proto)$") | |
| if lang_type.search(path) is not None: | |
| return "//" | |
| return None | |
| RE_ENCODE = re.compile(r"^[ \t\v]*#.*?coding[:=]", re.IGNORECASE) | |
| RE_COPYRIGHT = re.compile(r".*Copyright \(c\) \d{4}", re.IGNORECASE) | |
| RE_SHEBANG = re.compile(r"^[ \t\v]*#[ \t]?\!") | |
| def _check_copyright(path): | |
| head=[] | |
| try: | |
| with open(path) as f: | |
| head = [next(f) for x in range(4)] | |
| except StopIteration: | |
| pass | |
| for idx, line in enumerate(head): | |
| if RE_COPYRIGHT.search(line) is not None: | |
| return True | |
| return False | |
| def generate_copyright(path, comment_mark): | |
| original_contents = io.open(path, encoding="utf-8").readlines() | |
| head = original_contents[0:4] | |
| insert_line_no=0 | |
| for i, line in enumerate(head): | |
| if RE_ENCODE.search(line) or RE_SHEBANG.search(line): | |
| insert_line_no=i+1 | |
| copyright = _generate_copyright(comment_mark) | |
| if insert_line_no == 0: | |
| new_contents = copyright | |
| if len(original_contents) > 0 and len(original_contents[0].strip()) != 0: | |
| new_contents.append(os.linesep) | |
| new_contents.extend(original_contents) | |
| else: | |
| new_contents=original_contents[0:insert_line_no] | |
| new_contents.append(os.linesep) | |
| new_contents.extend(copyright) | |
| if len(original_contents) > insert_line_no and len(original_contents[insert_line_no].strip()) != 0: | |
| new_contents.append(os.linesep) | |
| new_contents.extend(original_contents[insert_line_no:]) | |
| new_contents="".join(new_contents) | |
| with io.open(path, 'w') as output_file: | |
| output_file.write(new_contents) | |
| def main(argv=None): | |
| parser = argparse.ArgumentParser( | |
| description='Checker for copyright declaration.') | |
| parser.add_argument('filenames', nargs='*', help='Filenames to check') | |
| args = parser.parse_args(argv) | |
| retv = 0 | |
| for path in args.filenames: | |
| comment_mark = _get_comment_mark(path) | |
| if comment_mark is None: | |
| print("warning:Unsupported file", path, file=sys.stderr) | |
| continue | |
| if _check_copyright(path): | |
| continue | |
| generate_copyright(path, comment_mark) | |
| if __name__ == '__main__': | |
| exit(main()) | |
Xet Storage Details
- Size:
- 3.64 kB
- Xet hash:
- 9fde62758ba00928e925e7591a7ba1651b04efd2bd3df4a797b43dbc3903d614
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.