pythonlib 0.1.0 → 0.2.0

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.
Files changed (64) hide show
  1. package/README.md +41 -138
  2. package/dist/{chunk-3CSEXTA7.js → chunk-4QG3772L.js} +53 -53
  3. package/dist/chunk-4QG3772L.js.map +1 -0
  4. package/dist/{chunk-OMQNGE6T.js → chunk-4SZT4HJI.js} +32 -27
  5. package/dist/chunk-4SZT4HJI.js.map +1 -0
  6. package/dist/{chunk-IVYYI2VR.js → chunk-6POEDI34.js} +1 -1
  7. package/dist/chunk-6POEDI34.js.map +1 -0
  8. package/dist/{chunk-P3SGIF72.js → chunk-6VQ7ITWO.js} +6 -6
  9. package/dist/chunk-6VQ7ITWO.js.map +1 -0
  10. package/dist/{chunk-V63LKSA3.js → chunk-7TH4FCVQ.js} +24 -24
  11. package/dist/chunk-7TH4FCVQ.js.map +1 -0
  12. package/dist/{chunk-TJFGYXBJ.js → chunk-BDBX5BG4.js} +63 -61
  13. package/dist/chunk-BDBX5BG4.js.map +1 -0
  14. package/dist/{chunk-WAONBJE5.js → chunk-H76SKASU.js} +36 -36
  15. package/dist/chunk-H76SKASU.js.map +1 -0
  16. package/dist/{chunk-TOI6IG3T.js → chunk-HQ42WNKZ.js} +43 -16
  17. package/dist/chunk-HQ42WNKZ.js.map +1 -0
  18. package/dist/{chunk-HA5Y7PKO.js → chunk-KRRY534Q.js} +36 -35
  19. package/dist/chunk-KRRY534Q.js.map +1 -0
  20. package/dist/{chunk-UFMTN4T4.js → chunk-XGT3VOIZ.js} +5 -5
  21. package/dist/chunk-XGT3VOIZ.js.map +1 -0
  22. package/dist/{collections-xN9Gi0TA.d.ts → collections-CJur5Wg-.d.ts} +5 -3
  23. package/dist/collections.d.ts +1 -1
  24. package/dist/collections.js +1 -1
  25. package/dist/{datetime-DRwFAiGV.d.ts → datetime-Bpce8gG2.d.ts} +17 -15
  26. package/dist/datetime.d.ts +1 -1
  27. package/dist/datetime.js +1 -1
  28. package/dist/{functools-St5GqpKG.d.ts → functools-NrsZAqJk.d.ts} +42 -26
  29. package/dist/functools.d.ts +1 -1
  30. package/dist/functools.js +19 -17
  31. package/dist/index.d.ts +56 -158
  32. package/dist/index.js +45 -137
  33. package/dist/index.js.map +1 -1
  34. package/dist/{itertools-Bj8XivI6.d.ts → itertools-Sjl1LB_0.d.ts} +35 -17
  35. package/dist/itertools.d.ts +1 -1
  36. package/dist/itertools.js +15 -11
  37. package/dist/{json-Xpk0kwSd.d.ts → json-DAlvCadU.d.ts} +7 -5
  38. package/dist/json.d.ts +1 -1
  39. package/dist/json.js +1 -1
  40. package/dist/{math-BrT4Aw3E.d.ts → math-DwEGjjQ-.d.ts} +2 -0
  41. package/dist/math.d.ts +1 -1
  42. package/dist/math.js +1 -1
  43. package/dist/{os-FRSJbEUH.d.ts → os-C6Nt7Ijx.d.ts} +45 -42
  44. package/dist/os.d.ts +1 -1
  45. package/dist/os.js +23 -23
  46. package/dist/{random-D5S5iSV3.d.ts → random-BJv_rSpL.d.ts} +24 -22
  47. package/dist/random.d.ts +1 -1
  48. package/dist/random.js +21 -21
  49. package/dist/{re-DSxiURqN.d.ts → re-B1CHCgyr.d.ts} +17 -15
  50. package/dist/re.d.ts +1 -1
  51. package/dist/re.js +7 -7
  52. package/dist/string.d.ts +51 -48
  53. package/dist/string.js +13 -13
  54. package/package.json +20 -3
  55. package/dist/chunk-3CSEXTA7.js.map +0 -1
  56. package/dist/chunk-HA5Y7PKO.js.map +0 -1
  57. package/dist/chunk-IVYYI2VR.js.map +0 -1
  58. package/dist/chunk-OMQNGE6T.js.map +0 -1
  59. package/dist/chunk-P3SGIF72.js.map +0 -1
  60. package/dist/chunk-TJFGYXBJ.js.map +0 -1
  61. package/dist/chunk-TOI6IG3T.js.map +0 -1
  62. package/dist/chunk-UFMTN4T4.js.map +0 -1
  63. package/dist/chunk-V63LKSA3.js.map +0 -1
  64. package/dist/chunk-WAONBJE5.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/datetime.ts"],"sourcesContent":["/**\n * Python datetime module for TypeScript\n *\n * Provides date and time handling matching Python's datetime module.\n *\n * @see {@link https://docs.python.org/3/library/datetime.html | Python datetime documentation}\n */\n\n// ============================================================================\n// timedelta class\n// ============================================================================\n\nexport class timedelta {\n readonly days: number\n readonly seconds: number\n readonly microseconds: number\n\n constructor(options?: {\n days?: number\n seconds?: number\n microseconds?: number\n milliseconds?: number\n minutes?: number\n hours?: number\n weeks?: number\n }) {\n let totalMicroseconds = 0\n\n if (options) {\n totalMicroseconds += (options.weeks ?? 0) * 7 * 24 * 60 * 60 * 1000000\n totalMicroseconds += (options.days ?? 0) * 24 * 60 * 60 * 1000000\n totalMicroseconds += (options.hours ?? 0) * 60 * 60 * 1000000\n totalMicroseconds += (options.minutes ?? 0) * 60 * 1000000\n totalMicroseconds += (options.seconds ?? 0) * 1000000\n totalMicroseconds += (options.milliseconds ?? 0) * 1000\n totalMicroseconds += options.microseconds ?? 0\n }\n\n // Normalize to days, seconds, microseconds\n const sign = totalMicroseconds < 0 ? -1 : 1\n totalMicroseconds = Math.abs(totalMicroseconds)\n\n this.microseconds = sign * (totalMicroseconds % 1000000)\n totalMicroseconds = Math.floor(totalMicroseconds / 1000000)\n\n this.seconds = sign * (totalMicroseconds % (24 * 60 * 60))\n this.days = sign * Math.floor(totalMicroseconds / (24 * 60 * 60))\n\n // Normalize negative values\n if (this.microseconds < 0) {\n ;(this as { microseconds: number }).microseconds += 1000000\n ;(this as { seconds: number }).seconds -= 1\n }\n if (this.seconds < 0) {\n ;(this as { seconds: number }).seconds += 24 * 60 * 60\n ;(this as { days: number }).days -= 1\n }\n }\n\n totalSeconds(): number {\n return this.days * 24 * 60 * 60 + this.seconds + this.microseconds / 1000000\n }\n\n toString(): string {\n const parts: string[] = []\n if (this.days !== 0) {\n parts.push(`${String(this.days)} day${Math.abs(this.days) !== 1 ? \"s\" : \"\"}`)\n }\n const hours = Math.floor(this.seconds / 3600)\n const minutes = Math.floor((this.seconds % 3600) / 60)\n const secs = this.seconds % 60\n const timeStr = `${String(hours)}:${String(minutes).padStart(2, \"0\")}:${String(secs).padStart(2, \"0\")}`\n if (this.microseconds > 0) {\n parts.push(`${timeStr}.${String(this.microseconds).padStart(6, \"0\")}`)\n } else {\n parts.push(timeStr)\n }\n return parts.join(\", \")\n }\n\n add(other: timedelta): timedelta {\n return new timedelta({\n days: this.days + other.days,\n seconds: this.seconds + other.seconds,\n microseconds: this.microseconds + other.microseconds\n })\n }\n\n subtract(other: timedelta): timedelta {\n return new timedelta({\n days: this.days - other.days,\n seconds: this.seconds - other.seconds,\n microseconds: this.microseconds - other.microseconds\n })\n }\n\n multiply(n: number): timedelta {\n return new timedelta({\n microseconds: Math.round(this.totalSeconds() * 1000000 * n)\n })\n }\n\n static min = new timedelta({ days: -999999999 })\n static max = new timedelta({\n days: 999999999,\n hours: 23,\n minutes: 59,\n seconds: 59,\n microseconds: 999999\n })\n static resolution = new timedelta({ microseconds: 1 })\n}\n\n// ============================================================================\n// date class\n// ============================================================================\n\nexport class date {\n readonly year: number\n readonly month: number\n readonly day: number\n\n constructor(year: number, month: number, day: number) {\n if (month < 1 || month > 12) {\n throw new Error(\"month must be in 1..12\")\n }\n const maxDay = new Date(year, month, 0).getDate()\n if (day < 1 || day > maxDay) {\n throw new Error(`day is out of range for month`)\n }\n this.year = year\n this.month = month\n this.day = day\n }\n\n static today(): date {\n const now = new Date()\n return new date(now.getFullYear(), now.getMonth() + 1, now.getDate())\n }\n\n static fromTimestamp(timestamp: number): date {\n const d = new Date(timestamp * 1000)\n return new date(d.getFullYear(), d.getMonth() + 1, d.getDate())\n }\n\n static fromIsoFormat(dateString: string): date {\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(dateString)\n if (!match || !match[1] || !match[2] || !match[3]) {\n throw new Error(`Invalid isoFormat string: '${dateString}'`)\n }\n return new date(parseInt(match[1]), parseInt(match[2]), parseInt(match[3]))\n }\n\n static fromOrdinal(ordinal: number): date {\n // Days since year 1\n const d = new Date(Date.UTC(1, 0, ordinal))\n return new date(d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate())\n }\n\n replace(options?: { year?: number; month?: number; day?: number }): date {\n return new date(\n options?.year ?? this.year,\n options?.month ?? this.month,\n options?.day ?? this.day\n )\n }\n\n toOrdinal(): number {\n const d = new Date(Date.UTC(this.year, this.month - 1, this.day))\n const epoch = new Date(Date.UTC(1, 0, 1))\n return Math.floor((d.getTime() - epoch.getTime()) / (24 * 60 * 60 * 1000)) + 1\n }\n\n weekday(): number {\n // Monday is 0, Sunday is 6\n const d = new Date(this.year, this.month - 1, this.day)\n return (d.getDay() + 6) % 7\n }\n\n isoWeekday(): number {\n // Monday is 1, Sunday is 7\n return this.weekday() + 1\n }\n\n isoCalendar(): [number, number, number] {\n const d = new Date(this.year, this.month - 1, this.day)\n const dayOfYear = Math.floor(\n (d.getTime() - new Date(this.year, 0, 0).getTime()) / (24 * 60 * 60 * 1000)\n )\n const jan1 = new Date(this.year, 0, 1)\n const jan1Weekday = (jan1.getDay() + 6) % 7 // Monday = 0\n\n let week = Math.floor((dayOfYear + jan1Weekday - 1) / 7)\n let year = this.year\n\n if (week < 1) {\n year -= 1\n week = 52\n } else if (week > 52) {\n const dec31 = new Date(this.year, 11, 31)\n const dec31Weekday = (dec31.getDay() + 6) % 7\n if (dec31Weekday < 3) {\n week = 1\n year += 1\n }\n }\n\n return [year, week, this.isoWeekday()]\n }\n\n isoFormat(): string {\n return `${String(this.year)}-${String(this.month).padStart(2, \"0\")}-${String(this.day).padStart(2, \"0\")}`\n }\n\n strftime(format: string): string {\n return strftime(format, new datetime(this.year, this.month, this.day, 0, 0, 0, 0))\n }\n\n toString(): string {\n return this.isoFormat()\n }\n\n __add__(delta: timedelta): date {\n const d = new Date(this.year, this.month - 1, this.day + delta.days)\n return new date(d.getFullYear(), d.getMonth() + 1, d.getDate())\n }\n\n __sub__(other: date | timedelta): date | timedelta {\n if (other instanceof timedelta) {\n const d = new Date(this.year, this.month - 1, this.day - other.days)\n return new date(d.getFullYear(), d.getMonth() + 1, d.getDate())\n }\n // other is a date\n const d1 = new Date(this.year, this.month - 1, this.day)\n const d2 = new Date(other.year, other.month - 1, other.day)\n const diffMs = d1.getTime() - d2.getTime()\n return new timedelta({ days: Math.floor(diffMs / (24 * 60 * 60 * 1000)) })\n }\n\n __lt__(other: date): boolean {\n return this.toOrdinal() < other.toOrdinal()\n }\n\n __le__(other: date): boolean {\n return this.toOrdinal() <= other.toOrdinal()\n }\n\n __gt__(other: date): boolean {\n return this.toOrdinal() > other.toOrdinal()\n }\n\n __ge__(other: date): boolean {\n return this.toOrdinal() >= other.toOrdinal()\n }\n\n __eq__(other: date): boolean {\n return this.toOrdinal() === other.toOrdinal()\n }\n\n static min = new date(1, 1, 1)\n static max = new date(9999, 12, 31)\n static resolution = new timedelta({ days: 1 })\n}\n\n// ============================================================================\n// time class\n// ============================================================================\n\nexport class time {\n readonly hour: number\n readonly minute: number\n readonly second: number\n readonly microsecond: number\n readonly tzinfo: null\n\n constructor(hour: number = 0, minute: number = 0, second: number = 0, microsecond: number = 0) {\n if (hour < 0 || hour > 23) throw new Error(\"hour must be in 0..23\")\n if (minute < 0 || minute > 59) throw new Error(\"minute must be in 0..59\")\n if (second < 0 || second > 59) throw new Error(\"second must be in 0..59\")\n if (microsecond < 0 || microsecond > 999999) throw new Error(\"microsecond must be in 0..999999\")\n\n this.hour = hour\n this.minute = minute\n this.second = second\n this.microsecond = microsecond\n this.tzinfo = null\n }\n\n static fromIsoFormat(timeString: string): time {\n const match = /^(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?$/.exec(timeString)\n if (!match || !match[1] || !match[2] || !match[3]) {\n throw new Error(`Invalid isoFormat string: '${timeString}'`)\n }\n const microsecond = match[4] ? parseInt(match[4].padEnd(6, \"0\").slice(0, 6)) : 0\n return new time(parseInt(match[1]), parseInt(match[2]), parseInt(match[3]), microsecond)\n }\n\n replace(options?: {\n hour?: number\n minute?: number\n second?: number\n microsecond?: number\n }): time {\n return new time(\n options?.hour ?? this.hour,\n options?.minute ?? this.minute,\n options?.second ?? this.second,\n options?.microsecond ?? this.microsecond\n )\n }\n\n isoFormat(\n timespec: \"auto\" | \"hours\" | \"minutes\" | \"seconds\" | \"milliseconds\" | \"microseconds\" = \"auto\"\n ): string {\n const hh = String(this.hour).padStart(2, \"0\")\n const mm = String(this.minute).padStart(2, \"0\")\n const ss = String(this.second).padStart(2, \"0\")\n\n switch (timespec) {\n case \"hours\":\n return hh\n case \"minutes\":\n return `${hh}:${mm}`\n case \"seconds\":\n return `${hh}:${mm}:${ss}`\n case \"milliseconds\":\n return `${hh}:${mm}:${ss}.${String(Math.floor(this.microsecond / 1000)).padStart(3, \"0\")}`\n case \"microseconds\":\n return `${hh}:${mm}:${ss}.${String(this.microsecond).padStart(6, \"0\")}`\n case \"auto\":\n default:\n if (this.microsecond > 0) {\n return `${hh}:${mm}:${ss}.${String(this.microsecond).padStart(6, \"0\")}`\n }\n return `${hh}:${mm}:${ss}`\n }\n }\n\n strftime(format: string): string {\n return strftime(\n format,\n new datetime(1900, 1, 1, this.hour, this.minute, this.second, this.microsecond)\n )\n }\n\n toString(): string {\n return this.isoFormat()\n }\n\n static min = new time(0, 0, 0, 0)\n static max = new time(23, 59, 59, 999999)\n static resolution = new timedelta({ microseconds: 1 })\n}\n\n// ============================================================================\n// datetime class\n// ============================================================================\n\nexport class datetime extends date {\n readonly hour: number\n readonly minute: number\n readonly second: number\n readonly microsecond: number\n readonly tzinfo: null\n\n constructor(\n year: number,\n month: number,\n day: number,\n hour: number = 0,\n minute: number = 0,\n second: number = 0,\n microsecond: number = 0\n ) {\n super(year, month, day)\n if (hour < 0 || hour > 23) throw new Error(\"hour must be in 0..23\")\n if (minute < 0 || minute > 59) throw new Error(\"minute must be in 0..59\")\n if (second < 0 || second > 59) throw new Error(\"second must be in 0..59\")\n if (microsecond < 0 || microsecond > 999999) throw new Error(\"microsecond must be in 0..999999\")\n\n this.hour = hour\n this.minute = minute\n this.second = second\n this.microsecond = microsecond\n this.tzinfo = null\n }\n\n static override today(): datetime {\n return datetime.now()\n }\n\n static now(): datetime {\n const d = new Date()\n return new datetime(\n d.getFullYear(),\n d.getMonth() + 1,\n d.getDate(),\n d.getHours(),\n d.getMinutes(),\n d.getSeconds(),\n d.getMilliseconds() * 1000\n )\n }\n\n static utcNow(): datetime {\n const d = new Date()\n return new datetime(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n d.getUTCDate(),\n d.getUTCHours(),\n d.getUTCMinutes(),\n d.getUTCSeconds(),\n d.getUTCMilliseconds() * 1000\n )\n }\n\n static override fromTimestamp(timestamp: number): datetime {\n const d = new Date(timestamp * 1000)\n return new datetime(\n d.getFullYear(),\n d.getMonth() + 1,\n d.getDate(),\n d.getHours(),\n d.getMinutes(),\n d.getSeconds(),\n d.getMilliseconds() * 1000\n )\n }\n\n static utcfromTimestamp(timestamp: number): datetime {\n const d = new Date(timestamp * 1000)\n return new datetime(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n d.getUTCDate(),\n d.getUTCHours(),\n d.getUTCMinutes(),\n d.getUTCSeconds(),\n d.getUTCMilliseconds() * 1000\n )\n }\n\n static override fromIsoFormat(s: string): datetime {\n // Parse ISO format: YYYY-MM-DD[T]HH:MM:SS[.ffffff]\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})[T ](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?$/.exec(s)\n if (!match || !match[1] || !match[2] || !match[3] || !match[4] || !match[5] || !match[6]) {\n // Try date-only format\n const dateMatch = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(s)\n if (dateMatch && dateMatch[1] && dateMatch[2] && dateMatch[3]) {\n return new datetime(parseInt(dateMatch[1]), parseInt(dateMatch[2]), parseInt(dateMatch[3]))\n }\n throw new Error(`Invalid isoFormat string: '${s}'`)\n }\n const microsecond = match[7] ? parseInt(match[7].padEnd(6, \"0\").slice(0, 6)) : 0\n return new datetime(\n parseInt(match[1]),\n parseInt(match[2]),\n parseInt(match[3]),\n parseInt(match[4]),\n parseInt(match[5]),\n parseInt(match[6]),\n microsecond\n )\n }\n\n static combine(d: date, t: time): datetime {\n return new datetime(d.year, d.month, d.day, t.hour, t.minute, t.second, t.microsecond)\n }\n\n static strptime(dateString: string, format: string): datetime {\n return strptime(dateString, format)\n }\n\n override replace(options?: {\n year?: number\n month?: number\n day?: number\n hour?: number\n minute?: number\n second?: number\n microsecond?: number\n }): datetime {\n return new datetime(\n options?.year ?? this.year,\n options?.month ?? this.month,\n options?.day ?? this.day,\n options?.hour ?? this.hour,\n options?.minute ?? this.minute,\n options?.second ?? this.second,\n options?.microsecond ?? this.microsecond\n )\n }\n\n date(): date {\n return new date(this.year, this.month, this.day)\n }\n\n time(): time {\n return new time(this.hour, this.minute, this.second, this.microsecond)\n }\n\n timestamp(): number {\n const d = new Date(\n this.year,\n this.month - 1,\n this.day,\n this.hour,\n this.minute,\n this.second,\n this.microsecond / 1000\n )\n return d.getTime() / 1000\n }\n\n override isoFormat(\n sep: string = \"T\",\n timespec: \"auto\" | \"hours\" | \"minutes\" | \"seconds\" | \"milliseconds\" | \"microseconds\" = \"auto\"\n ): string {\n const dateStr = super.isoFormat()\n const t = new time(this.hour, this.minute, this.second, this.microsecond)\n return `${dateStr}${sep}${t.isoFormat(timespec)}`\n }\n\n ctime(): string {\n const days = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"]\n const months = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ]\n const dayName = days[this.weekday()] ?? \"???\"\n const monthName = months[this.month - 1] ?? \"???\"\n return `${dayName} ${monthName} ${String(this.day).padStart(2, \" \")} ${String(this.hour).padStart(2, \"0\")}:${String(this.minute).padStart(2, \"0\")}:${String(this.second).padStart(2, \"0\")} ${String(this.year)}`\n }\n\n override strftime(format: string): string {\n return strftime(format, this)\n }\n\n override toString(): string {\n return this.isoFormat(\" \")\n }\n\n override __add__(delta: timedelta): datetime {\n const totalMicroseconds =\n this.timestamp() * 1000000 + this.microsecond + delta.totalSeconds() * 1000000\n return datetime.fromTimestamp(totalMicroseconds / 1000000)\n }\n\n override __sub__(other: datetime | date | timedelta): datetime | timedelta {\n if (other instanceof timedelta) {\n const totalMicroseconds =\n this.timestamp() * 1000000 + this.microsecond - other.totalSeconds() * 1000000\n return datetime.fromTimestamp(totalMicroseconds / 1000000)\n }\n if (other instanceof datetime) {\n const diff = this.timestamp() - other.timestamp()\n const microDiff = this.microsecond - other.microsecond\n return new timedelta({ seconds: diff, microseconds: microDiff })\n }\n // other is a date\n const d1 = new Date(this.year, this.month - 1, this.day)\n const d2 = new Date(other.year, other.month - 1, other.day)\n const diffMs = d1.getTime() - d2.getTime()\n return new timedelta({ days: Math.floor(diffMs / (24 * 60 * 60 * 1000)) })\n }\n\n static override min = new datetime(1, 1, 1, 0, 0, 0, 0)\n static override max = new datetime(9999, 12, 31, 23, 59, 59, 999999)\n static override resolution = new timedelta({ microseconds: 1 })\n}\n\n// ============================================================================\n// strftime and strptime\n// ============================================================================\n\nconst WEEKDAY_NAMES = [\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"]\nconst WEEKDAY_ABBR = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"]\nconst MONTH_NAMES = [\n \"\",\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n]\nconst MONTH_ABBR = [\n \"\",\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n]\n\nexport function strftime(format: string, dt: datetime): string {\n const pad = (n: number, width: number = 2) => String(n).padStart(width, \"0\")\n\n return format.replace(/%([aAbBcdHIjmMpSUwWxXyYzZ%])/g, (_, code: string) => {\n switch (code) {\n case \"a\":\n return WEEKDAY_ABBR[dt.weekday()] ?? \"\"\n case \"A\":\n return WEEKDAY_NAMES[dt.weekday()] ?? \"\"\n case \"b\":\n return MONTH_ABBR[dt.month] ?? \"\"\n case \"B\":\n return MONTH_NAMES[dt.month] ?? \"\"\n case \"c\":\n return dt.ctime()\n case \"d\":\n return pad(dt.day)\n case \"H\":\n return pad(dt.hour)\n case \"I\":\n return pad(dt.hour % 12 || 12)\n case \"j\": {\n const start = new Date(dt.year, 0, 0)\n const diff = new Date(dt.year, dt.month - 1, dt.day).getTime() - start.getTime()\n const dayOfYear = Math.floor(diff / (24 * 60 * 60 * 1000))\n return pad(dayOfYear, 3)\n }\n case \"m\":\n return pad(dt.month)\n case \"M\":\n return pad(dt.minute)\n case \"p\":\n return dt.hour < 12 ? \"AM\" : \"PM\"\n case \"S\":\n return pad(dt.second)\n case \"U\": {\n // Week number (Sunday as first day)\n const start = new Date(dt.year, 0, 1)\n const diff = new Date(dt.year, dt.month - 1, dt.day).getTime() - start.getTime()\n const dayOfYear = Math.floor(diff / (24 * 60 * 60 * 1000))\n const firstSunday = (7 - start.getDay()) % 7\n return pad(Math.floor((dayOfYear - firstSunday + 7) / 7))\n }\n case \"w\":\n return String((dt.weekday() + 1) % 7)\n case \"W\": {\n // Week number (Monday as first day)\n const start = new Date(dt.year, 0, 1)\n const diff = new Date(dt.year, dt.month - 1, dt.day).getTime() - start.getTime()\n const dayOfYear = Math.floor(diff / (24 * 60 * 60 * 1000))\n const firstMonday = (8 - start.getDay()) % 7\n return pad(Math.floor((dayOfYear - firstMonday + 7) / 7))\n }\n case \"x\":\n return `${pad(dt.month)}/${pad(dt.day)}/${pad(dt.year % 100)}`\n case \"X\":\n return `${pad(dt.hour)}:${pad(dt.minute)}:${pad(dt.second)}`\n case \"y\":\n return pad(dt.year % 100)\n case \"Y\":\n return String(dt.year)\n case \"z\":\n return \"\" // No timezone info\n case \"Z\":\n return \"\" // No timezone name\n case \"%\":\n return \"%\"\n default:\n return `%${code}`\n }\n })\n}\n\nexport function strptime(dateString: string, format: string): datetime {\n let year = 1900,\n month = 1,\n day = 1,\n hour = 0,\n minute = 0,\n second = 0,\n microsecond = 0\n\n // Build regex from format\n let pos = 0\n let formatPos = 0\n\n while (formatPos < format.length) {\n if (format[formatPos] === \"%\") {\n formatPos++\n const code = format[formatPos]\n formatPos++\n\n switch (code) {\n case \"Y\": {\n const match = /^\\d{4}/.exec(dateString.slice(pos))\n if (!match) throw new Error(\"Invalid year\")\n year = parseInt(match[0])\n pos += 4\n break\n }\n case \"y\": {\n const match = /^\\d{2}/.exec(dateString.slice(pos))\n if (!match) throw new Error(\"Invalid year\")\n const y = parseInt(match[0])\n year = y >= 69 ? 1900 + y : 2000 + y\n pos += 2\n break\n }\n case \"m\": {\n const match = /^\\d{1,2}/.exec(dateString.slice(pos))\n if (!match) throw new Error(\"Invalid month\")\n month = parseInt(match[0])\n pos += match[0].length\n break\n }\n case \"d\": {\n const match = /^\\d{1,2}/.exec(dateString.slice(pos))\n if (!match) throw new Error(\"Invalid day\")\n day = parseInt(match[0])\n pos += match[0].length\n break\n }\n case \"H\": {\n const match = /^\\d{1,2}/.exec(dateString.slice(pos))\n if (!match) throw new Error(\"Invalid hour\")\n hour = parseInt(match[0])\n pos += match[0].length\n break\n }\n case \"M\": {\n const match = /^\\d{1,2}/.exec(dateString.slice(pos))\n if (!match) throw new Error(\"Invalid minute\")\n minute = parseInt(match[0])\n pos += match[0].length\n break\n }\n case \"S\": {\n const match = /^\\d{1,2}/.exec(dateString.slice(pos))\n if (!match) throw new Error(\"Invalid second\")\n second = parseInt(match[0])\n pos += match[0].length\n break\n }\n case \"f\": {\n const match = /^\\d{1,6}/.exec(dateString.slice(pos))\n if (!match) throw new Error(\"Invalid microsecond\")\n microsecond = parseInt(match[0].padEnd(6, \"0\"))\n pos += match[0].length\n break\n }\n case \"b\":\n case \"B\": {\n const names = code === \"b\" ? MONTH_ABBR : MONTH_NAMES\n let found = false\n for (let i = 1; i <= 12; i++) {\n const name = names[i]\n if (name && dateString.slice(pos).toLowerCase().startsWith(name.toLowerCase())) {\n month = i\n pos += name.length\n found = true\n break\n }\n }\n if (!found) throw new Error(\"Invalid month name\")\n break\n }\n /* c8 ignore start - rare edge cases */\n case \"%\":\n if (dateString[pos] !== \"%\") throw new Error(\"Expected %\")\n pos++\n break\n default:\n // Skip unknown codes\n break\n /* c8 ignore stop */\n }\n } else {\n // Literal character\n const expectedChar = format[formatPos] ?? \"\"\n if (dateString[pos] !== expectedChar) {\n throw new Error(`Expected '${expectedChar}' at position ${String(pos)}`)\n }\n pos++\n formatPos++\n }\n }\n\n return new datetime(year, month, day, hour, minute, second, microsecond)\n}\n\n// ============================================================================\n// Module-level constants\n// ============================================================================\n\nexport const MINYEAR = 1\nexport const MAXYEAR = 9999\n"],"mappings":"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","names":[]}
@@ -131,7 +131,7 @@ var deque = class {
131
131
  /**
132
132
  * Add element to the left end
133
133
  */
134
- appendleft(x) {
134
+ appendLeft(x) {
135
135
  this.items.unshift(x);
136
136
  if (this.maxlen !== null && this.items.length > this.maxlen) {
137
137
  this.items.pop();
@@ -146,7 +146,7 @@ var deque = class {
146
146
  /**
147
147
  * Remove and return element from the left end
148
148
  */
149
- popleft() {
149
+ popLeft() {
150
150
  return this.items.shift();
151
151
  }
152
152
  /**
@@ -160,9 +160,9 @@ var deque = class {
160
160
  /**
161
161
  * Extend the left side with elements from iterable
162
162
  */
163
- extendleft(iterable) {
163
+ extendLeft(iterable) {
164
164
  for (const x of iterable) {
165
- this.appendleft(x);
165
+ this.appendLeft(x);
166
166
  }
167
167
  }
168
168
  /**
@@ -212,4 +212,4 @@ export {
212
212
  deque,
213
213
  collections_exports
214
214
  };
215
- //# sourceMappingURL=chunk-UFMTN4T4.js.map
215
+ //# sourceMappingURL=chunk-XGT3VOIZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/collections.ts"],"sourcesContent":["/**\n * Python collections module for TypeScript\n *\n * Provides specialized container datatypes.\n *\n * @see {@link https://docs.python.org/3/library/collections.html | Python collections documentation}\n */\n\n/**\n * Counter: a dict subclass for counting hashable objects\n *\n * Elements are stored as keys and their counts are stored as values.\n */\nexport class Counter<T> extends Map<T, number> {\n constructor(iterable?: Iterable<T>) {\n super()\n if (iterable) {\n for (const item of iterable) {\n this.increment(item)\n }\n }\n }\n\n /**\n * Increment the count for a key\n */\n increment(key: T, n: number = 1): void {\n this.set(key, (super.get(key) ?? 0) + n)\n }\n\n /**\n * Get the count for a key (returns 0 for missing keys)\n */\n get(key: T): number {\n return super.get(key) ?? 0\n }\n\n /**\n * List the n most common elements and their counts\n * If n is undefined, list all elements from most common to least\n */\n mostCommon(n?: number): [T, number][] {\n const sorted = [...this.entries()].sort((a, b) => b[1] - a[1])\n return n !== undefined ? sorted.slice(0, n) : sorted\n }\n\n /**\n * Iterate over elements, repeating each as many times as its count\n */\n *elements(): Generator<T> {\n for (const [key, count] of this) {\n for (let i = 0; i < count; i++) {\n yield key\n }\n }\n }\n\n /**\n * Subtract counts from another iterable or Counter\n */\n subtract(iterable: Iterable<T> | Counter<T>): void {\n if (iterable instanceof Counter) {\n for (const [key, count] of iterable) {\n this.set(key, (super.get(key) ?? 0) - count)\n }\n } else {\n for (const item of iterable) {\n this.set(item, (super.get(item) ?? 0) - 1)\n }\n }\n }\n\n /**\n * Add counts from another iterable or Counter\n */\n update(iterable: Iterable<T> | Counter<T>): void {\n if (iterable instanceof Counter) {\n for (const [key, count] of iterable) {\n this.increment(key, count)\n }\n } else {\n for (const item of iterable) {\n this.increment(item)\n }\n }\n }\n\n /**\n * Return total count of all elements\n */\n total(): number {\n let sum = 0\n for (const count of this.values()) {\n sum += count\n }\n return sum\n }\n}\n\n/**\n * defaultdict: a dict that provides default values for missing keys\n *\n * Uses a Proxy to automatically call the factory function for missing keys.\n */\nexport function defaultdict<K, V>(factory: () => V): Map<K, V> & { get(key: K): V } {\n const map = new Map<K, V>()\n return new Proxy(map, {\n get(target, prop, receiver): unknown {\n if (prop === \"get\") {\n return (key: K): V => {\n if (!target.has(key)) {\n const defaultValue = factory()\n target.set(key, defaultValue)\n return defaultValue\n }\n return target.get(key) as V\n }\n }\n const val: unknown = Reflect.get(target, prop, receiver)\n if (typeof val === \"function\") {\n return (val as (...args: unknown[]) => unknown).bind(target)\n }\n return val\n }\n }) as Map<K, V> & { get(key: K): V }\n}\n\n/**\n * deque: double-ended queue with O(1) append and pop from both ends\n */\nexport class deque<T> {\n private items: T[]\n private maxlen: number | null\n\n constructor(iterable?: Iterable<T>, maxlen?: number) {\n this.items = iterable ? [...iterable] : []\n this.maxlen = maxlen ?? null\n if (this.maxlen !== null && this.items.length > this.maxlen) {\n this.items = this.items.slice(-this.maxlen)\n }\n }\n\n /**\n * Add element to the right end\n */\n append(x: T): void {\n this.items.push(x)\n if (this.maxlen !== null && this.items.length > this.maxlen) {\n this.items.shift()\n }\n }\n\n /**\n * Add element to the left end\n */\n appendLeft(x: T): void {\n this.items.unshift(x)\n if (this.maxlen !== null && this.items.length > this.maxlen) {\n this.items.pop()\n }\n }\n\n /**\n * Remove and return element from the right end\n */\n pop(): T | undefined {\n return this.items.pop()\n }\n\n /**\n * Remove and return element from the left end\n */\n popLeft(): T | undefined {\n return this.items.shift()\n }\n\n /**\n * Extend the right side with elements from iterable\n */\n extend(iterable: Iterable<T>): void {\n for (const x of iterable) {\n this.append(x)\n }\n }\n\n /**\n * Extend the left side with elements from iterable\n */\n extendLeft(iterable: Iterable<T>): void {\n for (const x of iterable) {\n this.appendLeft(x)\n }\n }\n\n /**\n * Rotate the deque n steps to the right (negative n rotates left)\n */\n rotate(n: number = 1): void {\n const len = this.items.length\n if (len === 0) return\n n = n % len\n if (n > 0) {\n // Move last n elements to the front\n const tail = this.items.splice(-n, n)\n this.items.unshift(...tail)\n } else if (n < 0) {\n // Move first -n elements to the end\n const head = this.items.splice(0, -n)\n this.items.push(...head)\n }\n }\n\n /**\n * Remove all elements\n */\n clear(): void {\n this.items = []\n }\n\n /**\n * Number of elements\n */\n get length(): number {\n return this.items.length\n }\n\n /**\n * Make iterable\n */\n *[Symbol.iterator](): Generator<T> {\n yield* this.items\n }\n\n /**\n * Convert to array\n */\n toArray(): T[] {\n return [...this.items]\n }\n}\n"],"mappings":"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","names":[]}
@@ -2,6 +2,8 @@
2
2
  * Python collections module for TypeScript
3
3
  *
4
4
  * Provides specialized container datatypes.
5
+ *
6
+ * @see {@link https://docs.python.org/3/library/collections.html | Python collections documentation}
5
7
  */
6
8
  /**
7
9
  * Counter: a dict subclass for counting hashable objects
@@ -62,7 +64,7 @@ declare class deque<T> {
62
64
  /**
63
65
  * Add element to the left end
64
66
  */
65
- appendleft(x: T): void;
67
+ appendLeft(x: T): void;
66
68
  /**
67
69
  * Remove and return element from the right end
68
70
  */
@@ -70,7 +72,7 @@ declare class deque<T> {
70
72
  /**
71
73
  * Remove and return element from the left end
72
74
  */
73
- popleft(): T | undefined;
75
+ popLeft(): T | undefined;
74
76
  /**
75
77
  * Extend the right side with elements from iterable
76
78
  */
@@ -78,7 +80,7 @@ declare class deque<T> {
78
80
  /**
79
81
  * Extend the left side with elements from iterable
80
82
  */
81
- extendleft(iterable: Iterable<T>): void;
83
+ extendLeft(iterable: Iterable<T>): void;
82
84
  /**
83
85
  * Rotate the deque n steps to the right (negative n rotates left)
84
86
  */
@@ -1 +1 @@
1
- export { C as Counter, d as defaultdict, a as deque } from './collections-xN9Gi0TA.js';
1
+ export { C as Counter, d as defaultdict, a as deque } from './collections-CJur5Wg-.js';
@@ -2,7 +2,7 @@ import {
2
2
  Counter,
3
3
  defaultdict,
4
4
  deque
5
- } from "./chunk-UFMTN4T4.js";
5
+ } from "./chunk-XGT3VOIZ.js";
6
6
  import "./chunk-PZ5AY32C.js";
7
7
  export {
8
8
  Counter,
@@ -2,6 +2,8 @@
2
2
  * Python datetime module for TypeScript
3
3
  *
4
4
  * Provides date and time handling matching Python's datetime module.
5
+ *
6
+ * @see {@link https://docs.python.org/3/library/datetime.html | Python datetime documentation}
5
7
  */
6
8
  declare class timedelta {
7
9
  readonly days: number;
@@ -16,7 +18,7 @@ declare class timedelta {
16
18
  hours?: number;
17
19
  weeks?: number;
18
20
  });
19
- total_seconds(): number;
21
+ totalSeconds(): number;
20
22
  toString(): string;
21
23
  add(other: timedelta): timedelta;
22
24
  subtract(other: timedelta): timedelta;
@@ -31,19 +33,19 @@ declare class date {
31
33
  readonly day: number;
32
34
  constructor(year: number, month: number, day: number);
33
35
  static today(): date;
34
- static fromtimestamp(timestamp: number): date;
35
- static fromisoformat(dateString: string): date;
36
- static fromordinal(ordinal: number): date;
36
+ static fromTimestamp(timestamp: number): date;
37
+ static fromIsoFormat(dateString: string): date;
38
+ static fromOrdinal(ordinal: number): date;
37
39
  replace(options?: {
38
40
  year?: number;
39
41
  month?: number;
40
42
  day?: number;
41
43
  }): date;
42
- toordinal(): number;
44
+ toOrdinal(): number;
43
45
  weekday(): number;
44
- isoweekday(): number;
45
- isocalendar(): [number, number, number];
46
- isoformat(): string;
46
+ isoWeekday(): number;
47
+ isoCalendar(): [number, number, number];
48
+ isoFormat(): string;
47
49
  strftime(format: string): string;
48
50
  toString(): string;
49
51
  __add__(delta: timedelta): date;
@@ -64,14 +66,14 @@ declare class time {
64
66
  readonly microsecond: number;
65
67
  readonly tzinfo: null;
66
68
  constructor(hour?: number, minute?: number, second?: number, microsecond?: number);
67
- static fromisoformat(timeString: string): time;
69
+ static fromIsoFormat(timeString: string): time;
68
70
  replace(options?: {
69
71
  hour?: number;
70
72
  minute?: number;
71
73
  second?: number;
72
74
  microsecond?: number;
73
75
  }): time;
74
- isoformat(timespec?: "auto" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds"): string;
76
+ isoFormat(timespec?: "auto" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds"): string;
75
77
  strftime(format: string): string;
76
78
  toString(): string;
77
79
  static min: time;
@@ -87,10 +89,10 @@ declare class datetime extends date {
87
89
  constructor(year: number, month: number, day: number, hour?: number, minute?: number, second?: number, microsecond?: number);
88
90
  static today(): datetime;
89
91
  static now(): datetime;
90
- static utcnow(): datetime;
91
- static fromtimestamp(timestamp: number): datetime;
92
- static utcfromtimestamp(timestamp: number): datetime;
93
- static fromisoformat(s: string): datetime;
92
+ static utcNow(): datetime;
93
+ static fromTimestamp(timestamp: number): datetime;
94
+ static utcfromTimestamp(timestamp: number): datetime;
95
+ static fromIsoFormat(s: string): datetime;
94
96
  static combine(d: date, t: time): datetime;
95
97
  static strptime(dateString: string, format: string): datetime;
96
98
  replace(options?: {
@@ -105,7 +107,7 @@ declare class datetime extends date {
105
107
  date(): date;
106
108
  time(): time;
107
109
  timestamp(): number;
108
- isoformat(sep?: string, timespec?: "auto" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds"): string;
110
+ isoFormat(sep?: string, timespec?: "auto" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds"): string;
109
111
  ctime(): string;
110
112
  strftime(format: string): string;
111
113
  toString(): string;
@@ -1 +1 @@
1
- export { f as MAXYEAR, M as MINYEAR, a as date, c as datetime, s as strftime, e as strptime, b as time, t as timedelta } from './datetime-DRwFAiGV.js';
1
+ export { f as MAXYEAR, M as MINYEAR, a as date, c as datetime, s as strftime, e as strptime, b as time, t as timedelta } from './datetime-Bpce8gG2.js';
package/dist/datetime.js CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  strptime,
8
8
  time,
9
9
  timedelta
10
- } from "./chunk-HA5Y7PKO.js";
10
+ } from "./chunk-KRRY534Q.js";
11
11
  import "./chunk-PZ5AY32C.js";
12
12
  export {
13
13
  MAXYEAR,
@@ -2,6 +2,8 @@
2
2
  * Python functools module for TypeScript
3
3
  *
4
4
  * Provides higher-order functions and operations on callable objects.
5
+ *
6
+ * @see {@link https://docs.python.org/3/library/functools.html | Python functools documentation}
5
7
  */
6
8
  /**
7
9
  * Create a partial function application
@@ -24,16 +26,16 @@ declare function reduce<T, U = T>(func: (acc: U, val: T) => U, iterable: Iterabl
24
26
  * Note: This is a simplified implementation that caches based on JSON-stringified arguments
25
27
  *
26
28
  * Example:
27
- * const fib = lru_cache((n: number): number => n <= 1 ? n : fib(n - 1) + fib(n - 2))
29
+ * const fib = lruCache((n: number): number => n <= 1 ? n : fib(n - 1) + fib(n - 2))
28
30
  */
29
- declare function lru_cache<T extends (...args: unknown[]) => unknown>(func: T, maxsize?: number): T & {
30
- cache_info: () => {
31
+ declare function lruCache<T extends (...args: unknown[]) => unknown>(func: T, maxsize?: number): T & {
32
+ cacheInfo: () => {
31
33
  hits: number;
32
34
  misses: number;
33
35
  maxsize: number;
34
36
  currsize: number;
35
37
  };
36
- cache_clear: () => void;
38
+ cacheClear: () => void;
37
39
  };
38
40
  /**
39
41
  * Cache decorator that caches all calls (no size limit)
@@ -44,12 +46,12 @@ declare function cache<T extends (...args: unknown[]) => unknown>(func: T): T;
44
46
  * Return a new partial object which behaves like func called with keyword arguments
45
47
  * In TypeScript, we simulate this with an options object as the last argument
46
48
  */
47
- declare function partialmethod<T extends (...args: unknown[]) => unknown>(func: T, ...partialArgs: unknown[]): (...args: unknown[]) => ReturnType<T>;
49
+ declare function partialMethod<T extends (...args: unknown[]) => unknown>(func: T, ...partialArgs: unknown[]): (...args: unknown[]) => ReturnType<T>;
48
50
  /**
49
51
  * Transform a function into a single-dispatch generic function
50
- * This is a simplified version - full singledispatch would require runtime type checking
52
+ * This is a simplified version - full singleDispatch would require runtime type checking
51
53
  */
52
- declare function singledispatch<T extends (...args: unknown[]) => unknown>(func: T): T & {
54
+ declare function singleDispatch<T extends (...args: unknown[]) => unknown>(func: T): T & {
53
55
  register: (type: string, impl: T) => void;
54
56
  };
55
57
  /**
@@ -59,20 +61,20 @@ declare function singledispatch<T extends (...args: unknown[]) => unknown>(func:
59
61
  declare function wraps<T extends (...args: unknown[]) => unknown>(wrapped: T): (wrapper: (...args: unknown[]) => unknown) => T;
60
62
  /**
61
63
  * Return a callable object that fetches attr from its operand
62
- * attrgetter('name') returns a function that gets the 'name' attribute
64
+ * attrGetter('name') returns a function that gets the 'name' attribute
63
65
  */
64
- declare function attrgetter<T>(...attrs: string[]): (obj: unknown) => T | T[];
66
+ declare function attrGetter<T>(...attrs: string[]): (obj: unknown) => T | T[];
65
67
  /**
66
68
  * Return a callable object that fetches item from its operand
67
- * itemgetter(1) returns a function that gets index 1
68
- * itemgetter('key') returns a function that gets the 'key' property
69
+ * itemGetter(1) returns a function that gets index 1
70
+ * itemGetter('key') returns a function that gets the 'key' property
69
71
  */
70
- declare function itemgetter<T>(...items: (string | number)[]): (obj: unknown) => T | T[];
72
+ declare function itemGetter<T>(...items: (string | number)[]): (obj: unknown) => T | T[];
71
73
  /**
72
74
  * Return a callable object that calls the method name on its operand
73
- * methodcaller('split', ' ') returns a function that calls .split(' ')
75
+ * methodCaller('split', ' ') returns a function that calls .split(' ')
74
76
  */
75
- declare function methodcaller(name: string, ...args: unknown[]): (obj: unknown) => unknown;
77
+ declare function methodCaller(name: string, ...args: unknown[]): (obj: unknown) => unknown;
76
78
  /**
77
79
  * Return the same object passed in (identity function)
78
80
  */
@@ -81,7 +83,7 @@ declare function identity<T>(x: T): T;
81
83
  * Compare two objects for ordering (returns -1, 0, or 1)
82
84
  * Used for sorting with a key function
83
85
  */
84
- declare function cmp_to_key<T>(mycmp: (a: T, b: T) => number): (x: T) => {
86
+ declare function cmpToKey<T>(mycmp: (a: T, b: T) => number): (x: T) => {
85
87
  value: T;
86
88
  __lt__: (other: {
87
89
  value: T;
@@ -92,7 +94,7 @@ declare function cmp_to_key<T>(mycmp: (a: T, b: T) => number): (x: T) => {
92
94
  * This is typically used as a class decorator in Python
93
95
  * In TypeScript, we provide helper comparisons
94
96
  */
95
- declare function total_ordering<T extends {
97
+ declare function totalOrdering<T extends {
96
98
  __lt__?: (other: T) => boolean;
97
99
  __le__?: (other: T) => boolean;
98
100
  __gt__?: (other: T) => boolean;
@@ -104,22 +106,36 @@ declare function total_ordering<T extends {
104
106
  __gt__: (other: T) => boolean;
105
107
  __ge__: (other: T) => boolean;
106
108
  };
109
+ /**
110
+ * Pipe a value through a series of functions.
111
+ * @inspired Remeda, Ramda
112
+ *
113
+ * Example:
114
+ * pipe(5, x => x * 2, x => x + 1) // returns 11
115
+ */
116
+ declare function pipe<T>(value: T): T;
117
+ declare function pipe<T, A>(value: T, fn1: (x: T) => A): A;
118
+ declare function pipe<T, A, B>(value: T, fn1: (x: T) => A, fn2: (x: A) => B): B;
119
+ declare function pipe<T, A, B, C>(value: T, fn1: (x: T) => A, fn2: (x: A) => B, fn3: (x: B) => C): C;
120
+ declare function pipe<T, A, B, C, D>(value: T, fn1: (x: T) => A, fn2: (x: A) => B, fn3: (x: B) => C, fn4: (x: C) => D): D;
121
+ declare function pipe<T, A, B, C, D, E>(value: T, fn1: (x: T) => A, fn2: (x: A) => B, fn3: (x: B) => C, fn4: (x: C) => D, fn5: (x: D) => E): E;
107
122
 
108
- declare const functoolsModule_attrgetter: typeof attrgetter;
123
+ declare const functoolsModule_attrGetter: typeof attrGetter;
109
124
  declare const functoolsModule_cache: typeof cache;
110
- declare const functoolsModule_cmp_to_key: typeof cmp_to_key;
125
+ declare const functoolsModule_cmpToKey: typeof cmpToKey;
111
126
  declare const functoolsModule_identity: typeof identity;
112
- declare const functoolsModule_itemgetter: typeof itemgetter;
113
- declare const functoolsModule_lru_cache: typeof lru_cache;
114
- declare const functoolsModule_methodcaller: typeof methodcaller;
127
+ declare const functoolsModule_itemGetter: typeof itemGetter;
128
+ declare const functoolsModule_lruCache: typeof lruCache;
129
+ declare const functoolsModule_methodCaller: typeof methodCaller;
115
130
  declare const functoolsModule_partial: typeof partial;
116
- declare const functoolsModule_partialmethod: typeof partialmethod;
131
+ declare const functoolsModule_partialMethod: typeof partialMethod;
132
+ declare const functoolsModule_pipe: typeof pipe;
117
133
  declare const functoolsModule_reduce: typeof reduce;
118
- declare const functoolsModule_singledispatch: typeof singledispatch;
119
- declare const functoolsModule_total_ordering: typeof total_ordering;
134
+ declare const functoolsModule_singleDispatch: typeof singleDispatch;
135
+ declare const functoolsModule_totalOrdering: typeof totalOrdering;
120
136
  declare const functoolsModule_wraps: typeof wraps;
121
137
  declare namespace functoolsModule {
122
- export { functoolsModule_attrgetter as attrgetter, functoolsModule_cache as cache, functoolsModule_cmp_to_key as cmp_to_key, functoolsModule_identity as identity, functoolsModule_itemgetter as itemgetter, functoolsModule_lru_cache as lru_cache, functoolsModule_methodcaller as methodcaller, functoolsModule_partial as partial, functoolsModule_partialmethod as partialmethod, functoolsModule_reduce as reduce, functoolsModule_singledispatch as singledispatch, functoolsModule_total_ordering as total_ordering, functoolsModule_wraps as wraps };
138
+ export { functoolsModule_attrGetter as attrGetter, functoolsModule_cache as cache, functoolsModule_cmpToKey as cmpToKey, functoolsModule_identity as identity, functoolsModule_itemGetter as itemGetter, functoolsModule_lruCache as lruCache, functoolsModule_methodCaller as methodCaller, functoolsModule_partial as partial, functoolsModule_partialMethod as partialMethod, functoolsModule_pipe as pipe, functoolsModule_reduce as reduce, functoolsModule_singleDispatch as singleDispatch, functoolsModule_totalOrdering as totalOrdering, functoolsModule_wraps as wraps };
123
139
  }
124
140
 
125
- export { partialmethod as a, attrgetter as b, cache as c, identity as d, cmp_to_key as e, functoolsModule as f, itemgetter as i, lru_cache as l, methodcaller as m, partial as p, reduce as r, singledispatch as s, total_ordering as t, wraps as w };
141
+ export { partialMethod as a, attrGetter as b, cache as c, identity as d, cmpToKey as e, functoolsModule as f, pipe as g, itemGetter as i, lruCache as l, methodCaller as m, partial as p, reduce as r, singleDispatch as s, totalOrdering as t, wraps as w };
@@ -1 +1 @@
1
- export { b as attrgetter, c as cache, e as cmp_to_key, d as identity, i as itemgetter, l as lru_cache, m as methodcaller, p as partial, a as partialmethod, r as reduce, s as singledispatch, t as total_ordering, w as wraps } from './functools-St5GqpKG.js';
1
+ export { b as attrGetter, c as cache, e as cmpToKey, d as identity, i as itemGetter, l as lruCache, m as methodCaller, p as partial, a as partialMethod, g as pipe, r as reduce, s as singleDispatch, t as totalOrdering, w as wraps } from './functools-NrsZAqJk.js';
package/dist/functools.js CHANGED
@@ -1,32 +1,34 @@
1
1
  import {
2
- attrgetter,
2
+ attrGetter,
3
3
  cache,
4
- cmp_to_key,
4
+ cmpToKey,
5
5
  identity,
6
- itemgetter,
7
- lru_cache,
8
- methodcaller,
6
+ itemGetter,
7
+ lruCache,
8
+ methodCaller,
9
9
  partial,
10
- partialmethod,
10
+ partialMethod,
11
+ pipe,
11
12
  reduce,
12
- singledispatch,
13
- total_ordering,
13
+ singleDispatch,
14
+ totalOrdering,
14
15
  wraps
15
- } from "./chunk-OMQNGE6T.js";
16
+ } from "./chunk-4SZT4HJI.js";
16
17
  import "./chunk-PZ5AY32C.js";
17
18
  export {
18
- attrgetter,
19
+ attrGetter,
19
20
  cache,
20
- cmp_to_key,
21
+ cmpToKey,
21
22
  identity,
22
- itemgetter,
23
- lru_cache,
24
- methodcaller,
23
+ itemGetter,
24
+ lruCache,
25
+ methodCaller,
25
26
  partial,
26
- partialmethod,
27
+ partialMethod,
28
+ pipe,
27
29
  reduce,
28
- singledispatch,
29
- total_ordering,
30
+ singleDispatch,
31
+ totalOrdering,
30
32
  wraps
31
33
  };
32
34
  //# sourceMappingURL=functools.js.map