From 3d361a466cc0b4472a53bcf96cf1cf3e17465d58 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Oct 2022 18:14:45 +0330 Subject: [PATCH 01/14] Bump matplotlib from 3.5.3 to 3.6.0 (#152) Bumps [matplotlib](https://github.com/matplotlib/matplotlib) from 3.5.3 to 3.6.0. - [Release notes](https://github.com/matplotlib/matplotlib/releases) - [Commits](https://github.com/matplotlib/matplotlib/compare/v3.5.3...v3.6.0) --- updated-dependencies: - dependency-name: matplotlib dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dev-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-requirements.txt b/dev-requirements.txt index 4f8ffee..b83d68a 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -1,4 +1,4 @@ -matplotlib==3.5.3 +matplotlib==3.6.0 art==5.7 vulture>=1.0 bandit>=1.5.1 From 9f32c783c90ea5dd2ebab8def6eb3de1f288af39 Mon Sep 17 00:00:00 2001 From: Sepand Haghighi Date: Fri, 7 Oct 2022 22:27:57 +0330 Subject: [PATCH 02/14] Test (#157) * fix : set Python 3.8 for tests * doc : CHANGELOG updated --- .github/workflows/test.yml | 10 +++++----- CHANGELOG.md | 2 ++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 19c4376..98e7db0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -40,26 +40,26 @@ jobs: python -m pytest test --cov=samila --cov-report=term env: NFT_STORAGE_API_KEY: ${{ secrets.NFT_STORAGE_API_KEY }} - if: matrix.python-version == 3.7 && matrix.os == 'ubuntu-latest' + if: matrix.python-version == 3.8 && matrix.os == 'ubuntu-latest' - name: Version check run: | python otherfiles/version_check.py - if: matrix.python-version == 3.7 + if: matrix.python-version == 3.8 - name: Other tests run: | python -m vulture samila/ setup.py --min-confidence 65 --exclude=__init__.py --sort-by-size python -m bandit -r samila -s B311,B307 python -m pydocstyle -v --match-dir=samila - if: matrix.python-version == 3.7 + if: matrix.python-version == 3.8 - name: Notebook check run: | pip install notebook>=5.2.2 python otherfiles/notebook_check.py - if: matrix.python-version == 3.7 && matrix.os == 'ubuntu-latest' + if: matrix.python-version == 3.8 && matrix.os == 'ubuntu-latest' - name: Codecov run: | codecov - if: matrix.python-version == 3.7 && matrix.os == 'ubuntu-latest' + if: matrix.python-version == 3.8 && matrix.os == 'ubuntu-latest' - name: cProfile run: | python -m cProfile -s cumtime otherfiles/samila_profile.py diff --git a/CHANGELOG.md b/CHANGELOG.md index eeb16a8..150142c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Changed +- Test system modified ## [0.9] - 2022-09-28 ### Added - Anaconda workflow From daeafed59f4f17ca630205cbfda779807ea776be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Oct 2022 12:55:07 +0330 Subject: [PATCH 03/14] Bump matplotlib from 3.6.0 to 3.6.1 (#158) Bumps [matplotlib](https://github.com/matplotlib/matplotlib) from 3.6.0 to 3.6.1. - [Release notes](https://github.com/matplotlib/matplotlib/releases) - [Commits](https://github.com/matplotlib/matplotlib/compare/v3.6.0...v3.6.1) --- updated-dependencies: - dependency-name: matplotlib dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dev-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-requirements.txt b/dev-requirements.txt index b83d68a..d6830b3 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -1,4 +1,4 @@ -matplotlib==3.6.0 +matplotlib==3.6.1 art==5.7 vulture>=1.0 bandit>=1.5.1 From 27317de6c81f86b84f45d3599ae77a19b613f461 Mon Sep 17 00:00:00 2001 From: Sadra Sabouri <43045767+sadrasabouri@users.noreply.github.com> Date: Sun, 6 Nov 2022 01:46:28 +0330 Subject: [PATCH 04/14] Marker Added (#159) * add : `Marker` enum added. (#156) * add : `marker` parameter added. (#156) * log : changes logged. (#156) * add : RANDOM marker added. * change : minor change in docstring. * add : `Marker` added to `__init__`. * update : documents updated. * test : tests added. * edit : minor bugs fixed in tests. * fix : minor typo fixed in demo. --- CHANGELOG.md | 3 +++ README.md | 15 +++++++++++++++ examples/demo.ipynb | 34 ++++++++++++++++++++++++++++++---- otherfiles/images/9.png | Bin 0 -> 172793 bytes samila/__init__.py | 2 +- samila/functions.py | 37 +++++++++++++++++++++++++++++++++---- samila/genimage.py | 7 ++++++- samila/params.py | 37 +++++++++++++++++++++++++++++++++++++ test/function_test.py | 9 +++++++++ test/overall_test.py | 15 ++++++++------- 10 files changed, 142 insertions(+), 17 deletions(-) create mode 100644 otherfiles/images/9.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 150142c..d074c21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Added +- `Marker` enum ### Changed +- `marker` parameter added to `plot` method - Test system modified ## [0.9] - 2022-09-28 ### Added diff --git a/README.md b/README.md index 1ca9b22..5b3efac 100644 --- a/README.md +++ b/README.md @@ -156,6 +156,21 @@ Samila is a generative art generator written in Python, Samila let's you create * Supported projections : `RECTILINEAR`, `POLAR`, `AITOFF`, `HAMMER`, `LAMBERT`, `MOLLWEIDE` and `RANDOM` * Default projection is `RECTILINEAR` +### Marker +```pycon +>>> from samila import Marker +>>> g = GenerativeImage(f1, f2) +>>> g.generate() +>>> g.plot(marker=Marker.CIRCLE, spot_size=10) +>>> g.seed +448742 +>>> plt.show() +``` + + +* Supported markers : `POINT`, `PIXEL`, `CIRCLE`, `TRIANGLE_DOWN`, `TRIANGLE_UP`, `TRIANGLE_LEFT`, `TRIANGLE_RIGHT`, `TRI_DOWN`, `TRI_UP`, `TRI_LEFT`, `TRI_RIGHT`, `OCTAGON`, `SQUARE`, `PENTAGON`, `PLUS`, `PLUS_FILLED`, `STAR`, `HEXAGON_VERTICAL`, `HEXAGON_HORIZONTAL`, `X`, `X_FILLED`, `DIAMOND`, `DIAMON_THIN`, `VLINE`, `HLINE` and `RANDOM` +* Default marker is `POINT` + ### Range ```pycon >>> g = GenerativeImage(f1, f2) diff --git a/examples/demo.ipynb b/examples/demo.ipynb index 8f0c690..79e6684 100644 --- a/examples/demo.ipynb +++ b/examples/demo.ipynb @@ -30,7 +30,7 @@ "import matplotlib.pyplot as plt\n", "import random\n", "import math\n", - "from samila import GenerativeImage, Projection" + "from samila import GenerativeImage, Projection, Marker" ] }, { @@ -107,6 +107,32 @@ " plt.close()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Marker\n", + "We can use the `marker` attribute to change the plotting marker.\n", + "\n", + "The available markers are `POINT`, `PIXEL`, `CIRCLE`, `TRIANGLE_DOWN`, `TRIANGLE_UP`, `TRIANGLE_LEFT`, `TRIANGLE_RIGHT`, `TRI_DOWN`, `TRI_UP`, `TRI_LEFT`, `TRI_RIGHT`, `OCTAGON`, `SQUARE`, `PENTAGON`, `PLUS`, `PLUS_FILLED`, `STAR`, `HEXAGON_VERTICAL`, `HEXAGON_HORIZONTAL`, `X`, `X_FILLED`, `DIAMOND`, `DIAMON_THIN`, `VLINE`, `HLINE` and `RANDOM`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "g2 = GenerativeImage(f1, f2)\n", + "g2.generate()\n", + "\n", + "for m in list(Marker):\n", + " print(m)\n", + " g2.plot(marker=m, spot_size=100)\n", + " plt.show()\n", + " plt.close()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -367,7 +393,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3.8.10 64-bit", "language": "python", "name": "python3" }, @@ -381,7 +407,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.8.10" }, "toc": { "base_numbering": 1, @@ -403,7 +429,7 @@ }, "vscode": { "interpreter": { - "hash": "e7370f93d1d0cde622a1f8e1c04877d8463912d04d973331ad4851f04de6915a" + "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" } } }, diff --git a/otherfiles/images/9.png b/otherfiles/images/9.png new file mode 100644 index 0000000000000000000000000000000000000000..aed537f53757bea1291652eed692f07aeb6cd3ce GIT binary patch literal 172793 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ⅇ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 olbQdWlmFcvkN;nxpktX%ESS?g?Vs#>> marker = samila.Marker.POINT + """ + + DEFAULT = DEFAULT_MARKER + POINT = "." + PIXEL = "," + CIRCLE = "o" + TRIANGLE_DOWN = "v" + TRIANGLE_UP = "^" + TRIANGLE_LEFT = "<" + TRIANGLE_RIGHT = ">" + TRI_DOWN = "1" + TRI_UP = "2" + TRI_LEFT = "3" + TRI_RIGHT = "4" + OCTAGON = "8" + SQUARE = "s" + PENTAGON = "p" + PLUS = "+" + PLUS_FILLED = "P" + STAR = "*" + HEXAGON_VERTICAL = "h" + HEXAGON_HORIZONTAL = "H" + X = "x" + X_FILLED = "X" + DIAMOND = "D" + DIAMON_THIN = "d" + VLINE = "|" + HLINE = "_" + RANDOM = "random" + + RANDOM_COEF_LIST = [ "random.uniform(-1,1)", "random.gauss(0,1)", diff --git a/test/function_test.py b/test/function_test.py index 52d3377..747418e 100644 --- a/test/function_test.py +++ b/test/function_test.py @@ -75,6 +75,15 @@ False >>> projection2 = filter_projection(Projection.RANDOM) >>> projection1 == projection2 False +>>> filter_marker(3) +>>> filter_marker(Marker.POINT) +'.' +>>> random.seed(2) +>>> marker1 = filter_marker(Marker.RANDOM) +>>> random.seed(3) +>>> marker2 = filter_marker(Marker.RANDOM) +>>> marker1 == marker2 +False >>> distance_calc("test","test1") 1 >>> distance_calc("te1st","test") diff --git a/test/overall_test.py b/test/overall_test.py index 2d13e5e..b90a992 100644 --- a/test/overall_test.py +++ b/test/overall_test.py @@ -9,7 +9,7 @@ >>> from matplotlib.colors import Colormap, ListedColormap >>> def guard(*args, **kwargs): ... raise Exception("No internet connection!") ->>> from samila import GenerativeImage, Projection +>>> from samila import GenerativeImage, Projection, Marker >>> from samila.functions import is_same_data >>> import pickle >>> def f1(x,y): @@ -53,7 +53,6 @@ True True >>> isinstance(result["message"], str) True ->>> from samila import GenerativeImage, Projection >>> g.plot(projection=Projection.POLAR, color='red', bgcolor='black') >>> g.color 'red' @@ -84,7 +83,7 @@ True '#555555' >>> g.bgcolor '#aaaaaa' ->>> g.plot(projection=Projection.POLAR, color="complement", bgcolor="complement") +>>> g.plot(projection=Projection.POLAR, color="complement", bgcolor="complement", marker=Marker.X, spot_size=100) >>> g.color '#555555' >>> g.bgcolor @@ -99,17 +98,19 @@ True >>> g.linewidth 2.2 >>> random.seed(2) ->>> g.plot(color="random", bgcolor="random", projection=Projection.RANDOM) ->>> color1, bgcolor1, projection1 = g.color, g.bgcolor, g.projection +>>> g.plot(color="random", bgcolor="random", projection=Projection.RANDOM, marker=Marker.RANDOM) +>>> color1, bgcolor1, projection1, marker1 = g.color, g.bgcolor, g.projection, g.marker >>> random.seed(3) ->>> g.plot(color="random", bgcolor="random", projection=Projection.RANDOM) ->>> color2, bgcolor2, projection2 = g.color, g.bgcolor, g.projection +>>> g.plot(color="random", bgcolor="random", projection=Projection.RANDOM, marker=Marker.RANDOM) +>>> color2, bgcolor2, projection2, marker2 = g.color, g.bgcolor, g.projection, g.marker >>> color1 == color2 False >>> bgcolor1 == bgcolor2 False >>> projection1 == projection2 False +>>> marker1 == marker2 +False >>> result = g.nft_storage(api_key="") >>> result['status'] False From 3d1005185ff383b347d8e05d7b89150b39e2fd01 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Nov 2022 00:18:33 +0330 Subject: [PATCH 05/14] Bump matplotlib from 3.6.1 to 3.6.2 (#160) Bumps [matplotlib](https://github.com/matplotlib/matplotlib) from 3.6.1 to 3.6.2. - [Release notes](https://github.com/matplotlib/matplotlib/releases) - [Commits](https://github.com/matplotlib/matplotlib/compare/v3.6.1...v3.6.2) --- updated-dependencies: - dependency-name: matplotlib dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dev-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-requirements.txt b/dev-requirements.txt index d6830b3..29c8f12 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -1,4 +1,4 @@ -matplotlib==3.6.1 +matplotlib==3.6.2 art==5.7 vulture>=1.0 bandit>=1.5.1 From 5be1cc35fcb9fe5627bc62a98e3bc71ea9889fb6 Mon Sep 17 00:00:00 2001 From: Sepand Haghighi Date: Tue, 8 Nov 2022 08:22:13 +0330 Subject: [PATCH 06/14] Minor edits (#161) * fix : tests updated * fix : tests updated * fix : tests updated * doc : minor edit in description --- README.md | 2 +- setup.py | 3 +- test/overall_test.py | 77 +++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 79 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5b3efac..36253f3 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ ## Overview

-Samila is a generative art generator written in Python, Samila let's you create arts based on many thousand points. The position of every single point is calculated by a formula, which has random parameters. Because of the random numbers, every image looks different. +Samila is a generative art generator written in Python, Samila lets you create images based on many thousand points. The position of every single point is calculated by a formula, which has random parameters. Because of the random numbers, every image looks different.

diff --git a/setup.py b/setup.py index bb60154..dc14180 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,8 @@ except ImportError: from distutils.core import setup -MINIMAL_DESCRIPTION = '''Samila is a generative art generator written in Python, Samila let's you create arts based on many thousand points. The position of every single point is calculated by a formula, which has random parameters. Because of the random numbers, every image looks different.''' +MINIMAL_DESCRIPTION = '''Samila is a generative art generator written in Python, Samila lets you create images based on many thousand points. The position of every single point is calculated by a +formula, which has random parameters. Because of the random numbers, every image looks different.''' def get_requires(): diff --git a/test/overall_test.py b/test/overall_test.py index b90a992..10688a1 100644 --- a/test/overall_test.py +++ b/test/overall_test.py @@ -88,6 +88,10 @@ True '#555555' >>> g.bgcolor '#aaaaaa' +>>> g.marker +'x' +>>> g.spot_size +100 >>> g.plot(bgcolor=(.1, .2, .8), spot_size=0.1) >>> g.plot(size=(20, 20)) >>> g.size @@ -166,7 +170,7 @@ True >>> g.plot(color="white", bgcolor="transparent") >>> g.bgcolor == "TRANSPARENT" True ->>> g.plot(color="white", bgcolor="black", spot_size=0.1) +>>> g.plot() >>> result = g.save_config() >>> result["status"] True @@ -190,6 +194,16 @@ True True >>> g.spot_size == g_.spot_size True +>>> g.projection == g_.projection +True +>>> g.marker == g_.marker +True +>>> g.alpha == g_.alpha +True +>>> g.linewidth == g_.linewidth +True +>>> g.depth == g_.depth +True >>> g_ = GenerativeImage(data=open("data.json", 'r')) >>> g.color == g_.color True @@ -197,6 +211,67 @@ True True >>> g.spot_size == g_.spot_size True +>>> g.projection == g_.projection +True +>>> g.marker == g_.marker +True +>>> g.alpha == g_.alpha +True +>>> g.linewidth == g_.linewidth +True +>>> g.depth == g_.depth +True +>>> g.plot(color="white", bgcolor="black", spot_size=2, projection=Projection.POLAR, marker=Marker.X, alpha=0.2, linewidth=1) +>>> result = g.save_config() +>>> result["status"] +True +>>> isinstance(result["message"], str) +True +>>> result = g.save_data() +>>> result["status"] +True +>>> isinstance(result["message"], str) +True +>>> g_ = GenerativeImage(config=open("config.json", 'r')) +>>> g_.seed == g.seed +True +>>> g_.function1_str == g.function1_str +True +>>> g_.function2_str == g.function2_str +True +>>> g.color == g_.color +True +>>> g.bgcolor == g_.bgcolor +True +>>> g.spot_size == g_.spot_size +True +>>> g.projection == g_.projection +True +>>> g.marker == g_.marker +True +>>> g.alpha == g_.alpha +True +>>> g.linewidth == g_.linewidth +True +>>> g.depth == g_.depth +True +>>> g_ = GenerativeImage(data=open("data.json", 'r')) +>>> g.color == g_.color +True +>>> g.bgcolor == g_.bgcolor +True +>>> g.spot_size == g_.spot_size +True +>>> g.projection == g_.projection +True +>>> g.marker == g_.marker +True +>>> g.alpha == g_.alpha +True +>>> g.linewidth == g_.linewidth +True +>>> g.depth == g_.depth +True >>> with open("config.json", 'w') as fp: ... json.dump({'f1': 'y', 'f2': 'x'}, fp) >>> g = GenerativeImage(config=open("config.json", 'r')) From a2729fb9ab2793a56241b00b116494790873f47d Mon Sep 17 00:00:00 2001 From: Sepand Haghighi Date: Tue, 8 Nov 2022 15:47:01 +0330 Subject: [PATCH 07/14] Python 3.11 support (#162) * fix : Python 3.11 added to test.yml * fix : Python 3.11 added to setup.py --- .github/workflows/test.yml | 2 +- CHANGELOG.md | 1 + setup.py | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 98e7db0..2a9eaab 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest] - python-version: [3.5, 3.6, 3.7, 3.8, 3.9, 3.10.0] + python-version: [3.5, 3.6, 3.7, 3.8, 3.9, 3.10.0, 3.11.0] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} diff --git a/CHANGELOG.md b/CHANGELOG.md index d074c21..bcc2dcb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Changed - `marker` parameter added to `plot` method - Test system modified +- `Python 3.11` added to `test.yml` ## [0.9] - 2022-09-28 ### Added - Anaconda workflow diff --git a/setup.py b/setup.py index dc14180..9d4734b 100644 --- a/setup.py +++ b/setup.py @@ -68,6 +68,7 @@ setup( 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', ], license='MIT', include_package_data=True From b8967acc285ee2be31e37c334f850af52901a203 Mon Sep 17 00:00:00 2001 From: Sepand Haghighi Date: Thu, 10 Nov 2022 17:52:52 +0330 Subject: [PATCH 08/14] Generate method optimization (#163) * fix : generate method optimized * doc : CHANGELOG updated * fix : missed_points_number added * doc : CHANGELOG updated * fix : tests updated --- CHANGELOG.md | 3 +++ samila/functions.py | 22 +--------------------- samila/genimage.py | 18 ++++++++++++------ test/overall_test.py | 2 ++ test/warning_test.py | 2 ++ 5 files changed, 20 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bcc2dcb..5210a54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,8 +9,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - `Marker` enum ### Changed - `marker` parameter added to `plot` method +- `generate` method optimized - Test system modified - `Python 3.11` added to `test.yml` +### Removed +- `fill_data` function ## [0.9] - 2022-09-28 ### Added - Anaconda workflow diff --git a/samila/functions.py b/samila/functions.py index 7203902..2def26e 100644 --- a/samila/functions.py +++ b/samila/functions.py @@ -412,27 +412,6 @@ def generate_params_filter( g.seed, g.start, g.step, g.stop = seed, start, step, stop -def fill_data(g, point): - """ - Fill data with functions in given points. - - :param g: generative image instance - :type g: GenerativeImage - :param point: given point - :type point: tuple - :return: false if some exception occurred - """ - random.seed(g.seed) - try: - data1_ = g.function1(point[0], point[1]).real - data2_ = g.function2(point[0], point[1]).real - except Exception: - return False - g.data1.append(data1_) - g.data2.append(data2_) - return True - - def save_params_filter(g, depth=None): """ Filter save_image method parameters. @@ -480,6 +459,7 @@ def _GI_initializer(g, function1, function2): g.alpha = DEFAULT_ALPHA g.linewidth = DEFAULT_LINEWIDTH g.depth = DEFAULT_DEPTH + g.missed_points_number = 0 def nft_storage_upload(api_key, data): diff --git a/samila/genimage.py b/samila/genimage.py index 719f599..0402fe2 100644 --- a/samila/genimage.py +++ b/samila/genimage.py @@ -7,7 +7,7 @@ import matplotlib import matplotlib.pyplot as plt from .functions import _GI_initializer, plot_params_filter, generate_params_filter, save_params_filter from .functions import float_range, save_data_file, save_fig_file, save_fig_buf, save_config_file -from .functions import load_data, load_config, random_equation_gen, nft_storage_upload, fill_data +from .functions import load_data, load_config, random_equation_gen, nft_storage_upload from .functions import set_background from .params import * from warnings import warn @@ -78,13 +78,19 @@ class GenerativeImage: generate_params_filter(self, seed, start, step, stop) self.data1 = [] self.data2 = [] + self.missed_points_number = 0 range1 = list(float_range(self.start, self.stop, self.step)) - range_prod = list(itertools.product(range1, range1)) - calc_exception = False + range_prod = itertools.product(range1, range1) for point in range_prod: - if not fill_data(self, point): - calc_exception = True - if calc_exception: + random.seed(self.seed) + try: + data1_ = self.function1(point[0], point[1]).real + data2_ = self.function2(point[0], point[1]).real + self.data1.append(data1_) + self.data2.append(data2_) + except Exception: + self.missed_points_number += 1 + if len(self.data1) < (len(range1) ** 2): warn(CALCULATION_EXCEPTION_WARNING, RuntimeWarning) def plot( diff --git a/test/overall_test.py b/test/overall_test.py index 10688a1..63d92ed 100644 --- a/test/overall_test.py +++ b/test/overall_test.py @@ -29,6 +29,8 @@ True True >>> isinstance(g.data2, list) True +>>> g.missed_points_number == 0 +True >>> g.generate(seed=10, start=-2*math.pi, step=0.1, stop=math.pi/2) >>> g.seed 10 diff --git a/test/warning_test.py b/test/warning_test.py index 4af1a87..3973b25 100644 --- a/test/warning_test.py +++ b/test/warning_test.py @@ -23,6 +23,8 @@ True >>> g = GenerativeImage(lambda x, y: 1 / x, lambda x, y: 1 / (y - 1)) >>> with warns(RuntimeWarning, match=r"The given functions are undefined at some points. Your plot may not be complete."): ... g.generate(start=0, stop=2, step=0.1) +>>> g.missed_points_number > 0 +True >>> with warns(RuntimeWarning, match=r"It is not possible to set color and bgcolor to 'complement' at the same time! Both are automatically set to the previous or default selection."): ... g.plot(color='complement', bgcolor='complement') >>> with warns(RuntimeWarning, match=r"color 'rad' not found. Replacing it with 'red'"): From f21f82c225d6768ec19ac96fd78b8394b5a8bf80 Mon Sep 17 00:00:00 2001 From: Sadra Sabouri <43045767+sadrasabouri@users.noreply.github.com> Date: Tue, 22 Nov 2022 13:01:58 +0330 Subject: [PATCH 09/14] Data/Config Upload to IPFS (#164) * add : `get_config` and `get_data`. * add : `upload_data` and `upload_config` parameters added to `nft_storage` method. * log : chages logged. (#144, #145) * edit : config and data are now json dumped. * doc : document updated. * test : tests added. * fix : minor issues fixed in tests. * change : minor changes applied. * test : test splited for inreasing coverage. --- CHANGELOG.md | 4 ++ README.md | 11 +++++ examples/demo.ipynb | 27 +++++++++++- samila/functions.py | 92 ++++++++++++++++++++++++++--------------- samila/genimage.py | 30 +++++++++++++- test/nft_upload_test.py | 22 ++++++++++ 6 files changed, 149 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5210a54..2a7a4ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,8 +7,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] ### Added - `Marker` enum +- `get_data` function +- `get_config` function ### Changed - `marker` parameter added to `plot` method +- `upload_data` parameter added to `nft_storage` method +- `upload_config` parameter added to `nft_storage` method - `generate` method optimized - Test system modified - `Python 3.11` added to `test.yml` diff --git a/README.md b/README.md index 36253f3..3d8b267 100644 --- a/README.md +++ b/README.md @@ -247,6 +247,17 @@ Upload generated image directly to [NFT.storage](https://NFT.storage) {'status': True, 'message': 'FILE_LINK'} ``` +You can also upload your config/data to nft storage as follows: +```pycon +>>> g.nft_storage(api_key="API_KEY", upload_config=True) +{'status': {'image': True, 'config':True}, 'message': {'image':'IMAGE_FILE_LINK', 'config':'CONFIG_FILE_LINK'} +``` +or +```pycon +>>> g.nft_storage(api_key="API_KEY", upload_data=True) +{'status': {'image': True, 'data':True}, 'message': {'image':'IMAGE_FILE_LINK', 'data':'DATA_FILE_LINK'} +``` + ### Save image Save generated image diff --git a/examples/demo.ipynb b/examples/demo.ipynb index 79e6684..b8c1a06 100644 --- a/examples/demo.ipynb +++ b/examples/demo.ipynb @@ -389,6 +389,31 @@ "source": [ "g1.nft_storage(api_key=\"YOUR_API_KEY\")" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also upload your config/data to nft storage as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "g1.nft_storage(api_key=\"YOUR_API_KEY\", upload_config=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "g1.nft_storage(api_key=\"YOUR_API_KEY\", upload_data=True)" + ] } ], "metadata": { @@ -429,7 +454,7 @@ }, "vscode": { "interpreter": { - "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" + "hash": "e7370f93d1d0cde622a1f8e1c04877d8463912d04d973331ad4851f04de6915a" } } }, diff --git a/samila/functions.py b/samila/functions.py index 2def26e..1cce9ff 100644 --- a/samila/functions.py +++ b/samila/functions.py @@ -503,6 +503,26 @@ def save_data_file(g, file_adr): :type file_adr: str :return: result as dict """ + data = get_data(g) + result = {"status": True, "message": DATA_SAVE_SUCCESS_MESSAGE} + try: + with open(file_adr, 'w') as fp: + json.dump(data, fp) + result["message"] = os.path.abspath(file_adr) + except Exception as e: + result["status"] = False + result["message"] = str(e) + return result + + +def get_data(g): + """ + Return data. + + :param g: generative image instance + :type g: GenerativeImage + :return: data as a dict + """ matplotlib_version = matplotlib.__version__ data = {} if g.data1 is None or g.data2 is None: @@ -521,15 +541,42 @@ def save_data_file(g, file_adr): "depth": g.depth } data['matplotlib_version'] = matplotlib_version - result = {"status": True, "message": DATA_SAVE_SUCCESS_MESSAGE} - try: - with open(file_adr, 'w') as fp: - json.dump(data, fp) - result["message"] = os.path.abspath(file_adr) - except Exception as e: - result["status"] = False - result["message"] = str(e) - return result + return data + + +def get_config(g): + """ + Return config. + + :param g: generative image instance + :type g: GenerativeImage + :return: config as a dict + """ + matplotlib_version = matplotlib.__version__ + config = {} + if g.function1_str is None or g.function2_str is None: + raise samilaConfigError(CONFIG_NO_STR_FUNCTION_ERROR) + config['f1'] = g.function1_str + config['f2'] = g.function2_str + config['generate'] = { + "seed": g.seed, + "start": g.start, + "step": g.step, + "stop": g.stop + } + config['plot'] = { + "color": g.color, + "bgcolor": g.bgcolor, + "cmap": _serialize_cmap(g.cmap), + "spot_size": g.spot_size, + "projection": g.projection, + "marker": g.marker, + "alpha": g.alpha, + "linewidth": g.linewidth, + "depth": g.depth + } + config['matplotlib_version'] = matplotlib_version + return config def save_config_file(g, file_adr): @@ -542,34 +589,11 @@ def save_config_file(g, file_adr): :type file_adr: str :return: result as dict """ - matplotlib_version = matplotlib.__version__ - data = {} - if g.function1_str is None or g.function2_str is None: - raise samilaConfigError(CONFIG_NO_STR_FUNCTION_ERROR) - data['f1'] = g.function1_str - data['f2'] = g.function2_str - data['generate'] = { - "seed": g.seed, - "start": g.start, - "step": g.step, - "stop": g.stop - } - data['plot'] = { - "color": g.color, - "bgcolor": g.bgcolor, - "cmap": _serialize_cmap(g.cmap), - "spot_size": g.spot_size, - "projection": g.projection, - "marker": g.marker, - "alpha": g.alpha, - "linewidth": g.linewidth, - "depth": g.depth - } - data['matplotlib_version'] = matplotlib_version + config = get_config(g) result = {"status": True, "message": DATA_SAVE_SUCCESS_MESSAGE} try: with open(file_adr, 'w') as fp: - json.dump(data, fp, indent=4) + json.dump(config, fp, indent=4) result["message"] = os.path.abspath(file_adr) except Exception as e: result["status"] = False diff --git a/samila/genimage.py b/samila/genimage.py index 0402fe2..0de6c31 100644 --- a/samila/genimage.py +++ b/samila/genimage.py @@ -1,11 +1,13 @@ # -*- coding: utf-8 -*- """Samila generative image.""" +import json import random import gc import itertools import matplotlib import matplotlib.pyplot as plt from .functions import _GI_initializer, plot_params_filter, generate_params_filter, save_params_filter +from .functions import get_config, get_data from .functions import float_range, save_data_file, save_fig_file, save_fig_buf, save_config_file from .functions import load_data, load_config, random_equation_gen, nft_storage_upload from .functions import set_background @@ -156,12 +158,21 @@ class GenerativeImage: ax.add_artist(ax.patch) self.fig = fig - def nft_storage(self, api_key, depth=None): + def nft_storage( + self, + api_key, + upload_data=False, + upload_config=False, + depth=None): """ Upload image to nft.storage. :param api_key: API key :type api_key: str + :param upload_data: upload data flag + :type upload_data: bool + :param upload_config: upload config flag + :type upload_config: bool :param depth: image depth :type depth: float :return: result as dict @@ -172,7 +183,22 @@ class GenerativeImage: return {"status": False, "message": response["message"]} buf = response["buffer"] response = nft_storage_upload(api_key=api_key, data=buf.getvalue()) - return response + if upload_config == False and upload_data == False: + return response + result = {key: {'image': value} for key, value in response.items()} + if upload_config: + response = nft_storage_upload( + api_key=api_key, + data=json.dumps(get_config(self))) + for key, value in response.items(): + result[key]['config'] = value + if upload_data: + response = nft_storage_upload( + api_key=api_key, + data=json.dumps(get_data(self))) + for key, value in response.items(): + result[key]['data'] = value + return result def save_image(self, file_adr, depth=None): """ diff --git a/test/nft_upload_test.py b/test/nft_upload_test.py index b97ba4f..d0e5669 100644 --- a/test/nft_upload_test.py +++ b/test/nft_upload_test.py @@ -20,4 +20,26 @@ ... time.sleep(10) >>> status True +>>> status = False +>>> counter = 0 +>>> while(status == False and counter>> status["image"] +True +>>> status["config"] +True +>>> status = False +>>> counter = 0 +>>> while(status == False and counter>> status["image"] +True +>>> status["data"] +True """ From 539547a7c1f6b797c7bd082372ea9bcec268a089 Mon Sep 17 00:00:00 2001 From: Sepand Haghighi Date: Sun, 27 Nov 2022 16:07:43 +0330 Subject: [PATCH 10/14] Plot Warning (#165) * fix : plot method updated * doc : CHANGELOG updated --- CHANGELOG.md | 1 + samila/genimage.py | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a7a4ef..005c941 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - `generate` method optimized - Test system modified - `Python 3.11` added to `test.yml` +- `plot` method warning bug fixed ### Removed - `fill_data` function ## [0.9] - 2022-09-28 diff --git a/samila/genimage.py b/samila/genimage.py index 0de6c31..f902d5c 100644 --- a/samila/genimage.py +++ b/samila/genimage.py @@ -12,7 +12,7 @@ from .functions import float_range, save_data_file, save_fig_file, save_fig_buf, from .functions import load_data, load_config, random_equation_gen, nft_storage_upload from .functions import set_background from .params import * -from warnings import warn +from warnings import warn, catch_warnings, simplefilter class GenerativeImage: @@ -144,15 +144,17 @@ class GenerativeImage: fig.set_size_inches(self.size[0], self.size[1]) ax = fig.add_subplot(111, projection=self.projection) set_background(self.bgcolor, fig, ax) - ax.scatter( - self.data2, - self.data1, - alpha=self.alpha, - c=self.color, - cmap=self.cmap, - s=self.spot_size, - lw=self.linewidth, - marker=self.marker) + with catch_warnings(): + simplefilter("ignore") + ax.scatter( + self.data2, + self.data1, + alpha=self.alpha, + c=self.color, + cmap=self.cmap, + s=self.spot_size, + lw=self.linewidth, + marker=self.marker) ax.set_axis_off() ax.patch.set_zorder(-1) ax.add_artist(ax.patch) From 36085c761b6013aadeeb84a129afdd53770572f5 Mon Sep 17 00:00:00 2001 From: Sadra Sabouri <43045767+sadrasabouri@users.noreply.github.com> Date: Tue, 29 Nov 2022 01:58:20 +0330 Subject: [PATCH 11/14] Test (#167) * fix : `status` issue fixed in tests. * fix : `status["*"]` -> `result['status'][*]` --- test/nft_upload_test.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/nft_upload_test.py b/test/nft_upload_test.py index d0e5669..f3ce1e3 100644 --- a/test/nft_upload_test.py +++ b/test/nft_upload_test.py @@ -25,21 +25,21 @@ True >>> while(status == False and counter>> status["image"] +>>> result['status']["image"] True ->>> status["config"] +>>> result['status']["config"] True >>> status = False >>> counter = 0 >>> while(status == False and counter>> status["image"] +>>> result['status']["image"] True ->>> status["data"] +>>> result['status']["data"] True """ From 9fb12259e0e434f68fe86f1aec7290a24a586276 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Nov 2022 10:54:41 +0330 Subject: [PATCH 12/14] Bump art from 5.7 to 5.8 (#166) Bumps [art](https://github.com/sepandhaghighi/art) from 5.7 to 5.8. - [Release notes](https://github.com/sepandhaghighi/art/releases) - [Changelog](https://github.com/sepandhaghighi/art/blob/master/CHANGELOG.md) - [Commits](https://github.com/sepandhaghighi/art/compare/v5.7...v5.8) --- updated-dependencies: - dependency-name: art dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dev-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-requirements.txt b/dev-requirements.txt index 29c8f12..aa28c79 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -1,5 +1,5 @@ matplotlib==3.6.2 -art==5.7 +art==5.8 vulture>=1.0 bandit>=1.5.1 pydocstyle>=3.0.0 From b38deb26c3d1f2628b8d9136dcea8d6f6b8b7af1 Mon Sep 17 00:00:00 2001 From: Sepand Haghighi Date: Fri, 9 Dec 2022 17:28:44 +0330 Subject: [PATCH 13/14] Random mode modification (#168) * fix : RANDOM_EQUATION_GEN_COMPLEXITY added * fix : ELEMENTS_LIST updated * doc : CHANGELOG updated * doc : dependencies section in README.md removed * fix : ubuntu version fixed to 20.04 --- .github/workflows/test.yml | 8 ++++---- CHANGELOG.md | 2 ++ README.md | 14 -------------- samila/functions.py | 4 ++-- samila/params.py | 3 +++ 5 files changed, 11 insertions(+), 20 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2a9eaab..609f48b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,7 +11,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, windows-latest] + os: [ubuntu-20.04, windows-latest] python-version: [3.5, 3.6, 3.7, 3.8, 3.9, 3.10.0, 3.11.0] steps: - uses: actions/checkout@v2 @@ -40,7 +40,7 @@ jobs: python -m pytest test --cov=samila --cov-report=term env: NFT_STORAGE_API_KEY: ${{ secrets.NFT_STORAGE_API_KEY }} - if: matrix.python-version == 3.8 && matrix.os == 'ubuntu-latest' + if: matrix.python-version == 3.8 && matrix.os == 'ubuntu-20.04' - name: Version check run: | python otherfiles/version_check.py @@ -55,11 +55,11 @@ jobs: run: | pip install notebook>=5.2.2 python otherfiles/notebook_check.py - if: matrix.python-version == 3.8 && matrix.os == 'ubuntu-latest' + if: matrix.python-version == 3.8 && matrix.os == 'ubuntu-20.04' - name: Codecov run: | codecov - if: matrix.python-version == 3.8 && matrix.os == 'ubuntu-latest' + if: matrix.python-version == 3.8 && matrix.os == 'ubuntu-20.04' - name: cProfile run: | python -m cProfile -s cumtime otherfiles/samila_profile.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 005c941..aa9dc1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,8 +15,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - `upload_config` parameter added to `nft_storage` method - `generate` method optimized - Test system modified +- `README.md` updated - `Python 3.11` added to `test.yml` - `plot` method warning bug fixed +- Random mode modified ### Removed - `fill_data` function ## [0.9] - 2022-09-28 diff --git a/README.md b/README.md index 3d8b267..a10ffbd 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,6 @@ * [Mathematical Details](https://github.com/sepandhaghighi/samila#mathematical-details) * [Try Samila in Your Browser](https://github.com/sepandhaghighi/samila#try-samila-in-your-browser) * [Issues & Bug Reports](https://github.com/sepandhaghighi/samila#issues--bug-reports) - * [Dependencies](https://github.com/sepandhaghighi/samila#dependencies) * [Social Media](https://github.com/sepandhaghighi/samila#social-media) * [Contribution](https://github.com/sepandhaghighi/samila/blob/master/.github/CONTRIBUTING.md) * [References](https://github.com/sepandhaghighi/samila#references) @@ -401,19 +400,6 @@ You can also join our discord server
-## Dependencies - - - - - - - - - - -
masterdev
Requirements StatusRequirements Status
- ## Social media 1. [Instagram](https://www.instagram.com/samila_arts) diff --git a/samila/functions.py b/samila/functions.py index 1cce9ff..df3bd97 100644 --- a/samila/functions.py +++ b/samila/functions.py @@ -19,7 +19,7 @@ from .params import NO_FIG_ERROR_MESSAGE, FIG_SAVE_SUCCESS_MESSAGE, NFT_STORAGE_ from .params import INVALID_COLOR_TYPE_ERROR, COLOR_SIZE_ERROR from .params import BOTH_COLOR_COMPLEMENT_WARNING, COLOR_NOT_FOUND_WARNING from .params import DATA_SAVE_SUCCESS_MESSAGE, SEED_LOWER_BOUND, SEED_UPPER_BOUND -from .params import ELEMENTS_LIST, ARGUMENTS_LIST, OPERATORS_LIST, RANDOM_COEF_LIST +from .params import ELEMENTS_LIST, ARGUMENTS_LIST, OPERATORS_LIST, RANDOM_COEF_LIST, RANDOM_EQUATION_GEN_COMPLEXITY from .errors import samilaDataError, samilaPlotError, samilaConfigError from warnings import warn @@ -30,7 +30,7 @@ def random_equation_gen(): :return: equation as str """ - num_elements = random.randint(1, len(ELEMENTS_LIST)) + num_elements = random.randint(1, RANDOM_EQUATION_GEN_COMPLEXITY) result = "" index = 1 random_coef = random.choice(RANDOM_COEF_LIST) diff --git a/samila/params.py b/samila/params.py index 735c5de..eac4414 100644 --- a/samila/params.py +++ b/samila/params.py @@ -123,6 +123,7 @@ ELEMENTS_LIST = [ "{0}*math.tanh({1})", "{0}*math.cos({1})", "{0}*math.sin({1})", + "{0}*math.tan({1})", "{0}*{1}", "{0}*abs({1})", "{0}*math.ceil({1})", @@ -149,3 +150,5 @@ ARGUMENTS_LIST = [ "y*(x**3)"] OPERATORS_LIST = ["+", "-", "*", "/"] + +RANDOM_EQUATION_GEN_COMPLEXITY = len(ELEMENTS_LIST) + 1 From 54d58497ef30c465545b8cffa915e595f5c4e96d Mon Sep 17 00:00:00 2001 From: sepandhaghighi Date: Fri, 9 Dec 2022 17:45:56 +0330 Subject: [PATCH 14/14] rel : migrate to version 1.0 --- CHANGELOG.md | 4 +++- README.md | 4 ++-- otherfiles/meta.yaml | 2 +- otherfiles/version_check.py | 2 +- samila/params.py | 2 +- setup.py | 6 +++--- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa9dc1b..acbaac9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## [Unreleased] +## [1.0] - 2022-12-14 ### Added - `Marker` enum - `get_data` function @@ -152,7 +153,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - `generate` method - `nft_storage` method -[Unreleased]: https://github.com/sepandhaghighi/samila/compare/v0.9...dev +[Unreleased]: https://github.com/sepandhaghighi/samila/compare/v1.0...dev +[1.0]: https://github.com/sepandhaghighi/samila/compare/v0.9...v1.0 [0.9]: https://github.com/sepandhaghighi/samila/compare/v0.8...v0.9 [0.8]: https://github.com/sepandhaghighi/samila/compare/v0.7...v0.8 [0.7]: https://github.com/sepandhaghighi/samila/compare/v0.6...v0.7 diff --git a/README.md b/README.md index a10ffbd..185fbc7 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,7 @@ Samila is a generative art generator written in Python, Samila lets you create i ### Source code -- Download [Version 0.9](https://github.com/sepandhaghighi/samila/archive/v0.9.zip) or [Latest Source ](https://github.com/sepandhaghighi/samila/archive/dev.zip) +- Download [Version 1.0](https://github.com/sepandhaghighi/samila/archive/v1.0.zip) or [Latest Source](https://github.com/sepandhaghighi/samila/archive/dev.zip) - Run `pip install -r requirements.txt` or `pip3 install -r requirements.txt` (Need root access) - Run `python3 setup.py install` or `python setup.py install` (Need root access) @@ -96,7 +96,7 @@ Samila is a generative art generator written in Python, Samila lets you create i - Check [Python Packaging User Guide](https://packaging.python.org/installing/) -- Run `pip install samila==0.9` or `pip3 install samila==0.9` (Need root access) +- Run `pip install samila==1.0` or `pip3 install samila==1.0` (Need root access) ### Easy install diff --git a/otherfiles/meta.yaml b/otherfiles/meta.yaml index 7d9c5d1..89afa9d 100644 --- a/otherfiles/meta.yaml +++ b/otherfiles/meta.yaml @@ -1,5 +1,5 @@ {% set name = "samila" %} -{% set version = "0.9" %} +{% set version = "1.0" %} package: name: {{ name|lower }} diff --git a/otherfiles/version_check.py b/otherfiles/version_check.py index 91ae0ee..0f9ba2f 100644 --- a/otherfiles/version_check.py +++ b/otherfiles/version_check.py @@ -4,7 +4,7 @@ import os import sys import codecs Failed = 0 -SAMILA_VERSION = "0.9" +SAMILA_VERSION = "1.0" SETUP_ITEMS = [ diff --git a/samila/params.py b/samila/params.py index eac4414..565b665 100644 --- a/samila/params.py +++ b/samila/params.py @@ -5,7 +5,7 @@ from enum import Enum from matplotlib import colors as mcolors from matplotlib import cm -SAMILA_VERSION = "0.9" # pragma: no cover +SAMILA_VERSION = "1.0" # pragma: no cover OVERVIEW = ''' Samila is a generative art generator written in Python, Samila let's you diff --git a/setup.py b/setup.py index 9d4734b..6a08d8b 100644 --- a/setup.py +++ b/setup.py @@ -33,14 +33,14 @@ def read_description(): setup( name='samila', packages=['samila'], - version='0.9', + version='1.0', description='Generative ART', long_description=read_description(), long_description_content_type='text/markdown', author='Samila Development Team', author_email='info@samila.site', url='https://www.samila.site', - download_url='https://github.com/sepandhaghighi/samila/tarball/v0.9', + download_url='https://github.com/sepandhaghighi/samila/tarball/v1.0', keywords="generative-art art nft file nft-storage", project_urls={ 'Source': 'https://github.com/sepandhaghighi/samila', @@ -50,7 +50,7 @@ setup( install_requires=get_requires(), python_requires='>=3.5', classifiers=[ - 'Development Status :: 4 - Beta', + 'Development Status :: 5 - Production/Stable', 'Natural Language :: English', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent',