From d271548712206070c9a29b6c058bdf43c150b630 Mon Sep 17 00:00:00 2001 From: Ealyn Date: Fri, 5 Jul 2024 17:23:57 +0800 Subject: [PATCH] Add built-in provider: RegexProvider at 2024-07-05T17:23:57+0800 --- pistol_magazine/__init__.py | 3 +++ pistol_magazine/built_in_provider/regex.py | 23 ++++++++++++++++++++++ requirements.txt | 4 +++- 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 pistol_magazine/built_in_provider/regex.py diff --git a/pistol_magazine/__init__.py b/pistol_magazine/__init__.py index e4da0cb..89421e2 100644 --- a/pistol_magazine/__init__.py +++ b/pistol_magazine/__init__.py @@ -14,11 +14,13 @@ from .data_exporter.json_ex import JSONExporter from .data_exporter.xml_ex import XMLExporter from .data_exporter.db_ex import DBExporter + from .built_in_provider.cyclic_parameter import CyclicParameterProvider from .built_in_provider.fixed_value import FixedValueProvider from .built_in_provider.random_choice_from_list import RandomChoiceFromListProvider from .built_in_provider.random_float_in_range import RandomFloatInRangeProvider from .built_in_provider.incremental_value import IncrementalValueProvider +from .built_in_provider.regex import RegexProvider __all__ = [ 'Datetime', @@ -54,4 +56,5 @@ 'RandomChoiceFromListProvider', 'RandomFloatInRangeProvider', 'IncrementalValueProvider', + 'RegexProvider' ] diff --git a/pistol_magazine/built_in_provider/regex.py b/pistol_magazine/built_in_provider/regex.py new file mode 100644 index 0000000..86d67d1 --- /dev/null +++ b/pistol_magazine/built_in_provider/regex.py @@ -0,0 +1,23 @@ +import rstr +from pistol_magazine import DataMocker + + +class RegexProvider(DataMocker): + def __init__(self, pattern): + """ + This class generates values that match a given regular expression pattern. + + Args: + pattern: The regular expression pattern to generate matching values for. + """ + super().__init__() + self.pattern = pattern + + def get_value(self): + """ + Returns a value generated to match the regular expression pattern. + + Returns: + A string value that matches the regular expression pattern. + """ + return rstr.xeger(self.pattern) diff --git a/requirements.txt b/requirements.txt index 7723169..ee187f0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,6 @@ Faker==25.1.0 setuptools~=59.0.1 dicttoxml~=1.7.16 -PyMySQL~=1.0.2 \ No newline at end of file +PyMySQL~=1.0.2 +pytest~=6.2.4 +rstr~=3.2.2 \ No newline at end of file