Convert regular exceptions into ExpressionError

オープン
#97 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

@Rajeshwari2857 がすでに取り組んでいます。

2026年10月22日 から。

  • #142 @Rajeshwari2857 による — オープン

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
38/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
停滞
技術スタック
python
領域
api, backend

調査の方向性

license_expression/init.py の Licensing.validate と、traceback に示されている parse 呼び出しから始めます。'(Apache-2.0) AND ()' 式を再現し、その後、検証によって不正な形式の式がパーサーの IndexError を露出させるのではなく、result.errors を通じて報告されることを確認します。

索引モデルが issue の本文から書いたものです。

説明

I currently try to run validation of SPDX expression from arbitrary inputs. If something is wrong with the expression, I would have expected it to always populate the errors attribute instead of raising exceptions. Apparently, this is not the case in every situation.

Let's consider the following snippet:

from license_expression import get_spdx_licensing

licensing = get_spdx_licensing()
expression = '(Apache-2.0) AND ()'
result = licensing.validate(expression)
print(result.errors)

This fails with an IndexError during validation:

[...]
  File "/home/user/lib/python3.9/site-packages/license_expression/__init__.py", line 778, in validate
    parsed_expression = self.parse(expression, strict=strict)
  File "/home/user/lib/python3.9/site-packages/license_expression/__init__.py", line 545, in parse
    expression = super(Licensing, self).parse(tokens)
  File "/home/user/lib/python3.9/site-packages/boolean/boolean.py", line 316, in parse
    ast[0].append(ast[2])
IndexError: list index out of range
主要言語
Python
スター
74
フォーク
38
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

aboutcode-org/license-expression のほかの issue

aboutcode-org/license-expression の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。