diff --git a/faker/providers/color/ka_GE/__init__.py b/faker/providers/color/ka_GE/__init__.py new file mode 100644 index 0000000000..c1ed2236c9 --- /dev/null +++ b/faker/providers/color/ka_GE/__init__.py @@ -0,0 +1,92 @@ +from collections import OrderedDict + +from .. import Provider as ColorProvider + +localized = True + + +class Provider(ColorProvider): + """Implement color provider for ``ka_GE`` locale.""" + + all_colors = OrderedDict( + ( + ("ანტიკური თეთრი", "#FAEBD7"), + ("აკვამარინი", "#7FFFD4"), + ("ლურჯი", "#F0FFFF"), + ("ბეჟი", "#F5F5DC"), + ("შავი", "#000000"), + ("ცისფერი", "#0000FF"), + ("საზღვაო ლურჯი", "#8A2BE2"), + ("ყავისფერი", "#A52A2A"), + ("შოკოლადისფერი", "#D2691E"), + ("კორალისფერი", "#FF7F50"), + ("ვერცხლისფერი", "#6495ED"), + ("ჟოლოსფერი", "#DC143C"), + ("მუქი ლურჯი", "#00008B"), + ("მუქი ცისფერი", "#008B8B"), + ("მუქი ნაცრისფერი", "#A9A9A9"), + ("მუქი მწვანე", "#006400"), + ("მუქი ხაკისფერი", "#BDB76B"), + ("მუქი ნარინჯისფერი", "#FF8C00"), + ("მუქი წითელი", "#8B0000"), + ("მუქი ზღვისფერი", "#00CED1"), + ("მუქი იასამნისფერი", "#9400D3"), + ("მუქი ვარდისფერი", "#FF1493"), + ("მკვდარი ნაცრისფერი", "#696969"), + ("ფუქსია", "#FF00FF"), + ("ოქროსფერი", "#FFD700"), + ("ნაცრისფერი", "#808080"), + ("მწვანე", "#008000"), + ("ყვითელ-მწვანე", "#ADFF2F"), + ("ინტენსიური ვარდისფერი", "#FF69B4"), + ("ინდიგო", "#4B0082"), + ("სპილოს ძვალი", "#FFFFF0"), + ("ხაკისფერი", "#F0E68C"), + ("ლავანდისფერი ვარდისფერი", "#FFF0F5"), + ("ღია ლურჯი", "#ADD8E6"), + ("ღია ცისფერი", "#E0FFFF"), + ("ღია ნაცრისფერი", "#D3D3D3"), + ("ღია მწვანე", "#90EE90"), + ("ღია ვარდისფერი", "#FFB6C1"), + ("ღია ცისფერი", "#87CEFA"), + ("ღია ყვითელი", "#FFFFE0"), + ("მეწამული", "#800000"), + ("ნარინჯისფერი", "#FFA500"), + ("ნარინჯისფერი წითელი", "#FF4500"), + ("ღია მწვანე", "#98FB98"), + ("ღია ზღვისფერი", "#AFEEEE"), + ("ვარდისფერი", "#FFC0CB"), + ("ქლიავისფერი", "#DDA0DD"), + ("იასამნისფერი", "#800080"), + ("წითელი", "#FF0000"), + ("ზღვისფერი", "#2E8B57"), + ("ვერცხლისფერი", "#C0C0C0"), + ("თურქული ლურჯი", "#40E0D0"), + ("იისფერი", "#EE82EE"), + ("თეთრი", "#FFFFFF"), + ("ყვითელი", "#FFFF00"), + ("ყვითელ-მწვანე", "#9ACD32"), + ("ბრინჯაოსფერი", "#CD7F32"), + ("მსხლისფერი", "#D1E231"), + ("თითბერისფერი", "#D5A642"), + ("მანდარინისფერი", "#FF8800"), + ("ფიჭვისფერი", "#01796F"), + ("ზეთისხილისფერი", "#808000"), + ) + ) + + safe_colors = ( + "შავი", + "მუქი წითელი", + "მწვანე", + "ხაკისფერი", + "იასამნისფერი", + "თურმანჯურა", + "ცაცხვისფერი", + "ცისფერი", + "ვერცხლისფერი", + "ნაცრისფერი", + "ყვითელი", + "ფუქსია", + "თეთრი", + ) diff --git a/faker/providers/date_time/ka_GE/__init__.py b/faker/providers/date_time/ka_GE/__init__.py new file mode 100644 index 0000000000..dff9764d81 --- /dev/null +++ b/faker/providers/date_time/ka_GE/__init__.py @@ -0,0 +1,37 @@ +from .. import Provider as DateTimeProvider + + +class Provider(DateTimeProvider): + # Sourse: https://www.ganmarteba.ge/ + DAY_NAMES = { + "0": "კვირა", + "1": "ორშაბათი", + "2": "სამშაბათი", + "3": "ოთხშაბათი", + "4": "ხუთშაბათი", + "5": "პარასკევი", + "6": "შაბათი", + } + + MONTH_NAMES = { + "01": "იანვარი", + "02": "თებერვალი", + "03": "მარტი", + "04": "აპრილი", + "05": "მაისი", + "06": "ივნისი", + "07": "ივლისი", + "08": "აგვისტო", + "09": "სექტემბერი", + "10": "ოქტომბერი", + "11": "ნოემბერი", + "12": "დეკემბერი", + } + + def day_of_week(self): + day = self.date("%w") + return self.DAY_NAMES[day] + + def month_name(self): + month = self.month() + return self.MONTH_NAMES[month] diff --git a/faker/providers/job/ka_GE/__init__.py b/faker/providers/job/ka_GE/__init__.py new file mode 100644 index 0000000000..6ce5e3883e --- /dev/null +++ b/faker/providers/job/ka_GE/__init__.py @@ -0,0 +1,391 @@ +from .. import Provider as BaseProvider + +class Provider(BaseProvider): + # Sourse: https://www.ganmarteba.ge/ + jobs = [ + "ავიადისპეტჩერი", + "ამწე ოპერატორი", + "ავიატექნიკოსი", + "ავიაციის ტექნიკოსი", + "აეროპლანის მფრინავი", + "აკუსტიკის ინჟინერი", + "აღმზრდელი", + "აღმოსავლეთმცოდნე", + "ავტოელექტრიკოსი", + "აგრონომი", + "არტისტი", + "აგრონომ-ნიადაგმცოდნე", + "ადვოკატი", + "აკუმულატორების სპეციალისტი", + "აქტუარი", + "ალერგოლოგი", + "ანალიტიკოსი", + "ანდროლოგი", + "ანთროპოლოგი", + "არტილერისტი", + "არქეოლოგი", + "არქივარიუსი", + "არქიტექტორი", + "ასტრონომი", + "ასტрофიზიკოსი", + "ასტროქიმიკოსი", + "ბაქტერიოლოგი", + "ბალერინა", + "ბალეტმაისტერი", + "ბანკირი", + "ბარმენი", + "ბატალერი", + "ბიბლიოთეკარი", + "ბიბლიოთეკმცოდნე", + "ბიონჟინერი", + "ბიოლოგი", + "ბიოფიზიკოსი", + "ბიოქიმიკოსი", + "ბლოგერი", + "ბორტ-ინჟინერი", + "ბორტ-მექანიკოსი", + "ბორტ-რადისტი", + "ბოტანიკოსი", + "ბრეიდერი", + "ბროკერი", + "პურის მცხობელი", + "ბულდოზერისტი", + "ბუღალტერი", + "გასტროენტეროლოგი", + "გემის კაპიტანი", + "გაუპვახტის უფროსი", + "გამომძიებელი", + "გალვანიკური ინჟინერი", + "გამომცემელი", + "გამომგონებელი", + "გენეტიკოსი", + "გეოგრაფი", + "გეოდეზისტი", + "გამყიდველი", + "გეოლოგი", + "გინეკოლოგი", + "გიტარისტი", + "გლაციოლოგი", + "გრანატომტყორცნელი", + "გრეიდერის ოპერატორი", + "გრენადერი", + "გრიმიორი", + "გამომცემელი რედაქტორი", + "დიზაინის ინჟინერი", + "დეკანი", + "დეკორატორი", + "დურგალი", + "დერმატოლოგი", + "დეტექტივი", + "დეფექტოლოგი", + "დიჯეი", + "დიეტოლოგი", + "დიზაინერი", + "დიზაინერი-კონსტრუქტორი", + "დიქტორი", + "დილერი", + "დიპლომატი", + "დიპლომატიური მუშაკი", + "დირიჟორი", + "დრეპერი", + "დამლაგებელი", + "ეკოლოგი", + "ეკონომისტი", + "ექსპედიტორი", + "ექიმი ულტრაბგერითი დიაგნოსტიკის", + "ეგვიპტოლოგი", + "ექსპერტ-კრიმინალისტი", + "ელექტრიკოსი", + "ელექტროინჟინერი", + "ენერგეტიკის ინჟინერი", + "ენდოკრინოლოგი", + "ენდოსკოპისტი", + "ენტომოლოგი", + "ეპიდემიოლოგი", + "ეფერენტოლოგი", + "ვებ-ინტეგრატორი", + "ვებ-მასტერი", + "ვებ-პროგრამისტი", + "ვეტერინარი", + "ვიზაჟისტი", + "ვაზის მეღვინე", + "ვირუსოლოგი", + "ვოკალისტი", + "ზეინკალი", + "ზოოლოგი", + "თეოლოგი", + "თერაპევტი", + "თერიოლოგი", + "თიფლოპედაგოგი", + "თორაკალური ქირურგი", + "თარჯიმანი", + "ილუსტრატორი", + "იმიჯმეიკერი", + "იმუნოლოგი", + "იუველირი", + "იურიდიული მრჩეველი", + "იურისტი", + "ინჟინერი", + "ინკასატორი", + "ინტენდანტი", + "ინფექციონისტი", + "ისტორიკოსი", + "იქთიოლოგი", + "კომპიუტერული ინჟინერი", + "კინოსა და ტელევიზიის ოპერატორი", + "კარდიოლოგი", + "კარდიოქირურგი", + "კასკადიორი", + "კომპიუტერის ოპერატორი", + "კასირი", + "კინოლოგი", + "კრიპტოგრაფი", + "კინომექანიკოსი", + "კინოოპერატორი", + "კინორეჟისორი", + "კლიენტთა ურთიერთობის მენეჯერი", + "კოდერი", + "კომენდანტი", + "კომერციული დირექტორი", + "კომპოზიტორი", + "კონდიტერი", + "კონდუქტორი", + "კონტენტის მენეჯერი", + "კოპირაიტერი", + "კორექტორ-მთავარი", + "კორექტორი", + "კოსმეტოლოგი", + "კოსმონავტი", + "კრიპტოზოოლოგი", + "კრიტიკოსი", + "კულტუროლოგი", + "ლაბორანტი", + "ლიმფოლოგი", + "ლინგვისტი", + "ლოგოპედი", + "ლოცმანი", + "ლაბორანტი-ინჟინერი", + "ლოკომოტივის მძღოლი", + "ლექტორი", + "მალარი", + "მამმოლოგი", + "მხატვარი", + "მცხობელი", + "მანუალისტი", + "მარკეტოლოგი", + "მასაჟისტი", + "მწყემსი", + "მანიკიურის ოსტატი", + "მათემატიკოსი", + "მატარებლის მძღოლი", + "მცენარეთა სპეციალისტი", + "მეწარმე", + "მექანიზაციის ინჟინერი", + "მოცეკვავე", + "მძღოლი", + "მსახიობი", + "მეანე", + "მესაზღვრე", + "მეხანძრე", + "მეხორბლე", + "მიმტანი", + "მეფუტკრე", + "მწერალი", + "მენეჯერი", + "მეტალურგი", + "მეტეოროლოგი", + "მჭედელი", + "მებაჟე", + "მექანიკოსი", + "მეცხოველეობის სპეციალისტი", + "მეტყევე-ინჟინერი", + "მედესანტე", + "მექანიკის ინჟინერი", + "მცენარეთა დაცვის აგრონომი", + "მკერავი", + "მტვირთავი", + "მიკრობიოლოგი", + "მინისტრი", + "მოდელი", + "მოდელიერი", + "მებაღე", + "მასწავლებელი", + "მაღაროელი", + "მეცნიერი", + "მეწაღე", + "მოქანდაკე", + "მთამსვლელი", + "მყვინთავი", + "მეურნე", + "მონტაჟნიკი", + "მსაჯი", + "მონაცემთა ბაზის ადმინისტრატორი", + "მუსიკოსი", + "მშენებელი", + "ნარკოლოგი", + "ნევროლოგი", + "ნევროპათოლოგი", + "ნეიროქირურგი", + "ნეონატოლოგი", + "ნეფროლოგი", + "ნოტარიუსი", + "ოკეანოლოგი", + "ონკოლოგი", + "ორნითოლოგი", + "ორთოდონტი", + "ორთოპედი", + "ოტორინოლარინგოლოგი", + "ოფთალმოლოგი", + "ოჯახის ექიმი", + "პილოტი", + "პალეონტოლოგი", + "პედიკიურის ოსტატი", + "პარფიუმერი", + "პასტორალისტი", + "პათოლოგანატომი", + "პედაგოგი", + "პედიატრი", + "პლასტიკური ქირურგი", + "პოლიტოლოგი", + "პოლიციელი", + "პოეტი", + "პროგრამისტი", + "პროდიუსერი", + "პირადი მცველი", + "პროქტოლოგი", + "პროფესიული პათოლოგი", + "პულმონოლოგი", + "ჟურნალისტი", + "რეკლამის დიზაინერი", + "რადიოლოგი", + "რადიომექანიკოსი", + "რადიოტელეფონისტი", + "რადისტი", + "რადიოლოკაციური სისტემის ოპერატორი", + "რეანიმატოლოგი", + "რევმატოლოგი", + "რედაქტორი", + "რეჟისორი", + "რელიგიური მეცნიერი", + "რენტგენოლოგი", + "რესტავრატორი", + "რეფლექსოთერაპევტი", + "რიხტოვშიკი", + "რობოტოტექნიკოსი", + "სანიტარი", + "სანტექნიკოსი", + "საპიორი", + "სასულიერო პირი", + "სექსოლოგი", + "სექსოპათოლოგი", + "სერპენტოლოგი", + "სისტემური ადმინისტრატორი", + "სნაიპერი", + "სომელიე", + "სასაქონლო ექსპერტი", + "სპილენძის მჭედელი", + "სომნოლოგი", + "სოციოლოგი", + "სპორტული ექიმი", + "სახელმწიფო აღმასრულებელი", + "სამხედრო ქირურგი", + "სამხედრო მოსამსახურე", + "სამხედრო გამომძიებელი", + "სამხედრო კონსულტანტი", + "სამხედრო მთარგმნელი", + "სამხედრო პოლიციელი", + "საგადასახადო ინსპექტორი", + "საწყობის უფროსი", + "სამხედრო პროკურორი", + "სამხედრო მოსამართლე", + "სამედიცინო და სოციალური ექსპერტიზის ექიმი", + "სამხედრო ინჟინერი", + "საკრედიტო კონსულტანტი", + "სამხედრო იურისტი", + "სასწრაფო დახმარების ექიმი", + "სტიუარდი", + "სტომატოლოგი", + "სამართალმცოდნე", + "სადაზღვევო აგენტი", + "სასამართლო აღსრულების სპეციალისტი", + "სტილისტი", + "სამხედრო ორკესტრის უფროსი", + "სურდოლოგი", + "სურდოპედაგოგი", + "სცენარისტი", + "სისტემატიკის ინჟინერი", + "სამშენებლო ინჟინერი", + "ტაქსის მძღოლი", + "ტალმანი", + "ტანატოლოგი", + "ტანკისტი", + "ტატუს ოსტატი", + "ტელეგრაფისტი", + "ტელეჟურნალისტი", + "ტელევიზიის ოსტატი", + "ტესტირების სპეციალისტი", + "ტექნიკოსი", + "ტექნოლოგი", + "ტიპოგრაფი", + "ტექნოლოგიური ინჟინერი", + "ტოქსიკოლოგი", + "ტოპოგრაფი", + "ტრავმატოლოგი", + "ტრაქტორისტი", + "ტრანსფუზიოლოგი", + "ტრედერი", + "ტრენდ-ვოჩერი", + "უროლოგი", + "უმუშევარი", + "უსაფრთხოების ტექნიკის ინჟინერი", + "უჯრედული ტექნოლოგიების სპეციალისტი", + "ფიზიკის ინჟინერი", + "ფოსტალიონი", + "ფსიქიატრი", + "ფარმაცევტი", + "ფიზიკოსი", + "ფიზიოთერაპევტი", + "ფილოლოგი", + "ფილოსოფოსი", + "ფინანსისტი", + "ფლებოლოგი", + "ფლორისტი", + "ფოტოგრაფი", + "ფოტომოდელი", + "ფურაჟირი", + "ფუტუროლოგი", + "ფოლადის მწარმოებელი", + "ფსიქონევროპათოლოგი", + "ფუნქციური დიაგნოსტიკის ექიმი", + "ფსიქოთერაპევტი", + "ფსიქოლოგი", + "ქვისმთლელი", + "ქიმიის ინჟინერი", + "ქიმიკოსი", + "ქიმიკოს-ტექნოლოგი", + "ქირურგი", + "ქორეოგრაფი", + "ქოლცენტრის ოპერატორი", + "ქორწილების ორგანიზატორი", + "ქვაფენილი", + "ქუჩის დამლაგებელი", + "ყველის მწარმოებელი", + "შტაბის უფროსი", + "შემკრებავი", + "შემდუღებელი", + "ცხვრის მჭრელი სპეციალისტი", + "ცირკის არტისტი", + "ცხენმშენებელი", + "ციხის ზედამხედველი", + "ძიძა", + "ხარატი", + "ხმის ინჟინერი", + "ხელოვნებათმცოდნე", + "ჯალათი", + "ჰემატოლოგი", + "ჰეპატოლოგი", + "ჰიდროლოგი", + "ჰომეოპათი", + "ჰირუდოთერაპევტი", + "ჰიდრავლიკის ინჟინერი", + ] diff --git a/faker/providers/phone_number/ka_GE/__init__.py b/faker/providers/phone_number/ka_GE/__init__.py new file mode 100644 index 0000000000..74e5bfc234 --- /dev/null +++ b/faker/providers/phone_number/ka_GE/__init__.py @@ -0,0 +1,16 @@ +from .. import Provider as PhoneNumberProvider + + +class Provider(PhoneNumberProvider): + # Sourse: https://en.wikipedia.org/wiki/Telephone_numbers_in_Georgia_(country) + formats = ( + "+995 ### ### ###", + "+995 (###) ### ###", + "+995#########", + "0 ### ### ###", + "+995 32 ### ## ##", + "+995 34# ### ###", + "+995 (34#) ### ###", + "0 32 ### ## ##", + "0 34# ### ###", + ) diff --git a/tests/providers/test_color.py b/tests/providers/test_color.py index 609c4cf7d4..d88fc8d4c2 100644 --- a/tests/providers/test_color.py +++ b/tests/providers/test_color.py @@ -18,6 +18,7 @@ from faker.providers.color.id_ID import Provider as IdIdColorProvider from faker.providers.color.sk_SK import Provider as SkSkColorProvider from faker.providers.color.vi_VN import Provider as ViVNColorProvider +from faker.providers.color.ka_GE import Provider as KaGEColorProvider class TestColorProvider: @@ -460,3 +461,19 @@ def test_safe_color_name(self, faker, num_samples): safe_color_name = faker.safe_color_name() assert isinstance(safe_color_name, str) assert safe_color_name in ViVNColorProvider.safe_colors + + +class TestKaGe: + """Test Ka_GE color provider methods""" + + def test_color_name(self, faker, num_samples): + for _ in range(num_samples): + color_name = faker.color_name() + assert isinstance(color_name, str) + assert color_name in KaGEColorProvider.all_colors.keys() + + def test_safe_color_name(self, faker, num_samples): + for _ in range(num_samples): + safe_color_name = faker.safe_color_name() + assert isinstance(safe_color_name, str) + assert safe_color_name in KaGEColorProvider.safe_colors diff --git a/tests/providers/test_date_time.py b/tests/providers/test_date_time.py index 9d221c6c1a..3a4eea3a17 100644 --- a/tests/providers/test_date_time.py +++ b/tests/providers/test_date_time.py @@ -29,6 +29,7 @@ from faker.providers.date_time.hy_AM import Provider as HyAmProvider from faker.providers.date_time.it_IT import Provider as ItItProvider from faker.providers.date_time.ja_JP import Provider as JaJpProvider +from faker.providers.date_time.ka_GE import Provider as KaGeProvider from faker.providers.date_time.nl_NL import Provider as NlProvider from faker.providers.date_time.no_NO import Provider as NoNoProvider from faker.providers.date_time.pl_PL import Provider as PlProvider @@ -1390,3 +1391,21 @@ def test_month(self): month = self.fake.month_name() assert isinstance(month, str) assert month in ViVNProvider.MONTH_NAMES.values() + + +class TestKaGe(unittest.TestCase): + """Test Ka_GE date_time provider methods""" + + def setUp(self): + self.fake = Faker("Ka_GE") + Faker.seed(0) + + def test_day(self): + day = self.fake.day_of_week() + assert isinstance(day, str) + assert day in KaGeProvider.DAY_NAMES.values() + + def test_month(self): + month = self.fake.month_name() + assert isinstance(month, str) + assert month in KaGeProvider.MONTH_NAMES.values() diff --git a/tests/providers/test_job.py b/tests/providers/test_job.py index 607fbe3c89..31c89ac95a 100644 --- a/tests/providers/test_job.py +++ b/tests/providers/test_job.py @@ -149,7 +149,7 @@ def test_job(self, faker, num_samples): class TestRoRo: - """Test tr_TR job provider""" + """Test Ro_RO job provider""" def test_job(self, faker, num_samples): assert faker.job() in RoRoJobProvider.jobs @@ -163,3 +163,13 @@ def test_job(self, faker, num_samples): job = faker.job() assert isinstance(job, str) assert job in ViVNJobProvider.jobs + + +class TestKaGe: + """Test ka_GE job provider""" + + def test_job(self, faker, num_samples): + for _ in range(num_samples): + job = faker.job() + assert isinstance(job, str) + assert job in ViVNJobProvider.jobs diff --git a/tests/providers/test_phone_number.py b/tests/providers/test_phone_number.py index 75608369fe..42b5d74352 100644 --- a/tests/providers/test_phone_number.py +++ b/tests/providers/test_phone_number.py @@ -310,6 +310,29 @@ def test_phone_number(self, faker, num_samples): assert pattern.fullmatch(phone_number) +class TestKaGe: + """Test ka_GE phone number provider methods""" + pattern = re.compile( + r"(?:" + r"\+995 \d{3} \d{3} \d{3}|" # Example: +995 123 456 789 + r"\+995 \(\d{3}\) \d{3} \d{3}|" # Example: +995 (123) 456 789 + r"\+995\d{9}|" # Example: +995123456789 + r"0 \d{3} \d{3} \d{3}|" # Example: 0 123 456 789 + r"+995 32 \d{3} \d{2} \d{2}|" # Example: +995 32 123 12 12 + r"+995 34\d \d{3} \d{3}|" # Example: +995 34x 123 456 + r"+995 \(34\d\) \d{3} \d{3}|" # Example: +995 (34x) 123 456 + r"0 32 \d{3} \d{2} \d{2}|" # Example: 0 32 123 12 12 + r"0 34\d \d{3} \d{3}" # Example: 0 34x 123 456 + r")" + ) + + def test_phone_number(self, faker, num_samples): + for _ in range(num_samples): + phone_number = faker.phone_number() + assert isinstance(phone_number, str) + assert self.pattern.fullmatch(phone_number) + + class TestEsEs: """Test es_ES phone number provider methods"""