# Buku "Python untuk GIS", Bab 28: Pola dan Improvisasi: Kerangka Siap Salin dan Cara Mengubahnya
# Cara mencari fungsi sendiri
import os
from qgis.core import QgsVectorLayer, QgsApplication

DATA = os.environ.get("PY_DATA", r"D:/Latihan")
petak = QgsVectorLayer(DATA + "/paket-b2/Petak_KPH.gpkg|layername=Petak", "Petak", "ogr")

# 1. Apa yang bisa dilakukan sebuah layer? Saring daftar namanya dengan kata kunci.
print([n for n in dir(petak) if "select" in n.lower()][:8])

# 2. Baca petunjuk satu fungsi (tiga baris pertama)
print("\n".join(petak.selectByExpression.__doc__.splitlines()[:3]))

# 3. Cari alat Processing dari kata kunci
for alat in QgsApplication.processingRegistry().algorithms():
    if "buffer" in alat.id().lower():
        print(alat.id(), "->", alat.displayName())

# 4. Lihat "formulir" satu alat
alat = QgsApplication.processingRegistry().algorithmById("native:buffer")
for p in alat.parameterDefinitions():
    print(p.name(), "|", p.description())
