Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Bugs found while adding type checking (#66), not yet fixed

Đang mở
#72 0 bình luận 1 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@ryan-kipawa đang làm issue này rồi.

Từ ngày 12/10/2026.

  • #76 của @ryan-kipawa — đang mở

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
35/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
data

Hướng nghiên cứu

This is a bundle of nine separate bugs, so pick one and work through it alone. Start with eumWrapper.eumGetNextEqvUnit in mikecore/eum.py, whose test is test_eumGetNextEqvUnit_first_unit in tests/test_eum.py. Run the test on the add-pyright branch, where the xfail marker is set. Done means the test passes with the marker removed and the other bugs are left unchanged.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

These bugs were found while adding type checking in #66 and left unfixed there, because fixing them changes behaviour that the types did not expose. Seven are pinned by strict xfail tests on that branch. Each test's reason gives the expected correct behaviour, and the test fails as an XPASS once the bug is fixed, so the marker must then be removed. Line links are to the add-pyright branch.

None of them is covered by an existing issue. #50 lists validation gaps (TODOs where the code raises or skips a check) and #47 the X/Y quantity in geographic projections; both are related but different.

Wrong result, no error

  • eumWrapper.eumGetNextEqvUnit reads the return code the wrong way round (eum.py:1846). The native call returns 1 when it finds a unit and 0 at the end of the list, but the wrapper treats rc != 0 as failure. So eumGetNextEqvUnit(eumUmeter, eumUUnitUndefined) returns (False, eumUUnitUndefined, "") although the native call found meter. This also affects master. Raised by @ecomodeller on #66. Tests: test_eumGetNextEqvUnit_first_unit and test_eumGetNextEqvUnit_after_last_unit (tests/test_eum.py).
  • DfsuBuilder.SetElementIds never stores the ids (DfsuBuilder.py:270). It checks their count and returns, so the file gets the default ids 1, 2, … with no warning. SetNodeIds stores its ids. Test: test_element_ids_are_written (tests/test_dfsu_builder.py).
  • MeshBuilder.SetNodes rounds z to float32 (MeshBuilder.py:57). A mesh built from double z values, such as one read with MeshFile.ReadMesh, is written with z rounded to about 7 digits. Mesh files store z as doubles, and x and y are kept as doubles. Test: test_MeshBuilder_keeps_z_precision (tests/test_mesh.py).
  • Dfs0ToAscii assumes the time axis is in seconds (Dfs0ToAscii.py:56). ReadItemTimeStepNext returns times in the time axis unit, so with a 10-minute step the second row is stamped 00:00:10 instead of 00:10:00. Its own TODO notes the unit is not always seconds. Correct: convert with the time axis's ToSeconds. Test: test_Dfs0ToAscii_writes_calendar_times_in_minutes (tests/test_miketools.py).
  • DfsFile.ReadStaticItem(0) returns the first static item (DfsFile.py:937). It doesn't check the item number or the return code of dfsFindItemStatic, so item 0 returns the first item, with ItemNumber 0. Static item numbers start at 1. Correct: raise ValueError below 1, as __DynamicItemInfoReadAndCreate does for dynamic items. Test: test_read_static_item_zero (tests/test_dfs_basic.py).
  • DfsFile.ReadItemTimeStepNext and ReadItemTimeStep ignore reshape (DfsFile.py:1003). They accept the argument but only Dfs123File reshapes, so reshape=True on a generic DfsFile silently returns flat data. Either reshape or drop the parameter. No test yet.

Fails later, or with no message

  • A reused DfsDynamicItemBuilder returns a blank item (DfsBuilder.py:684). GetDynamicItemInfo replaces ItemInfo with a blank DfsDynamicItemInfo but leaves the builder's "is set" flags True. A second call then passes Validate and returns an item with no name, quantity or value type, which fails only when added to a file. Its comment says it means to store a clone so the builder can be reused. Test: test_dynamic_item_builder_can_be_reused (tests/test_dfsbuilder.py).
  • DfsuBuilder can't create DfsuSpectral0D (DfsuBuilder.py:467). Validate accepts the type, but SetupBuilder has no branch for it and raises a bare Exception with no message. DfsuFile reads a Spectral0D file as data type 2001 with a 6-value MIKE_FM block [nodes, elements, 2, 0, frequencies, directions]. Correct: the builder writes that, or Validate rejects the type with a clear message. Test: test_spectral_0d_file_has_one_spectrum (tests/test_dfsu_builder.py).

Checks that never run

  • DfsBuilder.SetDeleteValue* never check the build stage (DfsBuilder.py:128). Five setters read self.__CheckBuildStage1 without calling it (lines 128, 137, 148, 157, 166), so they can be called at any stage. No test yet.
  • DfsBuilder.Validate checks the encode keys with the wrong index (DfsBuilder.py:283). The loop variable is j but the check reads xKey[i], yKey[i] and zKey[i] (i is the item index), so a compressed file is checked against one key per item instead of all keys. No test yet.

🤖 Generated with Claude Code

Ngôn ngữ chính
Python
Star
5
Fork
1
Merge trung bình
1 ngày 15 giờ
Pull request đã merge (30 ngày)
16

Chuẩn bị môi trường

  • Có Dockerfile hoặc tệp Docker Compose
  • Không có mẫu pull request
  • Không có hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của DHI/mikecore-python

Tất cả issue của DHI/mikecore-python

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.