pasteurlabs/tesseract-core - Open Source PR Review Scorecard

Universal components for differentiable scientific computing. :package:

C-Rank Grade: A (Welcoming) - 66/100

External PR Merge Rate: 53%

Response Time: -

First Timer Success: 100%

Frequently Asked Questions

Is pasteurlabs/tesseract-core welcoming to first-time open-source contributors?

pasteurlabs/tesseract-core has a recorded first-timer success rate of 100.0%. Repositories ranked A typically provide actionable feedback during code reviews and actively nurture new community contributors.

How fast can I expect code review feedback on my pull request?

Maintainers in pasteurlabs/tesseract-core respond to incoming external pull requests in approximately 0.0 hours on average. Keeping PRs focused on single tasks and ensuring tests pass helps maintainers review faster.

What does the 65.8 C-Rank™ score (A Tier) represent?

The C-Rank™ system evaluates GitHub projects on a 0–100 scale using real data: PR merge rates, review turnaround time, active maintainer presence, and first-time contributor success. A score of 65.8 places pasteurlabs/tesseract-core in the A tier.

What is the external contributor pull request merge rate for pasteurlabs/tesseract-core?

The external contributor pull request merge rate for pasteurlabs/tesseract-core is 52.8%, based on public PR activity from non-core contributors.

Are there Good First Issues available in pasteurlabs/tesseract-core?

pasteurlabs/tesseract-core currently has 2 active issue(s) tagged with beginner-friendly labels like "good first issue", "beginner", or "up-for-grabs".

pasteurlabs
pasteurlabs/tesseract-coreA•Welcoming122
GitHub
Back to Explorer
pasteurlabs

pasteurlabs/tesseract-core

122
Active (30d)A•Welcoming(66/100)Python

Universal components for differentiable scientific computing. :package:

GitHub
Compare••
Jump to:

AI Maintainer Review Guidelines

Review Persona

Active Open-Source Maintainer

Warmth Score
7.8/10
Patience Score
8.2/10
Nitpick Rate
20%

Active maintainer team in pasteurlabs/tesseract-core welcoming community pull requests and bug fixes.

Top PR Submission Do's

  • •Ensure code complies with repository style conventions
  • •Keep PRs focused and well-documented

Top PR Friction Pitfalls (Don'ts)

  • •Do not submit unlinked PRs without context
  • •Do not break existing automated test suites
Response Velocity
-
No reviewer activity recorded

Average Response Latency

Tracks hours until a maintainer leaves a review, comment, or PR response.

Merge Efficiency
52.8%
Moderate PR acceptance rate

External Acceptance Rate

Percentage of community pull requests successfully merged into main.

First-Timer Success
100.0%
Strong first-timer PR acceptance rate

First PR Conversion

Rate at which developers submitting their first repository PR succeed.

Active Maintainers
14 core
Highly collaborative maintainer core
Diagnostic Health HUD
52.8%
Merge Gauge
100.0%
1st-Timer
Community Vibe51/100

Embed C-Rank Badge

Show contributors that your repository actively reviews and merges external pull requests.

GetMerged C-Rank badge for pasteurlabs/tesseract-core
[![GetMerged C-Rank](https://getmerged.abhishekco.de/api/badge/pasteurlabs/tesseract-core)](https://getmerged.abhishekco.de/pasteurlabs/tesseract-core?utm_source=github&utm_medium=badge)

Active Good First Issues (5)

View on GitHub

Summary Add helpers to tesseract_core.runtime.jax_recipes that convert endpoint inputs to JAX arrays, without a copy where one isn't needed: as_jax_array(x) converts a single array. as_jax_arrays(tree) converts every array leaf in a pytree, such as inputs.model_dump(), and leaves other leaves alone. Use as_jax_arrays inside the jax_* helpers on inputs, tangent_vector and cotangent_vector. Give the PyTorch template's to_tensor the same GPU branch. Why is this needed? With gpu_transport="cuda_ipc", GPU inputs reach endpoints as IpcDeviceArray. Neither recipe converts them to its framework's array type. The obvious jnp.from_dlpack(x) / torch.from_dlpack(x) fails for host inputs, because the runtime decodes those to read-only NumPy arrays and DLPack refuses to export them. So every Tesseract has to branch on where each input lives. Usage example from tesseract_core.runtime.cuda.ipc import is_gpu_array def as_jax_array(x) -> jax.Array: if isinstance(x, jax.Array): return x

📅 Opened Sep 28, 2026💬 0 comments
Quality: 50/100Contribute

Description A pydantic default on an array-typed input (for example Differentiable[Array[(), Float32]] = Field(default=2.0)) is not compatible with abstract_eval when the Tesseract uses the JAX recipe (jax_abstract_eval). In the abstract-eval schema the field is typed as ShapeDType, but an omitted input keeps its default, which is a plain float. jax_abstract_eval then calls abstract_inputs.model_dump(), and pydantic emits a PydanticSerializationUnexpectedValue warning for that field. With warnings as errors (for instance a test suite that sets filterwarnings = error), the warning becomes a hard failure of the abstract_eval endpoint. apply with the same default works. Expected: omitting an input that has a default works in abstract_eval as it does in apply, with no warning. Either the default would be converted to an abstract value (shape () and the declared dtype), or schema generation would reject non-array defaults on array-typed fields up front. Workaround: declare the input as Arra

📅 Opened Sep 24, 2026💬 0 comments
Quality: 60/100Contribute

Description The runtime's compression option (--compression lz4 / TESSERACT_RUNTIME_COMPRESSION=lz4) is applied by tesseract-runtime apply, but ignored by tesseract-runtime serve: arrays in HTTP responses always come back uncompressed. The CLI path passes compression=config.compression to output_to_bytes (cli.py#L631), but create_response does not (serve.py#L102-L108), so served endpoints fall back to the default compression=None. The SDK client already decodes lz4 buffers, so the gap is on the server side only. Expected: served endpoints encode arrays with the configured compression, as the CLI does. Steps to reproduce tesseract_api.py: import numpy as np from pydantic import BaseModel from tesseract_core.runtime import Array, Float64 class InputSchema(BaseModel): n: int class OutputSchema(BaseModel): x: Array[(None,), Float64] def apply(inputs: InputSchema) -> OutputSchema: return OutputSchema(x=np.zeros(inputs.n)) $ export TESSERACT_API_PATH=$PWD/tesseract_api.py

📅 Opened Sep 24, 2026💬 2 comments
Quality: 75/100Contribute

Description The SDK client encodes input arrays through two separate, mutually exclusive paths, chosen wholesale by output_format: binref path (tesseract_core/sdk/tesseract.py:1094-1123): when output_format == "json+binref" and an input path is set, inputs are tree-mapped through encode_array_binref / encode_array_binref_pooled (tesseract_core/sdk/binref.py), writing .bin files to the mounted input dir. _encode_payload -> _encode_array path (tesseract_core/sdk/tesseract.py:1129): every other case; handles base64 / raw and the GPU device transports (cuda_ipc, cuda_vmm). Its encoding Literal is ["base64", "raw", "cuda_ipc", "cuda_vmm"] — note binref is absent, because binref never flows through here. Consequences: The two can't compose. A request is either all-binref or all-(base64/GPU), because the branch is selected by output_format, not per-array. You can't send large host inputs as binref while exporting GPU inputs by reference in the same call. binref-as-input is coupled to jso

📅 Opened Sep 18, 2026💬 2 comments
Quality: 50/100Contribute

Summary There is no supported, client-facing way to ask a Tesseract / client which device transports (gpu_transport values, e.g. cuda_ipc) it can use. Consumers that drive the GPU-direct path have to reach into private state — checking hasattr(client, "_gpu_transport") to tell an HTTPClient (transport-capable) apart from a LocalClient (not), and hardcoding the set of valid transport names. Expose a public accessor (e.g. a supported_device_transports property on the client/Tesseract, or a small helper) that reports which transports a given client supports. Why is this needed? The sibling wrappers (pasteurlabs/tesseract-torch#42, pasteurlabs/tesseract-jax#239) added an opt-in device-transport path (cuda_ipc) that keeps CUDA tensors on-device across the Tesseract boundary. To do that safely, each wrapper independently has to answer two questions that only tesseract-core can authoritatively answer: Can this client use a device transport at all? — today resolved by duck-typing hasattr(

📅 Opened Sep 16, 2026💬 0 comments
Quality: 50/100Contribute
Looking for more Python beginner tasks?Explore Python GFI

Contributor Community Vibe Feedback

Rate what actually matters after opening a pull request here.

Have you contributed to this repo?

Rate your first-hand PR experience (review speed, maintainer responsiveness, and onboarding ease) to help other contributors.

3 ratings required
Maintainer helpfulness
Review speed
Beginner friendliness

Contributor Compatibility & Review Speed Analysis for pasteurlabs/tesseract-core

When evaluating whether to contribute to pasteurlabs/tesseract-core, response velocity and maintainer engagement are crucial. GetMerged continuously tracks pull request trajectories, first-comment latency, and code review rounds to help developers avoid submitting pull requests to backlogged repositories.

Currently, maintainers of pasteurlabs/tesseract-core acknowledge new external contributions in approximately -. Out of all submitted pull requests from non-core authors in the last 180-day window, 52.8% were successfully merged into the primary branch.

Frequently Asked Questions - Contributing to pasteurlabs/tesseract-core

01

Is pasteurlabs/tesseract-core welcoming to first-time open-source contributors?

pasteurlabs/tesseract-core has a recorded first-timer success rate of 100.0%. Repositories ranked Welcoming typically provide actionable feedback during code reviews and actively nurture new community contributors.

02

How fast can I expect code review feedback on my pull request?

The initial maintainer response time averages ~-. Keeping PRs scoped to single concerns and ensuring CI checks succeed will optimize review turnaround.

03

What does the 65.8 C-Rank™ score represent?

The C-Rank™ index scores repositories on a 0 to 100 scale using an objective formula: external PR merge rates, initial response speed, active maintainer count, and first-time contributor retention. A score of 65.8 places pasteurlabs/tesseract-core in the Welcoming tier.

04

What is the external contributor pull request merge rate for pasteurlabs/tesseract-core?

The external pull request merge rate is 52.8%. GetMerged isolates non-core community contributions so external developers get an accurate benchmark of PR acceptance probability.

05

Are there beginner Good First Issues open in pasteurlabs/tesseract-core?

Yes, pasteurlabs/tesseract-core currently has 2 active issue(s) tagged with beginner-friendly labels. You can inspect these directly from the repository issues tab.

GetMerged C-Rank™ Indexing Standard

All metrics displayed for pasteurlabs/tesseract-core are automatically retrieved via the public GitHub API and recalculated daily. Insider pull requests submitted by repository owners or organization members are excluded from merge rate calculations to preserve objective external contributor statistics.