diff --git a/.github/workflows/README.md b/.github/workflows/README.md index c060b7f..4b1900d 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -47,16 +47,15 @@ Configuration inheritance/overrides are documented in each workflow section belo ### build.yaml -Docker-based build and test workflow using the `scritical/private-dev` image. -Runs GCC and/or Intel jobs based on `GCC` and `INTEL` input flags. +Docker-based build and test workflow using the `scritical/private-dev` image with GCC and Intel compilers. | Name | Type | Default | Description | | :--- | :--- | :------ | :---------- | | `TIMEOUT` | number | `120` | Runtime allowed for the job, in minutes | | `GCC_CONFIG` | string | `""` | Path to GCC configuration file (from repository root) | | `INTEL_CONFIG` | string | `""` | Path to Intel configuration file (from repository root) | -| `BUILD_SCRIPT` | string | `.github/build_real.sh` | Path to build script. Empty string skips this step | -| `TEST_SCRIPT` | string | `.github/test_real.sh` | Path to test script. Empty string skips this step | +| `BUILD_SCRIPT` | string | `.github/build.sh` | Path to build script. Empty string skips this step | +| `TEST_SCRIPT` | string | `.github/test.sh` | Path to test script. Empty string skips this step | **Required Secrets:** | Name | Description | @@ -75,6 +74,7 @@ The workflow checks out the org-wide Ruff configuration from `scritical/.github` | Name | Type | Default | Description | | :--- | :--- | :------ | :---------- | +| `TIMEOUT` | number | `20` | Runtime allowed for the job, in minutes | | `MCCABE` | boolean | `false` | Enable McCabe complexity check (pass/fail, max complexity = 10) | | `ISORT` | boolean | `false` | Enable import sorting check (pass/fail) | @@ -151,7 +151,7 @@ Fortran 90 code formatting checks using fprettify. Enforces branch naming conventions for pull requests: - For PRs targeting `main`, source branches must start with `feature-`, `bugfix-`, or `hotfix-`. -- For PRs targeting `client-*`, source branches must start with `feature-`, `bugfix-`, or `hotfix-`. +- For PRs targeting `client-*`, source branches must be `main` or start with `feature-`, `bugfix-`, or `hotfix-`. ## Setting Up Workflows @@ -187,7 +187,7 @@ jobs: ### Step 2: Write Build Script -Create `.github/build_real.sh` in your repository: +Create `.github/build.sh` in your repository: ```bash #!/bin/bash @@ -199,7 +199,7 @@ pip install . ### Step 3: Write Test Script -Create `.github/test_real.sh` in your repository: +Create `.github/test.sh` in your repository: ```bash #!/bin/bash @@ -210,7 +210,7 @@ testflo -v . -n 1 ### Step 4: Add Secrets -In your orginaization settings, add the required secrets: +In your organization settings, add the required secrets: - `DOCKER_USER` - Docker organization name - `DOCKER_OAT` - Docker Organization Access Token for pulling private images diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 8bdf328..38c48ca 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -15,11 +15,11 @@ on: description: "Path to Intel configuration file" BUILD_SCRIPT: type: string - default: ".github/build_real.sh" + default: ".github/build.sh" description: "Path to build script" TEST_SCRIPT: type: string - default: ".github/test_real.sh" + default: ".github/test.sh" description: "Path to test script" secrets: DOCKER_USER: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index 83fabbd..0000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# pre-commit doesn't recognize cgns files as binary and tries to format them, so we need to exclude them. -# Also exclude Tapenade-generated Fortran files (ending with _d.f90 or _b.f90 in our codes) because we run checks that expect these files to be exactly as Tapenade generated them. -exclude: | - (?x)^( - .*\.cgns| - ^src\/.*_d\.f90| - ^src\/.*_b\.f90 - )$ -repos: -- repo: https://github.com/pre-commit/pre-commit-hooks - rev: v6.0.0 - hooks: - - id: trailing-whitespace - - id: end-of-file-fixer - - id: check-yaml - - id: check-toml - - id: check-json - - id: mixed-line-ending - - id: check-merge-conflict - - id: debug-statements -- repo: https://github.com/astral-sh/ruff-pre-commit - # Ruff version. - rev: v0.12.10 - hooks: - # Run the linter. - - id: ruff-check - args: [ --fix, --exit-non-zero-on-fix ] - # Run the formatter. - - id: ruff-format diff --git a/.pylintrc b/.pylintrc deleted file mode 100644 index e8ba903..0000000 --- a/.pylintrc +++ /dev/null @@ -1,883 +0,0 @@ -[MASTER] - -# A comma-separated list of package or module names from where C extensions may -# be loaded. Extensions are loading into the active Python interpreter and may -# run arbitrary code. -extension-pkg-allow-list= - -# A comma-separated list of package or module names from where C extensions may -# be loaded. Extensions are loading into the active Python interpreter and may -# run arbitrary code. (This is an alternative name to extension-pkg-allow-list -# for backward compatibility.) -extension-pkg-whitelist= - -# Return non-zero exit code if any of these messages/categories are detected, -# even if score is above --fail-under value. Syntax same as enable. Messages -# specified are enabled, while categories only check already-enabled messages. -fail-on= - -# Specify a score threshold to be exceeded before program exits with error. -fail-under=10.0 - -# Files or directories to be skipped. They should be base names, not paths. -ignore=CVS - -# Add files or directories matching the regex patterns to the ignore-list. The -# regex matches against paths and can be in Posix or Windows format. -ignore-paths= - -# Files or directories matching the regex patterns are skipped. The regex -# matches against base names, not paths. -ignore-patterns= - -# Python code to execute, usually for sys.path manipulation such as -# pygtk.require(). -#init-hook= - -# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the -# number of processors available to use. -jobs=1 - -# Control the amount of potential inferred values when inferring a single -# object. This can help the performance when dealing with large functions or -# complex, nested conditions. -limit-inference-results=100 - -# List of plugins (as comma separated values of python module names) to load, -# usually to register additional checkers. -load-plugins= - -# Pickle collected data for later comparisons. -persistent=yes - -# Minimum Python version to use for version dependent checks. Will default to -# the version used to run pylint. -py-version=3.9 - -# When enabled, pylint would attempt to guess common misconfiguration and emit -# user-friendly hints instead of false-positive error messages. -suggestion-mode=yes - -# Allow loading of arbitrary C extensions. Extensions are imported into the -# active Python interpreter and may run arbitrary code. -unsafe-load-any-extension=no - - -[MESSAGES CONTROL] - -# Only show warnings with the listed confidence levels. Leave empty to show -# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED. -confidence= - -# Disable the message, report, category or checker with the given id(s). You -# can either give multiple identifiers separated by comma (,) or put this -# option multiple times (only on the command line, not in the configuration -# file where it should appear only once). You can also use "--disable=all" to -# disable everything first and then reenable specific checks. For example, if -# you want to run only the similarities checker, you can use "--disable=all -# --enable=similarities". If you want to run only the classes checker, but have -# no Warning level messages displayed, use "--disable=all --enable=classes -# --disable=W". -disable=invalid-name, - disallowed-name, - empty-docstring, - unneeded-not, - missing-module-docstring, - missing-class-docstring, - missing-function-docstring, - singleton-comparison, - unidiomatic-typecheck, - non-ascii-name, - consider-using-enumerate, - consider-iterating-dictionary, - bad-classmethod-argument, - bad-mcs-method-argument, - bad-mcs-classmethod-argument, - single-string-used-for-slots, - consider-using-dict-items, - use-maxsplit-arg, - use-sequence-for-iteration, - consider-using-f-string, - line-too-long, - too-many-lines, - trailing-whitespace, - missing-final-newline, - trailing-newlines, - multiple-statements, - superfluous-parens, - mixed-line-endings, - unexpected-line-ending-format, - wrong-spelling-in-comment, - wrong-spelling-in-docstring, - invalid-characters-in-docstring, - multiple-imports, - wrong-import-order, - ungrouped-imports, - wrong-import-position, - useless-import-alias, - import-outside-toplevel, - use-implicit-booleaness-not-len, - use-implicit-booleaness-not-comparison, - syntax-error, - unrecognized-inline-option, - bad-option-value, - bad-plugin-value, - bad-configuration-section, - import-error, - logging-unsupported-format, - logging-format-truncated, - logging-too-many-args, - logging-too-few-args, - yield-inside-async-function, - not-async-context-manager, - fatal, - astroid-error, - parse-error, - config-parse-error, - raw-checker-failed, - bad-inline-option, - locally-disabled, - file-ignored, - suppressed-message, - useless-suppression, - deprecated-pragma, - use-symbolic-message-instead, - c-extension-no-member, - literal-comparison, - comparison-with-itself, - no-self-use, - no-classmethod-decorator, - no-staticmethod-decorator, - useless-object-inheritance, - property-with-parameters, - cyclic-import, - consider-using-from-import, - duplicate-code, - too-many-ancestors, - too-many-instance-attributes, - too-few-public-methods, - too-many-public-methods, - too-many-return-statements, - too-many-branches, - too-many-arguments, - too-many-locals, - too-many-statements, - too-many-boolean-expressions, - consider-merging-isinstance, - too-many-nested-blocks, - simplifiable-if-statement, - redefined-argument-from-local, - no-else-return, - consider-using-ternary, - trailing-comma-tuple, - stop-iteration-return, - simplify-boolean-expression, - inconsistent-return-statements, - useless-return, - consider-swap-variables, - consider-using-join, - consider-using-in, - consider-using-get, - chained-comparison, - consider-using-dict-comprehension, - consider-using-set-comprehension, - simplifiable-if-expression, - no-else-raise, - unnecessary-comprehension, - consider-using-sys-exit, - no-else-break, - no-else-continue, - super-with-arguments, - simplifiable-condition, - condition-evals-to-constant, - consider-using-generator, - use-a-generator, - consider-using-min-builtin, - consider-using-max-builtin, - consider-using-with, - unnecessary-dict-index-lookup, - use-list-literal, - use-dict-literal, - protected-access, - unnecessary-semicolon, - bad-indentation, - fixme, - logging-not-lazy, - logging-format-interpolation, - logging-fstring-interpolation, - unspecified-encoding, - using-f-string-in-unsupported-version, - using-final-decorator-in-unsupported-version, - useless-with-lock - -# Enable the message, report, category or checker with the given id(s). You can -# either give multiple identifier separated by comma (,) or put this option -# multiple time (only on the command line, not in the configuration file where -# it should appear only once). See also the "--disable" option for examples. -enable=init-is-generator, - return-in-init, - function-redefined, - not-in-loop, - return-outside-function, - yield-outside-function, - return-arg-in-generator, - nonexistent-operator, - duplicate-argument-name, - abstract-class-instantiated, - bad-reversed-sequence, - too-many-star-expressions, - invalid-star-assignment-target, - star-needs-assignment-target, - nonlocal-and-global, - continue-in-finally, - nonlocal-without-binding, - used-prior-global-declaration, - misplaced-format-function, - method-hidden, - access-member-before-definition, - no-method-argument, - no-self-argument, - invalid-slots-object, - assigning-non-slot, - invalid-slots, - inherit-non-class, - inconsistent-mro, - duplicate-bases, - class-variable-slots-conflict, - invalid-class-object, - non-iterator-returned, - unexpected-special-method-signature, - invalid-length-returned, - invalid-bool-returned, - invalid-index-returned, - invalid-repr-returned, - invalid-str-returned, - invalid-bytes-returned, - invalid-hash-returned, - invalid-length-hint-returned, - invalid-format-returned, - invalid-getnewargs-returned, - invalid-getnewargs-ex-returned, - relative-beyond-top-level, - used-before-assignment, - undefined-variable, - undefined-all-variable, - invalid-all-object, - invalid-all-format, - no-name-in-module, - unpacking-non-sequence, - bad-except-order, - raising-bad-type, - bad-exception-context, - misplaced-bare-raise, - raising-non-exception, - notimplemented-raised, - catching-non-exception, - bad-super-call, - no-member, - not-callable, - assignment-from-no-return, - no-value-for-parameter, - too-many-function-args, - unexpected-keyword-arg, - redundant-keyword-arg, - missing-kwoa, - invalid-sequence-index, - invalid-slice-index, - assignment-from-none, - not-context-manager, - invalid-unary-operand-type, - unsupported-binary-operation, - repeated-keyword, - not-an-iterable, - not-a-mapping, - unsupported-membership-test, - unsubscriptable-object, - unsupported-assignment-operation, - unsupported-delete-operation, - invalid-metaclass, - unhashable-dict-key, - dict-iter-missing-items, - await-outside-async, - bad-format-character, - truncated-format-string, - mixed-format-string, - format-needs-mapping, - missing-format-string-key, - too-many-format-args, - too-few-format-args, - bad-string-format-type, - bad-str-strip-call, - invalid-envvar-value, - method-check-failed, - unreachable, - dangerous-default-value, - pointless-statement, - pointless-string-statement, - expression-not-assigned, - unnecessary-pass, - unnecessary-lambda, - duplicate-key, - assign-to-new-keyword, - useless-else-on-loop, - exec-used, - eval-used, - confusing-with-statement, - using-constant-test, - missing-parentheses-for-call-in-test, - self-assigning-variable, - redeclared-assigned-name, - assert-on-string-literal, - comparison-with-callable, - lost-exception, - nan-comparison, - assert-on-tuple, - attribute-defined-outside-init, - bad-staticmethod-argument, - arguments-differ, - signature-differs, - abstract-method, - super-init-not-called, - no-init, - non-parent-init-called, - useless-super-delegation, - invalid-overridden-method, - arguments-renamed, - unused-private-member, - overridden-final-method, - subclassed-final-class, - wildcard-import, - deprecated-module, - reimported, - import-self, - preferred-module, - misplaced-future, - global-variable-undefined, - global-variable-not-assigned, - global-statement, - global-at-module-level, - unused-import, - unused-variable, - unused-argument, - unused-wildcard-import, - redefined-outer-name, - redefined-builtin, - undefined-loop-variable, - unbalanced-tuple-unpacking, - cell-var-from-loop, - possibly-unused-variable, - self-cls-assignment, - bare-except, - broad-except, - duplicate-except, - try-except-raise, - raise-missing-from, - binary-op-exception, - raising-format-tuple, - wrong-exception-operation, - keyword-arg-before-vararg, - arguments-out-of-order, - non-str-assignment-to-dunder-name, - isinstance-second-argument-not-valid-type, - bad-format-string-key, - unused-format-string-key, - bad-format-string, - missing-format-argument-key, - unused-format-string-argument, - format-combined-specification, - missing-format-attribute, - invalid-format-index, - duplicate-string-formatting-argument, - f-string-without-interpolation, - format-string-without-interpolation, - anomalous-backslash-in-string, - anomalous-unicode-escape-in-string, - implicit-str-concat, - inconsistent-quotes, - redundant-u-string-prefix, - bad-open-mode, - boolean-datetime, - redundant-unittest-assert, - deprecated-method, - bad-thread-instantiation, - shallow-copy-environ, - invalid-envvar-default, - subprocess-popen-preexec-fn, - subprocess-run-check, - deprecated-argument, - deprecated-class, - deprecated-decorator, - forgotten-debug-statement - - -[REPORTS] - -# Python expression which should return a score less than or equal to 10. You -# have access to the variables 'error', 'warning', 'refactor', and 'convention' -# which contain the number of messages in each category, as well as 'statement' -# which is the total number of statements analyzed. This score is used by the -# global evaluation report (RP0004). -evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) - -# Template used to display messages. This is a python new-style format string -# used to format the message information. See doc for all details. -#msg-template= - -# Set the output format. Available formats are text, parseable, colorized, json -# and msvs (visual studio). You can also give a reporter class, e.g. -# mypackage.mymodule.MyReporterClass. -output-format=text - -# Tells whether to display a full report or only the messages. -reports=no - -# Activate the evaluation score. -score=yes - - -[REFACTORING] - -# Maximum number of nested blocks for function / method body -max-nested-blocks=5 - -# Complete name of functions that never returns. When checking for -# inconsistent-return-statements if a never returning function is called then -# it will be considered as an explicit return statement and no message will be -# printed. -never-returning-functions=sys.exit,argparse.parse_error - - -[LOGGING] - -# The type of string formatting that logging methods do. `old` means using % -# formatting, `new` is for `{}` formatting. -logging-format-style=old - -# Logging modules to check that the string format arguments are in logging -# function parameter format. -logging-modules=logging - - -[STRING] - -# This flag controls whether inconsistent-quotes generates a warning when the -# character used as a quote delimiter is used inconsistently within a module. -check-quote-consistency=no - -# This flag controls whether the implicit-str-concat should generate a warning -# on implicit string concatenation in sequences defined over several lines. -check-str-concat-over-line-jumps=no - - -[TYPECHECK] - -# List of decorators that produce context managers, such as -# contextlib.contextmanager. Add to this list to register other decorators that -# produce valid context managers. -contextmanager-decorators=contextlib.contextmanager - -# List of members which are set dynamically and missed by pylint inference -# system, and so shouldn't trigger E1101 when accessed. Python regular -# expressions are accepted. -generated-members= - -# Tells whether missing members accessed in mixin class should be ignored. A -# class is considered mixin if its name matches the mixin-class-rgx option. -ignore-mixin-members=yes - -# Tells whether to warn about missing members when the owner of the attribute -# is inferred to be None. -ignore-none=yes - -# This flag controls whether pylint should warn about no-member and similar -# checks whenever an opaque object is returned when inferring. The inference -# can return multiple potential results while evaluating a Python object, but -# some branches might not be evaluated, which results in partial inference. In -# that case, it might be useful to still emit no-member and other checks for -# the rest of the inferred objects. -ignore-on-opaque-inference=yes - -# List of class names for which member attributes should not be checked (useful -# for classes with dynamically set attributes). This supports the use of -# qualified names. -ignored-classes=optparse.Values,thread._local,_thread._local - -# List of module names for which member attributes should not be checked -# (useful for modules/projects where namespaces are manipulated during runtime -# and thus existing member attributes cannot be deduced by static analysis). It -# supports qualified module names, as well as Unix pattern matching. -ignored-modules= - -# Show a hint with possible names when a member name was not found. The aspect -# of finding the hint is based on edit distance. -missing-member-hint=yes - -# The minimum edit distance a name should have in order to be considered a -# similar match for a missing member name. -missing-member-hint-distance=1 - -# The total number of similar names that should be taken in consideration when -# showing a hint for a missing member. -missing-member-max-choices=1 - -# Regex pattern to define which classes are considered mixins ignore-mixin- -# members is set to 'yes' -mixin-class-rgx=.*[Mm]ixin - -# List of decorators that change the signature of a decorated function. -signature-mutators= - - -[BASIC] - -# Naming style matching correct argument names. -argument-naming-style=snake_case - -# Regular expression matching correct argument names. Overrides argument- -# naming-style. -#argument-rgx= - -# Naming style matching correct attribute names. -attr-naming-style=snake_case - -# Regular expression matching correct attribute names. Overrides attr-naming- -# style. -#attr-rgx= - -# Bad variable names which should always be refused, separated by a comma. -bad-names=foo, - bar, - baz, - toto, - tutu, - tata - -# Bad variable names regexes, separated by a comma. If names match any regex, -# they will always be refused -bad-names-rgxs= - -# Naming style matching correct class attribute names. -class-attribute-naming-style=any - -# Regular expression matching correct class attribute names. Overrides class- -# attribute-naming-style. -#class-attribute-rgx= - -# Naming style matching correct class constant names. -class-const-naming-style=UPPER_CASE - -# Regular expression matching correct class constant names. Overrides class- -# const-naming-style. -#class-const-rgx= - -# Naming style matching correct class names. -class-naming-style=PascalCase - -# Regular expression matching correct class names. Overrides class-naming- -# style. -#class-rgx= - -# Naming style matching correct constant names. -const-naming-style=UPPER_CASE - -# Regular expression matching correct constant names. Overrides const-naming- -# style. -#const-rgx= - -# Minimum line length for functions/classes that require docstrings, shorter -# ones are exempt. -docstring-min-length=-1 - -# Naming style matching correct function names. -function-naming-style=snake_case - -# Regular expression matching correct function names. Overrides function- -# naming-style. -#function-rgx= - -# Good variable names which should always be accepted, separated by a comma. -good-names=i, - j, - k, - ex, - Run, - _ - -# Good variable names regexes, separated by a comma. If names match any regex, -# they will always be accepted -good-names-rgxs= - -# Include a hint for the correct naming format with invalid-name. -include-naming-hint=no - -# Naming style matching correct inline iteration names. -inlinevar-naming-style=any - -# Regular expression matching correct inline iteration names. Overrides -# inlinevar-naming-style. -#inlinevar-rgx= - -# Naming style matching correct method names. -method-naming-style=snake_case - -# Regular expression matching correct method names. Overrides method-naming- -# style. -#method-rgx= - -# Naming style matching correct module names. -module-naming-style=snake_case - -# Regular expression matching correct module names. Overrides module-naming- -# style. -#module-rgx= - -# Colon-delimited sets of names that determine each other's naming style when -# the name regexes allow several styles. -name-group= - -# Regular expression which should only match function or class names that do -# not require a docstring. -no-docstring-rgx=^_ - -# List of decorators that produce properties, such as abc.abstractproperty. Add -# to this list to register other decorators that produce valid properties. -# These decorators are taken in consideration only for invalid-name. -property-classes=abc.abstractproperty - -# Naming style matching correct variable names. -variable-naming-style=snake_case - -# Regular expression matching correct variable names. Overrides variable- -# naming-style. -#variable-rgx= - - -[SPELLING] - -# Limits count of emitted suggestions for spelling mistakes. -max-spelling-suggestions=4 - -# Spelling dictionary name. Available dictionaries: en_CA (hunspell), en_US -# (hunspell), he (hspell). -spelling-dict= - -# List of comma separated words that should be considered directives if they -# appear and the beginning of a comment and should not be checked. -spelling-ignore-comment-directives=fmt: on,fmt: off,noqa:,noqa,nosec,isort:skip,mypy: - -# List of comma separated words that should not be checked. -spelling-ignore-words= - -# A path to a file that contains the private dictionary; one word per line. -spelling-private-dict-file= - -# Tells whether to store unknown words to the private dictionary (see the -# --spelling-private-dict-file option) instead of raising a message. -spelling-store-unknown-words=no - - -[VARIABLES] - -# List of additional names supposed to be defined in builtins. Remember that -# you should avoid defining new builtins when possible. -additional-builtins= - -# Tells whether unused global variables should be treated as a violation. -allow-global-unused-variables=yes - -# List of names allowed to shadow builtins -allowed-redefined-builtins= - -# List of strings which can identify a callback function by name. A callback -# name must start or end with one of those strings. -callbacks=cb_, - _cb - -# A regular expression matching the name of dummy variables (i.e. expected to -# not be used). -dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ - -# Argument names that match this expression will be ignored. Default to name -# with leading underscore. -ignored-argument-names=_.*|^ignored_|^unused_ - -# Tells whether we should check for unused import in __init__ files. -init-import=no - -# List of qualified module names which can have objects that can redefine -# builtins. -redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io - - -[FORMAT] - -# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. -expected-line-ending-format= - -# Regexp for a line that is allowed to be longer than the limit. -ignore-long-lines=^\s*(# )??$ - -# Number of spaces of indent required inside a hanging or continued line. -indent-after-paren=4 - -# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 -# tab). -indent-string=' ' - -# Maximum number of characters on a single line. -max-line-length=100 - -# Maximum number of lines in a module. -max-module-lines=1000 - -# Allow the body of a class to be on the same line as the declaration if body -# contains single statement. -single-line-class-stmt=no - -# Allow the body of an if to be on the same line as the test if there is no -# else. -single-line-if-stmt=no - - -[MISCELLANEOUS] - -# List of note tags to take in consideration, separated by a comma. -notes=FIXME, - XXX, - TODO - -# Regular expression of note tags to take in consideration. -#notes-rgx= - - -[SIMILARITIES] - -# Comments are removed from the similarity computation -ignore-comments=yes - -# Docstrings are removed from the similarity computation -ignore-docstrings=yes - -# Imports are removed from the similarity computation -ignore-imports=no - -# Signatures are removed from the similarity computation -ignore-signatures=no - -# Minimum lines number of a similarity. -min-similarity-lines=4 - - -[IMPORTS] - -# List of modules that can be imported at any level, not just the top level -# one. -allow-any-import-level= - -# Allow wildcard imports from modules that define __all__. -allow-wildcard-with-all=no - -# Analyse import fallback blocks. This can be used to support both Python 2 and -# 3 compatible code, which means that the block might have code that exists -# only in one or another interpreter, leading to false positives when analysed. -analyse-fallback-blocks=no - -# Deprecated modules which should not be used, separated by a comma. -deprecated-modules= - -# Output a graph (.gv or any supported image format) of external dependencies -# to the given file (report RP0402 must not be disabled). -ext-import-graph= - -# Output a graph (.gv or any supported image format) of all (i.e. internal and -# external) dependencies to the given file (report RP0402 must not be -# disabled). -import-graph= - -# Output a graph (.gv or any supported image format) of internal dependencies -# to the given file (report RP0402 must not be disabled). -int-import-graph= - -# Force import order to recognize a module as part of the standard -# compatibility libraries. -known-standard-library= - -# Force import order to recognize a module as part of a third party library. -known-third-party=enchant - -# Couples of modules and preferred modules, separated by a comma. -preferred-modules= - - -[CLASSES] - -# Warn about protected attribute access inside special methods -check-protected-access-in-special-methods=no - -# List of method names used to declare (i.e. assign) instance attributes. -defining-attr-methods=__init__, - __new__, - setUp, - __post_init__ - -# List of member names, which should be excluded from the protected access -# warning. -exclude-protected=_asdict, - _fields, - _replace, - _source, - _make - -# List of valid names for the first argument in a class method. -valid-classmethod-first-arg=cls - -# List of valid names for the first argument in a metaclass class method. -valid-metaclass-classmethod-first-arg=cls - - -[DESIGN] - -# List of regular expressions of class ancestor names to ignore when counting -# public methods (see R0903) -exclude-too-few-public-methods= - -# List of qualified class names to ignore when counting class parents (see -# R0901) -ignored-parents= - -# Maximum number of arguments for function / method. -max-args=5 - -# Maximum number of attributes for a class (see R0902). -max-attributes=7 - -# Maximum number of boolean expressions in an if statement (see R0916). -max-bool-expr=5 - -# Maximum number of branch for function / method body. -max-branches=12 - -# Maximum number of locals for function / method body. -max-locals=15 - -# Maximum number of parents for a class (see R0901). -max-parents=7 - -# Maximum number of public methods for a class (see R0904). -max-public-methods=20 - -# Maximum number of return / yield for function / method body. -max-returns=6 - -# Maximum number of statements in function / method body. -max-statements=50 - -# Minimum number of public methods for a class (see R0903). -min-public-methods=2 - - -[EXCEPTIONS] - -# Exceptions that will emit a warning when being caught. -overgeneral-exceptions=builtins.BaseException, - builtins.Exception diff --git a/build-bot/buildbot_setup.sh b/build-bot/buildbot_setup.sh deleted file mode 100644 index 14198d5..0000000 --- a/build-bot/buildbot_setup.sh +++ /dev/null @@ -1,95 +0,0 @@ -#!/bin/sh - -set -e - -### Reading the input token for docker install -if [ "$1" != "" ]; then - TOKEN=$1 -else - echo "Enter GitHub token as positional argument" - exit 1 -fi - -### Base packages installation -echo "Installing base packages" -sudo apt-get update && sudo apt-get -y upgrade -sudo apt-get -y install openssh-server vim cmake build-essential -echo "Finished installing APT packages" -echo "" -echo "" -echo "" - -### Install Docker -echo "Installing docker" -sudo apt-get install -yq \ - apt-transport-https \ - ca-certificates \ - curl \ - gnupg \ - lsb-release -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg -echo \ - "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ - $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null -sudo apt-get update -sudo apt-get -y install docker-ce docker-ce-cli containerd.io -# add docker to the sudo group -sudo groupadd docker -f -sudo usermod -aG docker $USER - -echo "" -echo "" -echo "" -echo "Testing that docker works" -# test that docker works -sudo docker run hello-world -if [ $? -ne 0 ]; then - echo "Docker was not installed correctly" - exit 1 -fi - -# enable the docker service -echo "" -echo "" -echo "" -echo "Enabling docker service" -sudo systemctl enable docker.service -sudo systemctl enable containerd.service - -echo "" -echo "" -echo "" -echo "Docker service enabled" - -# Create a folder -echo "" -echo "" -echo "" -echo "setting up github actions runner" -mkdir $HOME/actions-runner && cd $HOME/actions-runner -# Download the latest runner package -curl -o actions-runner-linux-x64-2.303.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.303.0/actions-runner-linux-x64-2.303.0.tar.gz -# Optional: Validate the hash -echo "e4a9fb7269c1a156eb5d5369232d0cd62e06bec2fd2b321600e85ac914a9cc73 actions-runner-linux-x64-2.303.0.tar.gz" | shasum -a 256 -c -if [ $? -ne 0 ]; then - echo "The runner was not downloaded correctly" - exit 1 -fi - -# Extract the installer -echo "" -echo "" -echo "" -echo "Installing github actions runner" -tar xzf ./actions-runner-linux-x64-2.303.0.tar.gz -# Create the runner and start the configuration experience -./config.sh --url https://github.com/scriticalb --token $TOKEN --unattended -# Set the runner as a service -sudo ./svc.sh install -# Start the service -sudo ./svc.sh start -echo "" -echo "" -echo "" -echo "SETUP COMPLETE" -newgrp docker diff --git a/build-bot/readme.md b/build-bot/readme.md deleted file mode 100644 index 303754a..0000000 --- a/build-bot/readme.md +++ /dev/null @@ -1,16 +0,0 @@ -# MDOLab BuildBot Setup - -This directory contains the script that should almost entirely automate the setup of a BuildBot for running Github actions for MDOLab repos. - -## Installation steps - -1. Install a minimal version of the latest Ubuntu LTS version on the machine, use the following when setting up the user account: - 1. **Your name:** `mdolabbuildbot-N` (replace "N" is the next available buildbot number) - 2. **Your computer's name:** `mdolabbuildbot-N` - 3. **Pick a username:** `mdolab_mnt` - 4. **Choose a password:** ask one of our GitHub organization admins for this -2. Download this directory to somewhere like `~/buildbot` -3. Get one of our GitHub organization admins to generate a new token for you -4. Run `bash buildbot_setup.sh` and follow the prompts -5. If the process finished successfully, check that the actions runner is running using `systemctl list-units --type=service --state=running`, you should see a line that looks like `actions.runner.mdolab.mdolabbuildbot-N.service loaded active running GitHub Actions Runner (mdolab.mdolabbuildbot-N)` -6. Just to be sure everything is working, reboot the machine and repeat the check above diff --git a/generate-pylintrc.sh b/generate-pylintrc.sh deleted file mode 100755 index e88a685..0000000 --- a/generate-pylintrc.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/sh - -pylint \ ---disable all \ ---enable basic,classes,exceptions,imports,newstyle,refactoring,stdlib,string,typecheck,variables \ ---disable C,R,I,unspecified-encoding,protected-access,import-error \ ---generate-rcfile \ -> .pylintrc diff --git a/rtd/.rtd.yaml b/rtd/.rtd.yaml deleted file mode 100644 index 88e8046..0000000 --- a/rtd/.rtd.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# .readthedocs.yaml -# Read the Docs configuration file -# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details - -version: 2 - -build: - os: ubuntu-22.04 - tools: - python: "3.11" - -sphinx: - configuration: doc/conf.py - -python: - install: - - requirements: doc/requirements.txt diff --git a/rtd/repoList b/rtd/repoList deleted file mode 100644 index a883485..0000000 --- a/rtd/repoList +++ /dev/null @@ -1,24 +0,0 @@ -adflow -baseclasses -cgnsutilities -CMPLXFOIL -complexify -dev-tutorials -idwarp -private-mach-tutorial -multipoint -performancecalcs -prefoil -pyaerostructure -pyfriction -pygeo -pyhyp -pylayout -pyoptsparse -pyspline -pysurf -pytacs -pyXDSM -tacs_orig -weightandbalance -wimpresscalc diff --git a/rtd/updateYaml.sh b/rtd/updateYaml.sh deleted file mode 100644 index 7cd63b6..0000000 --- a/rtd/updateYaml.sh +++ /dev/null @@ -1,165 +0,0 @@ -#!/bin/bash - -USAGE=" -usage: updateYaml [-w WORK_LEVEL] [-r REPO_NAME] [-l REPO_LIST] - -Description: -This script generates a .readthedocs.yaml file for a given repository and -copies it to the proper location within the repository. Depending on the -work-level specified, it will copy the file, create a branch, commit, push, -and create a PR on GitHub. - -Argument description: - -w|--work-level 0: Clone and copy yaml file to repository (default) - 1: Commit yaml file changes to a new branch - 2: Push the branch to GH - 3: Create GH PRs - -r|--repo Name of a single repository that should be updated - -l|--repo-list Text file with a list of repositories that should be updated - -h|--help Print this help -" - -die () { - exit 9 -} - -# Parse input -WORK_LEVEL=0 -MANUAL_REPO="" -REPO_LIST="" -while [[ "$#" -gt 0 ]]; do - case $1 in - -w|--work-level) WORK_LEVEL="$2"; shift ;; - -r|--repo ) MANUAL_REPO="$2"; shift ;; - -l|--repo-list ) REPO_LIST="$2"; shift ;; - -h|--help) echo "$USAGE"; exit 1 ;; - *) echo "Unknown parameter passed: $1"; echo "$USAGE"; exit 1 ;; - esac - shift -done - -# Check input -if [[ -z $MANUAL_REPO && -z $REPO_LIST ]]; then - echo "Insufficient inputs, see usage:" - echo "$USAGE" - die -fi - -# If input is specified then we only use that -if [[ ! -z $MANUAL_REPO ]]; then - REPOS=("$MANUAL_REPO") -elif [[ -f $REPO_LIST ]]; then - # Read the specified list - readarray -t REPOS < "$REPO_LIST" -else - echo "Repo file, $REPO_LIST, not found. Check input, exiting!" - die -fi - -# Check and verify input -echo "The following repo(s) will be updated:" -for repo in ${REPOS[@]}; do - echo $repo -done - -# Make sure everything is good, otherwise abort -read -r -p "Are you sure? [y/N]:" response -response=${response,,} # tolower -if [[ ! "$response" =~ ^(yes|y)$ ]]; then - echo "Aborting..." - die -fi - -ROOTDIR=$(pwd) - -# Create a working tmp directory -WORKDIR="$ROOTDIR/tmp" -rm -rf $WORKDIR && mkdir -p $WORKDIR - -BRANCH_NAME="updateRtdYaml" -RTD_PR_TEMPATE_FILE=$WORKDIR/RTD_PR_TEMPATE.md -cat > $RTD_PR_TEMPATE_FILE << EOF -## Purpose -Update \`.readthedocs.yaml\` file - -## Expected time until merged -Few days - -## Type of change -- [ ] Bugfix (non-breaking change which fixes an issue) -- [ ] New feature (non-breaking change which adds functionality) -- [ ] Breaking change (non-backwards-compatible fix or feature) -- [ ] Code style update (formatting, renaming) -- [ ] Refactoring (no functional changes, no API changes) -- [x] Documentation update -- [x] Maintenance update -- [ ] Other (please describe) - -EOF - - -# Init array to track progress -declare -A REPO_STATUS - -checkFailure () { - if [[ $1 -ne 0 ]]; then - REPO_STATUS["$2"]="Failed" - echo "ERROR: Repository, $2, failed. See output for details." - return $1 - fi - REPO_STATUS["$2"]="Success" - return 0 -} - -# Main loop -for repo in ${REPOS[@]}; do - # Reset - cd $WORKDIR - REPODIR="$WORKDIR/$repo" - echo "" - echo "---------------- Updating $repo ------------------------" - git clone git@github.com:scritical/"$repo".git - checkFailure $? $repo || continue - - cd $REPODIR - git checkout -b $BRANCH_NAME - checkFailure $? $repo || continue - - # Generate the yaml file (just copy for now) - # python genYaml.py - cp $ROOTDIR/.rtd.yaml $REPODIR/.readthedocs.yaml - - # Commit the changes - if [[ $WORK_LEVEL -ge 1 ]]; then - git add .readthedocs.yaml - checkFailure $? $repo || continue - - git commit -m "update .readthedocs.yaml" - checkFailure $? $repo || continue - - # Push branch - if [[ $WORK_LEVEL -ge 2 ]]; then - git push --set-upstream origin $BRANCH_NAME - checkFailure $? $repo || continue - - # Create the PR on GH - if [[ $WORK_LEVEL -ge 3 ]]; then - PR_LINK=$(gh pr create --title "Update .readthedocs.yaml" --body-file "$RTD_PR_TEMPATE_FILE") - checkFailure $? $repo || continue - # Overwrite the "success" with PR link for summary. - REPO_STATUS["$repo"]="$PR_LINK" - fi - fi - fi -done - -# Print summary at the end so we dont need to go through the output -echo "" -echo "----------------------" -echo " SUMMARY " -echo "----------------------" -echo "Repository - Status/PR" -echo "----------------------" -for key in ${!REPO_STATUS[@]}; do - echo ${key} - ${REPO_STATUS[${key}]} -done