Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Install using pip (>= 19.0).

```bash
pip install --upgrade pip
pip install git+https://github.com/cms-l1-globaltrigger/tm-diff.git@0.7.3
pip install git+https://github.com/cms-l1-globaltrigger/tm-diff.git@0.8.0
```

## Basic usage
Expand Down
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
tm-python @ git+https://github.com/cms-l1-globaltrigger/tm-python@0.10.0
tm-python @ git+https://github.com/cms-l1-globaltrigger/tm-python@0.11.0
31 changes: 31 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
[metadata]
name = tm-diff
version = attr: tmDiff.__version__
author = Bernhard Arnold
author_email = bernhard.arnold@cern.ch
description = Compare the content of two XML trigger menus.
long_description = file: README.md
long_description_content_type = text/markdown
license = GPLv3
classifiers =
"Topic :: Software Development"
"Topic :: Utilities"

[options]
python_requires = >=3.6
packages = find:
install_requires =
tm-python @ git+https://github.com/cms-l1-globaltrigger/tm-python@0.11.0
test_suite = tests

[options.packages.find]
exclude=tests

[options.entry_points]
console_scripts =
tm-diff = tmDiff.__main__:main

[mypy]

[mypy-tmTable.*]
ignore_missing_imports = True
30 changes: 0 additions & 30 deletions setup.py

This file was deleted.

2 changes: 1 addition & 1 deletion tmDiff/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '0.7.3'
__version__ = "0.8.0"
111 changes: 58 additions & 53 deletions tmDiff/__main__.py
Original file line number Diff line number Diff line change
@@ -1,102 +1,106 @@
import argparse
import sys, os
import os
import sys
from typing import Callable, Dict, List

from . import menudiff
from . import __version__

FMT_UNIFIED = 'unified'
FMT_CONTEXT = 'context'
FMT_HTML = 'html'
FMT_REPORT = 'report'
FMT_DEFAULT = FMT_UNIFIED
FMT_CHOICES = [FMT_UNIFIED, FMT_CONTEXT, FMT_HTML, FMT_REPORT]

SKIP_MODULE = 'module'
SKIP_COMMENT = 'comment'
SKIP_LABELS = 'labels'
SKIP_CHOICES = [SKIP_MODULE, SKIP_COMMENT, SKIP_LABELS]

SORT_INDEX = 'index'
SORT_NAME = 'name'
SORT_EXPRESSION = 'expression'
SORT_DEFAULT = SORT_INDEX
SORT_CHOICES = [SORT_INDEX, SORT_NAME, SORT_EXPRESSION]

DIFF_FUNCTIONS = {
FMT_UNIFIED: str = "unified"
FMT_CONTEXT: str = "context"
FMT_HTML: str = "html"
FMT_REPORT: str = "report"
FMT_DEFAULT: str = FMT_UNIFIED
FMT_CHOICES: List[str] = [FMT_UNIFIED, FMT_CONTEXT, FMT_HTML, FMT_REPORT]

SKIP_MODULE: str = "module"
SKIP_COMMENT: str = "comment"
SKIP_LABELS: str = "labels"
SKIP_CHOICES: List[str] = [SKIP_MODULE, SKIP_COMMENT, SKIP_LABELS]

SORT_INDEX: str = "index"
SORT_NAME: str = "name"
SORT_EXPRESSION: str = "expression"
SORT_DEFAULT: str = SORT_INDEX
SORT_CHOICES: List[str] = [SORT_INDEX, SORT_NAME, SORT_EXPRESSION]

DIFF_FUNCTIONS: Dict[str, Callable] = {
FMT_UNIFIED: menudiff.unified_diff,
FMT_CONTEXT: menudiff.context_diff,
FMT_HTML: menudiff.html_diff,
FMT_REPORT: menudiff.report_diff,
}

def parse_args():

def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser()
parser.add_argument('file',
parser.add_argument("file",
nargs=2,
help="XML menu files 'FILE1 FILE2'"
)
parser.add_argument('-f', '--format',
metavar='<format>',
parser.add_argument("-f", "--format",
metavar="<format>",
choices=FMT_CHOICES,
default=FMT_DEFAULT,
help="select output format, default is '{0}'".format(FMT_DEFAULT)
help=f"select output format, default is '{FMT_DEFAULT}'"
)
parser.add_argument('-s', '--skip',
metavar='<mode>',
action='append',
parser.add_argument("-s", "--skip",
metavar="<mode>",
action="append",
choices=SKIP_CHOICES,
default=[],
help="skip information"
)
parser.add_argument('--sort',
metavar='<key>',
parser.add_argument("--sort",
metavar="<key>",
choices=SORT_CHOICES,
default=SORT_DEFAULT,
help="select key for algorithm sorting, default is '{0}'".format(SORT_DEFAULT)
help=f"select key for algorithm sorting, default is '{SORT_DEFAULT}'"
)
parser.add_argument('-d', '--dump',
action='store_true',
help="dump the extracted intermediate content"
parser.add_argument("-d", "--dump",
action="store_true",
help="dump the extracted intermediate content"
)
parser.add_argument('-o',
dest='ostream',
metavar='<file>',
type=argparse.FileType('w'),
parser.add_argument("-o",
dest="ostream",
metavar="<file>",
type=argparse.FileType("wt"),
default=sys.stdout,
help="write output to file"
)
parser.add_argument('-v', '--verbose',
action='count',
parser.add_argument("-v", "--verbose",
action="count",
help="increase output verbosity"
)
parser.add_argument('--version',
action='version',
parser.add_argument("--version",
action="version",
version="%(prog)s {0}".format(__version__)
)
return parser.parse_args()

def main():

def main() -> int:
args = parse_args()

from_file = args.file[0]
to_file = args.file[1]
from_file: str = args.file[0]
to_file: str = args.file[1]

skip = []
skip: List[str] = []

# Skip module specific attributes
if SKIP_MODULE in args.skip:
skip.append('uuid_firmware')
skip.append('n_modules')
skip.append('module_id')
skip.append('module_index')
skip.append("uuid_firmware")
skip.append("n_modules")
skip.append("module_id")
skip.append("module_index")

# Skip comments
if SKIP_COMMENT in args.skip:
skip.append('comment')
skip.append("comment")

# Skip comments
if SKIP_LABELS in args.skip:
skip.append('labels')
skip.append("labels")

# Extract information from XMLs
from_menu = menudiff.Menu(from_file)
Expand All @@ -121,5 +125,6 @@ def main():

return 0

if __name__ == '__main__':

if __name__ == "__main__":
sys.exit(main())
Loading