Repository: candy-kingdom/mints

Issue:
Find a name for the project
## Motivation
The project is almost finished, but we still don't have a strong opinion on its name.

## Description
Use this issue to post possible names in a brainstorm manner.

_Note: make sure PyPI package with the same name doesn't exist._

Here is a template for a valid name suggestion. It includes the header of the package that is used in GitHub, the name of the repository, the name of the package that is used in imports, and the name of the package in the PyPI.
# {Name}
## Repo
`github.com/candy-kingdom/{reponame}`

## Imports
```py
from {pyname} import cli
```

## PyPI
```
$ pip install {pypiname}
```

Discussion:

Patch:
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 17c67b5..204c054 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,4 +1,4 @@
-# Contributing to {Name}
+# Contributing to Mints
 Thanks for considering to contribute.
 We're open for any improvements.
 
@@ -19,7 +19,7 @@ We appreciate clean and elegant code, and we love to follow some conventions in
 - Avoid creating utils or helper modules, classes or functions.
 - Avoid using `get` in method names. For example, `get_item` should be `item`.
 
-Consider checking the [source code](https://github.com/candy-kingdom/cli/blob/develop/candies/cli/cli.py) for a more detailed picture. 
+Consider checking the [source code](https://github.com/candy-kingdom/mints/blob/develop/mints/cli.py) for a more detailed picture. 
 
 ### Commits
 - Use clear and concise commit messages.
@@ -27,4 +27,4 @@ Consider checking the [source code](https://github.com/candy-kingdom/cli/blob/de
 
 Note that we don't use the [imperative style](https://git.kernel.org/pub/scm/git/git.git/tree/Documentation/SubmittingPatches?id=HEAD#n133) for messages.
 
-Consider checking the [commit history](https://github.com/candy-kingdom/cli/commits/develop) for a more detailed picture.
+Consider checking the [commit history](https://github.com/candy-kingdom/mints/commits/develop) for a more detailed picture.
diff --git a/README.md b/README.md
index 4f7fa53..13e1d15 100644
--- a/README.md
+++ b/README.md
@@ -1,19 +1,19 @@
-# {Name}
+# Mints
 
-[![Build](https://github.com/candy-kingdom/cli/workflows/Build/badge.svg)](https://github.com/candy-kingdom/cli/actions)
+[![Build](https://github.com/candy-kingdom/mints/workflows/Build/badge.svg)](https://github.com/candy-kingdom/mints/actions)
 
 _Clean and elegant CLI development kit._
 
 ## Overview
 
-{Name} is a microframework that allows building declarative and nice-looking CLI apps.
+Mints is a microframework that allows building declarative and nice-looking CLI apps.
 Unlike [Click](https://click.palletsprojects.com/en/7.x/) or [Plac](https://micheles.github.io/plac/), it utilizes [function annotations](https://www.python.org/dev/peps/pep-3107/) more than [decorators](https://www.python.org/dev/peps/pep-0318/).
 
 Here is a quick example:
 ```py
 # say.py
 
-from {pyname} import cli, Arg, Flag, Opt
+from mints import cli, Arg, Flag, Opt
 
 @cli
 def say(phrase: Arg('a phrase to print'),
@@ -61,7 +61,7 @@ optional arguments:
 ## Install
 
 ```
-$ pip install {pipname}
+$ pip install mints
 ```
 
 ## Getting started
@@ -69,12 +69,12 @@ $ pip install {pipname}
 _Note: the examples are not [PEP 8](https://www.python.org/dev/peps/pep-0008/#blank-lines) compatible: one blank line is used instead of two to separate top-level definitions._
 
 In general, writing a CLI app is very similar to writing a regular function.
-{Name} is based on this metaphor, allowing to describe the whole interface of the app using only a function signature.
+Mints is based on this metaphor, allowing to describe the whole interface of the app using only a function signature.
 Consider the following example:
 ```py
 # say.py
 
-from {pyname} import cli, Arg
+from mints import cli, Arg
 
 @cli
 def say(phrase: Arg):
@@ -93,7 +93,7 @@ Hello, world!
 The main idea is very simple: you use the `cli` decorator to wrap a function that acts as an entry point of the application (`entry`), and then use the `cli()` to make things running.
 `Arg` is used to annotate positional arguments of the CLI.
 
-In the following section, we'll discuss more deeply how to implement different types of parameters in {Name}.
+In the following section, we'll discuss more deeply how to implement different types of parameters in Mints.
 
 ### Parameters
 
@@ -107,7 +107,7 @@ Consider the following function:
 ```py
 # test.py
 
-from {pyname} import cli, Arg
+from mints import cli, Arg
 
 @cli
 def test(x: Arg, y: Arg):
@@ -132,7 +132,7 @@ To address this issue, you could provide a default value to the argument:
 ```py
 # test.py
 
-from {pyname} import cli, Arg
+from mints import cli, Arg
 
 @cli
 def test(x: Arg, y: Arg = 2):
@@ -157,7 +157,7 @@ Consider the following example of a flag:
 ```py
 # test.py
 
-from {pyname} import cli, Flag
+from mints import cli, Flag
 
 @cli
 def test(some: Flag):
@@ -185,7 +185,7 @@ Here is an example of an option:
 ```py
 # test.py
 
-from {pyname} import cli, Opt
+from mints import cli, Opt
 
 @cli
 def test(some: Opt):
@@ -210,7 +210,7 @@ You still could provide a default value:
 ```py
 # test.py
 
-from {pyname} import cli, Opt
+from mints import cli, Opt
 
 @cli
 def test(some: Opt = 1):
@@ -226,13 +226,13 @@ $ python test.py
 
 ### Help page
 
-Each CLI in {Name} has a built-in help page, which is automatically generated.
+Each CLI in Mints has a built-in help page, which is automatically generated.
 
 Consider the following example:
 ```py
 # test.py
 
-from {pyname} import cli, Arg
+from mints import cli, Arg
 
 @cli
 def test(some: Arg):
@@ -260,7 +260,7 @@ To assign a description to an argument, instantiate an annotation with the `desc
 ```py
 # test.py
 
-from {pyname} import cli, Arg
+from mints import cli, Arg
 
 @cli
 def test(some: Arg('some argument')):
@@ -300,7 +300,7 @@ To define a shortcut letter for a flag or an option, the `short` parameter of ei
 ```py
 # test.py
 
-from {pyname} import cli, Flag
+from mints import cli, Flag
 
 @cli
 def test(some: Flag(short='s')):
@@ -321,7 +321,7 @@ To override this behavior, the `prefix` parameter of either `Flag` or `Opt` anno
 ```py
 # test.py
 
-from {pyname} import cli, Flag
+from mints import cli, Flag
 
 @cli
 def test(some: Flag(prefix='+')):
@@ -343,7 +343,7 @@ Consider the following example:
 ```py
 # test.py
 
-from {pyname} import cli, Arg
+from mints import cli, Arg
 
 @cli
 def test(some: Arg):
@@ -365,7 +365,7 @@ You could parse any type that is supported by [`argparse`](https://docs.python.o
 ```py
 # test.py
 
-from {pyname} import cli, Arg
+from mints import cli, Arg
 
 @cli
 def test(some: Arg[int]):
@@ -386,7 +386,7 @@ You could use the `parse` decorator just for that:
 ```py
 # test.py
 
-from {pyname} import cli, Arg
+from mints import cli, Arg
 
 # User-defined type.
 class Custom:
@@ -414,7 +414,7 @@ Note that you could also use the `add_parser` function to manually add the parse
 ```py
 # test.py
 
-from {pyname} import cli, Arg
+from mints import cli, Arg
 
 class Custom:
     @staticmethod
@@ -445,7 +445,7 @@ Variable arguments are also supported through the `List` type:
 
 from typing import List
 
-from {pyname} import cli, Arg
+from mints import cli, Arg
 
 @cli
 def test(some: Arg[List[int]]):
@@ -463,7 +463,7 @@ Note that lists are non-greedy:
 ```py
 # test.py
 
-from {pyname} import cli, Arg
+from mints import cli, Arg
 
 @cli
 def test(x: Arg[int], y: Arg[List[int]], z: Arg[int]):
@@ -482,13 +482,13 @@ Consider checking the [rolling dices](https://github.com/candy-kingdom/cli/blob/
 ### Commands
 
 Complex command line interfaces like `git` have several subcommands: `git status`, `git pull`, `git push`, etc.
-These subcommands act as separate CLIs and, thus, should be defined as separate functions in {Name}.
+These subcommands act as separate CLIs and, thus, should be defined as separate functions in Mints.
 
 Consider the following example as a mock of `git` CLI:
 ```py
 # git.py
 
-from {pyname} import cli
+from mints import cli
 
 @cli
 def git():
@@ -524,11 +524,11 @@ pushing
 Sometimes it's needed to have a deeper hierarchy of subcommands.
 For example, the `dotnet` CLI tool allows calling [`dotnet tool install ...`](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-tool-install).
 
-In {Name}, this could be implemented in a natural way:
+In Mints, this could be implemented in a natural way:
 ```py
 # dotnet.py
 
-from {pyname} import cli
+from mints import cli
 
 @cli
 def dotnet():
diff --git a/candies/__init__.py b/candies/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/candies/cli/__init__.py b/candies/cli/__init__.py
deleted file mode 100644
index 26e0b19..0000000
--- a/candies/cli/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from candies.cli.cli import CLI, cli
-from candies.cli.command import Command
-from candies.cli.args import Arg, Opt, Flag, Typed
diff --git a/candies/cli/args/__init__.py b/candies/cli/args/__init__.py
deleted file mode 100644
index a04320a..0000000
--- a/candies/cli/args/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-from candies.cli.args.arg import Arg
-from candies.cli.args.opt import Opt
-from candies.cli.args.flag import Flag
-from candies.cli.args.typed import Typed
diff --git a/candies/cli/parsers/__init__.py b/candies/cli/parsers/__init__.py
deleted file mode 100644
index 5bdb107..0000000
--- a/candies/cli/parsers/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-from candies.cli.parsers.parser import Parser
-from candies.cli.parsers.standard import StandardParser
diff --git a/examples/roll.py b/examples/roll.py
index 4f0c239..6f69368 100644
--- a/examples/roll.py
+++ b/examples/roll.py
@@ -17,7 +17,7 @@ import re
 import random
 from typing import List
 
-from candies.cli import cli, Arg
+from mints import cli, Arg
 
 
 class Roll:
diff --git a/examples/say.py b/examples/say.py
index b5bb078..7fdc193 100644
--- a/examples/say.py
+++ b/examples/say.py
@@ -15,7 +15,7 @@ Usage:
     HELLO!
 """
 
-from candies.cli import cli, Arg, Opt, Flag
+from mints import cli, Arg, Opt, Flag
 
 
 @cli
diff --git a/examples/weather.py b/examples/weather.py
index 771ca3b..80182a4 100644
--- a/examples/weather.py
+++ b/examples/weather.py
@@ -26,7 +26,7 @@ from urllib.parse import urljoin
 
 import requests
 
-from candies.cli import cli, Arg, Opt, Flag
+from mints import cli, Arg, Opt, Flag
 
 
 class API:
diff --git a/mints/__init__.py b/mints/__init__.py
new file mode 100644
index 0000000..c330892
--- /dev/null
+++ b/mints/__init__.py
@@ -0,0 +1,3 @@
+from mints.cli import CLI, cli
+from mints.command import Command
+from mints.args import Arg, Opt, Flag, Typed
diff --git a/mints/args/__init__.py b/mints/args/__init__.py
new file mode 100644
index 0000000..7df57ba
--- /dev/null
+++ b/mints/args/__init__.py
@@ -0,0 +1,4 @@
+from mints.args.arg import Arg
+from mints.args.opt import Opt
+from mints.args.flag import Flag
+from mints.args.typed import Typed
diff --git a/candies/cli/args/arg.py b/mints/args/arg.py
similarity index 96%
rename from candies/cli/args/arg.py
rename to mints/args/arg.py
index 3d5b33d..0c6e204 100644
--- a/candies/cli/args/arg.py
+++ b/mints/args/arg.py
@@ -1,6 +1,6 @@
 from typing import Type
 
-from candies.cli.args.typed import Typed
+from mints.args.typed import Typed
 
 
 class Arg:
diff --git a/candies/cli/args/flag.py b/mints/args/flag.py
similarity index 100%
rename from candies/cli/args/flag.py
rename to mints/args/flag.py
diff --git a/candies/cli/args/opt.py b/mints/args/opt.py
similarity index 96%
rename from candies/cli/args/opt.py
rename to mints/args/opt.py
index fe6ff53..1015ce8 100644
--- a/candies/cli/args/opt.py
+++ b/mints/args/opt.py
@@ -1,6 +1,6 @@
 from typing import Type
 
-from candies.cli.args.typed import Typed
+from mints.args.typed import Typed
 
 
 class Opt:
diff --git a/candies/cli/args/typed.py b/mints/args/typed.py
similarity index 100%
rename from candies/cli/args/typed.py
rename to mints/args/typed.py
diff --git a/candies/cli/cli.py b/mints/cli.py
similarity index 98%
rename from candies/cli/cli.py
rename to mints/cli.py
index 2f52b97..bc5599f 100644
--- a/candies/cli/cli.py
+++ b/mints/cli.py
@@ -2,9 +2,9 @@ import inspect
 import sys
 from typing import Callable, Optional, Union, Iterable, Any, Type, Text
 
-from candies.cli.command import Command
-from candies.cli.parsers.parser import Parser
-from candies.cli.parsers.standard import StandardParser
+from mints.command import Command
+from mints.parsers.parser import Parser
+from mints.parsers.standard import StandardParser
 
 
 class CLI:
diff --git a/candies/cli/command.py b/mints/command.py
similarity index 100%
rename from candies/cli/command.py
rename to mints/command.py
diff --git a/mints/parsers/__init__.py b/mints/parsers/__init__.py
new file mode 100644
index 0000000..e98ea09
--- /dev/null
+++ b/mints/parsers/__init__.py
@@ -0,0 +1,2 @@
+from mints.parsers.parser import Parser
+from mints.parsers.standard import StandardParser
diff --git a/candies/cli/parsers/parser.py b/mints/parsers/parser.py
similarity index 98%
rename from candies/cli/parsers/parser.py
rename to mints/parsers/parser.py
index 8f8073f..beabd1e 100644
--- a/candies/cli/parsers/parser.py
+++ b/mints/parsers/parser.py
@@ -1,7 +1,7 @@
 from abc import ABCMeta, abstractmethod
 from typing import Iterable, Dict, Any, Optional, Tuple
 
-from candies.cli.command import Command
+from mints.command import Command
 
 
 class Invocation:
diff --git a/candies/cli/parsers/standard.py b/mints/parsers/standard.py
similarity index 97%
rename from candies/cli/parsers/standard.py
rename to mints/parsers/standard.py
index 918913c..3f63d30 100644
--- a/candies/cli/parsers/standard.py
+++ b/mints/parsers/standard.py
@@ -2,12 +2,12 @@ from argparse import ArgumentParser, HelpFormatter
 from typing import Iterable, Any, Callable, Type, Dict, Optional, Tuple, TypeVar
 import inspect
 
-from candies.cli.args.arg import Arg
-from candies.cli.args.flag import Flag
-from candies.cli.args.opt import Opt
-from candies.cli.args.typed import Typed
-from candies.cli.command import Command
-from candies.cli.parsers.parser import Parser, Invocation
+from mints.args.arg import Arg
+from mints.args.flag import Flag
+from mints.args.opt import Opt
+from mints.args.typed import Typed
+from mints.command import Command
+from mints.parsers.parser import Parser, Invocation
 
 
 class StandardParser(Parser):
diff --git a/setup.py b/setup.py
index b1c1cd8..bd05fea 100644
--- a/setup.py
+++ b/setup.py
@@ -1,14 +1,14 @@
 from setuptools import setup, find_packages
 
 setup(
-    name='candy-cli',
+    name='mints',
     version='0.0.1',
     packages=find_packages(exclude=['tests*']),
     license='MIT',
-    description='Tools for writing clean CLI code.',
+    description='Clean and elegant CLI development kit',
     long_description=open('README.md').read(),
     install_required=[''],
-    url='https://github.com/candy-kingdom/cli',
+    url='https://github.com/candy-kingdom/mints',
     author='Candy Kingdom',
     author_email='candy.kingdom.github@gmail.com',
     classifiers=[
@@ -18,7 +18,6 @@ setup(
         'Natural Language :: English',
         'Programming Language :: Python :: 3.8',
         'Programming Language :: Python :: 3.7',
-        'Programming Language :: Python :: 3.6',
         'Topic :: Software Development :: Libraries :: Python Modules'
     ],
 )


Test patch:
diff --git a/tests/integration/arg_test.py b/tests/integration/arg_test.py
index 95d0183..c4ff33a 100644
--- a/tests/integration/arg_test.py
+++ b/tests/integration/arg_test.py
@@ -4,8 +4,8 @@ from typing import Any
 
 import pytest
 
-from candies.cli.cli import cli, CLI
-from candies.cli.args.arg import Arg
+from mints.cli import cli, CLI
+from mints.args.arg import Arg
 
 from tests.execution import execute, redirect_stderr
 
diff --git a/tests/integration/command_test.py b/tests/integration/command_test.py
index 3387422..ec1409d 100644
--- a/tests/integration/command_test.py
+++ b/tests/integration/command_test.py
@@ -4,10 +4,10 @@ from typing import Any
 
 import pytest
 
-from candies.cli.args.arg import Arg
-from candies.cli.args.opt import Opt
-from candies.cli.args.flag import Flag
-from candies.cli.cli import cli, CLI
+from mints.args.arg import Arg
+from mints.args.opt import Opt
+from mints.args.flag import Flag
+from mints.cli import cli, CLI
 
 from tests.execution import execute
 
diff --git a/tests/integration/flag_test.py b/tests/integration/flag_test.py
index 0af7a6c..fe0c596 100644
--- a/tests/integration/flag_test.py
+++ b/tests/integration/flag_test.py
@@ -5,9 +5,9 @@ from argparse import ArgumentError
 
 import pytest
 
-from candies.cli.cli import cli, CLI
-from candies.cli.args.flag import Flag
-from candies.cli.args.arg import Arg
+from mints.cli import cli, CLI
+from mints.args.flag import Flag
+from mints.args.arg import Arg
 
 from tests.execution import execute, redirect_stderr
 
diff --git a/tests/integration/help_test.py b/tests/integration/help_test.py
index c4eab4a..10b156f 100644
--- a/tests/integration/help_test.py
+++ b/tests/integration/help_test.py
@@ -2,10 +2,10 @@
 
 import pytest
 
-from candies.cli.args.arg import Arg
-from candies.cli.args.flag import Flag
-from candies.cli.cli import cli, CLI
-from candies.cli.command import Command
+from mints.args.arg import Arg
+from mints.args.flag import Flag
+from mints.cli import cli, CLI
+from mints.command import Command
 
 from tests.execution import execute, redirect_stdout
 
diff --git a/tests/integration/opt_test.py b/tests/integration/opt_test.py
index 2749b45..6c45db9 100644
--- a/tests/integration/opt_test.py
+++ b/tests/integration/opt_test.py
@@ -6,10 +6,10 @@ specific behaviour that is shared between flags and options.
 
 import pytest
 
-from candies.cli.cli import cli, CLI
-from candies.cli.args.arg import Arg
-from candies.cli.args.opt import Opt
-from candies.cli.args.flag import Flag
+from mints.cli import cli, CLI
+from mints.args.arg import Arg
+from mints.args.opt import Opt
+from mints.args.flag import Flag
 
 from tests.execution import execute, redirect_stderr
 
diff --git a/tests/integration/typed_test.py b/tests/integration/typed_test.py
index 10158a3..3e4b193 100644
--- a/tests/integration/typed_test.py
+++ b/tests/integration/typed_test.py
@@ -4,9 +4,9 @@ from typing import Any, List
 
 import pytest
 
-from candies.cli.args.arg import Arg
-from candies.cli.args.opt import Opt
-from candies.cli.cli import cli, CLI
+from mints.args.arg import Arg
+from mints.args.opt import Opt
+from mints.cli import cli, CLI
 
 from tests.execution import execute, redirect_stderr