woxi 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- woxi-0.1.0/.config/nextest.toml +63 -0
- woxi-0.1.0/.dockerignore +30 -0
- woxi-0.1.0/.envrc +1 -0
- woxi-0.1.0/.gitignore +17 -0
- woxi-0.1.0/.pre-commit-config.yaml +14 -0
- woxi-0.1.0/AGENTS.md +57 -0
- woxi-0.1.0/CLAUDE.md +57 -0
- woxi-0.1.0/Cargo.lock +7192 -0
- woxi-0.1.0/Cargo.toml +221 -0
- woxi-0.1.0/LICENSE +661 -0
- woxi-0.1.0/PKG-INFO +103 -0
- woxi-0.1.0/benches/interpreter.rs +248 -0
- woxi-0.1.0/build.rs +37 -0
- woxi-0.1.0/changelog.md +438 -0
- woxi-0.1.0/functions.csv +6286 -0
- woxi-0.1.0/improve-compile-time.md +129 -0
- woxi-0.1.0/license.txt +661 -0
- woxi-0.1.0/makefile +411 -0
- woxi-0.1.0/pyproject.toml +46 -0
- woxi-0.1.0/python/woxi/__init__.py +56 -0
- woxi-0.1.0/python/woxi/__main__.py +134 -0
- woxi-0.1.0/python/woxi/_woxi.pyi +30 -0
- woxi-0.1.0/python/woxi/py.typed +0 -0
- woxi-0.1.0/readme.md +178 -0
- woxi-0.1.0/resources/AtkinsonHyperlegibleMono-VariableFont_wght.ttf +0 -0
- woxi-0.1.0/resources/AtkinsonHyperlegibleNext-VariableFont_wght.ttf +0 -0
- woxi-0.1.0/resources/dictionary_words.txt.gz +0 -0
- woxi-0.1.0/resources/leland/FONTLOG.txt +213 -0
- woxi-0.1.0/resources/leland/LICENSE.txt +93 -0
- woxi-0.1.0/resources/leland/Leland.otf +0 -0
- woxi-0.1.0/resources/ne_110m_countries.bin +0 -0
- woxi-0.1.0/rustfmt.toml +5 -0
- woxi-0.1.0/scripts-todo.md +377 -0
- woxi-0.1.0/src/bin/diff_fuzz.rs +1455 -0
- woxi-0.1.0/src/evaluator/assignment.rs +3648 -0
- woxi-0.1.0/src/evaluator/attributes.rs +685 -0
- woxi-0.1.0/src/evaluator/binary_ops.rs +373 -0
- woxi-0.1.0/src/evaluator/core_eval.rs +3651 -0
- woxi-0.1.0/src/evaluator/dispatch/arg_count.rs +1612 -0
- woxi-0.1.0/src/evaluator/dispatch/association_functions.rs +185 -0
- woxi-0.1.0/src/evaluator/dispatch/attributes.rs +349 -0
- woxi-0.1.0/src/evaluator/dispatch/audio_functions.rs +55 -0
- woxi-0.1.0/src/evaluator/dispatch/boolean_functions.rs +156 -0
- woxi-0.1.0/src/evaluator/dispatch/calculus_functions.rs +6897 -0
- woxi-0.1.0/src/evaluator/dispatch/complex_and_special.rs +14518 -0
- woxi-0.1.0/src/evaluator/dispatch/datetime_functions.rs +650 -0
- woxi-0.1.0/src/evaluator/dispatch/evaluation_control.rs +1396 -0
- woxi-0.1.0/src/evaluator/dispatch/image_functions.rs +1189 -0
- woxi-0.1.0/src/evaluator/dispatch/interval_functions.rs +26 -0
- woxi-0.1.0/src/evaluator/dispatch/io_functions.rs +3720 -0
- woxi-0.1.0/src/evaluator/dispatch/linear_algebra_functions.rs +5254 -0
- woxi-0.1.0/src/evaluator/dispatch/list_operations.rs +9059 -0
- woxi-0.1.0/src/evaluator/dispatch/math_functions.rs +8385 -0
- woxi-0.1.0/src/evaluator/dispatch/mod.rs +13087 -0
- woxi-0.1.0/src/evaluator/dispatch/music_functions.rs +72 -0
- woxi-0.1.0/src/evaluator/dispatch/plotting.rs +585 -0
- woxi-0.1.0/src/evaluator/dispatch/polynomial_functions.rs +1296 -0
- woxi-0.1.0/src/evaluator/dispatch/predicate_functions.rs +2017 -0
- woxi-0.1.0/src/evaluator/dispatch/quantity_functions.rs +38 -0
- woxi-0.1.0/src/evaluator/dispatch/string_functions.rs +507 -0
- woxi-0.1.0/src/evaluator/dispatch/structural.rs +107 -0
- woxi-0.1.0/src/evaluator/dispatch/timeseries_functions.rs +59 -0
- woxi-0.1.0/src/evaluator/dispatch/wavelet_functions.rs +72 -0
- woxi-0.1.0/src/evaluator/function_application.rs +2249 -0
- woxi-0.1.0/src/evaluator/listable.rs +1465 -0
- woxi-0.1.0/src/evaluator/mod.rs +142 -0
- woxi-0.1.0/src/evaluator/part_extraction.rs +780 -0
- woxi-0.1.0/src/evaluator/pattern_functions.rs +129 -0
- woxi-0.1.0/src/evaluator/pattern_matching.rs +4093 -0
- woxi-0.1.0/src/evaluator/scoping.rs +1342 -0
- woxi-0.1.0/src/evaluator/string_replace.rs +341 -0
- woxi-0.1.0/src/evaluator/type_helpers.rs +86 -0
- woxi-0.1.0/src/expr_list.rs +653 -0
- woxi-0.1.0/src/functions/assessment_ast.rs +193 -0
- woxi-0.1.0/src/functions/assessment_render.rs +237 -0
- woxi-0.1.0/src/functions/association_ast.rs +1088 -0
- woxi-0.1.0/src/functions/audio_ast/edit.rs +263 -0
- woxi-0.1.0/src/functions/audio_ast/filters.rs +354 -0
- woxi-0.1.0/src/functions/audio_ast/measure.rs +437 -0
- woxi-0.1.0/src/functions/audio_ast/mod.rs +508 -0
- woxi-0.1.0/src/functions/audio_ast/spectral.rs +581 -0
- woxi-0.1.0/src/functions/boolean_ast.rs +3537 -0
- woxi-0.1.0/src/functions/calculus_ast.rs +19376 -0
- woxi-0.1.0/src/functions/cellular_automaton_ast.rs +523 -0
- woxi-0.1.0/src/functions/chart.rs +2967 -0
- woxi-0.1.0/src/functions/control_flow_ast.rs +470 -0
- woxi-0.1.0/src/functions/convolve_ast.rs +312 -0
- woxi-0.1.0/src/functions/count_roots_ast.rs +516 -0
- woxi-0.1.0/src/functions/country_data.rs +465 -0
- woxi-0.1.0/src/functions/csv_ast.rs +459 -0
- woxi-0.1.0/src/functions/dataset_ast.rs +226 -0
- woxi-0.1.0/src/functions/datetime_ast.rs +4446 -0
- woxi-0.1.0/src/functions/dendrogram.rs +625 -0
- woxi-0.1.0/src/functions/dirichlet_ast.rs +1058 -0
- woxi-0.1.0/src/functions/element_data.rs +2780 -0
- woxi-0.1.0/src/functions/entity_ast.rs +1135 -0
- woxi-0.1.0/src/functions/expr_form.rs +535 -0
- woxi-0.1.0/src/functions/field_plot.rs +2000 -0
- woxi-0.1.0/src/functions/function_range_ast.rs +226 -0
- woxi-0.1.0/src/functions/geo_math.rs +659 -0
- woxi-0.1.0/src/functions/geographics.rs +1878 -0
- woxi-0.1.0/src/functions/geometric_test_ast.rs +880 -0
- woxi-0.1.0/src/functions/graph.rs +5984 -0
- woxi-0.1.0/src/functions/graphics.rs +13813 -0
- woxi-0.1.0/src/functions/graphicsbox.rs +294 -0
- woxi-0.1.0/src/functions/groebner_ast.rs +694 -0
- woxi-0.1.0/src/functions/http_ast.rs +1069 -0
- woxi-0.1.0/src/functions/image_ast.rs +7643 -0
- woxi-0.1.0/src/functions/information_render.rs +216 -0
- woxi-0.1.0/src/functions/interval_ast.rs +1284 -0
- woxi-0.1.0/src/functions/linear_algebra_ast.rs +10785 -0
- woxi-0.1.0/src/functions/list_helpers_ast/aggregation.rs +3706 -0
- woxi-0.1.0/src/functions/list_helpers_ast/combinatorics.rs +974 -0
- woxi-0.1.0/src/functions/list_helpers_ast/construction.rs +2846 -0
- woxi-0.1.0/src/functions/list_helpers_ast/element_access.rs +2348 -0
- woxi-0.1.0/src/functions/list_helpers_ast/filtering.rs +2647 -0
- woxi-0.1.0/src/functions/list_helpers_ast/functional.rs +1781 -0
- woxi-0.1.0/src/functions/list_helpers_ast/mapping.rs +1661 -0
- woxi-0.1.0/src/functions/list_helpers_ast/mod.rs +35 -0
- woxi-0.1.0/src/functions/list_helpers_ast/properties.rs +939 -0
- woxi-0.1.0/src/functions/list_helpers_ast/restructuring.rs +2146 -0
- woxi-0.1.0/src/functions/list_helpers_ast/set_operations.rs +1148 -0
- woxi-0.1.0/src/functions/list_helpers_ast/sorting.rs +1555 -0
- woxi-0.1.0/src/functions/list_helpers_ast/summation.rs +5195 -0
- woxi-0.1.0/src/functions/list_helpers_ast/utilities.rs +290 -0
- woxi-0.1.0/src/functions/list_plot.rs +811 -0
- woxi-0.1.0/src/functions/math_ast/airy.rs +713 -0
- woxi-0.1.0/src/functions/math_ast/arithmetic.rs +11628 -0
- woxi-0.1.0/src/functions/math_ast/bessel.rs +2098 -0
- woxi-0.1.0/src/functions/math_ast/carlson.rs +265 -0
- woxi-0.1.0/src/functions/math_ast/complex.rs +2275 -0
- woxi-0.1.0/src/functions/math_ast/coordinate_arrays.rs +377 -0
- woxi-0.1.0/src/functions/math_ast/digits.rs +4448 -0
- woxi-0.1.0/src/functions/math_ast/distributions.rs +19094 -0
- woxi-0.1.0/src/functions/math_ast/elementary.rs +4305 -0
- woxi-0.1.0/src/functions/math_ast/elliptic.rs +1727 -0
- woxi-0.1.0/src/functions/math_ast/gamma.rs +2392 -0
- woxi-0.1.0/src/functions/math_ast/hypergeometric.rs +3279 -0
- woxi-0.1.0/src/functions/math_ast/integrals.rs +1164 -0
- woxi-0.1.0/src/functions/math_ast/jacobi.rs +1324 -0
- woxi-0.1.0/src/functions/math_ast/mathieu.rs +139 -0
- woxi-0.1.0/src/functions/math_ast/misc_special.rs +3693 -0
- woxi-0.1.0/src/functions/math_ast/mod.rs +94 -0
- woxi-0.1.0/src/functions/math_ast/number_theory.rs +9857 -0
- woxi-0.1.0/src/functions/math_ast/numeric_utils.rs +1430 -0
- woxi-0.1.0/src/functions/math_ast/numerical.rs +7433 -0
- woxi-0.1.0/src/functions/math_ast/orthogonal_polynomials.rs +4461 -0
- woxi-0.1.0/src/functions/math_ast/polylog.rs +559 -0
- woxi-0.1.0/src/functions/math_ast/random.rs +1901 -0
- woxi-0.1.0/src/functions/math_ast/statistics.rs +10167 -0
- woxi-0.1.0/src/functions/math_ast/triangles.rs +531 -0
- woxi-0.1.0/src/functions/math_ast/trigonometric.rs +6335 -0
- woxi-0.1.0/src/functions/math_ast/weierstrass.rs +411 -0
- woxi-0.1.0/src/functions/math_ast/zeta_functions.rs +2241 -0
- woxi-0.1.0/src/functions/memory.rs +371 -0
- woxi-0.1.0/src/functions/mod.rs +104 -0
- woxi-0.1.0/src/functions/molecule_ast.rs +1047 -0
- woxi-0.1.0/src/functions/molecule_render.rs +670 -0
- woxi-0.1.0/src/functions/music_ast.rs +2910 -0
- woxi-0.1.0/src/functions/music_font.rs +224 -0
- woxi-0.1.0/src/functions/music_midi.rs +350 -0
- woxi-0.1.0/src/functions/music_render.rs +1565 -0
- woxi-0.1.0/src/functions/number_line_plot.rs +718 -0
- woxi-0.1.0/src/functions/ode_ast.rs +3512 -0
- woxi-0.1.0/src/functions/parametric_plot.rs +425 -0
- woxi-0.1.0/src/functions/periodic_table_plot.rs +539 -0
- woxi-0.1.0/src/functions/plot.rs +6449 -0
- woxi-0.1.0/src/functions/plot3d.rs +5541 -0
- woxi-0.1.0/src/functions/plot_epilog.rs +495 -0
- woxi-0.1.0/src/functions/polyhedron_data.rs +383 -0
- woxi-0.1.0/src/functions/polynomial_ast/apart.rs +1734 -0
- woxi-0.1.0/src/functions/polynomial_ast/cancel.rs +924 -0
- woxi-0.1.0/src/functions/polynomial_ast/coefficient.rs +1479 -0
- woxi-0.1.0/src/functions/polynomial_ast/collect.rs +790 -0
- woxi-0.1.0/src/functions/polynomial_ast/cyclotomic.rs +177 -0
- woxi-0.1.0/src/functions/polynomial_ast/decompose.rs +556 -0
- woxi-0.1.0/src/functions/polynomial_ast/discriminant.rs +133 -0
- woxi-0.1.0/src/functions/polynomial_ast/eliminate.rs +861 -0
- woxi-0.1.0/src/functions/polynomial_ast/expand.rs +1886 -0
- woxi-0.1.0/src/functions/polynomial_ast/exponent.rs +696 -0
- woxi-0.1.0/src/functions/polynomial_ast/factor.rs +4605 -0
- woxi-0.1.0/src/functions/polynomial_ast/function_expand.rs +464 -0
- woxi-0.1.0/src/functions/polynomial_ast/gf_factor.rs +606 -0
- woxi-0.1.0/src/functions/polynomial_ast/helpers.rs +221 -0
- woxi-0.1.0/src/functions/polynomial_ast/horner.rs +235 -0
- woxi-0.1.0/src/functions/polynomial_ast/interpolating_polynomial.rs +144 -0
- woxi-0.1.0/src/functions/polynomial_ast/minimal_polynomial.rs +2138 -0
- woxi-0.1.0/src/functions/polynomial_ast/mod.rs +64 -0
- woxi-0.1.0/src/functions/polynomial_ast/polynomial_division.rs +455 -0
- woxi-0.1.0/src/functions/polynomial_ast/polynomial_extended_gcd.rs +184 -0
- woxi-0.1.0/src/functions/polynomial_ast/polynomial_gcd.rs +607 -0
- woxi-0.1.0/src/functions/polynomial_ast/polynomial_mod.rs +155 -0
- woxi-0.1.0/src/functions/polynomial_ast/polynomial_q.rs +240 -0
- woxi-0.1.0/src/functions/polynomial_ast/reduce.rs +3141 -0
- woxi-0.1.0/src/functions/polynomial_ast/resultant.rs +1190 -0
- woxi-0.1.0/src/functions/polynomial_ast/simplify.rs +9392 -0
- woxi-0.1.0/src/functions/polynomial_ast/solve.rs +10004 -0
- woxi-0.1.0/src/functions/polynomial_ast/symmetric_reduction.rs +309 -0
- woxi-0.1.0/src/functions/polynomial_ast/to_radicals.rs +603 -0
- woxi-0.1.0/src/functions/polynomial_ast/together.rs +2313 -0
- woxi-0.1.0/src/functions/polynomial_ast/zassenhaus.rs +435 -0
- woxi-0.1.0/src/functions/predicate_ast.rs +3197 -0
- woxi-0.1.0/src/functions/quantity_ast.rs +2981 -0
- woxi-0.1.0/src/functions/query_ast.rs +116 -0
- woxi-0.1.0/src/functions/region.rs +286 -0
- woxi-0.1.0/src/functions/resolve_ast.rs +725 -0
- woxi-0.1.0/src/functions/root_ast.rs +1582 -0
- woxi-0.1.0/src/functions/rsolve_ast.rs +1590 -0
- woxi-0.1.0/src/functions/scoping.rs +17 -0
- woxi-0.1.0/src/functions/sound.rs +352 -0
- woxi-0.1.0/src/functions/string_ast.rs +12510 -0
- woxi-0.1.0/src/functions/sum_convergence_ast.rs +337 -0
- woxi-0.1.0/src/functions/tabular_ast.rs +417 -0
- woxi-0.1.0/src/functions/ternary_list_plot.rs +320 -0
- woxi-0.1.0/src/functions/timeline_plot.rs +489 -0
- woxi-0.1.0/src/functions/timeseries_ast.rs +754 -0
- woxi-0.1.0/src/functions/transliterate_ast.rs +598 -0
- woxi-0.1.0/src/functions/tree_form.rs +653 -0
- woxi-0.1.0/src/functions/trig_factor_ast.rs +384 -0
- woxi-0.1.0/src/functions/turing_machine_ast.rs +286 -0
- woxi-0.1.0/src/functions/txt_ast.rs +130 -0
- woxi-0.1.0/src/functions/voronoi.rs +989 -0
- woxi-0.1.0/src/functions/wavelet_ast/continuous.rs +843 -0
- woxi-0.1.0/src/functions/wavelet_ast/data.rs +1750 -0
- woxi-0.1.0/src/functions/wavelet_ast/filters.rs +666 -0
- woxi-0.1.0/src/functions/wavelet_ast/mod.rs +386 -0
- woxi-0.1.0/src/functions/wavelet_ast/phipsi.rs +329 -0
- woxi-0.1.0/src/functions/wavelet_ast/plots.rs +397 -0
- woxi-0.1.0/src/functions/wavelet_ast/tables.rs +549 -0
- woxi-0.1.0/src/functions/wavelet_ast/transforms.rs +959 -0
- woxi-0.1.0/src/functions/wikidata_ast.rs +768 -0
- woxi-0.1.0/src/functions/wl_serialize.rs +248 -0
- woxi-0.1.0/src/functions/wxf_ast.rs +652 -0
- woxi-0.1.0/src/functions/xlsx_ast.rs +292 -0
- woxi-0.1.0/src/functions/ztransform_ast.rs +1475 -0
- woxi-0.1.0/src/jupyter.rs +378 -0
- woxi-0.1.0/src/lib.rs +4919 -0
- woxi-0.1.0/src/main.rs +316 -0
- woxi-0.1.0/src/notebook.rs +2109 -0
- woxi-0.1.0/src/repl.rs +265 -0
- woxi-0.1.0/src/syntax.rs +13944 -0
- woxi-0.1.0/src/utils.rs +33 -0
- woxi-0.1.0/src/wasm.rs +629 -0
- woxi-0.1.0/src/wolfram.pest +748 -0
- woxi-0.1.0/tests/SUMMARY.md +1562 -0
- woxi-0.1.0/tests/cli_tests.rs +311 -0
- woxi-0.1.0/tests/interpreter_tests.rs +1392 -0
- woxi-0.1.0/tests/miscellaneous_tests.rs +8 -0
- woxi-0.1.0/tests/script_snapshot_tests.rs +1562 -0
- woxi-0.1.0/woxi-py/.gitignore +6 -0
- woxi-0.1.0/woxi-py/Cargo.toml +29 -0
- woxi-0.1.0/woxi-py/LICENSE +661 -0
- woxi-0.1.0/woxi-py/readme.md +81 -0
- woxi-0.1.0/woxi-py/src/lib.rs +212 -0
- woxi-0.1.0/woxi-py/tests/test_woxi.py +138 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
[profile.default]
|
|
2
|
+
# Fail any individual test that takes longer than 20 seconds.
|
|
3
|
+
slow-timeout = { period = "20s", terminate-after = 1 }
|
|
4
|
+
|
|
5
|
+
# NOTE: nextest applies the FIRST matching override for a given setting.
|
|
6
|
+
# The most specific overrides must therefore come BEFORE the broad
|
|
7
|
+
# `/^script_/` rule below, or they will be shadowed by it.
|
|
8
|
+
|
|
9
|
+
# `D[x^x, {x, 10}]` is intentionally a heavy regression test for the Plus
|
|
10
|
+
# comparator panic — order 10 matches the originally panicking input. It
|
|
11
|
+
# takes ~10s standalone in debug builds and can brush against the default
|
|
12
|
+
# 20s timeout under full parallel load. Give it a wider window.
|
|
13
|
+
[[profile.default.overrides]]
|
|
14
|
+
filter = 'test(high_order_derivative_of_x_x_does_not_panic)'
|
|
15
|
+
slow-timeout = { period = "60s", terminate-after = 1 }
|
|
16
|
+
|
|
17
|
+
# `fourier_matrix_boundary_materializes` materializes a large matrix and is
|
|
18
|
+
# allocation-heavy: ~10s solo, but it exceeds the 20s default timeout under the
|
|
19
|
+
# parallel contention of a full CI run (the job otherwise fails here). Give it
|
|
20
|
+
# a wider window.
|
|
21
|
+
[[profile.default.overrides]]
|
|
22
|
+
filter = 'test(fourier_matrix_boundary_materializes)'
|
|
23
|
+
slow-timeout = { period = "90s", terminate-after = 1 }
|
|
24
|
+
|
|
25
|
+
# The remaining (non-`#[ignore]`d) RosettaCode script snapshots run a few
|
|
26
|
+
# seconds in debug builds; under full parallel load they can brush past the
|
|
27
|
+
# default 20s timeout. Give them a safety ceiling. The genuinely heavy
|
|
28
|
+
# scripts (tens of seconds each in debug) are marked `#[ignore]` via the
|
|
29
|
+
# `slow_script_test!` macro and run only via `make test-slow` under the
|
|
30
|
+
# `slow` profile below — they never run during `make test`.
|
|
31
|
+
[[profile.default.overrides]]
|
|
32
|
+
filter = 'test(/^script_/)'
|
|
33
|
+
slow-timeout = { period = "120s", terminate-after = 1 }
|
|
34
|
+
|
|
35
|
+
# Profile for `make test-slow` (`cargo nextest run --features slow-tests
|
|
36
|
+
# --profile slow --run-ignored only`). The heavy `#[ignore]`d scripts run with heavy
|
|
37
|
+
# mutual CPU contention and are ~270s+ standalone in debug builds, so give
|
|
38
|
+
# every test a very wide window.
|
|
39
|
+
#
|
|
40
|
+
# NOTE: a custom profile inherits `[[profile.default.overrides]]`, and the
|
|
41
|
+
# active profile's own overrides are evaluated *before* the inherited ones.
|
|
42
|
+
# Without the explicit `script_` override below, the default profile's
|
|
43
|
+
# 120s `/^script_/` rule would shadow this profile's 900s base and the
|
|
44
|
+
# heavy scripts would (wrongly) time out at 120s.
|
|
45
|
+
[profile.slow]
|
|
46
|
+
slow-timeout = { period = "900s", terminate-after = 1 }
|
|
47
|
+
|
|
48
|
+
# `script_egyptian_fractions` is allocation-throughput-bound (~330s standalone
|
|
49
|
+
# in debug). Run concurrently with the other ~23 heavy scripts, the shared
|
|
50
|
+
# allocator / memory-bandwidth contention on a CI runner pushes it past the
|
|
51
|
+
# 900s ceiling and the job fails. Reserve all test threads so it runs in
|
|
52
|
+
# isolation — its wall time then stays close to standalone — and give it a wide
|
|
53
|
+
# timeout for the slower-than-local CI hardware. This override must precede the
|
|
54
|
+
# broad `/^script_/` rule below, since nextest applies the FIRST matching
|
|
55
|
+
# override for a given setting.
|
|
56
|
+
[[profile.slow.overrides]]
|
|
57
|
+
filter = 'test(script_egyptian_fractions)'
|
|
58
|
+
threads-required = 'num-cpus'
|
|
59
|
+
slow-timeout = { period = "1800s", terminate-after = 1 }
|
|
60
|
+
|
|
61
|
+
[[profile.slow.overrides]]
|
|
62
|
+
filter = 'test(/^script_/)'
|
|
63
|
+
slow-timeout = { period = "900s", terminate-after = 1 }
|
woxi-0.1.0/.dockerignore
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Keep the build context small and reproducible. Anything not needed
|
|
2
|
+
# to compile + test the Rust code is excluded.
|
|
3
|
+
|
|
4
|
+
.git
|
|
5
|
+
.direnv
|
|
6
|
+
.env
|
|
7
|
+
.DS_Store
|
|
8
|
+
target
|
|
9
|
+
node_modules
|
|
10
|
+
tests/book
|
|
11
|
+
tests/jupyterlite
|
|
12
|
+
tests/playground/pkg
|
|
13
|
+
tests/_*
|
|
14
|
+
tests/scripts/_*
|
|
15
|
+
|
|
16
|
+
# Generated artefacts and scratch files
|
|
17
|
+
factorials
|
|
18
|
+
mathics
|
|
19
|
+
examples
|
|
20
|
+
*-checkpoint.ipynb
|
|
21
|
+
.jupyterlite.doit.db
|
|
22
|
+
sample.txt
|
|
23
|
+
|
|
24
|
+
# Editor / IDE state
|
|
25
|
+
.idea
|
|
26
|
+
.vscode
|
|
27
|
+
|
|
28
|
+
# Don't ship the Dockerfile itself into the build context
|
|
29
|
+
Dockerfile
|
|
30
|
+
.dockerignore
|
woxi-0.1.0/.envrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
use flake
|
woxi-0.1.0/.gitignore
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
.DS_Store
|
|
2
|
+
/.claude
|
|
3
|
+
/*-checkpoint.ipynb
|
|
4
|
+
/.direnv
|
|
5
|
+
/.env
|
|
6
|
+
/.jupyterlite.doit.db
|
|
7
|
+
/examples
|
|
8
|
+
/mathics
|
|
9
|
+
/node_modules
|
|
10
|
+
/target
|
|
11
|
+
/tests/_*
|
|
12
|
+
/tests/book
|
|
13
|
+
/tests/jupyterlite
|
|
14
|
+
/tests/playground/pkg
|
|
15
|
+
/tests/playground/vendor
|
|
16
|
+
/tests/scripts/_*
|
|
17
|
+
/todos.md
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: local
|
|
3
|
+
hooks:
|
|
4
|
+
- id: clippy-fix
|
|
5
|
+
name: Clippy Fix
|
|
6
|
+
language: unsupported
|
|
7
|
+
entry: cargo clippy --fix --allow-dirty
|
|
8
|
+
pass_filenames: false
|
|
9
|
+
|
|
10
|
+
- id: cargo-fmt
|
|
11
|
+
name: Cargo Format
|
|
12
|
+
language: unsupported
|
|
13
|
+
entry: cargo fmt
|
|
14
|
+
pass_filenames: false
|
woxi-0.1.0/AGENTS.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
## Scope
|
|
2
|
+
|
|
3
|
+
This repo contains several related sub-projects:
|
|
4
|
+
|
|
5
|
+
- Woxi
|
|
6
|
+
- Interpreter for a subset of the Wolfram Language
|
|
7
|
+
- Is a computer algebra system (CAS) and therefore all computations must be solved symbolically
|
|
8
|
+
- Woxi Playground
|
|
9
|
+
- A simple playground to try out Woxi in the browser (tests/playground)
|
|
10
|
+
- Woxi JupyterLite
|
|
11
|
+
- JupyterLite instance with an integrated Woxi kernel (tests/jupyterlite)
|
|
12
|
+
- Woxi Studio
|
|
13
|
+
- A native notebook editor for Wolfram Language `.nb` files, built with `iced` (woxi-studio)
|
|
14
|
+
- Woxi for Python
|
|
15
|
+
- PyO3/maturin-based Python package wrapping the interpreter,
|
|
16
|
+
published to PyPI as `woxi` (woxi-py)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## Environment
|
|
20
|
+
|
|
21
|
+
Nix Flake is used to manage system dependencies.
|
|
22
|
+
Therefore, some tools in the path are the GNU versions.
|
|
23
|
+
E.g. GNU sed, GNU make, GNU coreutils, and GNU bash.
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## Development
|
|
27
|
+
|
|
28
|
+
There is 3 levels of tests:
|
|
29
|
+
|
|
30
|
+
1. Unit tests in ./tests/*.rs files.
|
|
31
|
+
They are the fastest to execute and
|
|
32
|
+
there should be a unit test for every feature / language construct here.
|
|
33
|
+
2. Snapshots tests in ./tests/scripts/*.wls files
|
|
34
|
+
They ensure the code also works in files and
|
|
35
|
+
has exactly the same output when run with `wolframscript`.
|
|
36
|
+
3. Documentation tests in ./tests/cli/*.md files.
|
|
37
|
+
Serves as documentation and also ensures `woxi` and `wolframscript`
|
|
38
|
+
have the same output for shorter and more diverse code snippets.
|
|
39
|
+
Those tests should be less comprehensive than the unit tests and
|
|
40
|
+
focus on illustrative examples.
|
|
41
|
+
|
|
42
|
+
**Follow those rules:**
|
|
43
|
+
|
|
44
|
+
- Whenever you change something, add unit tests for it.
|
|
45
|
+
- When fixing a bug, always add a regression test so the bug wont't occur again.
|
|
46
|
+
- Always run `make test` after any changes to rule out any regressions.
|
|
47
|
+
- Never implement features or tests only for special cases like e.g. one specific number.
|
|
48
|
+
Make sure to implement it for all possible cases!
|
|
49
|
+
- Use `wolframscript -code 'Plus[1, 2]'` to verify the output of Wolfram Language code.
|
|
50
|
+
The output of Woxi must 100% match the output of wolframscript.
|
|
51
|
+
- Do not write code to temporary files. Simply use `cargo run -- eval '<code>'`.
|
|
52
|
+
- If you stumble upon a pre-existing issue, do not try to ignore it or work around it,
|
|
53
|
+
but rather fix it right away.
|
|
54
|
+
- After implementing a new function, make sure to update functions.csv
|
|
55
|
+
including a description and an effect_level.
|
|
56
|
+
- To see the graphical output of expressions wrap them with:
|
|
57
|
+
`ExportString[<expression>, "SVG"]`
|
woxi-0.1.0/CLAUDE.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
## Scope
|
|
2
|
+
|
|
3
|
+
This repo contains several related sub-projects:
|
|
4
|
+
|
|
5
|
+
- Woxi
|
|
6
|
+
- Interpreter for a subset of the Wolfram Language
|
|
7
|
+
- Is a computer algebra system (CAS) and therefore all computations must be solved symbolically
|
|
8
|
+
- Woxi Playground
|
|
9
|
+
- A simple playground to try out Woxi in the browser (tests/playground)
|
|
10
|
+
- Woxi JupyterLite
|
|
11
|
+
- JupyterLite instance with an integrated Woxi kernel (tests/jupyterlite)
|
|
12
|
+
- Woxi Studio
|
|
13
|
+
- A native notebook editor for Wolfram Language `.nb` files, built with `iced` (woxi-studio)
|
|
14
|
+
- Woxi for Python
|
|
15
|
+
- PyO3/maturin-based Python package wrapping the interpreter,
|
|
16
|
+
published to PyPI as `woxi` (woxi-py)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## Environment
|
|
20
|
+
|
|
21
|
+
Nix Flake is used to manage system dependencies.
|
|
22
|
+
Therefore, some tools in the path are the GNU versions.
|
|
23
|
+
E.g. GNU sed, GNU make, GNU coreutils, and GNU bash.
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## Development
|
|
27
|
+
|
|
28
|
+
There is 3 levels of tests:
|
|
29
|
+
|
|
30
|
+
1. Unit tests in ./tests/*.rs files.
|
|
31
|
+
They are the fastest to execute and
|
|
32
|
+
there should be a unit test for every feature / language construct here.
|
|
33
|
+
2. Snapshots tests in ./tests/scripts/*.wls files
|
|
34
|
+
They ensure the code also works in files and
|
|
35
|
+
has exactly the same output when run with `wolframscript`.
|
|
36
|
+
3. Documentation tests in ./tests/cli/*.md files.
|
|
37
|
+
Serves as documentation and also ensures `woxi` and `wolframscript`
|
|
38
|
+
have the same output for shorter and more diverse code snippets.
|
|
39
|
+
Those tests should be less comprehensive than the unit tests and
|
|
40
|
+
focus on illustrative examples.
|
|
41
|
+
|
|
42
|
+
**Follow those rules:**
|
|
43
|
+
|
|
44
|
+
- Whenever you change something, add unit tests for it.
|
|
45
|
+
- When fixing a bug, always add a regression test so the bug wont't occur again.
|
|
46
|
+
- Always run `make test` after any changes to rule out any regressions.
|
|
47
|
+
- Never implement features or tests only for special cases like e.g. one specific number.
|
|
48
|
+
Make sure to implement it for all possible cases!
|
|
49
|
+
- Use `wolframscript -code 'Plus[1, 2]'` to verify the output of Wolfram Language code.
|
|
50
|
+
The output of Woxi must 100% match the output of wolframscript.
|
|
51
|
+
- Do not write code to temporary files. Simply use `cargo run -- eval '<code>'`.
|
|
52
|
+
- If you stumble upon a pre-existing issue, do not try to ignore it or work around it,
|
|
53
|
+
but rather fix it right away.
|
|
54
|
+
- After implementing a new function, make sure to update functions.csv
|
|
55
|
+
including a description and an effect_level.
|
|
56
|
+
- To see the graphical output of expressions wrap them with:
|
|
57
|
+
`ExportString[<expression>, "SVG"]`
|