Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# konfigurasi pre commit
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
rev: v5.0.0
hooks:
- id: check-executables-have-shebangs
- id: check-toml
Expand All @@ -16,19 +16,19 @@ repos:
# contoh
# total = sum(angka := num for num in nums )
- repo: https://github.com/MarcoGorelli/auto-walrus
rev: v0.2.2
rev: 0.3.4
hooks:
- id: auto-walrus

# ruff adalah salah satu linter dan formatter kode
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.2.1
rev: v0.7.0
hooks:
- id: ruff
- id: ruff-format

- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.8.0
rev: v1.12.1
hooks:
- id: mypy
args:
Expand Down
2 changes: 2 additions & 0 deletions OpenSeries/bilangan_istimewa.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,10 @@ def angka_segitiga(angka: int) -> Union[int, error.ErrorTipeData, error.Error]:
error.Error: jika angka negatif
error.ErrorTipeData: jika tipe data salah
"""
# jika tipe data dari angka tidak integer
if not isinstance(angka, int):
return error.ErrorTipeData(["int"])
# jika value dari angka diisi nilai negatif
if angka < 0:
return error.Error("angka tidak boleh negatif")
return angka * (angka + 1) // 2
45 changes: 45 additions & 0 deletions OpenSeries/fisika.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from OpenSeries.util import constant as konstanta
from OpenSeries.util import error as error
from typing import Union

Expand Down Expand Up @@ -268,3 +269,47 @@ def efek_doppler(
"frekuensi tidak positif, kecepatan sumber relatif lebih besar dari kecepatan gelombang dalam medium"
)
return doppler


def gaya_coulombs(
q1: Union[int, float], q2: Union[int, float], r: Union[int, float]
) -> Union[int, float, error.ErrorDibagiNol, error.ErrorTipeData]:
"""
Fungsi untuk menghitung gaya coulombs dari partikel

parameter:
q1(int atau float) : muatan partikel pertama
q2(int atau float) : muatan partikel kedua
r(int atau float) : jarak antar dua partikel
return
F(int atau float) : hasil kalkulasi
"""
if not all(isinstance(data, (float, int)) for data in [q1, q2, r]):
return error.ErrorTipeData(["int", "float"])
if r == 0:
return error.ErrorDibagiNol()
else:
F = konstanta.KONSTANTA_COULOMD * ((q1 * q2) / r**2)
return F


def Energi_Potensial_Listrik(
q1: Union[int, float], q2: Union[int, float], r: Union[int, float]
) -> Union[int, float, error.ErrorDibagiNol, error.ErrorTipeData]:
"""
Fungsi untuk menghitung energi potensial listrik dari partikel

parameter:
q1(int atau float) : muatan partikel pertama
q2(int atau float) : muatan partikel kedua
r(int atau float) : jarak antar dua partikel
return
F(int atau float) : hasil kalkulasi
"""
if not all(isinstance(data, (float, int)) for data in [q1, q2, r]):
return error.ErrorTipeData(["int", "float"])
if r == 0:
return error.ErrorDibagiNol()
else:
F = konstanta.KONSTANTA_COULOMD * ((q1 * q2) / r)
return F
2 changes: 2 additions & 0 deletions OpenSeries/matematika.py
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,7 @@ def permutasi(nilai: int, r: int) -> Union[int, float, error.ErrorTipeData]:
faktorial_nilai = faktorial(nilai)
faktorial_nilai_r = faktorial(nilai - r)

# mengecek tipe data dari nilai faktorial
if isinstance(faktorial_nilai, int) and isinstance(faktorial_nilai_r, int):
return faktorial_nilai / faktorial_nilai_r
else:
Expand All @@ -268,6 +269,7 @@ def kombinasi(nilai: int, r: int) -> Union[int, float, error.ErrorTipeData]:
faktorial_r = faktorial(r)
faktorial_nilai_r = faktorial(nilai - r)

# mengecek nilai dari faktorial nilai
if (
isinstance(faktorial_nilai, int)
and isinstance(faktorial_r, int)
Expand Down
5 changes: 5 additions & 0 deletions OpenSeries/statistika.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,13 @@ def entropy(
error.ErrorTipeData: error jika tipe data salah
error.Error: jika nilai label yang diberikan kosong
"""
# jika tipe data dari label bukan list
if not isinstance(label, (list)):
return error.ErrorTipeData(["list"])
# jika nilai di dalam list kosong
if not label:
return error.Error("label tidak boleh kosong")
# jika nilai di dalam list itu tidak int
if not all(isinstance(cek_nilai, int) for cek_nilai in label):
return error.ErrorTipeData(["int"])
_, count = np.unique(label, return_counts=True)
Expand All @@ -46,8 +49,10 @@ def standar_deviasi(
error.ErrorTipeData: error jika tipe data salah
error.Error: jika vektor yang diberikan kosong
"""
# cek parameter vektor jika tidak bertipe data np.ndarray
if not isinstance(vektor, np.ndarray):
return error.ErrorTipeData(["numpy array"])
# cek jika nilai vektor adalah 0
if len(vektor) == 0:
return error.Error("vektor tidak boleh kosong")

Expand Down
12 changes: 6 additions & 6 deletions OpenSeries/util/constant.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
# dan dikarakterisasi dalam berbagai cara
BILANGAN_EULER: float = 2.718281828459045235360

# konstanta plank, yang dilambangankan dengan h, yang merupakan konstanta fisika
# fundamental yang menghubungkan energi foton dengan frekuensinya, nilainya disini
# adalah 6.6261 × 10⁻³⁴ (joule per detik)
KONSTANTA_PLANCK = 6.6261 * pow(10, -34)

# variable ini juga mewakili dari konstanta planck, tetapi dinyatan dalam satuan
# elektron volt per detik (eV/s) nilainya adalah 4.1357 × 10⁻¹⁵ eV s⁻¹
KONSTANTA_PLANCK = 4.1357 * pow(10, -15)
KONSTANTA_PLANCK: float = 4.1357 * pow(10, -15)

# konstanta coulmb adalah konstanta berbanding lurus pada
# persamaan yang menghubungkan variebel listrik
# nilainya 8,9875×10^9 N·m2/C2
KONSTANTA_COULOMD: float = 8.9875 * pow(10, 9)

# default error dari warna menggunakan kode ANSI escape
# merah
Expand Down
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
if platform.system == "windows":
core_require.append("pywin32")


install_require = [x.strip() for x in core_require if "git+" not in x]

# setup nama project
Expand Down
40 changes: 40 additions & 0 deletions testing/fisika_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,3 +129,43 @@ def test_efek_doppler_nilai_negatif(self):
self.assertIsInstance(hasil, error.Error)
with self.assertRaises(error.Error):
raise hasil


class test_gaya_coulombs(unittest.TestCase):
def test_gaya_coulombs(self):
hasil = fisika.gaya_coulombs((4 * pow(10, -2)), (2 * pow(10, -3)), (0.6))
self.assertEqual(hasil, 1997222.2222222225)

def tets_gaya_coulombs_invalid_tipe_data(self):
hasil = fisika.gaya_coulombs((4 * pow(10, -2)), "(2*pow(10, -3))", (0.6))
self.assertIsInstance(hasil, error.ErrorTipeData)
with self.assertIsInstance(error.ErrorTipeData):
raise hasil

def test_gaya_coulombs_di_bagi_nol(self):
hasil = fisika.gaya_coulombs((4 * pow(10, -2)), (2 * pow(10, -3)), 0)
self.assertIsInstance(hasil, error.ErrorDibagiNol)
with self.assertRaises(error.ErrorDibagiNol):
raise hasil


class test_Energi_potensial_Listrik(unittest.TestCase):
def test_energi_potensial_listrik(self):
hasil = fisika.Energi_Potensial_Listrik(
(4 * pow(10, -2)), (2 * pow(10, -3)), (0.6)
)
self.assertEqual(hasil, 1198333.3333333335)

def tets_energi_potensial_listrik_invalid_tipe_data(self):
hasil = fisika.Energi_Potensial_Listrik(
(4 * pow(10, -2)), "(2*pow(10, -3))", (0.6)
)
self.assertIsInstance(hasil, error.ErrorTipeData)
with self.assertIsInstance(error.ErrorTipeData):
raise hasil

def tets_energi_potensial_listrik_di_bagi_nol(self):
hasil = fisika.Energi_Potensial_Listrik((4 * pow(10, -2)), (2 * pow(10, -3)), 0)
self.assertIsInstance(hasil, error.ErrorDibagiNol)
with self.assertRaises(error.ErrorDibagiNol):
raise hasil
Loading