srcalchemy 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,137 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ coverage.*
46
+ .cache
47
+ .uv-cache
48
+ nosetests.xml
49
+ coverage.xml
50
+ *.cover
51
+ *.py,cover
52
+ .hypothesis/
53
+ .pytest_cache/
54
+ cover/
55
+
56
+ # Translations
57
+ *.mo
58
+ *.pot
59
+
60
+ # Sphinx documentation
61
+ docs/_build/
62
+
63
+ # PyBuilder
64
+ .pybuilder/
65
+ target/
66
+
67
+ # Jupyter Notebook
68
+ .ipynb_checkpoints
69
+
70
+ # IPython
71
+ profile_default/
72
+ ipython_config.py
73
+
74
+ # pyenv
75
+ # For a library or package, you might want to ignore these files since the code is
76
+ # intended to run in multiple environments; otherwise, check them in:
77
+ .python-version
78
+
79
+ # PEP 582;
80
+ __pypackages__/
81
+
82
+ # SageMath parsed files
83
+ *.sage.py
84
+
85
+ # Environments
86
+ .env
87
+ .venv
88
+ env/
89
+ venv/
90
+ ENV/
91
+ env.bak/
92
+ venv.bak/
93
+
94
+ # mkdocs documentation
95
+ /site
96
+
97
+ # mypy
98
+ .mypy_cache/
99
+ .dmypy.json
100
+ dmypy.json
101
+
102
+ # Pyre type checker
103
+ .pyre/
104
+
105
+ # pytype static type analyzer
106
+ .pytype/
107
+
108
+ # Cython debug symbols
109
+ cython_debug/
110
+
111
+ # Ruff stuff:
112
+ .ruff_cache/
113
+
114
+ # PyPI configuration file
115
+ .pypirc
116
+
117
+ .reports
118
+ reports
119
+ data
120
+
121
+ srcalchemy/_version.py
122
+
123
+ config.ini
124
+ config*.ini
125
+ *.log
126
+ *code-quality.json
127
+
128
+ # Visual Studio Code
129
+ .vscode/*
130
+ !.vscode/settings.json
131
+ !.vscode/tasks.json
132
+ !.vscode/launch.json
133
+ !.vscode/extensions.json
134
+ !.vscode/*.code-snippets
135
+ !*.code-workspace
136
+ release.md
137
+ tmp.md
@@ -0,0 +1,7 @@
1
+ {
2
+ "recommendations": [
3
+ "charliermarsh.ruff",
4
+ "astral-sh.ty",
5
+ "nefrob.vscode-just-syntax"
6
+ ]
7
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "makefile.configureOnOpen": false,
3
+ "cSpell.words": [
4
+ "dataclass",
5
+ "furo",
6
+ "htmlcov",
7
+ "interruptible",
8
+ "ipython",
9
+ "Jellyfin",
10
+ "mdinclude",
11
+ "nosetests",
12
+ "pybuilder",
13
+ "pyproject",
14
+ "scrapy",
15
+ "sdist",
16
+ "SIGSTORE",
17
+ "srcalchemy",
18
+ "toctree",
19
+ "trixie",
20
+ "versioningit",
21
+ "viewcode",
22
+ "webassets",
23
+ "XBMC"
24
+ ],
25
+ "files.associations": {
26
+ ".yamllint": "yaml",
27
+ ".gitlab-ci.yml": "yaml"
28
+ }
29
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "header": {
3
+ "description": "Default header",
4
+ "prefix": "header",
5
+ "body": [
6
+ "${LINE_COMMENT}################################################################################",
7
+ "${LINE_COMMENT} MIT License",
8
+ "${LINE_COMMENT}",
9
+ "${LINE_COMMENT} Copyright (c) 2025 Duncan Fraser",
10
+ "${LINE_COMMENT}",
11
+ "${LINE_COMMENT} Permission is hereby granted, free of charge, to any person obtaining a copy",
12
+ "${LINE_COMMENT} of this software and associated documentation files (the \"Software\"), to deal",
13
+ "${LINE_COMMENT} in the Software without restriction, including without limitation the rights",
14
+ "${LINE_COMMENT} to use, copy, modify, merge, publish, distribute, sublicense, and/or sell",
15
+ "${LINE_COMMENT} copies of the Software, and to permit persons to whom the Software is",
16
+ "${LINE_COMMENT} furnished to do so, subject to the following conditions:",
17
+ "${LINE_COMMENT}",
18
+ "${LINE_COMMENT} The above copyright notice and this permission notice shall be included in all",
19
+ "${LINE_COMMENT} copies or substantial portions of the Software.",
20
+ "${LINE_COMMENT}",
21
+ "${LINE_COMMENT} THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR",
22
+ "${LINE_COMMENT} IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
23
+ "${LINE_COMMENT} FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE",
24
+ "${LINE_COMMENT} AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
25
+ "${LINE_COMMENT} LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,",
26
+ "${LINE_COMMENT} OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE",
27
+ "${LINE_COMMENT} SOFTWARE.",
28
+ "${LINE_COMMENT}################################################################################",
29
+ "${LINE_COMMENT}",
30
+ "${LINE_COMMENT} File : ${TM_FILENAME}",
31
+ "${LINE_COMMENT}",
32
+ "${LINE_COMMENT} Author : ${1:First Last} <${2:first.last@example.com}>",
33
+ "${LINE_COMMENT}",
34
+ "${LINE_COMMENT} Description : ${4:Brief description of the file}",
35
+ "${LINE_COMMENT}",
36
+ "${LINE_COMMENT}################################################################################",
37
+ ],
38
+ },
39
+ }
@@ -0,0 +1,5 @@
1
+ ## 0.1.1 (2026-11-08)
2
+
3
+ ### security (1 change)
4
+
5
+ - [Add Release Attestations](https://gitlab.com/thedrunkencoder/srcalchemy/-/commit/b12385474d9a458f5e18bf77e84837a0f9155352) ([merge request](https://gitlab.com/thedrunkencoder/srcalchemy/-/merge_requests/21))
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Duncan Fraser
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,105 @@
1
+ Metadata-Version: 2.5
2
+ Name: srcalchemy
3
+ Version: 0.2.0
4
+ Project-URL: Homepage, https://gitlab.com/thedrunkencoder/srcalchemy
5
+ Project-URL: Repository, https://gitlab.com/thedrunkencoder/srcalchemy
6
+ Project-URL: Issues, https://gitlab.com/thedrunkencoder/srcalchemy/-/issues
7
+ Project-URL: Changelog, https://gitlab.com/thedrunkencoder/srcalchemy/-/blob/main/CHANGELOG.md?ref_type=heads
8
+ Project-URL: Documentation, https://gitlab.com/thedrunkencoder/srcalchemy
9
+ Author-email: Duncan Fraser <dfraser@thedrunkencoder.uk>
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Natural Language :: English
14
+ Classifier: Topic :: Utilities
15
+ Classifier: Typing :: Typed
16
+ Requires-Python: >=3.11
17
+ Requires-Dist: alive-progress>=3.3.0
18
+ Requires-Dist: requests==2.32.3
19
+ Description-Content-Type: text/markdown
20
+
21
+ [![Kodi Rename](docs/source/_static/logo.png)](https://gitlab.com/thedrunkencoder/srcalchemy/)
22
+
23
+ [![Latest Release](https://gitlab.com/thedrunkencoder/srcalchemy/-/badges/release.svg)](https://gitlab.com/thedrunkencoder/srcalchemy/-/releases)
24
+ [![pipeline status](https://gitlab.com/thedrunkencoder/srcalchemy/badges/main/pipeline.svg)](https://gitlab.com/thedrunkencoder/srcalchemy/-/commits/main)
25
+ [![coverage report](https://gitlab.com/thedrunkencoder/srcalchemy/badges/main/coverage.svg)](https://gitlab.com/thedrunkencoder/srcalchemy/-/commits/main)
26
+ [![GitLab License](https://img.shields.io/gitlab/license/thedrunkencoder%2Fsrcalchemy)](https://gitlab.com/thedrunkencoder/srcalchemy/-/blob/main/LICENSE?ref_type=heads)
27
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
28
+ [![Python Version from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fgitlab.com%2Fthedrunkencoder%2Fsrcalchemy%2F-%2Fraw%2Fmain%2Fpyproject.toml%3Fref_type%3Dheads&logo=python)](https://pypi.org/project/srcalchemy/)
29
+
30
+ Utility for renaming video files from a kodi library.
31
+
32
+ Over the years of ripping my DVD collection into Kodi, I have not had the best practices with the naming of the files.
33
+ Leading to a mess of naming schemes having files that will not parse and have had to manually update the information in Kodi.
34
+
35
+ Now with looking to update my home media setup and not having enough will power to manually update all of my collection. Here we are
36
+
37
+
38
+ # Installation and usage
39
+ ## Installation
40
+
41
+ **srcalchemy** can be installed by running `pip install srcalchemy`, It requires Python 3.11+ to run.
42
+
43
+ If you want the latest changes and want to install from Gitlab, use `pip install git+https://gitlab.com/thedrunkencoder/srcalchemy`
44
+
45
+ ## Usage
46
+
47
+ To get started generate a configuration file
48
+ ```bash
49
+ srcalchemy init
50
+ ```
51
+ You can also run *srcalchemy* as a package if running as a script doesn't work
52
+ ```bash
53
+ python3 -m srcalchemy init
54
+ ```
55
+
56
+ After updating the generated configuration file. Collect all the information from Kodi
57
+
58
+ ```bash
59
+ srcalchemy collect
60
+ ```
61
+
62
+ Perform the rename
63
+
64
+ ```bash
65
+ srcalchemy rename
66
+ ```
67
+
68
+ Once all is done, you can delete the left over folders
69
+
70
+ ```bash
71
+ srcalchemy clean
72
+ ```
73
+
74
+ ## Configuration
75
+
76
+ All configuration is provided via a TOML configuration file.
77
+
78
+ All the commands support providing the configuration file rather than loading the default location
79
+ ```bash
80
+ srcalchemy -c other_config.ini init
81
+ ```
82
+
83
+ # Future Ideas
84
+
85
+ Some idea that have been floating around in my head since starting to properly work on this project. That may or may not end up being integrated in.
86
+
87
+ ## Support for other media servers
88
+
89
+ Getting support for other media server such as [Plex](https://www.plex.tv/) and [JellyFin](https://jellyfin.org/), as this issue is not limited to Kodi.
90
+ This will most likely require a rewrite of the collector module to parse the APIs and parse the data into the correct format.
91
+
92
+ ## Integration with metadata providers
93
+
94
+ Collecting information from metadata providers such as TheTVDb to either expand on the options for naming media.
95
+ Or rather than collecting the data from Kodi, attempting to parse from these databases so that the project could be used as the last step in a ripping/transcoding pipeline.
96
+
97
+ # Contributing
98
+
99
+ Please feel free to open issues and merge requests if you encounter and issue or just want to help improve this project.
100
+
101
+ # Disclaimer
102
+
103
+ **srcalchemy** is an independent, open-source utility developed for community use. It is not officially affiliated with, endorsed by, sponsored by, or representative of the XBMC Foundation, Kodi, Jellyfin, or any other media server platforms or entities mentioned herein.
104
+
105
+ All product names, logos, trademarks, and registered trademarks are property of their respective owners. The use of these names and trademarks within this project is solely for the purpose of identifying compatibility and describing the tool's functionality.
@@ -0,0 +1,85 @@
1
+ [![Kodi Rename](docs/source/_static/logo.png)](https://gitlab.com/thedrunkencoder/srcalchemy/)
2
+
3
+ [![Latest Release](https://gitlab.com/thedrunkencoder/srcalchemy/-/badges/release.svg)](https://gitlab.com/thedrunkencoder/srcalchemy/-/releases)
4
+ [![pipeline status](https://gitlab.com/thedrunkencoder/srcalchemy/badges/main/pipeline.svg)](https://gitlab.com/thedrunkencoder/srcalchemy/-/commits/main)
5
+ [![coverage report](https://gitlab.com/thedrunkencoder/srcalchemy/badges/main/coverage.svg)](https://gitlab.com/thedrunkencoder/srcalchemy/-/commits/main)
6
+ [![GitLab License](https://img.shields.io/gitlab/license/thedrunkencoder%2Fsrcalchemy)](https://gitlab.com/thedrunkencoder/srcalchemy/-/blob/main/LICENSE?ref_type=heads)
7
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
8
+ [![Python Version from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fgitlab.com%2Fthedrunkencoder%2Fsrcalchemy%2F-%2Fraw%2Fmain%2Fpyproject.toml%3Fref_type%3Dheads&logo=python)](https://pypi.org/project/srcalchemy/)
9
+
10
+ Utility for renaming video files from a kodi library.
11
+
12
+ Over the years of ripping my DVD collection into Kodi, I have not had the best practices with the naming of the files.
13
+ Leading to a mess of naming schemes having files that will not parse and have had to manually update the information in Kodi.
14
+
15
+ Now with looking to update my home media setup and not having enough will power to manually update all of my collection. Here we are
16
+
17
+
18
+ # Installation and usage
19
+ ## Installation
20
+
21
+ **srcalchemy** can be installed by running `pip install srcalchemy`, It requires Python 3.11+ to run.
22
+
23
+ If you want the latest changes and want to install from Gitlab, use `pip install git+https://gitlab.com/thedrunkencoder/srcalchemy`
24
+
25
+ ## Usage
26
+
27
+ To get started generate a configuration file
28
+ ```bash
29
+ srcalchemy init
30
+ ```
31
+ You can also run *srcalchemy* as a package if running as a script doesn't work
32
+ ```bash
33
+ python3 -m srcalchemy init
34
+ ```
35
+
36
+ After updating the generated configuration file. Collect all the information from Kodi
37
+
38
+ ```bash
39
+ srcalchemy collect
40
+ ```
41
+
42
+ Perform the rename
43
+
44
+ ```bash
45
+ srcalchemy rename
46
+ ```
47
+
48
+ Once all is done, you can delete the left over folders
49
+
50
+ ```bash
51
+ srcalchemy clean
52
+ ```
53
+
54
+ ## Configuration
55
+
56
+ All configuration is provided via a TOML configuration file.
57
+
58
+ All the commands support providing the configuration file rather than loading the default location
59
+ ```bash
60
+ srcalchemy -c other_config.ini init
61
+ ```
62
+
63
+ # Future Ideas
64
+
65
+ Some idea that have been floating around in my head since starting to properly work on this project. That may or may not end up being integrated in.
66
+
67
+ ## Support for other media servers
68
+
69
+ Getting support for other media server such as [Plex](https://www.plex.tv/) and [JellyFin](https://jellyfin.org/), as this issue is not limited to Kodi.
70
+ This will most likely require a rewrite of the collector module to parse the APIs and parse the data into the correct format.
71
+
72
+ ## Integration with metadata providers
73
+
74
+ Collecting information from metadata providers such as TheTVDb to either expand on the options for naming media.
75
+ Or rather than collecting the data from Kodi, attempting to parse from these databases so that the project could be used as the last step in a ripping/transcoding pipeline.
76
+
77
+ # Contributing
78
+
79
+ Please feel free to open issues and merge requests if you encounter and issue or just want to help improve this project.
80
+
81
+ # Disclaimer
82
+
83
+ **srcalchemy** is an independent, open-source utility developed for community use. It is not officially affiliated with, endorsed by, sponsored by, or representative of the XBMC Foundation, Kodi, Jellyfin, or any other media server platforms or entities mentioned herein.
84
+
85
+ All product names, logos, trademarks, and registered trademarks are property of their respective owners. The use of these names and trademarks within this project is solely for the purpose of identifying compatibility and describing the tool's functionality.
@@ -0,0 +1,239 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="512"
6
+ height="256"
7
+ viewBox="0 0 135.46666 67.733335"
8
+ version="1.1"
9
+ id="svg1"
10
+ inkscape:export-filename="logo.png"
11
+ inkscape:export-xdpi="96"
12
+ inkscape:export-ydpi="96"
13
+ inkscape:version="1.4.4 (dcaf3e7d9e, 2026-05-05)"
14
+ sodipodi:docname="logo.svg"
15
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
16
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
17
+ xmlns:xlink="http://www.w3.org/1999/xlink"
18
+ xmlns="http://www.w3.org/2000/svg"
19
+ xmlns:svg="http://www.w3.org/2000/svg"
20
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
21
+ xmlns:cc="http://creativecommons.org/ns#">
22
+ <sodipodi:namedview
23
+ id="namedview1"
24
+ pagecolor="#ffffff"
25
+ bordercolor="#000000"
26
+ borderopacity="0.25"
27
+ inkscape:showpageshadow="2"
28
+ inkscape:pageopacity="0.0"
29
+ inkscape:pagecheckerboard="0"
30
+ inkscape:deskcolor="#d1d1d1"
31
+ inkscape:document-units="mm"
32
+ showgrid="true"
33
+ inkscape:zoom="2"
34
+ inkscape:cx="165.5"
35
+ inkscape:cy="169"
36
+ inkscape:window-width="3072"
37
+ inkscape:window-height="1659"
38
+ inkscape:window-x="0"
39
+ inkscape:window-y="0"
40
+ inkscape:window-maximized="1"
41
+ inkscape:current-layer="g4" />
42
+ <defs
43
+ id="defs1">
44
+ <linearGradient
45
+ id="linearGradient25"
46
+ inkscape:collect="always">
47
+ <stop
48
+ style="stop-color:#0f172a;stop-opacity:1;"
49
+ offset="0.44073457"
50
+ id="stop26" />
51
+ <stop
52
+ style="stop-color:#0f172a;stop-opacity:0;"
53
+ offset="0.54590988"
54
+ id="stop27" />
55
+ </linearGradient>
56
+ <linearGradient
57
+ id="linearGradient18"
58
+ inkscape:collect="always">
59
+ <stop
60
+ style="stop-color:#0f172a;stop-opacity:0;"
61
+ offset="0.16527545"
62
+ id="stop19" />
63
+ <stop
64
+ style="stop-color:#2563eb;stop-opacity:1;"
65
+ offset="1"
66
+ id="stop18" />
67
+ </linearGradient>
68
+ <linearGradient
69
+ id="linearGradient12"
70
+ inkscape:collect="always">
71
+ <stop
72
+ style="stop-color:#2563eb;stop-opacity:1;"
73
+ offset="0.31552589"
74
+ id="stop12" />
75
+ <stop
76
+ style="stop-color:#0f172a;stop-opacity:0;"
77
+ offset="0.86811352"
78
+ id="stop13" />
79
+ </linearGradient>
80
+ <inkscape:path-effect
81
+ effect="fillet_chamfer"
82
+ id="path-effect5"
83
+ is_visible="true"
84
+ lpeversion="1"
85
+ nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
86
+ radius="0"
87
+ unit="px"
88
+ method="auto"
89
+ mode="F"
90
+ chamfer_steps="1"
91
+ flexible="false"
92
+ use_knot_distance="true"
93
+ apply_no_radius="true"
94
+ apply_with_radius="true"
95
+ only_selected="false"
96
+ hide_knots="false" />
97
+ <inkscape:path-effect
98
+ effect="fillet_chamfer"
99
+ id="path-effect4"
100
+ is_visible="true"
101
+ lpeversion="1"
102
+ nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
103
+ radius="0"
104
+ unit="px"
105
+ method="auto"
106
+ mode="F"
107
+ chamfer_steps="1"
108
+ flexible="false"
109
+ use_knot_distance="true"
110
+ apply_no_radius="true"
111
+ apply_with_radius="true"
112
+ only_selected="false"
113
+ hide_knots="false" />
114
+ <rect
115
+ x="143.83231"
116
+ y="296.98709"
117
+ width="314.19031"
118
+ height="61.076576"
119
+ id="rect2" />
120
+ <linearGradient
121
+ inkscape:collect="always"
122
+ xlink:href="#linearGradient12"
123
+ id="linearGradient13"
124
+ x1="9.9780273"
125
+ y1="71.910538"
126
+ x2="110.5478"
127
+ y2="93.287308"
128
+ gradientUnits="userSpaceOnUse" />
129
+ <linearGradient
130
+ inkscape:collect="always"
131
+ xlink:href="#linearGradient18"
132
+ id="linearGradient19"
133
+ x1="104.35378"
134
+ y1="78.407333"
135
+ x2="130.10109"
136
+ y2="83.880096"
137
+ gradientUnits="userSpaceOnUse" />
138
+ <linearGradient
139
+ inkscape:collect="always"
140
+ xlink:href="#linearGradient25"
141
+ id="linearGradient27"
142
+ x1="-59.45409"
143
+ y1="81.302338"
144
+ x2="-59.45409"
145
+ y2="153.60933"
146
+ gradientUnits="userSpaceOnUse"
147
+ gradientTransform="matrix(0.77786938,0,0,0.77786938,0.11730446,21.64298)" />
148
+ </defs>
149
+ <g
150
+ inkscape:groupmode="layer"
151
+ id="g9"
152
+ inkscape:label="Gilab Light"
153
+ style="display:none">
154
+ <rect
155
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
156
+ id="rect9"
157
+ width="150"
158
+ height="150"
159
+ x="-7.2666669"
160
+ y="-7.2666669"
161
+ ry="0" />
162
+ </g>
163
+ <g
164
+ inkscape:groupmode="layer"
165
+ id="layer2"
166
+ inkscape:label="Gitlab Dark"
167
+ style="display:none">
168
+ <rect
169
+ style="fill:#1f1e24;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
170
+ id="rect8"
171
+ width="150"
172
+ height="150"
173
+ x="-7.2666669"
174
+ y="-7.2666669"
175
+ ry="0" />
176
+ </g>
177
+ <g
178
+ inkscape:label="Layer 1"
179
+ inkscape:groupmode="layer"
180
+ id="layer1">
181
+ <g
182
+ id="g4"
183
+ transform="translate(-1.9644369,-47.067996)">
184
+ <path
185
+ id="rect3"
186
+ style="fill:url(#linearGradient13);fill-opacity:1;stroke:#2563eb;stroke-width:0.922479;stroke-dasharray:none;stroke-opacity:1"
187
+ d="m 96.436164,97.253363 -78.478855,2e-6 c -4.703022,0 -8.4892085,-3.786187 -8.4892085,-8.489209 V 73.523273 c 0,-4.703021 3.7861865,-8.489208 8.4892085,-8.489208 v 0 h 85.094981" />
188
+ <path
189
+ id="path7"
190
+ style="fill:url(#linearGradient19);stroke:#2563eb;stroke-width:0.922479;stroke-dasharray:none;stroke-opacity:1"
191
+ d="m 110.68231,65.034065 h 10.75593 c 4.70302,0 8.4892,3.786187 8.4892,8.489208 v 15.240883 c 0,4.703022 -3.78618,8.489209 -8.4892,8.489209 h -17.37206" />
192
+ <rect
193
+ style="fill:url(#linearGradient27);stroke:none;stroke-width:1.00289;stroke-dasharray:none;stroke-opacity:1"
194
+ id="rect5"
195
+ width="56.245399"
196
+ height="3.2721925"
197
+ x="-74.252914"
198
+ y="111.37218"
199
+ transform="rotate(-78.618458,9.1716702,5.5055477)"
200
+ rx="0.69999999"
201
+ ry="0.69999999" />
202
+ <text
203
+ xml:space="preserve"
204
+ transform="matrix(0.26458333,0,0,0.26458333,-24.67385,-5.7769862)"
205
+ id="text2"
206
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:53.3333px;font-family:'JetBrains Mono';-inkscape-font-specification:'JetBrains Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect2);display:inline;fill:#f8fafc;fill-opacity:1"><tspan
207
+ x="143.83203"
208
+ y="344.86509"
209
+ id="tspan3"><tspan
210
+ style="font-size:48px;font-family:Sans;-inkscape-font-specification:'Sans, Normal'"
211
+ id="tspan1">SRCALCHEMY</tspan></tspan></text>
212
+ </g>
213
+ </g>
214
+ <metadata
215
+ id="metadata1">
216
+ <rdf:RDF>
217
+ <cc:Work
218
+ rdf:about="">
219
+ <cc:license
220
+ rdf:resource="http://creativecommons.org/licenses/by-nc/4.0/" />
221
+ </cc:Work>
222
+ <cc:License
223
+ rdf:about="http://creativecommons.org/licenses/by-nc/4.0/">
224
+ <cc:permits
225
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
226
+ <cc:permits
227
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
228
+ <cc:requires
229
+ rdf:resource="http://creativecommons.org/ns#Notice" />
230
+ <cc:requires
231
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
232
+ <cc:prohibits
233
+ rdf:resource="http://creativecommons.org/ns#CommercialUse" />
234
+ <cc:permits
235
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
236
+ </cc:License>
237
+ </rdf:RDF>
238
+ </metadata>
239
+ </svg>