hijri-datetime 0.0.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.
File without changes
@@ -0,0 +1,198 @@
1
+ Metadata-Version: 2.1
2
+ Name: hijri-datetime
3
+ Version: 0.0.0
4
+ Summary: Pythonic Hijri datetime — handle full & partial dates, ranges, and seamless Gregorian & Jalali conversion.
5
+ Author-email: "m.lotfi" <m.lotfi@email.com>
6
+ Maintainer-email: "m.lotfi" <m.lotfi@email.com>
7
+ License: GPL version 3
8
+ Project-URL: Homepage, https://github.com/mlotfic/hijri_datetime
9
+ Project-URL: Documentation, https://github.com/mlotfic/hijri_datetime#readme
10
+ Project-URL: Repository, https://github.com/mlotfic/hijri_datetime
11
+ Project-URL: Bug Tracker, https://github.com/mlotfic/hijri_datetime/issues
12
+ Project-URL: Changelog, https://github.com/mlotfic/hijri_datetime/blob/main/CHANGELOG.md
13
+ Keywords: python,package,modules,portable,hijri,islamic,calendar,datetime
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Topic :: Software Development :: Build Tools
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.6
20
+ Classifier: Programming Language :: Python :: 3.7
21
+ Classifier: Programming Language :: Python :: 3.8
22
+ Classifier: Programming Language :: Python :: 3.9
23
+ Classifier: Programming Language :: Python :: 3.9
24
+ Classifier: Programming Language :: Python :: 3.10
25
+ Classifier: Programming Language :: Python :: 3.11
26
+ Classifier: Programming Language :: Python :: 3.12
27
+ Classifier: Topic :: Software Development :: Libraries
28
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
29
+ Requires-Python: >=3.8
30
+ Description-Content-Type: text/markdown
31
+ License-File: LICENSE
32
+ Requires-Dist: jdatetime
33
+ Requires-Dist: requests
34
+ Requires-Dist: numpy
35
+ Requires-Dist: pandas
36
+
37
+ # hijri-datetime
38
+
39
+ 📅 **Hijri (Islamic) calendar datetime library for Python**
40
+ A drop-in replacement for Python's built-in `datetime` module, supporting Hijri date arithmetic, formatting, conversion, partial dates, and integration with `jdatetime`.
41
+
42
+ ---
43
+
44
+ ## Features
45
+
46
+ - **HijriDate / HijriDateTime classes**
47
+ Drop-in replacement for `datetime.date` and `datetime.datetime`.
48
+
49
+ - **Partial Dates & Ranges**
50
+ Handle missing months or days gracefully:
51
+ - `HijriDate(1446)` → represents the full year.
52
+ - `HijriDate(1446, 2)` → represents all days of month 2.
53
+ - Arithmetic supports ranges and comparisons.
54
+
55
+ - **Gregorian ↔ Hijri Conversion**
56
+ - Vectorized conversion using preloaded dataset (from [Aladhan API](https://aladhan.com/islamic-calendar-api)).
57
+ - Accurate conversion for historical and future dates.
58
+
59
+ - **Integration with jdatetime**
60
+ Convert Hijri dates to Jalali calendar easily:
61
+ ```python
62
+ import jdatetime
63
+ jd = hijri_date.to_jdatetime()
64
+ ````
65
+
66
+ * **Full datetime API support**
67
+ Methods like `.year`, `.month`, `.day`, `.weekday()`, `.isoweekday()`, `.strftime()`, `.fromisoformat()`, `.today()`, `.now()`.
68
+
69
+ * **Calendar module compatibility**
70
+ Leap year checks, month lengths, weekdays, etc.
71
+
72
+ * **Vectorized / Bulk Conversion Support**
73
+ Efficient for millions of rows with pandas/numpy.
74
+
75
+ ---
76
+
77
+ ## Installation
78
+
79
+ ```bash
80
+ pip install hijri-datetime
81
+ ```
82
+
83
+ ---
84
+
85
+ ## Quick Start
86
+
87
+ ```python
88
+ from hijri_datetime import HijriDate, HijriDateTime
89
+
90
+ # Create Hijri dates
91
+ d1 = HijriDate(1446, 2, 15) # Full date
92
+ d2 = HijriDate(1446, 2) # Day missing → treat as range
93
+ d3 = HijriDate(1446) # Month & day missing → full year range
94
+
95
+ # Convert to Gregorian
96
+ print(d1.to_gregorian()) # datetime.date(2025, 9, 9)
97
+ print(d2.to_gregorian_range()) # [datetime.date(2025,9,1), datetime.date(2025,9,30)]
98
+ print(d3.to_gregorian_range()) # full year range
99
+
100
+ # Date arithmetic
101
+ print(d1 + 10) # Add 10 days
102
+ print(d1 - 5) # Subtract 5 days
103
+
104
+ # jdatetime conversion
105
+ import jdatetime
106
+ jd = d1.to_jdatetime()
107
+ print(jd) # jdatetime.date(...)
108
+ ```
109
+
110
+ ---
111
+
112
+ ## Partial Dates & Ranges
113
+
114
+ - `HijriDate(1446)` → represents the whole year.
115
+ - `HijriDate(1446, 2)` → represents all days of month 2.
116
+ - Conversion to Gregorian returns ranges:
117
+
118
+ * **Year only**
119
+
120
+ ```python
121
+ d = HijriDate(1446)
122
+ start, end = d.to_gregorian_range()
123
+ print(start, end) # 2024-07-18 2025-07-06 (example)
124
+ ```
125
+
126
+ * **Year and Month only**
127
+
128
+ ```python
129
+ d = HijriDate(1446, 2)
130
+ start, end = d.to_gregorian_range()
131
+ print(start, end) # 2025-09-01 2025-09-30 (example)
132
+ ```
133
+
134
+ ---
135
+
136
+ ## Gregorian ↔ Hijri Conversion
137
+
138
+ ```python
139
+ from hijri_datetime import HijriConverter
140
+
141
+ converter = HijriConverter()
142
+
143
+ # Hijri → Gregorian
144
+ greg = converter.hijri_to_gregorian(1446, 2, 15)
145
+ print(greg) # datetime.date(2025, 9, 9)
146
+
147
+ # Gregorian → Hijri
148
+ hijri = converter.gregorian_to_hijri(greg)
149
+ print(hijri) # HijriDate(1446, 2, 15)
150
+ ```
151
+
152
+ ---
153
+
154
+ ## jdatetime Integration
155
+
156
+ ```python
157
+ from hijri_datetime import HijriDate
158
+
159
+ d = HijriDate(1446, 2, 15)
160
+ jd = d.to_jdatetime()
161
+ print(jd) # jdatetime.date(2025, 6, 16) example
162
+ ```
163
+
164
+ ---
165
+
166
+ ## Pandas / Vectorized Example
167
+
168
+ ```python
169
+ import pandas as pd
170
+ from hijri_datetime import HijriDate
171
+
172
+ dates = pd.Series([HijriDate(1446, 1, 1), HijriDate(1446, 2, 10)])
173
+ greg_dates = dates.apply(lambda x: x.to_gregorian())
174
+ print(greg_dates)
175
+ ```
176
+
177
+ ---
178
+
179
+ ## Roadmap
180
+
181
+ * [ ] Full `calendar` module API compatibility
182
+ * [ ] Timezone-aware Hijri datetime
183
+ * [ ] Support for Umm al-Qura, tabular, and other Hijri variants
184
+ * [ ] Improved bulk conversion performance
185
+ * [ ] PyPI release with automated dataset update from Aladhan API
186
+
187
+ ---
188
+
189
+ ## Contributing
190
+
191
+ Pull requests are welcome! Please open an issue first to discuss major changes.
192
+ Could you make sure tests pass before submitting PRs?
193
+
194
+ ---
195
+
196
+ ## License
197
+
198
+ GNU License © 2025
@@ -0,0 +1,162 @@
1
+ # hijri-datetime
2
+
3
+ 📅 **Hijri (Islamic) calendar datetime library for Python**
4
+ A drop-in replacement for Python's built-in `datetime` module, supporting Hijri date arithmetic, formatting, conversion, partial dates, and integration with `jdatetime`.
5
+
6
+ ---
7
+
8
+ ## Features
9
+
10
+ - **HijriDate / HijriDateTime classes**
11
+ Drop-in replacement for `datetime.date` and `datetime.datetime`.
12
+
13
+ - **Partial Dates & Ranges**
14
+ Handle missing months or days gracefully:
15
+ - `HijriDate(1446)` → represents the full year.
16
+ - `HijriDate(1446, 2)` → represents all days of month 2.
17
+ - Arithmetic supports ranges and comparisons.
18
+
19
+ - **Gregorian ↔ Hijri Conversion**
20
+ - Vectorized conversion using preloaded dataset (from [Aladhan API](https://aladhan.com/islamic-calendar-api)).
21
+ - Accurate conversion for historical and future dates.
22
+
23
+ - **Integration with jdatetime**
24
+ Convert Hijri dates to Jalali calendar easily:
25
+ ```python
26
+ import jdatetime
27
+ jd = hijri_date.to_jdatetime()
28
+ ````
29
+
30
+ * **Full datetime API support**
31
+ Methods like `.year`, `.month`, `.day`, `.weekday()`, `.isoweekday()`, `.strftime()`, `.fromisoformat()`, `.today()`, `.now()`.
32
+
33
+ * **Calendar module compatibility**
34
+ Leap year checks, month lengths, weekdays, etc.
35
+
36
+ * **Vectorized / Bulk Conversion Support**
37
+ Efficient for millions of rows with pandas/numpy.
38
+
39
+ ---
40
+
41
+ ## Installation
42
+
43
+ ```bash
44
+ pip install hijri-datetime
45
+ ```
46
+
47
+ ---
48
+
49
+ ## Quick Start
50
+
51
+ ```python
52
+ from hijri_datetime import HijriDate, HijriDateTime
53
+
54
+ # Create Hijri dates
55
+ d1 = HijriDate(1446, 2, 15) # Full date
56
+ d2 = HijriDate(1446, 2) # Day missing → treat as range
57
+ d3 = HijriDate(1446) # Month & day missing → full year range
58
+
59
+ # Convert to Gregorian
60
+ print(d1.to_gregorian()) # datetime.date(2025, 9, 9)
61
+ print(d2.to_gregorian_range()) # [datetime.date(2025,9,1), datetime.date(2025,9,30)]
62
+ print(d3.to_gregorian_range()) # full year range
63
+
64
+ # Date arithmetic
65
+ print(d1 + 10) # Add 10 days
66
+ print(d1 - 5) # Subtract 5 days
67
+
68
+ # jdatetime conversion
69
+ import jdatetime
70
+ jd = d1.to_jdatetime()
71
+ print(jd) # jdatetime.date(...)
72
+ ```
73
+
74
+ ---
75
+
76
+ ## Partial Dates & Ranges
77
+
78
+ - `HijriDate(1446)` → represents the whole year.
79
+ - `HijriDate(1446, 2)` → represents all days of month 2.
80
+ - Conversion to Gregorian returns ranges:
81
+
82
+ * **Year only**
83
+
84
+ ```python
85
+ d = HijriDate(1446)
86
+ start, end = d.to_gregorian_range()
87
+ print(start, end) # 2024-07-18 2025-07-06 (example)
88
+ ```
89
+
90
+ * **Year and Month only**
91
+
92
+ ```python
93
+ d = HijriDate(1446, 2)
94
+ start, end = d.to_gregorian_range()
95
+ print(start, end) # 2025-09-01 2025-09-30 (example)
96
+ ```
97
+
98
+ ---
99
+
100
+ ## Gregorian ↔ Hijri Conversion
101
+
102
+ ```python
103
+ from hijri_datetime import HijriConverter
104
+
105
+ converter = HijriConverter()
106
+
107
+ # Hijri → Gregorian
108
+ greg = converter.hijri_to_gregorian(1446, 2, 15)
109
+ print(greg) # datetime.date(2025, 9, 9)
110
+
111
+ # Gregorian → Hijri
112
+ hijri = converter.gregorian_to_hijri(greg)
113
+ print(hijri) # HijriDate(1446, 2, 15)
114
+ ```
115
+
116
+ ---
117
+
118
+ ## jdatetime Integration
119
+
120
+ ```python
121
+ from hijri_datetime import HijriDate
122
+
123
+ d = HijriDate(1446, 2, 15)
124
+ jd = d.to_jdatetime()
125
+ print(jd) # jdatetime.date(2025, 6, 16) example
126
+ ```
127
+
128
+ ---
129
+
130
+ ## Pandas / Vectorized Example
131
+
132
+ ```python
133
+ import pandas as pd
134
+ from hijri_datetime import HijriDate
135
+
136
+ dates = pd.Series([HijriDate(1446, 1, 1), HijriDate(1446, 2, 10)])
137
+ greg_dates = dates.apply(lambda x: x.to_gregorian())
138
+ print(greg_dates)
139
+ ```
140
+
141
+ ---
142
+
143
+ ## Roadmap
144
+
145
+ * [ ] Full `calendar` module API compatibility
146
+ * [ ] Timezone-aware Hijri datetime
147
+ * [ ] Support for Umm al-Qura, tabular, and other Hijri variants
148
+ * [ ] Improved bulk conversion performance
149
+ * [ ] PyPI release with automated dataset update from Aladhan API
150
+
151
+ ---
152
+
153
+ ## Contributing
154
+
155
+ Pull requests are welcome! Please open an issue first to discuss major changes.
156
+ Could you make sure tests pass before submitting PRs?
157
+
158
+ ---
159
+
160
+ ## License
161
+
162
+ GNU License © 2025
@@ -0,0 +1,84 @@
1
+ # -----------------------------
2
+ # Build System (required)
3
+ # -----------------------------
4
+ [build-system]
5
+ requires = ["setuptools<77", "wheel", "setuptools_scm[toml]>=6.2"]
6
+ build-backend = "setuptools.build_meta"
7
+
8
+ # -----------------------------
9
+ # Project Metadata
10
+ # -----------------------------
11
+ [project]
12
+ name = "hijri-datetime" # PyPI/package install name (`pip install hijri_datetime`)
13
+ # version = "2025.0.0"
14
+ dynamic = ["version"]
15
+ requires-python = ">=3.8"
16
+ authors = [
17
+ { name = "m.lotfi", email = "m.lotfi@email.com" },
18
+ ]
19
+ maintainers = [
20
+ { name = "m.lotfi", email = "m.lotfi@email.com" },
21
+ ]
22
+ description = "Pythonic Hijri datetime — handle full & partial dates, ranges, and seamless Gregorian & Jalali conversion."
23
+ readme = { file = "README.md", content-type = "text/markdown" }
24
+ license = { text = "GPL version 3" } # old-style, accepted
25
+
26
+ keywords = [
27
+ "python", "package", "modules", "portable",
28
+ "hijri", "islamic", "calendar", "datetime"
29
+ ]
30
+
31
+ # Classifiers help PyPI categorize your package
32
+ classifiers = [
33
+ # How mature is this project? Common values are
34
+ # 3 - Alpha
35
+ # 4 - Beta
36
+ # 5 - Production/Stable
37
+ "Development Status :: 4 - Beta",
38
+
39
+ "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
40
+
41
+ # Indicate who your project is intended for
42
+ "Intended Audience :: Developers",
43
+ "Topic :: Software Development :: Build Tools",
44
+
45
+ # Specify the Python versions you support here.
46
+ "Programming Language :: Python :: 3",
47
+ "Programming Language :: Python :: 3.6",
48
+ "Programming Language :: Python :: 3.7",
49
+ "Programming Language :: Python :: 3.8",
50
+ "Programming Language :: Python :: 3.9",
51
+ "Programming Language :: Python :: 3.9",
52
+ "Programming Language :: Python :: 3.10",
53
+ "Programming Language :: Python :: 3.11",
54
+ "Programming Language :: Python :: 3.12",
55
+ "Topic :: Software Development :: Libraries",
56
+ "Topic :: Software Development :: Libraries :: Python Modules",
57
+ ]
58
+
59
+ # -----------------------------
60
+ # Runtime dependencies
61
+ # -----------------------------
62
+ dependencies = [
63
+ "jdatetime",
64
+ "requests",
65
+ "numpy",
66
+ "pandas"
67
+ ]
68
+ # -----------------------------
69
+ # Project URLs (for PyPI & docs)
70
+ # -----------------------------
71
+ [project.urls]
72
+ Homepage = "https://github.com/mlotfic/hijri_datetime"
73
+ Documentation = "https://github.com/mlotfic/hijri_datetime#readme"
74
+ Repository = "https://github.com/mlotfic/hijri_datetime"
75
+ "Bug Tracker" = "https://github.com/mlotfic/hijri_datetime/issues"
76
+ Changelog = "https://github.com/mlotfic/hijri_datetime/blob/main/CHANGELOG.md"
77
+
78
+
79
+
80
+ # -----------------------------
81
+ # setuptools config
82
+ # -----------------------------
83
+ [tool.setuptools.packages.find]
84
+ where = ["src"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,3 @@
1
+ from .hello import say_hello
2
+
3
+ __all__ = ["say_hello"]
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,2 @@
1
+ def say_hello(name: str) -> str:
2
+ return f"Hello, {name}!"
File without changes
File without changes
@@ -0,0 +1,198 @@
1
+ Metadata-Version: 2.1
2
+ Name: hijri-datetime
3
+ Version: 0.0.0
4
+ Summary: Pythonic Hijri datetime — handle full & partial dates, ranges, and seamless Gregorian & Jalali conversion.
5
+ Author-email: "m.lotfi" <m.lotfi@email.com>
6
+ Maintainer-email: "m.lotfi" <m.lotfi@email.com>
7
+ License: GPL version 3
8
+ Project-URL: Homepage, https://github.com/mlotfic/hijri_datetime
9
+ Project-URL: Documentation, https://github.com/mlotfic/hijri_datetime#readme
10
+ Project-URL: Repository, https://github.com/mlotfic/hijri_datetime
11
+ Project-URL: Bug Tracker, https://github.com/mlotfic/hijri_datetime/issues
12
+ Project-URL: Changelog, https://github.com/mlotfic/hijri_datetime/blob/main/CHANGELOG.md
13
+ Keywords: python,package,modules,portable,hijri,islamic,calendar,datetime
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Topic :: Software Development :: Build Tools
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.6
20
+ Classifier: Programming Language :: Python :: 3.7
21
+ Classifier: Programming Language :: Python :: 3.8
22
+ Classifier: Programming Language :: Python :: 3.9
23
+ Classifier: Programming Language :: Python :: 3.9
24
+ Classifier: Programming Language :: Python :: 3.10
25
+ Classifier: Programming Language :: Python :: 3.11
26
+ Classifier: Programming Language :: Python :: 3.12
27
+ Classifier: Topic :: Software Development :: Libraries
28
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
29
+ Requires-Python: >=3.8
30
+ Description-Content-Type: text/markdown
31
+ License-File: LICENSE
32
+ Requires-Dist: jdatetime
33
+ Requires-Dist: requests
34
+ Requires-Dist: numpy
35
+ Requires-Dist: pandas
36
+
37
+ # hijri-datetime
38
+
39
+ 📅 **Hijri (Islamic) calendar datetime library for Python**
40
+ A drop-in replacement for Python's built-in `datetime` module, supporting Hijri date arithmetic, formatting, conversion, partial dates, and integration with `jdatetime`.
41
+
42
+ ---
43
+
44
+ ## Features
45
+
46
+ - **HijriDate / HijriDateTime classes**
47
+ Drop-in replacement for `datetime.date` and `datetime.datetime`.
48
+
49
+ - **Partial Dates & Ranges**
50
+ Handle missing months or days gracefully:
51
+ - `HijriDate(1446)` → represents the full year.
52
+ - `HijriDate(1446, 2)` → represents all days of month 2.
53
+ - Arithmetic supports ranges and comparisons.
54
+
55
+ - **Gregorian ↔ Hijri Conversion**
56
+ - Vectorized conversion using preloaded dataset (from [Aladhan API](https://aladhan.com/islamic-calendar-api)).
57
+ - Accurate conversion for historical and future dates.
58
+
59
+ - **Integration with jdatetime**
60
+ Convert Hijri dates to Jalali calendar easily:
61
+ ```python
62
+ import jdatetime
63
+ jd = hijri_date.to_jdatetime()
64
+ ````
65
+
66
+ * **Full datetime API support**
67
+ Methods like `.year`, `.month`, `.day`, `.weekday()`, `.isoweekday()`, `.strftime()`, `.fromisoformat()`, `.today()`, `.now()`.
68
+
69
+ * **Calendar module compatibility**
70
+ Leap year checks, month lengths, weekdays, etc.
71
+
72
+ * **Vectorized / Bulk Conversion Support**
73
+ Efficient for millions of rows with pandas/numpy.
74
+
75
+ ---
76
+
77
+ ## Installation
78
+
79
+ ```bash
80
+ pip install hijri-datetime
81
+ ```
82
+
83
+ ---
84
+
85
+ ## Quick Start
86
+
87
+ ```python
88
+ from hijri_datetime import HijriDate, HijriDateTime
89
+
90
+ # Create Hijri dates
91
+ d1 = HijriDate(1446, 2, 15) # Full date
92
+ d2 = HijriDate(1446, 2) # Day missing → treat as range
93
+ d3 = HijriDate(1446) # Month & day missing → full year range
94
+
95
+ # Convert to Gregorian
96
+ print(d1.to_gregorian()) # datetime.date(2025, 9, 9)
97
+ print(d2.to_gregorian_range()) # [datetime.date(2025,9,1), datetime.date(2025,9,30)]
98
+ print(d3.to_gregorian_range()) # full year range
99
+
100
+ # Date arithmetic
101
+ print(d1 + 10) # Add 10 days
102
+ print(d1 - 5) # Subtract 5 days
103
+
104
+ # jdatetime conversion
105
+ import jdatetime
106
+ jd = d1.to_jdatetime()
107
+ print(jd) # jdatetime.date(...)
108
+ ```
109
+
110
+ ---
111
+
112
+ ## Partial Dates & Ranges
113
+
114
+ - `HijriDate(1446)` → represents the whole year.
115
+ - `HijriDate(1446, 2)` → represents all days of month 2.
116
+ - Conversion to Gregorian returns ranges:
117
+
118
+ * **Year only**
119
+
120
+ ```python
121
+ d = HijriDate(1446)
122
+ start, end = d.to_gregorian_range()
123
+ print(start, end) # 2024-07-18 2025-07-06 (example)
124
+ ```
125
+
126
+ * **Year and Month only**
127
+
128
+ ```python
129
+ d = HijriDate(1446, 2)
130
+ start, end = d.to_gregorian_range()
131
+ print(start, end) # 2025-09-01 2025-09-30 (example)
132
+ ```
133
+
134
+ ---
135
+
136
+ ## Gregorian ↔ Hijri Conversion
137
+
138
+ ```python
139
+ from hijri_datetime import HijriConverter
140
+
141
+ converter = HijriConverter()
142
+
143
+ # Hijri → Gregorian
144
+ greg = converter.hijri_to_gregorian(1446, 2, 15)
145
+ print(greg) # datetime.date(2025, 9, 9)
146
+
147
+ # Gregorian → Hijri
148
+ hijri = converter.gregorian_to_hijri(greg)
149
+ print(hijri) # HijriDate(1446, 2, 15)
150
+ ```
151
+
152
+ ---
153
+
154
+ ## jdatetime Integration
155
+
156
+ ```python
157
+ from hijri_datetime import HijriDate
158
+
159
+ d = HijriDate(1446, 2, 15)
160
+ jd = d.to_jdatetime()
161
+ print(jd) # jdatetime.date(2025, 6, 16) example
162
+ ```
163
+
164
+ ---
165
+
166
+ ## Pandas / Vectorized Example
167
+
168
+ ```python
169
+ import pandas as pd
170
+ from hijri_datetime import HijriDate
171
+
172
+ dates = pd.Series([HijriDate(1446, 1, 1), HijriDate(1446, 2, 10)])
173
+ greg_dates = dates.apply(lambda x: x.to_gregorian())
174
+ print(greg_dates)
175
+ ```
176
+
177
+ ---
178
+
179
+ ## Roadmap
180
+
181
+ * [ ] Full `calendar` module API compatibility
182
+ * [ ] Timezone-aware Hijri datetime
183
+ * [ ] Support for Umm al-Qura, tabular, and other Hijri variants
184
+ * [ ] Improved bulk conversion performance
185
+ * [ ] PyPI release with automated dataset update from Aladhan API
186
+
187
+ ---
188
+
189
+ ## Contributing
190
+
191
+ Pull requests are welcome! Please open an issue first to discuss major changes.
192
+ Could you make sure tests pass before submitting PRs?
193
+
194
+ ---
195
+
196
+ ## License
197
+
198
+ GNU License © 2025
@@ -0,0 +1,17 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ src/hijri_datetime/__init__.py
5
+ src/hijri_datetime/calendar.py
6
+ src/hijri_datetime/conversion.py
7
+ src/hijri_datetime/date.py
8
+ src/hijri_datetime/datetime.py
9
+ src/hijri_datetime/hello.py
10
+ src/hijri_datetime/range.py
11
+ src/hijri_datetime/utils.py
12
+ src/hijri_datetime.egg-info/PKG-INFO
13
+ src/hijri_datetime.egg-info/SOURCES.txt
14
+ src/hijri_datetime.egg-info/dependency_links.txt
15
+ src/hijri_datetime.egg-info/requires.txt
16
+ src/hijri_datetime.egg-info/top_level.txt
17
+ tests/test_hello.py
@@ -0,0 +1,4 @@
1
+ jdatetime
2
+ requests
3
+ numpy
4
+ pandas
@@ -0,0 +1 @@
1
+ hijri_datetime
@@ -0,0 +1,4 @@
1
+ from hijri_datetime import say_hello
2
+
3
+ def test_say_hello():
4
+ assert say_hello("World") == "Hello, World!"