pyproc 0.1.12__tar.gz → 0.2__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.
@@ -0,0 +1,60 @@
1
+ # This workflow will install Python dependencies, run tests and lint with a single version of Python
2
+ # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
3
+
4
+ name: PyProc Build and Release
5
+
6
+ on:
7
+ push:
8
+ tags:
9
+ - v*
10
+
11
+ jobs:
12
+ release-build:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - name: Set up Python
18
+ uses: actions/setup-python@v5
19
+ with:
20
+ python-version: '3.x'
21
+
22
+ - name: Display Python Version
23
+ run: python -c "import sys; print(sys.version)"
24
+
25
+ - name: Clean build directory
26
+ run: rm -rf ./dists ./pyproc.egg-info ./tests/*.csv ./tests/*.idx ./*csv ./*idx
27
+
28
+ - name: Build Package
29
+ run: |
30
+ python -m pip install build
31
+ python -m build
32
+
33
+ - name: Upload distributions
34
+ uses: actions/upload-artifact@v4
35
+ with:
36
+ name: release-dists
37
+ path: dist/
38
+
39
+ pypi-publish:
40
+ runs-on: ubuntu-latest
41
+ needs:
42
+ - release-build
43
+ permissions:
44
+ id-token: write
45
+
46
+ environment:
47
+ name: pypi
48
+
49
+ steps:
50
+ - name: Retrieve release distributions
51
+ uses: actions/download-artifact@v4
52
+ with:
53
+ name: release-dists
54
+ path: dist/
55
+
56
+ - name: Publish release distributions to PyPI
57
+ uses: pypa/gh-action-pypi-publish@release/v1
58
+ with:
59
+ package-dir: dist/
60
+
pyproc-0.2/.gitignore ADDED
@@ -0,0 +1,57 @@
1
+ .DS_Store
2
+ .idea
3
+ venv
4
+ # Byte-compiled / optimized / DLL files
5
+ __pycache__/
6
+ *.py[cod]
7
+ *$py.class
8
+
9
+ # C extensions
10
+ *.so
11
+
12
+ # Distribution / packaging
13
+ .Python
14
+ build/
15
+ develop-eggs/
16
+ dist/
17
+ downloads/
18
+ eggs/
19
+ .eggs/
20
+ lib/
21
+ lib64/
22
+ parts/
23
+ sdist/
24
+ var/
25
+ wheels/
26
+ pip-wheel-metadata/
27
+ share/python-wheels/
28
+ *.egg-info/
29
+ .installed.cfg
30
+ *.egg
31
+ MANIFEST
32
+
33
+ # PyInstaller
34
+ # Usually these files are written by a python script from a template
35
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
36
+ *.manifest
37
+ *.spec
38
+
39
+ # Installer logs
40
+ pip-log.txt
41
+ pip-delete-this-directory.txt
42
+
43
+ # Unit test / coverage reports
44
+ htmlcov/
45
+ .tox/
46
+ .nox/
47
+ .coverage
48
+ .coverage.*
49
+ .cache
50
+ nosetests.xml
51
+ coverage.xml
52
+ *.cover
53
+ .hypothesis/
54
+ .pytest_cache/
55
+ *.csv
56
+ *.idx
57
+ statistic.txt
@@ -0,0 +1,78 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## 0.1.7
8
+
9
+ ### Fix
10
+ - [downloader] fix error saat menggabungkan file detil jika pemenang tidak ditemukan
11
+ - [downloader] ketika retry download , detil downloader akan menggunakan cache dari proses sebelumnya
12
+ - [downloader] pemilihan pemenang berdasarkan hirarki pemenang berkontrak > pemenang terverifikasi > pemenang
13
+ - [downloader] fix filter tahun anggaran, jika tidak ada data tahun anggaran maka filter akan berdasarkan data tanggal pembuatan
14
+ - [package] Fix NPWP - Nama Peserta splitter pada hasil evaluasi
15
+ - [package] menghilangkan fungsi pengecekan url rewrite dengan hardcoded path `/eproc4` pada host SPSE
16
+ - [package] bypass parsing auth token jika versi SPSE < 20191009
17
+
18
+ ### Add
19
+ - [downloader] jika proses download index gagal di tengah jalan, aplikasi akan melanjutkan berdasarkan posisi batch terakhir
20
+ - [downloader] menambahkan jenis paket pengadaan pada header informasi
21
+ - [downloader] menambahkan argument `--skip-spse-check`
22
+ - [package] menambahkan parameter `skip_spse_checking` untuk menghindari proses parsing info LPSE yang gagal jika aplikasi menggunakan custom homepage
23
+
24
+ ## Change
25
+ - update test case
26
+
27
+ ## 0.1.6
28
+
29
+ ### Change
30
+ - Mengganti tipe data menjadi boolean untuk kolom pemenang dan pemenang berkontrak pada hasil evaluasi
31
+ - Set default index download delay menjadi 1 detik
32
+ - Set pemenang tender dari hasil evaluasi
33
+ - Mengganti separator tahun anggaran (range) dari '-' (koma) menjadi '-' (dash)
34
+ - update test case
35
+ - minor update
36
+
37
+ ## 0.1.5
38
+
39
+ ### Add
40
+ - menambahkan parameter `--index-download-delay` pada downloader CLI karena beberapa situs LPSE membatasi jumlah request
41
+
42
+ ### Fix
43
+ - fix `LpseDetil.get_pemenang` error karena menggunakan kolom hasil negosiasi sebagai parameter pengurutan
44
+
45
+ ## 0.1.4
46
+
47
+ ### Fix
48
+ - Fix lpse pool error pada downloader karena belum implementasi authenticity token
49
+
50
+ ## 0.1.3
51
+
52
+ ### Fix
53
+ - Fix download index paket error karena penambahan parameter pada API SPSE
54
+
55
+ ### Add
56
+ - Menambahkan method `Lpse.get_auth_token` untuk mendapatkan `auth_token` yang digunakan pada saat mendapatkan data index paket
57
+
58
+ ## 0.1.2
59
+
60
+ ### Fix
61
+ - Fix downloader error karena perubahan api pada 0.1.1
62
+
63
+ ## 0.1.1
64
+
65
+ ### Fix
66
+ - Fix pemenang double pada package dan downloader dengan memilih nilai penawaran paling rendah
67
+
68
+ ## 0.1
69
+ Release versi stable pertama
70
+
71
+ ### Fitur
72
+
73
+ - Dukungan Penuh untuk API SPSE Versi 4
74
+ - Mendapatkan Daftar Paket Tender dan Non Tender
75
+ - Mendapatkan Detil Paket (Pengumuman, Peserta, Hasil Evaluasi, Pemenang, Pemenang Berkontrak, Jadwal Penetapan Pemenang, Jadwal Penandatangan Kontrak)
76
+ - Filter pencarian paket tender/non tender berdasarkan kategori pengadaan.
77
+ - Mengurutkan Pencarian paket berdasarkan id paket, nama instansi, tahap paket, dan HPS
78
+ - CLI Downloader
pyproc-0.2/Makefile ADDED
@@ -0,0 +1,39 @@
1
+ .PHONY: test test-verbose test-lpse test-downloader install clean build
2
+
3
+ PYTHON ?= python3
4
+ VENV = .venv
5
+ VENV_PYTHON = $(VENV)/bin/python
6
+ VENV_PIP = $(VENV)/bin/pip
7
+
8
+ # Create venv and install dependencies
9
+ install: $(VENV)/bin/activate
10
+
11
+ $(VENV)/bin/activate: pyproject.toml
12
+ $(PYTHON) -m venv --without-pip $(VENV)
13
+ curl -sS https://bootstrap.pypa.io/get-pip.py | $(VENV_PYTHON)
14
+ $(VENV_PIP) install pytest
15
+ $(VENV_PIP) install -e .
16
+ touch $(VENV)/bin/activate
17
+
18
+ # Run tests
19
+ test: install
20
+ $(VENV_PYTHON) -m pytest
21
+
22
+ # Run tests with verbose output
23
+ test-verbose: install
24
+ $(VENV_PYTHON) -m pytest -v
25
+
26
+ # Run tests for a specific file
27
+ test-lpse: install
28
+ $(VENV_PYTHON) -m pytest tests/test_lpse.py
29
+
30
+ test-downloader: install
31
+ $(VENV_PYTHON) -m pytest tests/test_downloader.py
32
+
33
+ # Clean build artifacts and test outputs (keeps .venv)
34
+ clean:
35
+ rm -rf ./dists ./pyproc.egg-info ./tests/*.csv ./tests/*.idx ./*csv ./*idx ./build ./*.egg-info ./.pytest_cache __pycache__ ./**/__pycache__
36
+
37
+ # Build the package
38
+ build: install
39
+ $(VENV_PYTHON) -m build
pyproc-0.2/PKG-INFO ADDED
@@ -0,0 +1,210 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyproc
3
+ Version: 0.2
4
+ Summary: Python Inaproc SPSE SDK
5
+ Project-URL: Homepage, https://github.com/wakataw/pyproc
6
+ Project-URL: Issues, https://github.com/wakataw/pyproc/issues
7
+ Author-email: Agung Pratama <workwithagung@gmail.com>
8
+ License-Expression: MIT
9
+ License-File: LICENSE
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Natural Language :: English
14
+ Classifier: Natural Language :: Indonesian
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3.7
17
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries
18
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
19
+ Classifier: Topic :: Utilities
20
+ Requires-Python: >=3.9
21
+ Requires-Dist: backoff
22
+ Requires-Dist: beautifulsoup4
23
+ Requires-Dist: html5lib
24
+ Requires-Dist: requests
25
+ Description-Content-Type: text/markdown
26
+
27
+ # PyProc
28
+
29
+ ![Build Status](https://github.com/wakataw/pyproc/actions/workflows/pyproc-pypi.yml/badge.svg) [![Version](https://img.shields.io/badge/version-v0.2a-red)](https://pypi.org/project/pyproc/) [![Python >=3.9](https://img.shields.io/badge/python->=3.9-yellow.svg)](https://www.python.org/downloads/) [![Open Source Love](https://badges.frapsoft.com/os/v1/open-source.svg?v=102)](https://github.com/wakataw/pyproc)
30
+
31
+ PyProc (Python Procurement) merupakan wrapper untuk API SPSE yang ditulis dalam bahasa Python. Sistem Pengadaan Secara Elektronik (SPSE) SPSE merupakan aplikasi e-Procurement yang dikembangkan oleh LKPP untuk digunakan oleh LPSE di instansi pemerintah seluruh Indonesia.
32
+
33
+ > DISCLAIMER:
34
+ >
35
+ > Penulis tidak terafiliasi dengan pengembang SPSE atau pemilik aplikasi SPSE. Software ini dikembangkan dengan tujuan akademis, bentuk pengawasan oleh masyarakat, dan membantu pengusaha untuk mempermudah otomasi perolehan informasi pengadaan dari pemerintah.
36
+ >
37
+ > Penggunaan yang tidak wajar dan mengganggu sebagian atau seluruh fungsi aplikasi SPSE pada satuan kerja menjadi tanggung jawab masing-masing pengguna.
38
+ >
39
+ > PyProc ada karena SPSE ada, jadi gunakanlah dengan bijak dan secukupnya.
40
+
41
+ ## Pemasangan
42
+
43
+ Pemasangan PyProc via `pip`:
44
+ ```bash
45
+ $ pip install pyproc
46
+ ```
47
+
48
+ Upgrade PyProc via `pip`:
49
+ ```bash
50
+ $ pip install pyproc --upgrade
51
+ ```
52
+
53
+ Instalasi versi unstable:
54
+ ```bash
55
+ $ pip install git+https://github.com/wakataw/pyproc.git
56
+ ```
57
+
58
+ ## Penggunaan Command Line Interface
59
+
60
+ ### Download Data LPSE
61
+ Format Command
62
+ ```bash
63
+ $ pyproc [ARGUMENT] DAFTAR_LPSE
64
+ ```
65
+ **Arguments**
66
+
67
+ | argumen | contoh | diperlukan | default | keterangan |
68
+ |-----------------------------|---------------------------------------------|------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
69
+ | `DAFTAR_LPSE` | `pyproc pu` | Ya | - | Daftar alamat LPSE yang akan diunduh. <br>[Format Daftar LPSE](#format-daftar-lpse-lanjutan) |
70
+ | `-h --help` | `pyproc --help` | optional | - | menampilkan keterangan dan bantuan |
71
+ | `-k --keyword` | `pyproc --keyword "mobil dinas" ...` | optional | - | filter pencarian index paket berdasarkan kata kunci tertentu |
72
+ | `-t --tahun-anggaran` | `pyproc --tahun-anggaran 2021 ...` | optional | Tahun Berjalan | Filter pencarian index paket berdasarkan tahun anggaran tertentu. Fungsi ini hanya berlaku mulai dari SPSE 4.4. <br><br>Format Penulisan: <br>**ALL**: mengunduh seluruh data <br>**2021**: mengunduh data untuk tahun 2021 <br>**2015,2018,2019**: mengunduh data untuk tahun 2015, 2018, dan 2019<br>**2011-2020** mengunduh data untuk tahun 2011 s.d. 2020 |
73
+ | `--kategori` | `pyproc --kategori PENGADAAN_BARANG ...` | optional | - | Filter pencarian berdasarkan kategori pengadaan. <br>Daftar kategori: `PENGADAAN_BARANG`, `JASA_KONSULTANSI_BADAN_USAHA_NON_KONSTRUKSI`, `PEKERJAAN_KONSTRUKSI`, `JASA_LAINNYA`, `JASA_KONSULTANSI_PERORANGAN`, `JASA_KONSULTANSI_BADAN_USAHA_KONSTRUKSI` |
74
+ | `--nama-penyedia` | `pyproc --nama-penyedia "PT SUKA MAJU" ...` | optional | - | Filter pencarian index paket berdasarkan nama penyedia |
75
+ | `-c --chunk-size` | `pyproc --chunk-size 25 ...` | optional | 25 | Jumlah daftar paket per halaman yang diunduh. Semakin besar jumlah tidak menjamin proses download semakin cepat. Gunakanlah jumlah data yang wajar sehingga tidak membebani server SPSE. |
76
+ | `-w --workers` | `pyproc --workers 4 ...` | optional | 8 | Jumlah koneksi yang berjalan secara bersamaan saat mengunduh detil paket dengan maksimal 10 worker. |
77
+ | `-x --timeout` | `pyproc --timeout 60 ...` | optional | 30 | Waktu tunggu jika koneksi lambat (dalam detik) |
78
+ | `-n --non-tender` | `pyproc --non-tender ...` | optional | FALSE | Tambahkan argumen ini untuk mengunduh data non-tender/pengadaan langsung |
79
+ | `-d --index-download-delay` | `pyproc --index-download-delay 5 ...` | optional | 1 | Waktu jeda download index paket untuk setiap halaman/batch |
80
+ | `-o --output` | `pyproc --ouput csv ...` | optional | csv | Jenis data keluaran/hasil dari download. Format yang didukung csv dan json. Karena keterbatasan format, tidak semua data ditampilkan pada format csv. Jika memerlukan data detil yang komprehensif, gunakan format json karena mencangkup semua data detail. |
81
+ | `--keep-index` | `pyproc --keep-index ...` | optinal | FALSE | pyproc akan membentuk file idx (sqlite3 database) saat proses download dan akan dihapus ketika proses selesai. Tambahkan argumen ini jika tidak ingin menghapus database tersebut. |
82
+ | `-r --resume` | `pyproc --resume ...` | optinal | FALSE | Tambahkan argument ini untuk melanjutkan proses yang gagal (karena internet putus atau gangguan koneksi lainnya). Namun pastikan bahwa seluruh index sudah berhasil diunduh karena argumen --resume akan melewati proses download index. |
83
+ | `-s --sep` | `pyproc --sep ";" kemenkeu` | optional | `;` titik koma | Set custom separator untuk output format csv |
84
+ | `--log` | `pyproc --log INFO ...` | optional | INFO | Argumen untuk setting informasi yang ditampilkan pyproc pada terminal. Daftar nilai yang didukung: <br>`DEBUG`: menampilkan informasi sedetil mungkin<br>`INFO`: menampilkan informasi penting saja <br>`WARNING`: hanya menampilkan informasi yang bersifat warning <br>`ERROR`: hanya menampilkan error <br>`CRITICAL`: hanya menampilkan permasalahan yang bersifat kritis saja |
85
+
86
+ ### Format Daftar LPSE (lanjutan)
87
+ PyProc dapat mengunduh data dari 1 atau lebih LPSE. Proses tersebut akan berjalan sesuai dengan nilai `DAFTAR_LPSE` yang diberikan user. Beberapa format yang didukung oleh PyProc adalah sebagai berikut:
88
+ - Download data dengan menyertakan nama file hasil download
89
+
90
+ Untuk set nama file secara manual, gunakan format `"alamatlpse[titik_koma]namafile"`.
91
+
92
+ ```bash
93
+ $ pyproc "kemenkeu;namafileouputkemenkeu" --output json
94
+ ```
95
+
96
+ perintah ini akan mengunduh data LPSE PU dan mengekspor data ke file `namafileouputkemenkeu.json`
97
+
98
+ - Download data lebih dari 1 LPSE
99
+
100
+ Untuk mengunduh lebih dari 1 lpse secara bersamaan, gunakan format `"alamat1[koma]alamat2[koma]alamat3"`
101
+
102
+ ```bash
103
+ $ pyproc jakarta,pu,kemenkeu,sumbarprov
104
+ ```
105
+
106
+ atau dengan menyertakan namafile dengan format `"alamat1[titikkoma]nama1[koma]alamat2[titikkoma]nama2"`
107
+
108
+ ```bash
109
+ $ pyproc "jakarta;filejakarta,pu:filepu,kemenkeu:filekemenkeu,sumbarprov:filesumbarprov"
110
+ ```
111
+
112
+ - Download data berdasrakan daftar lpse pada file csv
113
+ Download paket LPSE dengan sumber alamat dari file
114
+ ```bash
115
+ $ pyproc daftarlpse.csv
116
+
117
+ # konten daftarlpse.csv
118
+ sumbarprov
119
+ pu
120
+ kemenkeu
121
+
122
+ # konten daftarlpse.csv dengan nama hasil download
123
+ sumbarprov;lpse-sumbar
124
+ pu;lpse-pu.csv
125
+ kemenkeu;lpse-kemenkeu
126
+ ```
127
+
128
+ ## Penggunaan PyProc Sebagai Package
129
+
130
+ Untuk dapat menggunakan PyProc, anda harus mengimpornya terlebih dahulu dan menginisiasi objek `Lpse`
131
+
132
+ ```python
133
+ from pyproc import Lpse
134
+
135
+ # Inisiasi objek lpse kementerian pu
136
+ lpse = Lpse('kemenkeu')
137
+ ```
138
+
139
+ ### Pencarian Daftar Paket Lelang
140
+
141
+ ```python
142
+ from pyproc import Lpse
143
+
144
+ # Inisiasi objek lpse kementerian pu
145
+ lpse = Lpse('pu')
146
+
147
+ # mendapatkan daftar paket lelang
148
+ daftar_lelang = lpse.get_paket_tender(start=0, length=2)
149
+ print(daftar_lelang)
150
+
151
+ # pencarian paket non tender (penunjukkan langsung)
152
+ daftar_pl = lpse.get_paket_non_tender(start=0, length=30)
153
+ ```
154
+
155
+ Pencarian Paket dengan mengurutkan berdasarkan kolom tertentu
156
+ ```python
157
+ from pyproc import Lpse
158
+ from pyproc.lpse import By
159
+
160
+ lpse = Lpse('sumbarprov')
161
+
162
+ # pencarian daftar lelang, urutkan berdasarkan Harga Perkiraan Sendiri
163
+ daftar_lelang = lpse.get_paket_tender(start=0, length=30, order=By.HPS)
164
+ ```
165
+
166
+ Filter pencarian paket berdasarkan kategori pengadaan
167
+ ```python
168
+ from pyproc import Lpse
169
+ from pyproc import JenisPengadaan
170
+
171
+ # Inisiasi objek lpse kementerian padang
172
+ lpse = Lpse('padang')
173
+
174
+ # Kategori Pengadaan Barang
175
+ paket_pengadaan_barang = lpse.get_paket_tender(start=0, length=30, kategori=JenisPengadaan.PENGADAAN_BARANG)
176
+ paket_konstruksi = lpse.get_paket_tender(start=0, length=30, kategori=JenisPengadaan.PEKERJAAN_KONSTRUKSI)
177
+
178
+ # dst untuk kategori lainnya
179
+ ```
180
+
181
+ ### Pencarian Detil Paket Lelang
182
+
183
+ ```python
184
+ from pyproc import Lpse
185
+
186
+ lpse = Lpse('jakarta')
187
+
188
+ # mendapatkan semua detil paket lelang
189
+ detil = lpse.detil_paket_tender(id_paket='48658064')
190
+ detil.get_all_detil()
191
+ print(detil)
192
+
193
+ # mendapatkan hanya pemenang lelang
194
+ pemenang = detil.get_pemenang()
195
+ print(pemenang)
196
+ ```
197
+
198
+ ## Uninstall
199
+
200
+ Untuk uninstall package jalankan perintah berikut:
201
+ ```bash
202
+ $ pip uninstall pyproc
203
+ ```
204
+
205
+ ## License
206
+ Paket ini di-release di bawah lisensi MIT.
207
+
208
+ ## Donatur ☕️
209
+ Orang-orang yang berjasa menyediakan kopi sehingga pengembangan paket tetap berjalan
210
+ - Angga Rinaldi Rizal (50 cangkir ☕️)
pyproc-0.2/README.md ADDED
@@ -0,0 +1,184 @@
1
+ # PyProc
2
+
3
+ ![Build Status](https://github.com/wakataw/pyproc/actions/workflows/pyproc-pypi.yml/badge.svg) [![Version](https://img.shields.io/badge/version-v0.2a-red)](https://pypi.org/project/pyproc/) [![Python >=3.9](https://img.shields.io/badge/python->=3.9-yellow.svg)](https://www.python.org/downloads/) [![Open Source Love](https://badges.frapsoft.com/os/v1/open-source.svg?v=102)](https://github.com/wakataw/pyproc)
4
+
5
+ PyProc (Python Procurement) merupakan wrapper untuk API SPSE yang ditulis dalam bahasa Python. Sistem Pengadaan Secara Elektronik (SPSE) SPSE merupakan aplikasi e-Procurement yang dikembangkan oleh LKPP untuk digunakan oleh LPSE di instansi pemerintah seluruh Indonesia.
6
+
7
+ > DISCLAIMER:
8
+ >
9
+ > Penulis tidak terafiliasi dengan pengembang SPSE atau pemilik aplikasi SPSE. Software ini dikembangkan dengan tujuan akademis, bentuk pengawasan oleh masyarakat, dan membantu pengusaha untuk mempermudah otomasi perolehan informasi pengadaan dari pemerintah.
10
+ >
11
+ > Penggunaan yang tidak wajar dan mengganggu sebagian atau seluruh fungsi aplikasi SPSE pada satuan kerja menjadi tanggung jawab masing-masing pengguna.
12
+ >
13
+ > PyProc ada karena SPSE ada, jadi gunakanlah dengan bijak dan secukupnya.
14
+
15
+ ## Pemasangan
16
+
17
+ Pemasangan PyProc via `pip`:
18
+ ```bash
19
+ $ pip install pyproc
20
+ ```
21
+
22
+ Upgrade PyProc via `pip`:
23
+ ```bash
24
+ $ pip install pyproc --upgrade
25
+ ```
26
+
27
+ Instalasi versi unstable:
28
+ ```bash
29
+ $ pip install git+https://github.com/wakataw/pyproc.git
30
+ ```
31
+
32
+ ## Penggunaan Command Line Interface
33
+
34
+ ### Download Data LPSE
35
+ Format Command
36
+ ```bash
37
+ $ pyproc [ARGUMENT] DAFTAR_LPSE
38
+ ```
39
+ **Arguments**
40
+
41
+ | argumen | contoh | diperlukan | default | keterangan |
42
+ |-----------------------------|---------------------------------------------|------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
43
+ | `DAFTAR_LPSE` | `pyproc pu` | Ya | - | Daftar alamat LPSE yang akan diunduh. <br>[Format Daftar LPSE](#format-daftar-lpse-lanjutan) |
44
+ | `-h --help` | `pyproc --help` | optional | - | menampilkan keterangan dan bantuan |
45
+ | `-k --keyword` | `pyproc --keyword "mobil dinas" ...` | optional | - | filter pencarian index paket berdasarkan kata kunci tertentu |
46
+ | `-t --tahun-anggaran` | `pyproc --tahun-anggaran 2021 ...` | optional | Tahun Berjalan | Filter pencarian index paket berdasarkan tahun anggaran tertentu. Fungsi ini hanya berlaku mulai dari SPSE 4.4. <br><br>Format Penulisan: <br>**ALL**: mengunduh seluruh data <br>**2021**: mengunduh data untuk tahun 2021 <br>**2015,2018,2019**: mengunduh data untuk tahun 2015, 2018, dan 2019<br>**2011-2020** mengunduh data untuk tahun 2011 s.d. 2020 |
47
+ | `--kategori` | `pyproc --kategori PENGADAAN_BARANG ...` | optional | - | Filter pencarian berdasarkan kategori pengadaan. <br>Daftar kategori: `PENGADAAN_BARANG`, `JASA_KONSULTANSI_BADAN_USAHA_NON_KONSTRUKSI`, `PEKERJAAN_KONSTRUKSI`, `JASA_LAINNYA`, `JASA_KONSULTANSI_PERORANGAN`, `JASA_KONSULTANSI_BADAN_USAHA_KONSTRUKSI` |
48
+ | `--nama-penyedia` | `pyproc --nama-penyedia "PT SUKA MAJU" ...` | optional | - | Filter pencarian index paket berdasarkan nama penyedia |
49
+ | `-c --chunk-size` | `pyproc --chunk-size 25 ...` | optional | 25 | Jumlah daftar paket per halaman yang diunduh. Semakin besar jumlah tidak menjamin proses download semakin cepat. Gunakanlah jumlah data yang wajar sehingga tidak membebani server SPSE. |
50
+ | `-w --workers` | `pyproc --workers 4 ...` | optional | 8 | Jumlah koneksi yang berjalan secara bersamaan saat mengunduh detil paket dengan maksimal 10 worker. |
51
+ | `-x --timeout` | `pyproc --timeout 60 ...` | optional | 30 | Waktu tunggu jika koneksi lambat (dalam detik) |
52
+ | `-n --non-tender` | `pyproc --non-tender ...` | optional | FALSE | Tambahkan argumen ini untuk mengunduh data non-tender/pengadaan langsung |
53
+ | `-d --index-download-delay` | `pyproc --index-download-delay 5 ...` | optional | 1 | Waktu jeda download index paket untuk setiap halaman/batch |
54
+ | `-o --output` | `pyproc --ouput csv ...` | optional | csv | Jenis data keluaran/hasil dari download. Format yang didukung csv dan json. Karena keterbatasan format, tidak semua data ditampilkan pada format csv. Jika memerlukan data detil yang komprehensif, gunakan format json karena mencangkup semua data detail. |
55
+ | `--keep-index` | `pyproc --keep-index ...` | optinal | FALSE | pyproc akan membentuk file idx (sqlite3 database) saat proses download dan akan dihapus ketika proses selesai. Tambahkan argumen ini jika tidak ingin menghapus database tersebut. |
56
+ | `-r --resume` | `pyproc --resume ...` | optinal | FALSE | Tambahkan argument ini untuk melanjutkan proses yang gagal (karena internet putus atau gangguan koneksi lainnya). Namun pastikan bahwa seluruh index sudah berhasil diunduh karena argumen --resume akan melewati proses download index. |
57
+ | `-s --sep` | `pyproc --sep ";" kemenkeu` | optional | `;` titik koma | Set custom separator untuk output format csv |
58
+ | `--log` | `pyproc --log INFO ...` | optional | INFO | Argumen untuk setting informasi yang ditampilkan pyproc pada terminal. Daftar nilai yang didukung: <br>`DEBUG`: menampilkan informasi sedetil mungkin<br>`INFO`: menampilkan informasi penting saja <br>`WARNING`: hanya menampilkan informasi yang bersifat warning <br>`ERROR`: hanya menampilkan error <br>`CRITICAL`: hanya menampilkan permasalahan yang bersifat kritis saja |
59
+
60
+ ### Format Daftar LPSE (lanjutan)
61
+ PyProc dapat mengunduh data dari 1 atau lebih LPSE. Proses tersebut akan berjalan sesuai dengan nilai `DAFTAR_LPSE` yang diberikan user. Beberapa format yang didukung oleh PyProc adalah sebagai berikut:
62
+ - Download data dengan menyertakan nama file hasil download
63
+
64
+ Untuk set nama file secara manual, gunakan format `"alamatlpse[titik_koma]namafile"`.
65
+
66
+ ```bash
67
+ $ pyproc "kemenkeu;namafileouputkemenkeu" --output json
68
+ ```
69
+
70
+ perintah ini akan mengunduh data LPSE PU dan mengekspor data ke file `namafileouputkemenkeu.json`
71
+
72
+ - Download data lebih dari 1 LPSE
73
+
74
+ Untuk mengunduh lebih dari 1 lpse secara bersamaan, gunakan format `"alamat1[koma]alamat2[koma]alamat3"`
75
+
76
+ ```bash
77
+ $ pyproc jakarta,pu,kemenkeu,sumbarprov
78
+ ```
79
+
80
+ atau dengan menyertakan namafile dengan format `"alamat1[titikkoma]nama1[koma]alamat2[titikkoma]nama2"`
81
+
82
+ ```bash
83
+ $ pyproc "jakarta;filejakarta,pu:filepu,kemenkeu:filekemenkeu,sumbarprov:filesumbarprov"
84
+ ```
85
+
86
+ - Download data berdasrakan daftar lpse pada file csv
87
+ Download paket LPSE dengan sumber alamat dari file
88
+ ```bash
89
+ $ pyproc daftarlpse.csv
90
+
91
+ # konten daftarlpse.csv
92
+ sumbarprov
93
+ pu
94
+ kemenkeu
95
+
96
+ # konten daftarlpse.csv dengan nama hasil download
97
+ sumbarprov;lpse-sumbar
98
+ pu;lpse-pu.csv
99
+ kemenkeu;lpse-kemenkeu
100
+ ```
101
+
102
+ ## Penggunaan PyProc Sebagai Package
103
+
104
+ Untuk dapat menggunakan PyProc, anda harus mengimpornya terlebih dahulu dan menginisiasi objek `Lpse`
105
+
106
+ ```python
107
+ from pyproc import Lpse
108
+
109
+ # Inisiasi objek lpse kementerian pu
110
+ lpse = Lpse('kemenkeu')
111
+ ```
112
+
113
+ ### Pencarian Daftar Paket Lelang
114
+
115
+ ```python
116
+ from pyproc import Lpse
117
+
118
+ # Inisiasi objek lpse kementerian pu
119
+ lpse = Lpse('pu')
120
+
121
+ # mendapatkan daftar paket lelang
122
+ daftar_lelang = lpse.get_paket_tender(start=0, length=2)
123
+ print(daftar_lelang)
124
+
125
+ # pencarian paket non tender (penunjukkan langsung)
126
+ daftar_pl = lpse.get_paket_non_tender(start=0, length=30)
127
+ ```
128
+
129
+ Pencarian Paket dengan mengurutkan berdasarkan kolom tertentu
130
+ ```python
131
+ from pyproc import Lpse
132
+ from pyproc.lpse import By
133
+
134
+ lpse = Lpse('sumbarprov')
135
+
136
+ # pencarian daftar lelang, urutkan berdasarkan Harga Perkiraan Sendiri
137
+ daftar_lelang = lpse.get_paket_tender(start=0, length=30, order=By.HPS)
138
+ ```
139
+
140
+ Filter pencarian paket berdasarkan kategori pengadaan
141
+ ```python
142
+ from pyproc import Lpse
143
+ from pyproc import JenisPengadaan
144
+
145
+ # Inisiasi objek lpse kementerian padang
146
+ lpse = Lpse('padang')
147
+
148
+ # Kategori Pengadaan Barang
149
+ paket_pengadaan_barang = lpse.get_paket_tender(start=0, length=30, kategori=JenisPengadaan.PENGADAAN_BARANG)
150
+ paket_konstruksi = lpse.get_paket_tender(start=0, length=30, kategori=JenisPengadaan.PEKERJAAN_KONSTRUKSI)
151
+
152
+ # dst untuk kategori lainnya
153
+ ```
154
+
155
+ ### Pencarian Detil Paket Lelang
156
+
157
+ ```python
158
+ from pyproc import Lpse
159
+
160
+ lpse = Lpse('jakarta')
161
+
162
+ # mendapatkan semua detil paket lelang
163
+ detil = lpse.detil_paket_tender(id_paket='48658064')
164
+ detil.get_all_detil()
165
+ print(detil)
166
+
167
+ # mendapatkan hanya pemenang lelang
168
+ pemenang = detil.get_pemenang()
169
+ print(pemenang)
170
+ ```
171
+
172
+ ## Uninstall
173
+
174
+ Untuk uninstall package jalankan perintah berikut:
175
+ ```bash
176
+ $ pip uninstall pyproc
177
+ ```
178
+
179
+ ## License
180
+ Paket ini di-release di bawah lisensi MIT.
181
+
182
+ ## Donatur ☕️
183
+ Orang-orang yang berjasa menyediakan kopi sehingga pengembangan paket tetap berjalan
184
+ - Angga Rinaldi Rizal (50 cangkir ☕️)
@@ -1,6 +1,6 @@
1
1
  from .lpse import Lpse, JenisPengadaan
2
2
 
3
- __version__ = '0.1.12'
3
+ __version__ = '0.2'
4
4
  __author__ = 'Agung Pratama'
5
5
  __all__ = [
6
6
  'Lpse',