pyproc 0.3__tar.gz → 0.3.1__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.
- {pyproc-0.3 → pyproc-0.3.1}/PKG-INFO +2 -2
- {pyproc-0.3 → pyproc-0.3.1}/README.md +1 -1
- {pyproc-0.3 → pyproc-0.3.1}/pyproc/__init__.py +1 -1
- {pyproc-0.3 → pyproc-0.3.1}/pyproc/lpse.py +6 -3
- {pyproc-0.3 → pyproc-0.3.1}/pyproject.toml +1 -1
- {pyproc-0.3 → pyproc-0.3.1}/tests/test_lpse_unit.py +14 -0
- {pyproc-0.3 → pyproc-0.3.1}/.github/workflows/pyproc-pypi.yml +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/.github/workflows/test.yml +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/.gitignore +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/CHANGELOG.md +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/LICENSE +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/Makefile +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/docs/assets/README_ASSET_PROMPTS.md +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/docs/assets/logo.png +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/docs/assets/pyproc-mcp-banner.png +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/plan/API_AND_CLI_WRAPPER_OPTIMIZATION_PLAN.md +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/plan/PYPROC_MCP_REBRAND_AND_IMPLEMENTATION_PLAN.md +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/pyproc/cache.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/pyproc/cli.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/pyproc/exceptions.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/pyproc/mcp/__init__.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/pyproc/mcp/errors.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/pyproc/mcp/hosts.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/pyproc/mcp/prompts.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/pyproc/mcp/resources.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/pyproc/mcp/schemas.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/pyproc/mcp/search_index.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/pyproc/mcp/server.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/pyproc/mcp/tools.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/pyproc/text.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/pyproc/utils.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/.gitignore +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/__init__.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/README.md +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/darurat_pemenang.html +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/darurat_pengumuman.html +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/dt_darurat_list.json +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/dt_lelang.json +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/dt_lelang_data_only.json +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/dt_nonspk.json +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/dt_swakelola.json +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/error_page.html +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/hasil_evaluasi.html +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/jadwal.html +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/lelang_page.html +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/nonspk_pemenang_berkontrak.html +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/nonspk_pemenang_bug_10941898000.html +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/nonspk_pengumuman.html +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/not_found_page.html +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/pemenang.html +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/pengumuman_lelang.html +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/peserta.html +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/swakelola_pelaksana.html +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/fixtures/swakelola_pengumuman.html +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/supporting_files/list-host-with-filename.txt +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/supporting_files/list-host.txt +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/test_cache.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/test_cli_unit.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/test_downloader.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/test_lpse.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/test_mcp_hosts.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/test_mcp_schemas.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/test_mcp_search_index.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/test_mcp_tools.py +0 -0
- {pyproc-0.3 → pyproc-0.3.1}/tests/test_utils_unit.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyproc
|
|
3
|
-
Version: 0.3
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: MCP tools for real-time Indonesian public procurement data from SPSE/Inaproc
|
|
5
5
|
Project-URL: Homepage, https://github.com/wakataw/pyproc
|
|
6
6
|
Project-URL: Issues, https://github.com/wakataw/pyproc/issues
|
|
@@ -46,7 +46,7 @@ Description-Content-Type: text/markdown
|
|
|
46
46
|
</p>
|
|
47
47
|
|
|
48
48
|
<p align="center">
|
|
49
|
-
<a href="https://pypi.org/project/pyproc/"><img src="https://img.shields.io/badge/version-v0.3-blue" alt="PyPI version"></a>
|
|
49
|
+
<a href="https://pypi.org/project/pyproc/"><img src="https://img.shields.io/badge/version-v0.3.1-blue" alt="PyPI version"></a>
|
|
50
50
|
<a href="https://pypi.org/project/pyproc/"><img src="https://img.shields.io/badge/python-≥3.9-yellow" alt="Python ≥3.9"></a>
|
|
51
51
|
<a href="https://github.com/wakataw/pyproc/actions/workflows/test.yml?query=branch%3Amaster"><img src="https://github.com/wakataw/pyproc/actions/workflows/test.yml/badge.svg?branch=master" alt="Test Status"></a>
|
|
52
52
|
<a href="https://github.com/wakataw/pyproc/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="License: MIT"></a>
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
13
|
<p align="center">
|
|
14
|
-
<a href="https://pypi.org/project/pyproc/"><img src="https://img.shields.io/badge/version-v0.3-blue" alt="PyPI version"></a>
|
|
14
|
+
<a href="https://pypi.org/project/pyproc/"><img src="https://img.shields.io/badge/version-v0.3.1-blue" alt="PyPI version"></a>
|
|
15
15
|
<a href="https://pypi.org/project/pyproc/"><img src="https://img.shields.io/badge/python-≥3.9-yellow" alt="Python ≥3.9"></a>
|
|
16
16
|
<a href="https://github.com/wakataw/pyproc/actions/workflows/test.yml?query=branch%3Amaster"><img src="https://github.com/wakataw/pyproc/actions/workflows/test.yml/badge.svg?branch=master" alt="Test Status"></a>
|
|
17
17
|
<a href="https://github.com/wakataw/pyproc/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="License: MIT"></a>
|
|
@@ -254,7 +254,8 @@ class Lpse(object):
|
|
|
254
254
|
)
|
|
255
255
|
|
|
256
256
|
def get_paket_non_tender(self, start=0, length=0, data_only=False, kategori=None, search_keyword=None,
|
|
257
|
-
order=By.KODE, tahun=None, ascending=False, instansi_id=None
|
|
257
|
+
order=By.KODE, tahun=None, ascending=False, instansi_id=None,
|
|
258
|
+
rekanan=None, nama_penyedia=None):
|
|
258
259
|
"""
|
|
259
260
|
Wrapper pencarian paket non tender
|
|
260
261
|
:param start: index data awal
|
|
@@ -262,14 +263,16 @@ class Lpse(object):
|
|
|
262
263
|
:param data_only: hanya menampilkan data tanpa menampilkan informasi lain
|
|
263
264
|
:param kategori: kategori pengadaan (lihat di pypro.kategori)
|
|
264
265
|
:param search_keyword: keyword pencarian paket pengadaan
|
|
265
|
-
:param nama_penyedia: filter berdasarkan nama penyedia
|
|
266
266
|
:param order: Mengurutkan data berdasarkan kolom
|
|
267
267
|
:param tahun: Tahun pengadaan
|
|
268
268
|
:param ascending: Ascending, descending jika diset False
|
|
269
269
|
:param instansi_id: Filter pencarian berdasarkan instansi atau satker tertentu
|
|
270
|
+
:param rekanan: filter berdasarkan nama penyedia/rekanan
|
|
271
|
+
:param nama_penyedia: alias lama untuk rekanan
|
|
270
272
|
:return: dictionary dari hasil pencarian paket (atau list jika data_only=True)
|
|
271
273
|
"""
|
|
272
|
-
|
|
274
|
+
rekanan = rekanan or nama_penyedia
|
|
275
|
+
return self.get_paket('pl', start, length, data_only, kategori, search_keyword, rekanan, order, tahun,
|
|
273
276
|
ascending, instansi_id)
|
|
274
277
|
|
|
275
278
|
def get_paket_pencatatan_non_tender(self, start=0, length=0, data_only=False, kategori=None,
|
|
@@ -250,6 +250,20 @@ class TestGetPaket(unittest.TestCase):
|
|
|
250
250
|
'pl', 0, 5, False, None, None, None, By.KODE, None, False, None
|
|
251
251
|
)
|
|
252
252
|
|
|
253
|
+
def test_get_paket_non_tender_accepts_rekanan(self):
|
|
254
|
+
self.lpse.get_paket = MagicMock(return_value={'data': []})
|
|
255
|
+
self.lpse.get_paket_non_tender(start=0, length=5, rekanan='PT A')
|
|
256
|
+
self.lpse.get_paket.assert_called_once_with(
|
|
257
|
+
'pl', 0, 5, False, None, None, 'PT A', By.KODE, None, False, None
|
|
258
|
+
)
|
|
259
|
+
|
|
260
|
+
def test_get_paket_non_tender_accepts_legacy_nama_penyedia_alias(self):
|
|
261
|
+
self.lpse.get_paket = MagicMock(return_value={'data': []})
|
|
262
|
+
self.lpse.get_paket_non_tender(start=0, length=5, nama_penyedia='PT Legacy')
|
|
263
|
+
self.lpse.get_paket.assert_called_once_with(
|
|
264
|
+
'pl', 0, 5, False, None, None, 'PT Legacy', By.KODE, None, False, None
|
|
265
|
+
)
|
|
266
|
+
|
|
253
267
|
def test_get_paket_pencatatan_non_tender_calls_get_paket(self):
|
|
254
268
|
self.lpse.get_paket = MagicMock(return_value={'data': []})
|
|
255
269
|
self.lpse.get_paket_pencatatan_non_tender(start=0, length=5, rekanan='PT A')
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|