type: commit

message:
fix: format string errors no longer embed the entire format string

Problem:

Format strings can be very large (e.g. when they are the 'data' element of an embedded file).
The FormatStringError that we report currently embeds the entire format string into the error
message. That's unnecessary since our validation errors are already pointing the user directly
at the template element that is producing the error.

Solution:

This removes the format string data from the error message.

Signed-off-by: Daniel Neilson <53624638+ddneilson@users.noreply.github.com>

reason: unsigned

login: ddneilson

type: User

user_view_type: public

status: modified

patch:
@@ -8,7 +8,7 @@ sync = "pip install -r requirements-testing.txt"
 test = "pytest --cov-config pyproject.toml {args:test}"
 typing = "mypy {args:src test}"
 style = [
-  "ruff {args:src test}",
+  "ruff check {args:src test}",
   "black --check --diff {args:src test}",
 ]
 fmt = [

patch:
@@ -26,8 +26,7 @@ def __init__(self, *, string: str, start: int, end: int, expr: str = "", details
         expression = f"Expression: {expr}. " if expr else ""
         reason = f"Reason: {details}." if details else ""
         msg = (
-            f"Failed to parse interpolation expression in {string} "
-            f"at [{start}, {end}]. "
+            f"Failed to parse interpolation expression at [{start}, {end}]. "
             f"{expression}"
             f"{reason}"
         )


event: committed


type: pr

state: closed

title: fix: format string errors no longer embed the entire format string

body:
### What was the problem/requirement? (What/Why)

Format strings can be very large (e.g. when they are the 'data' element of an embedded file). The FormatStringError that we report currently embeds the entire format string into the error message. That's unnecessary since our validation errors are already pointing the user directly at the template element that is producing the error.

### What was the solution? (How)

This removes the format string data from the error message.

### What is the impact of this change?

Easier to read/understand format string error messages.

### How was this change tested?

Just running the unit tests.

### Was this change documented?

N/A

### Is this a breaking change?

No, the contents of an error string is not a contract.

----

*By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.*

openjd-model-for-python

full_name: ddneilson/openjd-model-for-python

description: Provides a Python implementation of the data model for Open Job Description's template schemas.

pull_request_creation_policy: all

visibility: public

default_branch: mainline

ref: mainline

login: OpenJobDescription

type: Organization

author_association: CONTRIBUTOR

mergeable_state: unknown


Developers

slug: developers

privacy: closed

type: organization

permission: push


type: comment

login: sonarqubecloud[bot]

type: Bot

body:
## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=OpenJobDescription_openjd-model-for-python&pullRequest=135) **Quality Gate passed**
Issues
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=OpenJobDescription_openjd-model-for-python&pullRequest=135&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=OpenJobDescription_openjd-model-for-python&pullRequest=135&issueStatuses=ACCEPTED)

Measures
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=OpenJobDescription_openjd-model-for-python&pullRequest=135&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=OpenJobDescription_openjd-model-for-python&pullRequest=135&metric=new_coverage&view=list)
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=OpenJobDescription_openjd-model-for-python&pullRequest=135&metric=new_duplicated_lines_density&view=list)

[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=OpenJobDescription_openjd-model-for-python&pullRequest=135)

SonarQubeCloud

slug: sonarqubecloud

login: SonarSource

description:
SonarQube Cloud (formerly SonarCloud) is a SaaS code analysis tool designed to detect coding issues in 30+ languages, frameworks, and IaC platforms. Your code is checked against an extensive set of rules that cover many attributes of code, such as maintainability, reliability, and security issues, on each merge/pull request.

For those requiring US-based hosting, [SonarQube Cloud US](https://sonarqube.us/) offers the perfect alternative. If you need data residency outside the US or within the EU, [SonarQube Cloud](https://sonarcloud.io/) with this GitHub app is the ideal solution.

SonarQube Cloud integrates seamlessly into your GitHub workflow and provides clear guidance for resolving any code quality and security issues detected. The majority of popular languages can be analyzed automatically; no configuration is required!

With [SonarQube Cloud](https://sonarcloud.io/github), you get:

-   Fast, precise static analysis and feedback on your code

-   Support for popular languages, frameworks, and IaC tools

-   Free analysis for open-source projects and private projects up to max 50k LoC

-   Automatic analysis of pull requests and branches with results reported inline

-   IDE Support with [SonarQube for IDE](https://www.sonarsource.com/products/sonarlint/) integration

-   Quality Gate (added as a GitHub check) acting at two different levels - first, preventing you from merging pull requests that contain issues - and later, helping you to release only clean, safe code

-   Sign up for SonarQube free tier and begin scanning your private and public repositories

A [GitHub Action](https://github.com/marketplace/actions/sonarcloud-scan) is available in the marketplace to make it easy for you (for projects where automatic analysis isn't available). SonarQube Cloud also integrates smoothly with Jenkins, CircleCI, TravisCI, CirrusCI, and many other tools.

A free tier is available that allows you to explore the benefits of SonarQube Cloud using your public and private repositories. We also provide a no-commitment, [14-day trial](https://www.sonarsource.com/products/sonarcloud/signup/) of SonarQube Cloud Team for unlimited team members, up to 1.9M LoC, AI CodeFix recommendations, and more. No need to speak with a sales rep or request a license key - get automatic code analysis results on your private projects in minutes! Want to see more examples of SonarCloud in action? You can [explore current Open Source projects in SonarCloud](https://sonarcloud.io/explore/projects?sort=-analysis_date) that are using the [Clean as You Code](https://www.sonarsource.com/solutions/our-unique-approach/) methodology.

What are you waiting for? SonarQube Cloud helps you consistently deliver cleaner, secure software that future developers will appreciate and your users will love. Start writing Clean Code. [Now](https://www.sonarsource.com/products/sonarcloud/signup/)!

checks: write

contents: read

emails: read

members: read

metadata: read

organization_copilot_seat_management: read

pull_requests: write

security_events: write

statuses: write


contents: read

event: commented