From 6fb47061871c0f8a15124d041b49097c5e69102f Mon Sep 17 00:00:00 2001 From: Jannik Date: Fri, 20 Oct 2023 14:06:35 +0200 Subject: [PATCH 01/15] move pypi upload instruction --- README.md | 27 --------------------------- docs/PyPi-upload.md | 25 +++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 27 deletions(-) create mode 100644 docs/PyPi-upload.md diff --git a/README.md b/README.md index a24d999..329501b 100644 --- a/README.md +++ b/README.md @@ -49,30 +49,3 @@ print(textColor.output("Success")) # will output '[>] Success' while '[>] # License This library was published under the **GNU General Public License**. For more information take a look at the **LICENSE** file. - - -# Uploading to PyPi - -More info [here](https://packaging.python.org/en/latest/tutorials/packaging-projects/). - -Remove all old distribution files in 'dist/' - -Make sure you have the latest version of 'build': - -> python3 -m pip install --upgrade build - -In the same directory as 'pyproject.toml': - -> python3 -m build - -Now that the distribution files have been generated, make sure twine is up to date: - -> python3 -m pip install --upgrade twine - -Again, in the same directory as 'pyproject.toml': - -> python3 -m twine upload dist/* -> -> username: \_\_token__ -> -> password: \ \ No newline at end of file diff --git a/docs/PyPi-upload.md b/docs/PyPi-upload.md new file mode 100644 index 0000000..d954813 --- /dev/null +++ b/docs/PyPi-upload.md @@ -0,0 +1,25 @@ +# Uploading to PyPi + +More info [here](https://packaging.python.org/en/latest/tutorials/packaging-projects/). + +Remove all old distribution files in 'dist/' + +Make sure you have the latest version of 'build': + +> python3 -m pip install --upgrade build + +In the same directory as 'pyproject.toml': + +> python3 -m build + +Now that the distribution files have been generated, make sure twine is up to date: + +> python3 -m pip install --upgrade twine + +Again, in the same directory as 'pyproject.toml': + +> python3 -m twine upload dist/* +> +> username: \_\_token__ +> +> password: \ From dff320f18665f670e39e42115ae22fe9c6c61893 Mon Sep 17 00:00:00 2001 From: Jannik Date: Wed, 25 Oct 2023 14:25:58 +0200 Subject: [PATCH 02/15] add abbreviations for color-functions Signed-off-by: Jannik --- textColor/__init__.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/textColor/__init__.py b/textColor/__init__.py index 7c004f2..31b82fa 100644 --- a/textColor/__init__.py +++ b/textColor/__init__.py @@ -4,18 +4,21 @@ def green(text, whiteText="", space=True): else: return "\033[2;32;49m" + str(text) + "\033[0;37;49m" + str(whiteText) + def red(text, whiteText="", space=True): if space: return "\033[1;31;49m" + str(text) + " \033[0;37;49m" + str(whiteText) else: return "\033[1;31;49m" + str(text) + "\033[0;37;49m" + str(whiteText) + def blue(text, whiteText="", space=True): if space: return "\033[1;34;49m" + str(text) + " \033[0;37;49m" + str(whiteText) else: return "\033[1;34;49m" + str(text) + "\033[0;37;49m" + str(whiteText) + def yellow(text, whiteText="", space=True): if space: return "\033[1;33;49m" + str(text) + " \033[0;37;49m" + str(whiteText) @@ -23,14 +26,33 @@ def yellow(text, whiteText="", space=True): return "\033[1;33;49m" + str(text) + "\033[0;37;49m" + str(whiteText) +def g(*args, **kwargs): + return green(*args, **kwargs) + + +def r(*args, **kwargs): + return green(*args, **kwargs) + + +def b(*args, **kwargs): + return green(*args, **kwargs) + + +def y(*args, **kwargs): + return green(*args, **kwargs) + + def input(text): return "\033[1;33;49m" + "[?]" + " \033[0;37;49m" + str(text) + def info(text): return "\033[1;34;49m" + "[-]" + " \033[0;37;49m" + str(text) + def error(text): return "\033[1;31;49m" + "[!]" + " \033[0;37;49m" + str(text) + def output(text): - return "\033[1;32;49m" + "[>]" + " \033[0;37;49m" + str(text) \ No newline at end of file + return "\033[1;32;49m" + "[>]" + " \033[0;37;49m" + str(text) From cb767aa51d19f88b3b07ccb560c1b9f6e34095ea Mon Sep 17 00:00:00 2001 From: Jannik Date: Wed, 25 Oct 2023 14:38:27 +0200 Subject: [PATCH 03/15] add abbreviation functions for error and output Signed-off-by: Jannik --- textColor/__init__.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/textColor/__init__.py b/textColor/__init__.py index 31b82fa..dd67701 100644 --- a/textColor/__init__.py +++ b/textColor/__init__.py @@ -56,3 +56,11 @@ def error(text): def output(text): return "\033[1;32;49m" + "[>]" + " \033[0;37;49m" + str(text) + + +def err(*args, **kwargs): + return error(*args, **kwargs) + + +def out(*args, **kwargs): + return output(*args, **kwargs) From aae4fe310c4cc4e53643ea1884a3403c4392d5a9 Mon Sep 17 00:00:00 2001 From: Jannik Date: Wed, 25 Oct 2023 14:39:34 +0200 Subject: [PATCH 04/15] add sections for better readability Signed-off-by: Jannik --- textColor/__init__.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/textColor/__init__.py b/textColor/__init__.py index dd67701..4c0d8aa 100644 --- a/textColor/__init__.py +++ b/textColor/__init__.py @@ -1,3 +1,6 @@ +### + + def green(text, whiteText="", space=True): if space: return "\033[1;32;49m" + str(text) + " \033[0;37;49m" + str(whiteText) @@ -26,6 +29,8 @@ def yellow(text, whiteText="", space=True): return "\033[1;33;49m" + str(text) + "\033[0;37;49m" + str(whiteText) +### + def g(*args, **kwargs): return green(*args, **kwargs) @@ -42,6 +47,9 @@ def y(*args, **kwargs): return green(*args, **kwargs) +### + + def input(text): return "\033[1;33;49m" + "[?]" + " \033[0;37;49m" + str(text) @@ -58,6 +66,9 @@ def output(text): return "\033[1;32;49m" + "[>]" + " \033[0;37;49m" + str(text) +### + + def err(*args, **kwargs): return error(*args, **kwargs) From 629968c7ed65936bb2a4369d0a031f393d3a6ea4 Mon Sep 17 00:00:00 2001 From: Jannik Date: Wed, 25 Oct 2023 14:47:33 +0200 Subject: [PATCH 05/15] add abbreviations to README Signed-off-by: Jannik --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 329501b..65a8ff4 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,16 @@ print(textColor.error("ERROR")) # will output '[!] ERROR' while '[!] print(textColor.output("Success")) # will output '[>] Success' while '[>]' is green ``` +If those function names seem too long, you should use abbreviations: +``` +green ––> g +red ––> r +blue ––> b +yellow ––> y + +error ––> error +output ––> out +``` # License From 1bfe3d52d236531d6d574d4c839be50bffa694e5 Mon Sep 17 00:00:00 2001 From: Jannik Date: Wed, 25 Oct 2023 15:06:39 +0200 Subject: [PATCH 06/15] add print functions Signed-off-by: Jannik --- textColor/__init__.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/textColor/__init__.py b/textColor/__init__.py index 7c004f2..e5c41a3 100644 --- a/textColor/__init__.py +++ b/textColor/__init__.py @@ -33,4 +33,23 @@ def error(text): return "\033[1;31;49m" + "[!]" + " \033[0;37;49m" + str(text) def output(text): - return "\033[1;32;49m" + "[>]" + " \033[0;37;49m" + str(text) \ No newline at end of file + return "\033[1;32;49m" + "[>]" + " \033[0;37;49m" + str(text) + + +## + + +def pInput(text): + print(input(text)) + + +def pInfo(text): + print(info(text)) + + +def pError(text): + print(error(text)) + + +def pOutput(text): + print(output(text)) From be021bf75f37f2b1f48341add8be7d0d924e9371 Mon Sep 17 00:00:00 2001 From: Jannik Date: Wed, 25 Oct 2023 15:10:59 +0200 Subject: [PATCH 07/15] replace 'input' with 'prompt' Signed-off-by: Jannik --- textColor/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/textColor/__init__.py b/textColor/__init__.py index 7c004f2..c6958d8 100644 --- a/textColor/__init__.py +++ b/textColor/__init__.py @@ -23,7 +23,7 @@ def yellow(text, whiteText="", space=True): return "\033[1;33;49m" + str(text) + "\033[0;37;49m" + str(whiteText) -def input(text): +def prompt(text): return "\033[1;33;49m" + "[?]" + " \033[0;37;49m" + str(text) def info(text): From f6eebccdfea51418157a8fee2ea24c3496a2af40 Mon Sep 17 00:00:00 2001 From: Jannik Date: Wed, 25 Oct 2023 15:13:05 +0200 Subject: [PATCH 08/15] add change to README Signed-off-by: Jannik --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 329501b..fa43562 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ print(textColor.yellow("YELLOW")) # 'YELLOW' will be yellow You can also use special 'pre-fixes': ``` -print(textColor.input("Name: ")) # will output '[?] Name: ' while '[?]' is yellow +print(textColor.prompt("Name: ")) # will output '[?] Name: ' while '[?]' is yellow print(textColor.info("Info")) # will output '[-] Info' while '[-]' is blue print(textColor.error("ERROR")) # will output '[!] ERROR' while '[!]' is red print(textColor.output("Success")) # will output '[>] Success' while '[>]' is green From 0004cfcb2d6c33481a0351f1c74ea58e835ef4bc Mon Sep 17 00:00:00 2001 From: Jannik Date: Wed, 25 Oct 2023 15:23:34 +0200 Subject: [PATCH 09/15] added shortcut Signed-off-by: Jannik --- textColor/__init__.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/textColor/__init__.py b/textColor/__init__.py index 10b20fe..a93d66b 100644 --- a/textColor/__init__.py +++ b/textColor/__init__.py @@ -67,6 +67,11 @@ def output(text): return "\033[1;32;49m" + "[>]" + " \033[0;37;49m" + str(text) +# backwards compatibility only: +def input(text): + return prompt(text) + + ### From a93f3cb648c8b1dba95487eb232e158bbbcb3ebe Mon Sep 17 00:00:00 2001 From: Jannik Date: Wed, 25 Oct 2023 15:06:39 +0200 Subject: [PATCH 10/15] add print functions Signed-off-by: Jannik --- textColor/__init__.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/textColor/__init__.py b/textColor/__init__.py index a93d66b..b73dbb5 100644 --- a/textColor/__init__.py +++ b/textColor/__init__.py @@ -81,3 +81,22 @@ def err(*args, **kwargs): def out(*args, **kwargs): return output(*args, **kwargs) + + +### + + +def pInput(text): + print(input(text)) + + +def pInfo(text): + print(info(text)) + + +def pError(text): + print(error(text)) + + +def pOutput(text): + print(output(text)) From a17d1e06aef523188ff1f22725ba22f93ed351e9 Mon Sep 17 00:00:00 2001 From: Jannik Date: Wed, 25 Oct 2023 15:44:14 +0200 Subject: [PATCH 11/15] change to prompt Signed-off-by: Jannik --- textColor/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/textColor/__init__.py b/textColor/__init__.py index b73dbb5..3a39509 100644 --- a/textColor/__init__.py +++ b/textColor/__init__.py @@ -86,8 +86,8 @@ def out(*args, **kwargs): ### -def pInput(text): - print(input(text)) +def pPrompt(text): + print(prompt(text)) def pInfo(text): From 47ed0bc6c8e0a3fe1c53e78e668449e96b4c677b Mon Sep 17 00:00:00 2001 From: Jannik Date: Wed, 25 Oct 2023 15:46:17 +0200 Subject: [PATCH 12/15] add abbreviations Signed-off-by: Jannik --- textColor/__init__.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/textColor/__init__.py b/textColor/__init__.py index 3a39509..9b19e53 100644 --- a/textColor/__init__.py +++ b/textColor/__init__.py @@ -100,3 +100,14 @@ def pError(text): def pOutput(text): print(output(text)) + + +### + + +def pErr(*args, **kwargs): + return pError(*args, **kwargs) + + +def pOut(*args, **kwargs): + return pOutput(*args, **kwargs) From 791fc69c5c92ac4678dc3ff60e64cb904eb8fcf3 Mon Sep 17 00:00:00 2001 From: Jannik Date: Wed, 25 Oct 2023 15:54:19 +0200 Subject: [PATCH 13/15] added new usage instructions to README Signed-off-by: Jannik --- README.md | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 119ef98..cade77f 100644 --- a/README.md +++ b/README.md @@ -44,15 +44,28 @@ print(textColor.error("ERROR")) # will output '[!] ERROR' while '[!] print(textColor.output("Success")) # will output '[>] Success' while '[>]' is green ``` +If you dont' want to type input()/print() you can use the 'print functions': +``` +textColor.pPromt("Name: ") # will call input("[?] Name: ") and return + # the output, while '[?]’ is yellow +textColor.pInfo("Info") # will output '[-] Info' while '[-]' is blue +textColor.pError("Error") # will output '[!] ERROR' while '[!]' is red +textColor.pOutput("Success") # will output '[>] Success' while '[>]' is green +``` + + If those function names seem too long, you should use abbreviations: ``` -green ––> g -red ––> r -blue ––> b -yellow ––> y +green ––> g +red ––> r +blue ––> b +yellow ––> y + +error ––> err +output ––> out -error ––> error -output ––> out +pError ––> pErr +pOutput ––> pOut ``` From f2f0598ab635e6bbfe4482924b3cfccce3d5c5de Mon Sep 17 00:00:00 2001 From: Jannik Date: Wed, 25 Oct 2023 16:00:44 +0200 Subject: [PATCH 14/15] update version number to 3.1.0 Signed-off-by: Jannik --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a420c2a..a1fb4cb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "textColor" -version = "3.0.1" +version = "3.1.0" authors = [ { name="Jannik Ramrath", email="jannik@ramrath.me" }, ] From 387928537775aefb8b7b8895b20c082960d6609c Mon Sep 17 00:00:00 2001 From: Jannik Date: Wed, 25 Oct 2023 16:02:50 +0200 Subject: [PATCH 15/15] generated new distribution files Signed-off-by: Jannik --- dist/textcolor-3.0.1.tar.gz | Bin 13970 -> 0 bytes ...y.whl => textcolor-3.1.0-py3-none-any.whl} | Bin 14673 -> 14801 bytes dist/textcolor-3.1.0.tar.gz | Bin 0 -> 14388 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 dist/textcolor-3.0.1.tar.gz rename dist/{textcolor-3.0.1-py3-none-any.whl => textcolor-3.1.0-py3-none-any.whl} (81%) create mode 100644 dist/textcolor-3.1.0.tar.gz diff --git a/dist/textcolor-3.0.1.tar.gz b/dist/textcolor-3.0.1.tar.gz deleted file mode 100644 index fab3ae8a345d8c9eaacb8b49cae65401b90fc90c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13970 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 diff --git a/dist/textcolor-3.0.1-py3-none-any.whl b/dist/textcolor-3.1.0-py3-none-any.whl similarity index 81% rename from dist/textcolor-3.0.1-py3-none-any.whl rename to dist/textcolor-3.1.0-py3-none-any.whl index 91e3ed10b9ae19fae7415b1a6cea3df3c655d9d6..ba3dbda985c40c399c842ce0e3205142dc307a56 100644 GIT binary patch delta 2379 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 delta 2238 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