Skip to content

Commit d8cfa36

Browse files
committed
🚀 releasing version 3.0.0 @ 2022-12-22 00:44
[skip ci]
1 parent ce55582 commit d8cfa36

16 files changed

+456
-62
lines changed

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,27 @@ This project was forked from version 1.7.4 of [mbed-tools-ci-scripts](https://gi
1717

1818
[//]: # (begin_release_notes)
1919

20+
"3.0.0" (2022-12-22)
21+
====================
22+
23+
Major changes
24+
-------------
25+
26+
- :boom: Refactored the `NoOp` plugin to do no operation (#20221222001818)
27+
28+
29+
Features
30+
--------
31+
32+
- :sparkles: Added a `basic` plugin to replace former `NoOp` plugin (#20221222001622)
33+
34+
35+
Bugfixes
36+
--------
37+
38+
- :bug: Fixed the plugin loader to enable plugin inheritance (#20221222001917)
39+
40+
2041
"2.11.0" (2022-12-21)
2142
=====================
2243

continuous_delivery_scripts/_version.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
1111
This file is autogenerated, do not modify by hand.
1212
"""
13-
__version__ = "2.11.0"
14-
COMMIT = "7968aa2d316e253b9045810abdacbda55aa8ea56"
15-
MAJOR = 2
16-
MINOR = 11
13+
__version__ = "3.0.0"
14+
COMMIT = "ce55582d57532f7b08463b6ccee1b84f6f3239f3"
15+
MAJOR = 3
16+
MINOR = 0
1717
PATCH = 0

docs/language_specifics.html

Lines changed: 86 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ <h1 class="title">Module <code>continuous_delivery_scripts.language_specifics</c
3838
&#34;&#34;&#34;Language plugins Loader.&#34;&#34;&#34;
3939

4040
import logging
41-
from typing import Optional, Dict, cast
41+
from typing import Optional, Dict, cast, Set, Type
4242

4343
from continuous_delivery_scripts.utils.configuration import configuration, ConfigurationVariable
4444
from continuous_delivery_scripts.utils.language_specifics_base import BaseLanguage
@@ -49,24 +49,48 @@ <h1 class="title">Module <code>continuous_delivery_scripts.language_specifics</c
4949
logger = logging.getLogger(__name__)
5050

5151

52-
def _all_language_plugins() -&gt; Dict[str, BaseLanguage]:
53-
&#34;&#34;&#34;Get all language plugins which inherit from BaseLanguage (with the exception of other base class).
52+
def _retrieve_all_subclasses(subclass: Type[BaseLanguage]) -&gt; Set[Type[BaseLanguage]]:
53+
subclasses = set()
54+
if not subclass:
55+
return subclasses
56+
if subclass != BaseLanguage:
57+
subclasses.add(subclass)
58+
for s in subclass.__subclasses__():
59+
subclasses.update(_retrieve_all_subclasses(s))
60+
return subclasses
5461

55-
:return: A list of classes containing language plugins
62+
63+
def all_language_plugins() -&gt; Dict[str, BaseLanguage]:
64+
&#34;&#34;&#34;Fetches all language plugins which inherit from BaseLanguage.
65+
66+
Returns:
67+
A list of classes containing language plugins
68+
&#34;&#34;&#34;
69+
all_plugins = _retrieve_all_subclasses(BaseLanguage)
70+
return {la.get_related_language().lower().strip(): la for la in [lang() for lang in all_plugins]} # type: ignore
71+
72+
73+
def fetch_project_language_plugin(all_plugins: Dict[str, BaseLanguage], language: str) -&gt; BaseLanguage:
74+
&#34;&#34;&#34;Fetches a language CD flow.
75+
76+
Arguments:
77+
all_plugins: all the plugins at disposal
78+
language: the language to select
79+
80+
Returns:
81+
A language plugin corresponding to the language requested
5682
&#34;&#34;&#34;
57-
all_plugins = BaseLanguage.__subclasses__()
58-
return {
59-
la.get_related_language().lower().strip(): la
60-
for la in [lang() for lang in all_plugins if lang != BaseLanguage] # type: ignore
61-
}
83+
return cast(BaseLanguage, all_plugins.get(_sanitise_program_language(language)))
6284

6385

64-
def _sanitise_program_language() -&gt; str:
65-
return str(configuration.get_value(ConfigurationVariable.PROGRAMMING_LANGUAGE)).lower().strip()
86+
def _sanitise_program_language(language: str) -&gt; str:
87+
return language.lower().strip()
6688

6789

6890
def _fetch_project_language_specifics() -&gt; BaseLanguage:
69-
return cast(BaseLanguage, _all_language_plugins().get(_sanitise_program_language()))
91+
return fetch_project_language_plugin(
92+
all_language_plugins(), str(configuration.get_value(ConfigurationVariable.PROGRAMMING_LANGUAGE))
93+
)
7094

7195

7296
class PluginLoader:
@@ -97,6 +121,54 @@ <h1 class="title">Module <code>continuous_delivery_scripts.language_specifics</c
97121
<section>
98122
<h2 class="section-title" id="header-functions">Functions</h2>
99123
<dl>
124+
<dt id="continuous_delivery_scripts.language_specifics.all_language_plugins"><code class="name flex">
125+
<span>def <span class="ident">all_language_plugins</span></span>(<span>) ‑> Dict[str, <a title="continuous_delivery_scripts.utils.language_specifics_base.BaseLanguage" href="utils/language_specifics_base.html#continuous_delivery_scripts.utils.language_specifics_base.BaseLanguage">BaseLanguage</a>]</span>
126+
</code></dt>
127+
<dd>
128+
<div class="desc"><p>Fetches all language plugins which inherit from BaseLanguage.</p>
129+
<h2 id="returns">Returns</h2>
130+
<p>A list of classes containing language plugins</p></div>
131+
<details class="source">
132+
<summary>
133+
<span>Expand source code</span>
134+
</summary>
135+
<pre><code class="python">def all_language_plugins() -&gt; Dict[str, BaseLanguage]:
136+
&#34;&#34;&#34;Fetches all language plugins which inherit from BaseLanguage.
137+
138+
Returns:
139+
A list of classes containing language plugins
140+
&#34;&#34;&#34;
141+
all_plugins = _retrieve_all_subclasses(BaseLanguage)
142+
return {la.get_related_language().lower().strip(): la for la in [lang() for lang in all_plugins]} # type: ignore</code></pre>
143+
</details>
144+
</dd>
145+
<dt id="continuous_delivery_scripts.language_specifics.fetch_project_language_plugin"><code class="name flex">
146+
<span>def <span class="ident">fetch_project_language_plugin</span></span>(<span>all_plugins: Dict[str, <a title="continuous_delivery_scripts.utils.language_specifics_base.BaseLanguage" href="utils/language_specifics_base.html#continuous_delivery_scripts.utils.language_specifics_base.BaseLanguage">BaseLanguage</a>], language: str) ‑> <a title="continuous_delivery_scripts.utils.language_specifics_base.BaseLanguage" href="utils/language_specifics_base.html#continuous_delivery_scripts.utils.language_specifics_base.BaseLanguage">BaseLanguage</a></span>
147+
</code></dt>
148+
<dd>
149+
<div class="desc"><p>Fetches a language CD flow.</p>
150+
<h2 id="arguments">Arguments</h2>
151+
<p>all_plugins: all the plugins at disposal
152+
language: the language to select</p>
153+
<h2 id="returns">Returns</h2>
154+
<p>A language plugin corresponding to the language requested</p></div>
155+
<details class="source">
156+
<summary>
157+
<span>Expand source code</span>
158+
</summary>
159+
<pre><code class="python">def fetch_project_language_plugin(all_plugins: Dict[str, BaseLanguage], language: str) -&gt; BaseLanguage:
160+
&#34;&#34;&#34;Fetches a language CD flow.
161+
162+
Arguments:
163+
all_plugins: all the plugins at disposal
164+
language: the language to select
165+
166+
Returns:
167+
A language plugin corresponding to the language requested
168+
&#34;&#34;&#34;
169+
return cast(BaseLanguage, all_plugins.get(_sanitise_program_language(language)))</code></pre>
170+
</details>
171+
</dd>
100172
<dt id="continuous_delivery_scripts.language_specifics.get_language_specifics"><code class="name flex">
101173
<span>def <span class="ident">get_language_specifics</span></span>(<span>) ‑> <a title="continuous_delivery_scripts.utils.language_specifics_base.BaseLanguage" href="utils/language_specifics_base.html#continuous_delivery_scripts.utils.language_specifics_base.BaseLanguage">BaseLanguage</a></span>
102174
</code></dt>
@@ -174,6 +246,8 @@ <h1>Index</h1>
174246
</li>
175247
<li><h3><a href="#header-functions">Functions</a></h3>
176248
<ul class="">
249+
<li><code><a title="continuous_delivery_scripts.language_specifics.all_language_plugins" href="#continuous_delivery_scripts.language_specifics.all_language_plugins">all_language_plugins</a></code></li>
250+
<li><code><a title="continuous_delivery_scripts.language_specifics.fetch_project_language_plugin" href="#continuous_delivery_scripts.language_specifics.fetch_project_language_plugin">fetch_project_language_plugin</a></code></li>
177251
<li><code><a title="continuous_delivery_scripts.language_specifics.get_language_specifics" href="#continuous_delivery_scripts.language_specifics.get_language_specifics">get_language_specifics</a></code></li>
178252
</ul>
179253
</li>

0 commit comments

Comments
 (0)