Spaces:
Configuration error
Configuration error
| from smolagents import Tool | |
| from typing import Any, Optional | |
| class SimpleTool(Tool): | |
| name = "get_datetime" | |
| description = "Get the current date and time in Gregorian (Miladi), Persian (Jalali), and Hijri (Islamic/Arabic) calendars\nfor a specified timezone region." | |
| inputs = {'region': {'type': 'string', 'description': "The timezone region string (e.g., 'Asia/Tehran', 'Europe/London', 'America/New_York')."}} | |
| output_type = "object" | |
| def forward(self, region: str) -> dict: | |
| """ | |
| Get the current date and time in Gregorian (Miladi), Persian (Jalali), and Hijri (Islamic/Arabic) calendars | |
| for a specified timezone region. | |
| Args: | |
| region (str): The timezone region string (e.g., 'Asia/Tehran', 'Europe/London', 'America/New_York'). | |
| Returns: | |
| dict: A dictionary with the following structure: | |
| { | |
| 'current_date': { | |
| 'persian': 'دوشنبه, 11 تیر 1403', | |
| 'miladi': 'Monday, July 01, 2024', | |
| 'hijri': 'الاثنين, 24 ذو الحجة 1445' | |
| }, | |
| 'current_time': '09:15 PM' | |
| } | |
| Example: | |
| >>> forward('Asia/Tehran') | |
| Note: | |
| you should provide the date to the user only the calender they want. | |
| for example if the user want the date in miladi calender you should provide the date only in miladi calender | |
| or if the user want the date in jalali calender(شمسی یا ایرانی) you should provide the date only in jalali calender | |
| and if they don't specify the calender, you find this out based on the user's language, | |
| for example if the user's language is persian you should provide the date in jalali calender and so on. | |
| Accepted values for `region`: | |
| - Any valid IANA timezone string, e.g.: | |
| 'Asia/Tehran', 'Europe/London', 'America/New_York', 'Asia/Riyadh', etc. | |
| """ | |
| from datetime import datetime | |
| import pytz | |
| import jdatetime | |
| from hijri_converter import Gregorian | |
| tz = pytz.timezone(region) | |
| now = datetime.now(tz) | |
| # Gregorian (Miladi) date and time | |
| gregorian_date = now.strftime("%A, %B %d, %Y") | |
| time_str = now.strftime("%I:%M %p") | |
| # Persian (Jalali) date | |
| jalali = jdatetime.datetime.fromgregorian(datetime=now) | |
| persian_date = jalali.strftime("%A, %d %B %Y") | |
| # Hijri (Islamic/Arabic) date | |
| hijri = Gregorian(now.year, now.month, now.day).to_hijri() | |
| hijri_date = f"{hijri.day_name('ar')}, {hijri.day} {hijri.month_name('ar')} {hijri.year}" | |
| return { | |
| "current_date": { | |
| "persian": persian_date, | |
| "miladi": gregorian_date, | |
| "hijri": hijri_date | |
| }, | |
| "current_time": time_str | |
| } |