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
@@ -5,24 +5,24 @@ import {
5
5
  // src/random.ts
6
6
  var random_exports = {};
7
7
  __export(random_exports, {
8
- betavariate: () => betavariate,
8
+ betaVariate: () => betaVariate,
9
9
  choice: () => choice,
10
10
  choices: () => choices,
11
- expovariate: () => expovariate,
12
- gammavariate: () => gammavariate,
11
+ expoVariate: () => expoVariate,
12
+ gammaVariate: () => gammaVariate,
13
13
  gauss: () => gauss,
14
- lognormvariate: () => lognormvariate,
15
- normalvariate: () => normalvariate,
16
- paretovariate: () => paretovariate,
17
- randint: () => randint,
14
+ logNormVariate: () => logNormVariate,
15
+ normalVariate: () => normalVariate,
16
+ paretoVariate: () => paretoVariate,
17
+ randInt: () => randInt,
18
+ randRange: () => randRange,
18
19
  random: () => random,
19
- randrange: () => randrange,
20
20
  sample: () => sample,
21
21
  shuffle: () => shuffle,
22
22
  triangular: () => triangular,
23
23
  uniform: () => uniform,
24
- vonmisesvariate: () => vonmisesvariate,
25
- weibullvariate: () => weibullvariate
24
+ vonMisesVariate: () => vonMisesVariate,
25
+ weibullVariate: () => weibullVariate
26
26
  });
27
27
  function random() {
28
28
  return Math.random();
@@ -30,12 +30,12 @@ function random() {
30
30
  function uniform(a, b) {
31
31
  return a + Math.random() * (b - a);
32
32
  }
33
- function randint(a, b) {
33
+ function randInt(a, b) {
34
34
  a = Math.floor(a);
35
35
  b = Math.floor(b);
36
36
  return Math.floor(Math.random() * (b - a + 1)) + a;
37
37
  }
38
- function randrange(start, stop, step = 1) {
38
+ function randRange(start, stop, step = 1) {
39
39
  if (stop === void 0) {
40
40
  stop = start;
41
41
  start = 0;
@@ -45,7 +45,7 @@ function randrange(start, stop, step = 1) {
45
45
  }
46
46
  const numSteps = Math.ceil((stop - start) / step);
47
47
  if (numSteps <= 0) {
48
- throw new Error("empty range for randrange()");
48
+ throw new Error("empty range for randRange()");
49
49
  }
50
50
  const randomStep = Math.floor(Math.random() * numSteps);
51
51
  return start + randomStep * step;
@@ -130,7 +130,7 @@ function gauss(mu = 0, sigma = 1) {
130
130
  const z = Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);
131
131
  return mu + z * sigma;
132
132
  }
133
- var normalvariate = gauss;
133
+ var normalVariate = gauss;
134
134
  function triangular(low = 0, high = 1, mode) {
135
135
  if (mode === void 0) {
136
136
  mode = (low + high) / 2;
@@ -142,17 +142,17 @@ function triangular(low = 0, high = 1, mode) {
142
142
  }
143
143
  return high - Math.sqrt((1 - u) * (high - low) * (high - mode));
144
144
  }
145
- function betavariate(alpha, beta) {
146
- const y = gammavariate(alpha, 1);
145
+ function betaVariate(alpha, beta) {
146
+ const y = gammaVariate(alpha, 1);
147
147
  if (y === 0) return 0;
148
- return y / (y + gammavariate(beta, 1));
148
+ return y / (y + gammaVariate(beta, 1));
149
149
  }
150
- function expovariate(lambd) {
150
+ function expoVariate(lambd) {
151
151
  return -Math.log(1 - Math.random()) / lambd;
152
152
  }
153
- function gammavariate(alpha, beta) {
153
+ function gammaVariate(alpha, beta) {
154
154
  if (alpha <= 0 || beta <= 0) {
155
- throw new Error("gammavariate: alpha and beta must be > 0");
155
+ throw new Error("gammaVariate: alpha and beta must be > 0");
156
156
  }
157
157
  if (alpha > 1) {
158
158
  const d = alpha - 1 / 3;
@@ -175,13 +175,13 @@ function gammavariate(alpha, beta) {
175
175
  }
176
176
  } else {
177
177
  const u = Math.random();
178
- return gammavariate(1 + alpha, beta) * Math.pow(u, 1 / alpha);
178
+ return gammaVariate(1 + alpha, beta) * Math.pow(u, 1 / alpha);
179
179
  }
180
180
  }
181
- function lognormvariate(mu, sigma) {
181
+ function logNormVariate(mu, sigma) {
182
182
  return Math.exp(gauss(mu, sigma));
183
183
  }
184
- function vonmisesvariate(mu, kappa) {
184
+ function vonMisesVariate(mu, kappa) {
185
185
  if (kappa <= 1e-6) {
186
186
  return 2 * Math.PI * Math.random();
187
187
  }
@@ -203,11 +203,11 @@ function vonmisesvariate(mu, kappa) {
203
203
  }
204
204
  }
205
205
  }
206
- function paretovariate(alpha) {
206
+ function paretoVariate(alpha) {
207
207
  const u = 1 - Math.random();
208
208
  return 1 / Math.pow(u, 1 / alpha);
209
209
  }
210
- function weibullvariate(alpha, beta) {
210
+ function weibullVariate(alpha, beta) {
211
211
  const u = 1 - Math.random();
212
212
  return alpha * Math.pow(-Math.log(u), 1 / beta);
213
213
  }
@@ -215,22 +215,22 @@ function weibullvariate(alpha, beta) {
215
215
  export {
216
216
  random,
217
217
  uniform,
218
- randint,
219
- randrange,
218
+ randInt,
219
+ randRange,
220
220
  choice,
221
221
  choices,
222
222
  sample,
223
223
  shuffle,
224
224
  gauss,
225
- normalvariate,
225
+ normalVariate,
226
226
  triangular,
227
- betavariate,
228
- expovariate,
229
- gammavariate,
230
- lognormvariate,
231
- vonmisesvariate,
232
- paretovariate,
233
- weibullvariate,
227
+ betaVariate,
228
+ expoVariate,
229
+ gammaVariate,
230
+ logNormVariate,
231
+ vonMisesVariate,
232
+ paretoVariate,
233
+ weibullVariate,
234
234
  random_exports
235
235
  };
236
- //# sourceMappingURL=chunk-WAONBJE5.js.map
236
+ //# sourceMappingURL=chunk-H76SKASU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/random.ts"],"sourcesContent":["/**\n * Python random module for TypeScript\n *\n * Provides random number generation functions matching Python's random module.\n * Uses JavaScript's Math.random() as the underlying generator.\n *\n * Note: This is NOT cryptographically secure. For security-sensitive\n * applications, use the Web Crypto API instead.\n *\n * @see {@link https://docs.python.org/3/library/random.html | Python random documentation}\n */\n\n// ============================================================================\n// Basic random functions\n// ============================================================================\n\n/** Return a random floating point number in the range [0.0, 1.0) */\nexport function random(): number {\n return Math.random()\n}\n\n/** Return a random floating point number N such that a <= N <= b */\nexport function uniform(a: number, b: number): number {\n return a + Math.random() * (b - a)\n}\n\n/** Return a random integer N such that a <= N <= b (inclusive) */\nexport function randInt(a: number, b: number): number {\n a = Math.floor(a)\n b = Math.floor(b)\n return Math.floor(Math.random() * (b - a + 1)) + a\n}\n\n/** Return a randomly selected element from range(start, stop, step) */\nexport function randRange(start: number, stop?: number, step: number = 1): number {\n if (stop === undefined) {\n stop = start\n start = 0\n }\n if (step === 0) {\n throw new Error(\"step cannot be zero\")\n }\n\n const numSteps = Math.ceil((stop - start) / step)\n if (numSteps <= 0) {\n throw new Error(\"empty range for randRange()\")\n }\n\n const randomStep = Math.floor(Math.random() * numSteps)\n return start + randomStep * step\n}\n\n// ============================================================================\n// Sequence functions\n// ============================================================================\n\n/** Return a random element from the non-empty sequence */\nexport function choice<T>(seq: T[] | string): T | string {\n if (seq.length === 0) {\n throw new Error(\"Cannot choose from an empty sequence\")\n }\n const index = Math.floor(Math.random() * seq.length)\n return seq[index] as T | string\n}\n\n/** Return a k-length list of elements chosen from the population with replacement */\nexport function choices<T>(population: T[], options?: { weights?: number[]; k?: number }): T[] {\n const k = options?.k ?? 1\n const weights = options?.weights\n\n if (population.length === 0) {\n throw new Error(\"Cannot choose from an empty population\")\n }\n\n if (weights) {\n if (weights.length !== population.length) {\n throw new Error(\"weights and population must have the same length\")\n }\n\n // Compute cumulative weights\n const cumWeights: number[] = []\n let total = 0\n for (const w of weights) {\n total += w\n cumWeights.push(total)\n }\n\n const result: T[] = []\n for (let i = 0; i < k; i++) {\n const r = Math.random() * total\n // Binary search for the index\n let lo = 0\n let hi = cumWeights.length\n while (lo < hi) {\n const mid = Math.floor((lo + hi) / 2)\n if (r > (cumWeights[mid] as number)) {\n lo = mid + 1\n } else {\n hi = mid\n }\n }\n result.push(population[lo] as T)\n }\n return result\n }\n\n const result: T[] = []\n for (let i = 0; i < k; i++) {\n result.push(population[Math.floor(Math.random() * population.length)] as T)\n }\n return result\n}\n\n/** Return a k-length list of unique elements chosen from the population (without replacement) */\nexport function sample<T>(population: T[], k: number): T[] {\n if (k > population.length) {\n throw new Error(\"Sample larger than population\")\n }\n if (k < 0) {\n throw new Error(\"Sample size cannot be negative\")\n }\n\n // Fisher-Yates shuffle on a copy, take first k elements\n const pool = [...population]\n for (let i = 0; i < k; i++) {\n const j = i + Math.floor(Math.random() * (pool.length - i))\n const temp = pool[i] as T\n pool[i] = pool[j] as T\n pool[j] = temp\n }\n return pool.slice(0, k)\n}\n\n/** Shuffle the sequence in place */\nexport function shuffle(x: unknown[]): void {\n // Fisher-Yates shuffle\n for (let i = x.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n const temp = x[i]\n x[i] = x[j]\n x[j] = temp\n }\n}\n\n// ============================================================================\n// Real-valued distributions\n// ============================================================================\n\n/** Gaussian distribution with mean mu and standard deviation sigma */\nexport function gauss(mu: number = 0, sigma: number = 1): number {\n // Box-Muller transform\n let u1: number\n let u2: number\n do {\n u1 = Math.random()\n u2 = Math.random()\n } while (u1 === 0)\n\n const z = Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2)\n return mu + z * sigma\n}\n\n/** Normal distribution (alias for gauss) */\nexport const normalVariate = gauss\n\n/** Triangular distribution with low, high, and mode */\nexport function triangular(low: number = 0, high: number = 1, mode?: number): number {\n if (mode === undefined) {\n mode = (low + high) / 2\n }\n\n const u = Math.random()\n const c = (mode - low) / (high - low)\n\n if (u < c) {\n return low + Math.sqrt(u * (high - low) * (mode - low))\n }\n return high - Math.sqrt((1 - u) * (high - low) * (high - mode))\n}\n\n/** Beta distribution with alpha and beta parameters */\nexport function betaVariate(alpha: number, beta: number): number {\n // Use the gamma method\n const y = gammaVariate(alpha, 1)\n if (y === 0) return 0\n return y / (y + gammaVariate(beta, 1))\n}\n\n/** Exponential distribution with mean 1/lambd */\nexport function expoVariate(lambd: number): number {\n // lambd is 1.0 divided by the desired mean\n return -Math.log(1 - Math.random()) / lambd\n}\n\n/** Gamma distribution with shape alpha and scale beta */\nexport function gammaVariate(alpha: number, beta: number): number {\n // Marsaglia and Tsang's method\n if (alpha <= 0 || beta <= 0) {\n throw new Error(\"gammaVariate: alpha and beta must be > 0\")\n }\n\n if (alpha > 1) {\n const d = alpha - 1 / 3\n const c = 1 / Math.sqrt(9 * d)\n for (;;) {\n let x: number\n let v: number\n do {\n x = gauss()\n v = 1 + c * x\n } while (v <= 0)\n v = v * v * v\n const u = Math.random()\n if (u < 1 - 0.0331 * (x * x) * (x * x)) {\n return d * v * beta\n }\n if (Math.log(u) < 0.5 * x * x + d * (1 - v + Math.log(v))) {\n return d * v * beta\n }\n }\n } else {\n // alpha <= 1\n const u = Math.random()\n return gammaVariate(1 + alpha, beta) * Math.pow(u, 1 / alpha)\n }\n}\n\n/** Log normal distribution */\nexport function logNormVariate(mu: number, sigma: number): number {\n return Math.exp(gauss(mu, sigma))\n}\n\n/** Von Mises distribution (circular data) */\nexport function vonMisesVariate(mu: number, kappa: number): number {\n if (kappa <= 1e-6) {\n return 2 * Math.PI * Math.random()\n }\n\n const s = 0.5 / kappa\n const r = s + Math.sqrt(1 + s * s)\n\n for (;;) {\n const u1 = Math.random()\n const z = Math.cos(Math.PI * u1)\n const d = z / (r + z)\n const u2 = Math.random()\n if (u2 < 1 - d * d || u2 <= (1 - d) * Math.exp(d)) {\n const q = 1 / r\n const f = (q + z) / (1 + q * z)\n const u3 = Math.random()\n if (u3 > 0.5) {\n return (mu + Math.acos(f)) % (2 * Math.PI)\n }\n return (mu - Math.acos(f)) % (2 * Math.PI)\n }\n }\n}\n\n/** Pareto distribution */\nexport function paretoVariate(alpha: number): number {\n const u = 1 - Math.random()\n return 1 / Math.pow(u, 1 / alpha)\n}\n\n/** Weibull distribution */\nexport function weibullVariate(alpha: number, beta: number): number {\n const u = 1 - Math.random()\n return alpha * Math.pow(-Math.log(u), 1 / beta)\n}\n"],"mappings":"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","names":["result"]}
@@ -7,23 +7,25 @@ var itertools_exports = {};
7
7
  __export(itertools_exports, {
8
8
  accumulate: () => accumulate,
9
9
  chain: () => chain,
10
+ chunk: () => chunk,
10
11
  combinations: () => combinations,
11
- combinations_with_replacement: () => combinations_with_replacement,
12
+ combinationsWithReplacement: () => combinationsWithReplacement,
12
13
  compress: () => compress,
13
14
  count: () => count,
14
15
  cycle: () => cycle,
15
- dropwhile: () => dropwhile,
16
- filterfalse: () => filterfalse,
16
+ dropWhile: () => dropWhile,
17
+ filterFalse: () => filterFalse,
17
18
  groupby: () => groupby,
18
19
  islice: () => islice,
19
20
  pairwise: () => pairwise,
21
+ partition: () => partition,
20
22
  permutations: () => permutations,
21
23
  product: () => product,
22
24
  productRepeat: () => productRepeat,
23
25
  repeat: () => repeat,
24
- takewhile: () => takewhile,
26
+ takeWhile: () => takeWhile,
25
27
  tee: () => tee,
26
- zip_longest: () => zip_longest
28
+ zipLongest: () => zipLongest
27
29
  });
28
30
  function chain(...iterables) {
29
31
  return iterables.flatMap((it) => [...it]);
@@ -148,7 +150,7 @@ function islice(iterable, start, stop, step = 1) {
148
150
  }
149
151
  return result;
150
152
  }
151
- function takewhile(predicate, iterable) {
153
+ function takeWhile(predicate, iterable) {
152
154
  const result = [];
153
155
  for (const element of iterable) {
154
156
  if (predicate(element)) {
@@ -159,7 +161,7 @@ function takewhile(predicate, iterable) {
159
161
  }
160
162
  return result;
161
163
  }
162
- function dropwhile(predicate, iterable) {
164
+ function dropWhile(predicate, iterable) {
163
165
  const result = [];
164
166
  let dropping = true;
165
167
  for (const element of iterable) {
@@ -171,7 +173,7 @@ function dropwhile(predicate, iterable) {
171
173
  }
172
174
  return result;
173
175
  }
174
- function zip_longest(...args) {
176
+ function zipLongest(...args) {
175
177
  let fillvalue;
176
178
  let iterables;
177
179
  const lastArg = args[args.length - 1];
@@ -206,7 +208,7 @@ function compress(data, selectors) {
206
208
  }
207
209
  return result;
208
210
  }
209
- function filterfalse(predicate, iterable) {
211
+ function filterFalse(predicate, iterable) {
210
212
  const result = [];
211
213
  for (const element of iterable) {
212
214
  if (!predicate(element)) {
@@ -292,7 +294,7 @@ function productRepeat(iterable, repeat2 = 1) {
292
294
  const pools = Array.from({ length: repeat2 }, () => pool);
293
295
  return product(...pools);
294
296
  }
295
- function combinations_with_replacement(iterable, r) {
297
+ function combinationsWithReplacement(iterable, r) {
296
298
  const pool = [...iterable];
297
299
  const n = pool.length;
298
300
  if (r < 0 || n === 0) return r === 0 ? [[]] : [];
@@ -311,6 +313,29 @@ function combinations_with_replacement(iterable, r) {
311
313
  }
312
314
  return result;
313
315
  }
316
+ function chunk(iterable, size) {
317
+ if (size < 1) {
318
+ throw new Error("chunk size must be at least 1");
319
+ }
320
+ const arr = [...iterable];
321
+ const result = [];
322
+ for (let i = 0; i < arr.length; i += size) {
323
+ result.push(arr.slice(i, i + size));
324
+ }
325
+ return result;
326
+ }
327
+ function partition(iterable, predicate) {
328
+ const truthy = [];
329
+ const falsy = [];
330
+ for (const item of iterable) {
331
+ if (predicate(item)) {
332
+ truthy.push(item);
333
+ } else {
334
+ falsy.push(item);
335
+ }
336
+ }
337
+ return [truthy, falsy];
338
+ }
314
339
 
315
340
  export {
316
341
  chain,
@@ -320,18 +345,20 @@ export {
320
345
  cycle,
321
346
  repeat,
322
347
  islice,
323
- takewhile,
324
- dropwhile,
325
- zip_longest,
348
+ takeWhile,
349
+ dropWhile,
350
+ zipLongest,
326
351
  compress,
327
- filterfalse,
352
+ filterFalse,
328
353
  accumulate,
329
354
  groupby,
330
355
  count,
331
356
  tee,
332
357
  pairwise,
333
358
  productRepeat,
334
- combinations_with_replacement,
359
+ combinationsWithReplacement,
360
+ chunk,
361
+ partition,
335
362
  itertools_exports
336
363
  };
337
- //# sourceMappingURL=chunk-TOI6IG3T.js.map
364
+ //# sourceMappingURL=chunk-HQ42WNKZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/itertools.ts"],"sourcesContent":["/**\n * Python itertools module for TypeScript\n *\n * Provides iterator building blocks inspired by Python's itertools module.\n *\n * @see {@link https://docs.python.org/3/library/itertools.html | Python itertools documentation}\n *\n * Design Decision (ADR-0008):\n * - Most functions return eager arrays for better debugging and familiarity\n * - Only infinite sequences (cycle, repeat without count) use generators\n */\n\n/**\n * Chain multiple iterables together into a single array\n * chain([1, 2], [3, 4]) -> [1, 2, 3, 4]\n */\nexport function chain<T>(...iterables: Iterable<T>[]): T[] {\n return iterables.flatMap((it) => [...it])\n}\n\n/**\n * Return successive r-length combinations of elements\n * combinations([1, 2, 3], 2) -> [[1, 2], [1, 3], [2, 3]]\n */\nexport function combinations<T>(iterable: Iterable<T>, r: number): T[][] {\n const pool = [...iterable]\n const n = pool.length\n if (r > n || r < 0) return []\n\n const result: T[][] = []\n const indices: number[] = Array.from({ length: r }, (_, i) => i)\n result.push(indices.map((i) => pool[i] as T))\n\n for (;;) {\n let i = r - 1\n while (i >= 0 && indices[i] === i + n - r) i--\n if (i < 0) break\n ;(indices[i] as number)++\n for (let j = i + 1; j < r; j++) {\n indices[j] = (indices[j - 1] as number) + 1\n }\n result.push(indices.map((idx) => pool[idx] as T))\n }\n\n return result\n}\n\n/**\n * Return successive r-length permutations of elements\n * permutations([1, 2, 3], 2) -> [[1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2]]\n */\nexport function permutations<T>(iterable: Iterable<T>, r?: number): T[][] {\n const pool = [...iterable]\n const n = pool.length\n const rLen = r === undefined ? n : r\n if (rLen > n || rLen < 0) return []\n\n const result: T[][] = []\n const indices: number[] = Array.from({ length: n }, (_, i) => i)\n const cycles: number[] = Array.from({ length: rLen }, (_, i) => n - i)\n\n result.push(indices.slice(0, rLen).map((i) => pool[i] as T))\n\n outer: for (;;) {\n for (let i = rLen - 1; i >= 0; i--) {\n ;(cycles[i] as number)--\n if (cycles[i] === 0) {\n // Rotate indices[i:] left by one\n const temp = indices[i] as number\n for (let j = i; j < n - 1; j++) {\n indices[j] = indices[j + 1] as number\n }\n indices[n - 1] = temp\n cycles[i] = n - i\n } else {\n const j = n - (cycles[i] as number)\n const swap = indices[j] as number\n indices[j] = indices[i] as number\n indices[i] = swap\n result.push(indices.slice(0, rLen).map((idx) => pool[idx] as T))\n continue outer\n }\n }\n break\n }\n\n return result\n}\n\n/**\n * Cartesian product of input iterables\n * product([1, 2], ['a', 'b']) -> [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']]\n */\nexport function product<T>(...iterables: Iterable<T>[]): T[][] {\n if (iterables.length === 0) return [[]]\n\n const pools = iterables.map((it) => [...it])\n\n // Check if any pool is empty\n if (pools.some((p) => p.length === 0)) return []\n\n const result: T[][] = []\n const indices: number[] = new Array<number>(pools.length).fill(0)\n result.push(pools.map((p, i) => p[indices[i] as number] as T))\n\n for (;;) {\n let i = pools.length - 1\n while (i >= 0) {\n ;(indices[i] as number)++\n const currentPool = pools[i] as T[]\n if ((indices[i] as number) < currentPool.length) {\n result.push(pools.map((p, j) => p[indices[j] as number] as T))\n break\n }\n indices[i] = 0\n i--\n }\n if (i < 0) break\n }\n\n return result\n}\n\n/**\n * Cycle through an iterable indefinitely (INFINITE - returns Generator)\n * cycle([1, 2, 3]) -> 1, 2, 3, 1, 2, 3, 1, 2, 3, ...\n *\n * WARNING: This is infinite! Use with for...of and break, or islice.\n */\nexport function* cycle<T>(iterable: Iterable<T>): Generator<T> {\n const saved: T[] = []\n for (const element of iterable) {\n yield element\n saved.push(element)\n }\n if (saved.length === 0) return\n for (;;) {\n yield* saved\n }\n}\n\n/**\n * Repeat an object. If times is specified, returns an array. Otherwise returns\n * an infinite generator.\n *\n * repeat('x', 3) -> ['x', 'x', 'x']\n * repeat('x') -> Generator that yields 'x' forever (INFINITE)\n */\nexport function repeat<T>(obj: T, times?: number): T[] | Generator<T> {\n if (times !== undefined) {\n // Finite: return array\n return Array.from({ length: times }, () => obj)\n }\n // Infinite: return generator\n return (function* () {\n for (;;) {\n yield obj\n }\n })()\n}\n\n/**\n * Slice an iterable from start to stop with step\n * islice([1, 2, 3, 4, 5], 1, 4) -> [2, 3, 4]\n * islice([1, 2, 3, 4, 5], 3) -> [1, 2, 3]\n */\nexport function islice<T>(\n iterable: Iterable<T>,\n start: number,\n stop?: number,\n step: number = 1\n): T[] {\n // Handle single argument (stop only): islice(it, 5) means islice(it, 0, 5, 1)\n let actualStart = start\n let actualStop = stop\n if (actualStop === undefined) {\n actualStop = start\n actualStart = 0\n }\n\n if (step < 1) {\n throw new Error(\"step must be >= 1\")\n }\n\n const result: T[] = []\n let index = 0\n let nextIndex = actualStart\n\n for (const element of iterable) {\n if (index >= actualStop) break\n if (index === nextIndex) {\n result.push(element)\n nextIndex += step\n }\n index++\n }\n\n return result\n}\n\n/**\n * Take elements while predicate is true\n * takeWhile(x => x < 5, [1, 4, 6, 4, 1]) -> [1, 4]\n */\nexport function takeWhile<T>(predicate: (x: T) => boolean, iterable: Iterable<T>): T[] {\n const result: T[] = []\n for (const element of iterable) {\n if (predicate(element)) {\n result.push(element)\n } else {\n break\n }\n }\n return result\n}\n\n/**\n * Skip elements while predicate is true, then return the rest\n * dropWhile(x => x < 5, [1, 4, 6, 4, 1]) -> [6, 4, 1]\n */\nexport function dropWhile<T>(predicate: (x: T) => boolean, iterable: Iterable<T>): T[] {\n const result: T[] = []\n let dropping = true\n for (const element of iterable) {\n if (dropping && predicate(element)) {\n continue\n }\n dropping = false\n result.push(element)\n }\n return result\n}\n\n/**\n * Zip iterables together, filling missing values with fillvalue\n * zipLongest([1, 2, 3], ['a', 'b'], { fillvalue: '-' }) -> [[1, 'a'], [2, 'b'], [3, '-']]\n */\nexport function zipLongest<T>(\n ...args: [...Iterable<T>[], { fillvalue?: T }] | Iterable<T>[]\n): T[][] {\n let fillvalue: T | undefined\n let iterables: Iterable<T>[]\n\n // Check if last argument is options object\n const lastArg = args[args.length - 1]\n if (\n lastArg &&\n typeof lastArg === \"object\" &&\n !Array.isArray(lastArg) &&\n !(Symbol.iterator in lastArg)\n ) {\n fillvalue = (lastArg as { fillvalue?: T }).fillvalue\n iterables = args.slice(0, -1) as Iterable<T>[]\n } else {\n iterables = args as Iterable<T>[]\n }\n\n if (iterables.length === 0) return []\n\n const arrays = iterables.map((it) => [...it])\n const maxLen = Math.max(...arrays.map((a) => a.length))\n const result: T[][] = []\n\n for (let i = 0; i < maxLen; i++) {\n const tuple: T[] = []\n for (const arr of arrays) {\n tuple.push(i < arr.length ? (arr[i] as T) : (fillvalue as T))\n }\n result.push(tuple)\n }\n\n return result\n}\n\n/**\n * Return elements from iterable where the corresponding selector is true\n * compress([1, 2, 3, 4, 5], [1, 0, 1, 0, 1]) -> [1, 3, 5]\n */\nexport function compress<T>(data: Iterable<T>, selectors: Iterable<unknown>): T[] {\n const result: T[] = []\n const dataArr = [...data]\n const selectorsArr = [...selectors]\n const len = Math.min(dataArr.length, selectorsArr.length)\n\n for (let i = 0; i < len; i++) {\n if (selectorsArr[i]) {\n result.push(dataArr[i] as T)\n }\n }\n return result\n}\n\n/**\n * Return elements for which predicate is false\n * filterFalse(x => x % 2, [1, 2, 3, 4, 5]) -> [2, 4]\n */\nexport function filterFalse<T>(predicate: (x: T) => unknown, iterable: Iterable<T>): T[] {\n const result: T[] = []\n for (const element of iterable) {\n if (!predicate(element)) {\n result.push(element)\n }\n }\n return result\n}\n\n/**\n * Make an iterator that returns accumulated sums or accumulated results\n * accumulate([1, 2, 3, 4, 5]) -> [1, 3, 6, 10, 15]\n * accumulate([1, 2, 3, 4, 5], (x, y) => x * y) -> [1, 2, 6, 24, 120]\n */\nexport function accumulate<T>(\n iterable: Iterable<T>,\n func?: (acc: T, val: T) => T,\n initial?: T\n): T[] {\n const result: T[] = []\n const arr = [...iterable]\n\n if (arr.length === 0) {\n if (initial !== undefined) {\n return [initial]\n }\n return []\n }\n\n const operation = func ?? ((a: T, b: T): T => ((a as number) + (b as number)) as unknown as T)\n\n let acc: T\n let startIdx: number\n\n if (initial !== undefined) {\n acc = initial\n startIdx = 0\n result.push(acc)\n } else {\n acc = arr[0] as T\n startIdx = 1\n result.push(acc)\n }\n\n for (let i = startIdx; i < arr.length; i++) {\n acc = operation(acc, arr[i] as T)\n result.push(acc)\n }\n\n return result\n}\n\n/**\n * Return consecutive keys and groups from the iterable\n * groupby([1, 1, 2, 2, 2, 3, 1, 1]) -> [[1, [1, 1]], [2, [2, 2, 2]], [3, [3]], [1, [1, 1]]]\n */\nexport function groupby<T, K = T>(iterable: Iterable<T>, key?: (x: T) => K): [K, T[]][] {\n const result: [K, T[]][] = []\n const keyFunc = key ?? ((x: T) => x as unknown as K)\n\n let currentKey: K | undefined\n let currentGroup: T[] = []\n let first = true\n\n for (const element of iterable) {\n const k = keyFunc(element)\n if (first) {\n currentKey = k\n currentGroup = [element]\n first = false\n } else if (k === currentKey) {\n currentGroup.push(element)\n } else {\n result.push([currentKey as K, currentGroup])\n currentKey = k\n currentGroup = [element]\n }\n }\n\n if (!first) {\n result.push([currentKey as K, currentGroup])\n }\n\n return result\n}\n\n/**\n * Make an iterator that returns evenly spaced values starting with n\n * count(10, 2) -> 10, 12, 14, 16, 18, ... (INFINITE Generator)\n */\nexport function* count(start: number = 0, step: number = 1): Generator<number> {\n let n = start\n for (;;) {\n yield n\n n += step\n }\n}\n\n/**\n * Return n independent iterators from a single iterable\n * tee([1, 2, 3], 2) -> [[1, 2, 3], [1, 2, 3]]\n */\nexport function tee<T>(iterable: Iterable<T>, n: number = 2): T[][] {\n const arr = [...iterable]\n return Array.from({ length: n }, () => [...arr])\n}\n\n/**\n * Return successive overlapping pairs from the iterable\n * pairwise([1, 2, 3, 4, 5]) -> [[1, 2], [2, 3], [3, 4], [4, 5]]\n */\nexport function pairwise<T>(iterable: Iterable<T>): [T, T][] {\n const arr = [...iterable]\n const result: [T, T][] = []\n for (let i = 0; i < arr.length - 1; i++) {\n result.push([arr[i] as T, arr[i + 1] as T])\n }\n return result\n}\n\n/**\n * Cartesian product with repeat (product(range(3), repeat=2) like nested loops)\n * productRepeat([0, 1], 2) -> [[0, 0], [0, 1], [1, 0], [1, 1]]\n */\nexport function productRepeat<T>(iterable: Iterable<T>, repeat: number = 1): T[][] {\n const pool = [...iterable]\n if (repeat < 1 || pool.length === 0) return repeat === 0 ? [[]] : []\n\n const pools = Array.from({ length: repeat }, () => pool)\n return product(...pools)\n}\n\n/**\n * Return r-length combinations with replacement\n * combinationsWithReplacement([1, 2, 3], 2) -> [[1, 1], [1, 2], [1, 3], [2, 2], [2, 3], [3, 3]]\n */\nexport function combinationsWithReplacement<T>(iterable: Iterable<T>, r: number): T[][] {\n const pool = [...iterable]\n const n = pool.length\n if (r < 0 || n === 0) return r === 0 ? [[]] : []\n\n const result: T[][] = []\n const indices: number[] = new Array<number>(r).fill(0)\n result.push(indices.map((i) => pool[i] as T))\n\n for (;;) {\n let i = r - 1\n while (i >= 0 && indices[i] === n - 1) i--\n if (i < 0) break\n const newVal = (indices[i] as number) + 1\n for (let j = i; j < r; j++) {\n indices[j] = newVal\n }\n result.push(indices.map((idx) => pool[idx] as T))\n }\n\n return result\n}\n\n/**\n * Split an iterable into chunks of specified size.\n * @inspired Remeda, Lodash\n *\n * chunk([1, 2, 3, 4, 5], 2) -> [[1, 2], [3, 4], [5]]\n */\nexport function chunk<T>(iterable: Iterable<T>, size: number): T[][] {\n if (size < 1) {\n throw new Error(\"chunk size must be at least 1\")\n }\n const arr = [...iterable]\n const result: T[][] = []\n for (let i = 0; i < arr.length; i += size) {\n result.push(arr.slice(i, i + size))\n }\n return result\n}\n\n/**\n * Partition an iterable into two arrays based on a predicate.\n * @inspired Remeda, Lodash\n *\n * partition([1, 2, 3, 4], x => x % 2 === 0) -> [[2, 4], [1, 3]]\n */\nexport function partition<T>(iterable: Iterable<T>, predicate: (x: T) => boolean): [T[], T[]] {\n const truthy: T[] = []\n const falsy: T[] = []\n for (const item of iterable) {\n if (predicate(item)) {\n truthy.push(item)\n } else {\n falsy.push(item)\n }\n }\n return [truthy, falsy]\n}\n"],"mappings":"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","names":["repeat"]}
@@ -46,7 +46,7 @@ var timedelta = class _timedelta {
46
46
  this.days -= 1;
47
47
  }
48
48
  }
49
- total_seconds() {
49
+ totalSeconds() {
50
50
  return this.days * 24 * 60 * 60 + this.seconds + this.microseconds / 1e6;
51
51
  }
52
52
  toString() {
@@ -81,7 +81,7 @@ var timedelta = class _timedelta {
81
81
  }
82
82
  multiply(n) {
83
83
  return new _timedelta({
84
- microseconds: Math.round(this.total_seconds() * 1e6 * n)
84
+ microseconds: Math.round(this.totalSeconds() * 1e6 * n)
85
85
  });
86
86
  }
87
87
  static min = new _timedelta({ days: -999999999 });
@@ -114,18 +114,18 @@ var date = class _date {
114
114
  const now = /* @__PURE__ */ new Date();
115
115
  return new _date(now.getFullYear(), now.getMonth() + 1, now.getDate());
116
116
  }
117
- static fromtimestamp(timestamp) {
117
+ static fromTimestamp(timestamp) {
118
118
  const d = new Date(timestamp * 1e3);
119
119
  return new _date(d.getFullYear(), d.getMonth() + 1, d.getDate());
120
120
  }
121
- static fromisoformat(dateString) {
121
+ static fromIsoFormat(dateString) {
122
122
  const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(dateString);
123
123
  if (!match || !match[1] || !match[2] || !match[3]) {
124
- throw new Error(`Invalid isoformat string: '${dateString}'`);
124
+ throw new Error(`Invalid isoFormat string: '${dateString}'`);
125
125
  }
126
126
  return new _date(parseInt(match[1]), parseInt(match[2]), parseInt(match[3]));
127
127
  }
128
- static fromordinal(ordinal) {
128
+ static fromOrdinal(ordinal) {
129
129
  const d = new Date(Date.UTC(1, 0, ordinal));
130
130
  return new _date(d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate());
131
131
  }
@@ -136,7 +136,7 @@ var date = class _date {
136
136
  options?.day ?? this.day
137
137
  );
138
138
  }
139
- toordinal() {
139
+ toOrdinal() {
140
140
  const d = new Date(Date.UTC(this.year, this.month - 1, this.day));
141
141
  const epoch = new Date(Date.UTC(1, 0, 1));
142
142
  return Math.floor((d.getTime() - epoch.getTime()) / (24 * 60 * 60 * 1e3)) + 1;
@@ -145,10 +145,10 @@ var date = class _date {
145
145
  const d = new Date(this.year, this.month - 1, this.day);
146
146
  return (d.getDay() + 6) % 7;
147
147
  }
148
- isoweekday() {
148
+ isoWeekday() {
149
149
  return this.weekday() + 1;
150
150
  }
151
- isocalendar() {
151
+ isoCalendar() {
152
152
  const d = new Date(this.year, this.month - 1, this.day);
153
153
  const dayOfYear = Math.floor(
154
154
  (d.getTime() - new Date(this.year, 0, 0).getTime()) / (24 * 60 * 60 * 1e3)
@@ -168,16 +168,16 @@ var date = class _date {
168
168
  year += 1;
169
169
  }
170
170
  }
171
- return [year, week, this.isoweekday()];
171
+ return [year, week, this.isoWeekday()];
172
172
  }
173
- isoformat() {
173
+ isoFormat() {
174
174
  return `${String(this.year)}-${String(this.month).padStart(2, "0")}-${String(this.day).padStart(2, "0")}`;
175
175
  }
176
176
  strftime(format) {
177
177
  return strftime(format, new datetime(this.year, this.month, this.day, 0, 0, 0, 0));
178
178
  }
179
179
  toString() {
180
- return this.isoformat();
180
+ return this.isoFormat();
181
181
  }
182
182
  __add__(delta) {
183
183
  const d = new Date(this.year, this.month - 1, this.day + delta.days);
@@ -194,19 +194,19 @@ var date = class _date {
194
194
  return new timedelta({ days: Math.floor(diffMs / (24 * 60 * 60 * 1e3)) });
195
195
  }
196
196
  __lt__(other) {
197
- return this.toordinal() < other.toordinal();
197
+ return this.toOrdinal() < other.toOrdinal();
198
198
  }
199
199
  __le__(other) {
200
- return this.toordinal() <= other.toordinal();
200
+ return this.toOrdinal() <= other.toOrdinal();
201
201
  }
202
202
  __gt__(other) {
203
- return this.toordinal() > other.toordinal();
203
+ return this.toOrdinal() > other.toOrdinal();
204
204
  }
205
205
  __ge__(other) {
206
- return this.toordinal() >= other.toordinal();
206
+ return this.toOrdinal() >= other.toOrdinal();
207
207
  }
208
208
  __eq__(other) {
209
- return this.toordinal() === other.toordinal();
209
+ return this.toOrdinal() === other.toOrdinal();
210
210
  }
211
211
  static min = new _date(1, 1, 1);
212
212
  static max = new _date(9999, 12, 31);
@@ -229,10 +229,10 @@ var time = class _time {
229
229
  this.microsecond = microsecond;
230
230
  this.tzinfo = null;
231
231
  }
232
- static fromisoformat(timeString) {
232
+ static fromIsoFormat(timeString) {
233
233
  const match = /^(\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?$/.exec(timeString);
234
234
  if (!match || !match[1] || !match[2] || !match[3]) {
235
- throw new Error(`Invalid isoformat string: '${timeString}'`);
235
+ throw new Error(`Invalid isoFormat string: '${timeString}'`);
236
236
  }
237
237
  const microsecond = match[4] ? parseInt(match[4].padEnd(6, "0").slice(0, 6)) : 0;
238
238
  return new _time(parseInt(match[1]), parseInt(match[2]), parseInt(match[3]), microsecond);
@@ -245,7 +245,7 @@ var time = class _time {
245
245
  options?.microsecond ?? this.microsecond
246
246
  );
247
247
  }
248
- isoformat(timespec = "auto") {
248
+ isoFormat(timespec = "auto") {
249
249
  const hh = String(this.hour).padStart(2, "0");
250
250
  const mm = String(this.minute).padStart(2, "0");
251
251
  const ss = String(this.second).padStart(2, "0");
@@ -275,7 +275,7 @@ var time = class _time {
275
275
  );
276
276
  }
277
277
  toString() {
278
- return this.isoformat();
278
+ return this.isoFormat();
279
279
  }
280
280
  static min = new _time(0, 0, 0, 0);
281
281
  static max = new _time(23, 59, 59, 999999);
@@ -314,7 +314,7 @@ var datetime = class _datetime extends date {
314
314
  d.getMilliseconds() * 1e3
315
315
  );
316
316
  }
317
- static utcnow() {
317
+ static utcNow() {
318
318
  const d = /* @__PURE__ */ new Date();
319
319
  return new _datetime(
320
320
  d.getUTCFullYear(),
@@ -326,7 +326,7 @@ var datetime = class _datetime extends date {
326
326
  d.getUTCMilliseconds() * 1e3
327
327
  );
328
328
  }
329
- static fromtimestamp(timestamp) {
329
+ static fromTimestamp(timestamp) {
330
330
  const d = new Date(timestamp * 1e3);
331
331
  return new _datetime(
332
332
  d.getFullYear(),
@@ -338,7 +338,7 @@ var datetime = class _datetime extends date {
338
338
  d.getMilliseconds() * 1e3
339
339
  );
340
340
  }
341
- static utcfromtimestamp(timestamp) {
341
+ static utcfromTimestamp(timestamp) {
342
342
  const d = new Date(timestamp * 1e3);
343
343
  return new _datetime(
344
344
  d.getUTCFullYear(),
@@ -350,14 +350,14 @@ var datetime = class _datetime extends date {
350
350
  d.getUTCMilliseconds() * 1e3
351
351
  );
352
352
  }
353
- static fromisoformat(s) {
353
+ static fromIsoFormat(s) {
354
354
  const match = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?$/.exec(s);
355
355
  if (!match || !match[1] || !match[2] || !match[3] || !match[4] || !match[5] || !match[6]) {
356
356
  const dateMatch = /^(\d{4})-(\d{2})-(\d{2})$/.exec(s);
357
357
  if (dateMatch && dateMatch[1] && dateMatch[2] && dateMatch[3]) {
358
358
  return new _datetime(parseInt(dateMatch[1]), parseInt(dateMatch[2]), parseInt(dateMatch[3]));
359
359
  }
360
- throw new Error(`Invalid isoformat string: '${s}'`);
360
+ throw new Error(`Invalid isoFormat string: '${s}'`);
361
361
  }
362
362
  const microsecond = match[7] ? parseInt(match[7].padEnd(6, "0").slice(0, 6)) : 0;
363
363
  return new _datetime(
@@ -405,10 +405,10 @@ var datetime = class _datetime extends date {
405
405
  );
406
406
  return d.getTime() / 1e3;
407
407
  }
408
- isoformat(sep = "T", timespec = "auto") {
409
- const dateStr = super.isoformat();
408
+ isoFormat(sep = "T", timespec = "auto") {
409
+ const dateStr = super.isoFormat();
410
410
  const t = new time(this.hour, this.minute, this.second, this.microsecond);
411
- return `${dateStr}${sep}${t.isoformat(timespec)}`;
411
+ return `${dateStr}${sep}${t.isoFormat(timespec)}`;
412
412
  }
413
413
  ctime() {
414
414
  const days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];
@@ -434,16 +434,16 @@ var datetime = class _datetime extends date {
434
434
  return strftime(format, this);
435
435
  }
436
436
  toString() {
437
- return this.isoformat(" ");
437
+ return this.isoFormat(" ");
438
438
  }
439
439
  __add__(delta) {
440
- const totalMicroseconds = this.timestamp() * 1e6 + this.microsecond + delta.total_seconds() * 1e6;
441
- return _datetime.fromtimestamp(totalMicroseconds / 1e6);
440
+ const totalMicroseconds = this.timestamp() * 1e6 + this.microsecond + delta.totalSeconds() * 1e6;
441
+ return _datetime.fromTimestamp(totalMicroseconds / 1e6);
442
442
  }
443
443
  __sub__(other) {
444
444
  if (other instanceof timedelta) {
445
- const totalMicroseconds = this.timestamp() * 1e6 + this.microsecond - other.total_seconds() * 1e6;
446
- return _datetime.fromtimestamp(totalMicroseconds / 1e6);
445
+ const totalMicroseconds = this.timestamp() * 1e6 + this.microsecond - other.totalSeconds() * 1e6;
446
+ return _datetime.fromTimestamp(totalMicroseconds / 1e6);
447
447
  }
448
448
  if (other instanceof _datetime) {
449
449
  const diff = this.timestamp() - other.timestamp();
@@ -645,6 +645,7 @@ function strptime(dateString, format) {
645
645
  if (!found) throw new Error("Invalid month name");
646
646
  break;
647
647
  }
648
+ /* c8 ignore start - rare edge cases */
648
649
  case "%":
649
650
  if (dateString[pos] !== "%") throw new Error("Expected %");
650
651
  pos++;
@@ -677,4 +678,4 @@ export {
677
678
  MAXYEAR,
678
679
  datetime_exports
679
680
  };
680
- //# sourceMappingURL=chunk-HA5Y7PKO.js.map
681
+ //# sourceMappingURL=chunk-KRRY534Q.js.map