Skip to content

Commit

Permalink
Merge pull request #154 from hesa/hesa-add-ambuities-command
Browse files Browse the repository at this point in the history
Add ambuities command
  • Loading branch information
hesa committed Apr 26, 2024
2 parents 44251d1 + df73143 commit 200c7b4
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 9 deletions.
12 changes: 12 additions & 0 deletions Makefile
Expand Up @@ -106,6 +106,18 @@ py-release: check clean build
@echo "To upload: "
@echo "twine upload --repository foss-flame --verbose dist/*"

stats:
@echo -n "licenses: "
@PYTHONPATH=./python ./python/flame/__main__.py licenses | wc -l
@echo -n "aliases: "
@PYTHONPATH=./python ./python/flame/__main__.py aliases | wc -l
@echo -n "compats: "
@PYTHONPATH=./python ./python/flame/__main__.py compats | wc -l
@echo -n "operators: "
@PYTHONPATH=./python ./python/flame/__main__.py operators | wc -l
@echo -n "ambiguities: "
@PYTHONPATH=./python ./python/flame/__main__.py ambiguities | wc -l

clean:
find . -name "*~" | xargs rm -fr
find . -name "*.pyc" | xargs rm -fr
Expand Down
19 changes: 14 additions & 5 deletions python/flame/__main__.py
Expand Up @@ -117,21 +117,26 @@ def get_parser():
parser_a.set_defaults(which='aliases', func=aliases)
parser_a.add_argument('--include-license', '-il', type=str, dest='include_license', help='List only the aliases for licenses containing the given string (case insensitive)', default=None)

# ambiguities
parser_os = subparsers.add_parser(
'ambiguities', help='Display all ambiguities')
parser_os.set_defaults(which='ambiguities', func=ambiguities)

# compatbilities
parser_cs = subparsers.add_parser(
'compats', help='Display all compatibilities')
parser_cs.set_defaults(which='compats', func=compats)

# operators
parser_os = subparsers.add_parser(
'operators', help='Display all operators')
parser_os.set_defaults(which='operators', func=operators)

# licenses
parser_cs = subparsers.add_parser(
'licenses', help='show all licenses')
parser_cs.set_defaults(which='licenses', func=licenses)

# operators
parser_os = subparsers.add_parser(
'operators', help='Display all operators')
parser_os.set_defaults(which='operators', func=operators)

# unknown
parser_u = subparsers.add_parser(
'unknown', help='Show the unknown licenses for a license expression. Intended for foss-licenses developers.')
Expand All @@ -144,6 +149,10 @@ def parse():

return get_parser().parse_args()

def ambiguities(fl, formatter, args):
all_ambiguities = fl.ambiguities_list()
return formatter.format_ambiguities(all_ambiguities)

def operators(fl, formatter, args):
all_op = fl.operators()
return formatter.format_operators(all_op, args.verbose)
Expand Down
39 changes: 37 additions & 2 deletions python/flame/format.py
Expand Up @@ -214,7 +214,7 @@ def format_compatibilities(self, compats, verbose=False):
:type all_aliases: list
:param verbose: provide additional information
:type verbose: boolean
:raise FlameException: if all_compats is not valid
:raise FlameException: if compats is not valid
:return: formatted string
:rtype: str
Expand All @@ -237,7 +237,7 @@ def format_operators(self, operators, verbose=False):
:type operators: list
:param verbose: provide additional information
:type verbose: boolean
:raise FlameException: if all_compats is not valid
:raise FlameException: if operators is not valid
:return: formatted string
:rtype: str
Expand All @@ -252,6 +252,29 @@ def format_operators(self, operators, verbose=False):
"""
return None, None

def format_ambiguities(self, ambiguities, verbose=False):
"""
Return a formatted string of the existing ambiguities
:param operators: A list of ambiguites.
:type operators: list
:param verbose: provide additional information
:type verbose: boolean
:raise FlameException: if ambiguites is not valid
:return: formatted string
:rtype: str
:Example:
>>> from flame.license_db import FossLicenses
>>> fl = FossLicenses()
>>> ambiguities = fl.ambiguities_list()
>>> formatter = OutputFormatterFactory.formatter("TEXT")
>>> formatted = formatter.format_ambiguities(ambiguities)
"""
return None, None

class JsonOutputFormatter(OutputFormatter):

def format_compat(self, compat, verbose=False):
Expand Down Expand Up @@ -285,6 +308,9 @@ def format_compatibilities(self, compats, verbose=False):
def format_operators(self, operators, verbose=False):
return json.dumps(operators), None

def format_ambiguities(self, ambiguities, verbose=False):
return json.dumps(ambiguities), None

class YamlOutputFormatter(OutputFormatter):

def format_compat(self, compat, verbose=False):
Expand Down Expand Up @@ -314,6 +340,9 @@ def format_compatibilities(self, compats, verbose=False):
def format_operators(self, operators, verbose=False):
return yaml.safe_dump(operators), None

def format_ambiguities(self, ambiguities, verbose=False):
return yaml.safe_dump(ambiguities), None

class TextOutputFormatter(OutputFormatter):

def format_compat(self, compat, verbose=False):
Expand Down Expand Up @@ -377,6 +406,12 @@ def format_licenses(self, licenses, verbose=False):
def format_operators(self, operators, verbose=False):
return '\n'.join([f'{k} -> {v}' for k, v in operators.items()]), None

def format_ambiguities(self, ambiguities, verbose=False):
ret = []
for k, v in ambiguities.items():
ret += [f'{a} -> {k}' for a in v['aliases']]
return '\n'.join(ret), None

def format_error(self, error, verbose=False):
return f'Error: {error}', None

Expand Down
4 changes: 2 additions & 2 deletions python/flame/license_db.py
Expand Up @@ -498,7 +498,7 @@ def ambiguities_list(self):
"""
# List all aliases that exist
return self.license_db[AMBIG_TAG]
return self.license_db[AMBIG_TAG]['ambiguities']

def known_symbols(self):
"""Returns a list of all all known license symbols.
Expand All @@ -511,7 +511,7 @@ def known_symbols(self):
"""
_symbols = set()

ambiguities = self.ambiguities_list()['ambiguities']
ambiguities = self.ambiguities_list()
for ambig in ambiguities:
_symbols.add(ambig)
_symbols.update(set(ambiguities[ambig]['aliases']))
Expand Down

0 comments on commit 200c7b4

Please sign in to comment.