Hacker News

Python suguya sɛgɛsɛgɛlikɛlan sumalen: Minɛn lankolon inference

Kow fɔcogo

18 min read Via pyrefly.org

Mewayz Team

Editorial Team

Hacker News

Mun na minɛn lankolonw bɛ pitɔn suguya sɛgɛsɛgɛlikɛlaw kari — ani i bɛ se ka min kɛ o la

Python ka sɛbɛnnikɛcogo dɔɔnindɔɔnin kɔgɔra kosɛbɛ kabini PEP 484 ye suguya jirali daminɛ san 2015. Bi, baarakɛla miliyɔn caman bɛ u jigi da suguya sɛgɛsɛgɛlikɛlanw kan minnu tɛ jɔ walasa ka buguw minɛ sanni u ka se ka bɔli kɛ. Nka, suguya-sitɛmu kɔnɔna dɔ bɛ yen min tɛ ye, min bɛ mɔgɔ dusu tiɲɛ, min bɛ hali bi hali ɛntɛrinɛti injiniyɛri dɔnbagaw senna tigɛ: minɛn lankolon suguya jumɛn bɛ yen? Ni i ye x = [] sɛbɛn k’a sɔrɔ i ma ɲɛfɔli kɛ, i ka suguya sɛgɛsɛgɛlikɛla ka kan ka jateminɛ kɛ — wa sɛgɛsɛgɛlikɛla suguya wɛrɛw bɛ jateminɛ kɛ cogo wɛrɛ la. O danfara in bɛ gɛlɛya lakikaw lase ekipuw ma minnu bɛ kodɔnba mara, yɔrɔ min na, suguya sɛgɛsɛgɛlikɛlaw caman cili walima u faralen ɲɔgɔn kan, o bɛ se ka fili kɛmɛ caman bɔ kɛnɛ kan minnu ma labɛn su kelen kɔnɔ.

Nin barokun in bɛ Python suguya sɛgɛsɛgɛlikɛla ŋana naani — mypy, pyright, pytype ani pyre — bɛ minɛn lankolonw jateminɛcogo ɲɛnabɔ cogo min na, mun na u tɛ bɛn ɲɔgɔn ma, ani fɛɛrɛ ɲuman minnu bɛ se ka ta walasa ka Python suguya lakananen sɛbɛn, i ka baarakɛminɛn sugandili mana kɛ min o min ye.

Gɛlɛya koloma : minɛn lankolonw ye daɲɛ fila ye u danma

Aw ye nin Pitɔn ka layini jugu in jateminɛ : results = [] . Yala jaabiw ye lisi[int] ye wa ? A lisi[str]? A lisi[dict[str, Any]]? Ni kumasen wɛrɛw ma fara a kan, tiɲɛ na, cogo si tɛ yen k’a dɔn. Python boli waati t’a janto o la — lisi ye hɛtɛrojɛni ye u cogoya la — nka suguya jɔlenw sɛgɛsɛgɛlikɛlaw ka kan ka suguya jɛlen dɔ di fɛn caman sɛgɛsɛgɛli bɛɛ ma walasa k’u ka baara kɛ. O bɛ gɛlɛya jɔnjɔn dɔ lase Python ka sɛgɛsɛgɛli fangama ni garantiw cɛ, sɛgɛsɛgɛli jɔlen b’a ɲini ka minnu di.

The problem compounds with dictionaries and sets. {} lankolon bɛ sɛgɛsɛgɛ tiɲɛ na i n’a fɔ dict, a tɛ set ye, min bɛ daɲɛgafe-dafalen fara suguya-dakun-dafalen sanfɛ. Ani minɛn minnu bɛ sigida la — miiri defaultdict(list) walima results = {k: [] for k in keys} — bɛ inference enginew gɛrɛ u dan na. Suguda sɛgɛsɛgɛlikɛla kelen-kelen bɛɛ y’a yɛrɛ ka hakilinaw labɛn, wa danfara minnu bɛ u ni ɲɔgɔn cɛ, olu ka bon ka tɛmɛ dabɔbaa fanba ka faamuyali kan.

Sɛnɛfɛnw dilanni siratigɛ la minnu bɛ baara lakikaw baara — a kɛra CRM ye min bɛ kiliyanw ka sɛbɛnw ɲɛnabɔ, fatura modulu min bɛ layini fɛnw dilan, walima jateminɛ pibiliki min bɛ jateminɛw lajɛ — minɛn lankolonw bɛ bɔ tuma bɛɛ i n’a fɔ daminɛcogo misaliw. U suguyaw sɔrɔli jugu tɛ linter lasɔminiw dɔrɔn de lase; a bɛ se ka bugu lakikaw datugu minnu bɛ sɛgɛn ka taa boli waati la.

Mypy : Inference deferrée avec implicit Any

Mypy, n’o ye Python suguya sɛgɛsɛgɛlikɛlan kɔrɔlenba ye ani min bɛ tali kɛ kosɛbɛ, o bɛ fɛɛrɛ nɔgɔman ta minɛn lankolonw na. Ni a ye x = [] sɔrɔ baarakɛcogo la, a b’a ɲini ka suguya latigɛ bila kɔfɛ ani ka fɛn suguya jateminɛ ka bɔ baarakɛcogo nataw la. N’i ​​ye x = [] sɛbɛn ka tugu x.append(42) kɔ, mypy bɛna list[int] jateminɛ. Nin "join" fɛɛrɛ in bɛ baara kɛ koɲuman cogo kabakoma na ko tilennenw na minnu kɔnɔ minɛn bɛ fa yɔrɔ kelen kɔnɔ.

Nka , mypy ka kɛwale bɛ Changé kosɛbɛ ka kɛɲɛ ni contexte ani strictness settings ye . Module scope (kode sanfɛla la), walima ni minɛn in tɛmɛna baarakɛcogo wɛrɛ la ka sɔrɔ ka fa, mypy ka teli ka segin list[Any] kan. --strict darapo jukɔrɔ, o bɛ fili dɔ daminɛ, nka a bɛ tɛmɛ cogo kɔrɔ la a bɛ tɛmɛ makun na. O kɔrɔ ye ko ekipu minnu bɛ mypy boli ni cogoya gɛlɛn tɛ, olu bɛ se ka minɛn tan ni caman dalajɛ minnu sɛbɛnnen don cogo jɛlen na minnu bɛ kɛ i n’a fɔ bolifɛnw ka bɔ suguya sigicogo la, k’a kuntilenna tiɲɛ.

Kɛrɛnkɛrɛnnenya la, kɛcogo nɔgɔlen dɔ : mypy bɔko minnu bɛ 0,990 ɲɛfɛ, olu tun bɛ list[Unknown] jateminɛ tuma dɔw la kɔnɔna na, ka sɔrɔ ka bonya ka taa list[Any] la baara dicogo kan. 0,990 kɔfɛ, jateminɛ in gɛlɛyara, nka fɛn caman b’a la ka fɛn caman sɛmɛntiya diɲɛ kɔnɔ kodebasi lakikaw la minnu tun bɛ ka u jigi da taamacogo yamaruyalen kan k’a sɔrɔ u m’a dɔn. Nin ye barokun ye min bɛ segin-ka-bɔ — fɛn lankolonw jateminɛcogo caman yeli bɛ suguya sɛgɛsɛgɛlikɛlan kurayaliw cɛma minnu bɛ tiɲɛni kɛ kosɛbɛ bawo misaliw bɛ yɔrɔ bɛɛ kosɛbɛ.

Pyright : Inference Strict ani "Dɔnbali" suguya

Pyright, min dabɔra Microsoft fɛ ani min bɛ Pylance fanga di VS Code kɔnɔ, o bɛ filozofi jɔyɔrɔ wɛrɛ ta a jɔnjɔn na. Sani a ka segin ka bin makun na Any kan, pyright bɛ danfara don Dɔnbali (suguya min ma latigɛ fɔlɔ) ani Any (suguya sɛgɛsɛgɛli bɔli jɛlen). N’i ye x = [] sɛbɛn pyright ka cogo gɛlɛn na, a bɛ list[Unknown] infer ani ka diagnostic dɔ fɔ, k’i wajibiya ka annotation di.

Pyright fana bɛ kɛlɛ kɛ ka tɛmɛn sɔgɔsɔgɔninjɛ kan seko ni dɔnko kɔnɔ . Ni i ye sɛbɛnni kɛ:

  • x = [] o kɔfɛ x.append("bonjour") — pyright bɛ list[str]
  • jateminɛ
  • x = [] o kɔfɛ x.append(1) o kɔfɛ x.append("bonjour") — pyright bɛ list[int | str]
  • x = [] tɛmɛna ka ɲɛsin baarakɛcogo ma min bɛ list[int] makɔnɔ — pyright bɛ list[int] jateminɛ ka bɔ weleli-yɔrɔ kɔnɔko
  • la
  • x = [] seginna ka bɔ baarakɛcogo la ni segin suguya ɲɛfɔli tɛ — pyright bɛ fili dɔ fɔ sanni ka jateminɛ

Nin ɲɛfɔli fila in (ka baara kɛ ni baarakɛcogo nataw ni suguya makɔnɔnenw bɛɛ ye ka bɔ weleli yɔrɔw la) bɛ pyright kɛ kɛrɛnkɛrɛnnenya la ka ɲɛ ka tɛmɛ mypy kan minɛn lankolonw na. Jagokɛcogo ye kumasenw ye : pyright ka cogoya gɛlɛn bɛ 30-40% ɲɔgɔnna ko caman jira kodebase danma dɔ kan min tɔgɔ ma fɔ ni i y’a suma ni mypy ka cogoya gɛlɛn ye, ka kɛɲɛ ni sɛgɛsɛgɛli ye min bɔra da wulilen jiginni rapɔɔri caman na. For teams building complex backend systems — say, a platform managing 207 interconnected modules spanning CRM, payroll, and analytics — pyright's strictness catches subtle interface mismatches that lenient inference would miss.

pitipi ni piri : sira minnu tɛ taama kosɛbɛ

Google ka pytype bɛ laala fɛɛrɛ tigɛlenba ta. Sani a ka ɲɛfɔliw wajibiya walima ka segin ka bin Any kan, pytype bɛ baara kɛ ni porogaramu bɛɛ sɛgɛsɛgɛli ye walasa ka minɛn dɔ baaracogo lajɛ baarakɛcogo dancɛw kɔnɔ. N’i ​​ye lisi lankolon dɔ Dabɔ baarakɛcogo dɔ la k’a Tɛmɛ baara wɛrɛ kan min bɛ jateden dafalenw Fàra ɲɔgɔn kan, pytype bɛ Se ka list[int] jateminɛ tuma caman na k’a sɔrɔ ɲɛfɔli si ma Kɛ a la hali dɔɔnin. Nin cross-function inference in sɔngɔ ka gɛlɛn jatebɔ siratigɛ la — pytype bɛ teliya kosɛbɛ ka tɛmɛ mypy walima pyright kan kodebase belebelebaw kan — nka a bɛ nkalon pozitif dɔgɔya kode kan min ma fɔ.

Pytype fana bɛ "suguya yɔrɔ dɔw" hakilina don minɛn lankolonw na. [] min dabɔra kokura, o bɛ suguya dɔ sɔrɔ min bɛ nɔgɔya dɔɔnindɔɔnin ni sɛgɛsɛgɛlikɛla bɛ baarakɛcogo caman sɔrɔ. O ye hakilinata cɛɲi ye nka a bɛ se ka fili cikanw lase minnu bɛ mɔgɔ hakili ɲagami ni suguya yɔrɔ dɔ tɛ se ka ɲɛnabɔ ka dafa, i n’a fɔ ni minɛn lankolon dɔ bɛ woyo baarakɛcogo caman fɛ k’a sɔrɔ a ma fa abada.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Meta ka pyre , o waati kelen na , hews ka surun mypy ka kɛwalew la nka ni defaults gɛlɛnw ye . Pyre bɛ x = [] minɛ i n’a fɔ list[unknown] wa a bɛ sɛbɛnni de wajibiya a kɔnɔkow fanba la. Pyre b’a yɛrɛ danfara yɔrɔ min na, o ye a ka daɲɛgafe daɲɛ lankolonw minɛcogo ye minnu bɛ kɛ kwargs ye — o ye misali ye min bɛ sɔrɔ ɛntɛrinɛti karamɔgɔya la. Pyre bɛ ni hakilina kɛrɛnkɛrɛnnen ye walasa ka daɲɛgafe suguyaw jateminɛ ka bɔ daɲɛ kolomaw sɔsɔli kɔnɔkow la, ka dɔ bɔ annotation doni na framework-heavy codebases kɔnɔ. Ni an y’a jateminɛ ko bi ɛntɛrinɛti baarakɛminɛn fanba bɛ baara kɛ kosɛbɛ ni daɲɛgafe bɔli ye walasa ka labɛnni ni ɲininiw ɲɛnabɔ, o waleyali in bɛ nafa sara.

Real-World Impact: When Inference Divergence Bites

Danfara minnu bɛ suguya sɛgɛsɛgɛlikɛlaw ni ɲɔgɔn cɛ, olu bɛ se ka kɛ i n’a fɔ kalanko fo i k’u sɔrɔ sɛnɛko kodɔnba dɔ kɔnɔ. Aw ye misali dɔ jateminɛ min bɛ kɛ jagokɛcogo la: kunnafonidilan dɔ daminɛni min bɛ fa ni sarati ye.

ye

Minɛri lankolon minnu farati ka bon kosɛbɛ, olu tɛ suguya sɛgɛsɛgɛlikɛlaw ka darapo ye — olu de bɛ tɛmɛ u makun na ni Any suguya jateminɛlen ye, min b’a to kunnafonidilan minnu tɛ bɛn ɲɔgɔn ma, olu ka dalajɛ k’a sɔrɔ u ma lasɔmi fo duguma baarakɛcogo dɔ ka tiɲɛ boli waati la ni TypeError ye min bɛ ɲini ka segin a bɔyɔrɔ la.

ye

misali jɔnjɔn dɔ : finɛtiri daminɛna jɛkulu dɔ y’a jira ko u ye tile saba kɛ ka sɛnɛko ko dɔ ɲɛnabɔ yɔrɔ min na lisi lankolon dɔ, min daminɛna sarako baarakɛcogo dɔ la, o jatera ko list[Any] mypy fɛ Lisiti tun ka kan ka kɛ Decimal fɛnw ye wariko hakɛw kama, nka kode sira dɔ tun bɛ ka float nafaw fara a kan o nɔ na. Mypy ka lenient inference ye sira di o ma ni makun ye. O buguri in bɔra dɔrɔn tuma min na rounding filiw float arithmetic la, o kɛra sababu ye ka $0.01 danfara don fatura 12.000 kulu kan. Ni u tun ye pyright kɛ cogo gɛlɛn na, walima ka lisi lankolon in sɛbɛn dɔrɔn i n’a fɔ list[Decimal], o buguri tun bɛna minɛ yiriwali waati la.

Mewayz la, yɔrɔ min na, o yɔrɔ in na, o yɔrɔ in bɛ faturaw, sarako jatebɔw, ani wariko sɛgɛsɛgɛliw kɛ baarakɛlaw ka jatew 138.000+ kɔnɔ, nin danfara suguya in tɛ hakilinata ye — o ye danfara ye sarako bolicogo ɲumanw ni jatebɔ kura musakabaw cɛ. Sɛbɛnni kololi gɛlɛn min bɛ minɛnw daminɛni lamini na, o ye o ɛntɛrinɛti wale "sɛgɛn" dɔ ye min bɛ fɛn dilanni ko dumanw bali.

wale ɲumanw kɛli lafasali minɛnw daminɛni na

aw ka jɛkulu bɛ baara kɛ ni suguya sɛgɛsɛgɛlikɛlan suguya o suguya ye , fɛɛrɛ jɔnjɔnw bɛ yen walasa ka minɛn lankolonw ka daɲɛ jɛlenw ban pewu . Laɲini ye ko i kana i jigi da inference kan abada minɛn lankolonw kama — i ka suguya kɛ ka jɛya walasa i ka kode ka se ka ta ka tɛmɛn checkers bɛɛ kan ani ka immune to inference behavior changes between versions.

  1. Aw bɛ minɛn lankolonw fɛn caman sɛgɛsɛgɛ tuma bɛɛ . Aw bɛ jaabiw sɛbɛn : list[int] = [] sanni jaabiw = [] ka kɛ . Verbosity musaka fitinin tɛ jate ni i y’a suma ni debugging waati min bɛ mara. Nin wale kelen in bɛ minɛn lankolon inference koɲɛw 80% ɲɔgɔn bɔ yen.
  2. I ka izini baarakɛcogo kɛ minɛn gɛlɛnw kama. Sanni i ka kɛ cache = {} ye, baarakɛcogo dɔ sɛbɛn i n’a fɔ def make_cache() -> dict[str, list[UserRecord]]: return {}. Segin suguya ɲɛfɔli bɛ suguya laɲininen kɛ fɛn ye min tɛ jɛya ani min bɛ a yɛrɛ sɛbɛn.
  3. Aw ka sɛbɛnnikɛlanw ka fisa ni daɲɛw ye suguya minnu tɛ fɛn fitininw ye. Aw bɛ fɛnw sɛbɛn : set[int] = set() sanni aw ka aw jigi da set faamuyali jateminɛ kan. defaultdict ani Jateminɛ kama, suguya paramɛtiri di tuma bɛɛ: jatebɔw: Jatebɔ[str] = Jatebɔ().
  4. I ka suguya sɛgɛsɛgɛlikɛla ka cogoya gɛlɛn labɛn kode kura kama. mypy ni pyright fila bɛɛ bɛ dɛmɛ don dosiye kelen-kelen bɛɛ la walima ɲɛbilasɛbɛn kelen-kelen bɛɛ labɛnni na. Aw bɛ se ka sɛgɛsɛgɛli gɛlɛn kɛ modulu kuraw kan k’a sɔrɔ aw bɛ kode kɔrɔw jiginni dɔɔnin dɔɔnin. O bɛ minɛn kuraw dalajɛli bali minnu sɛbɛnnen don cogo jɛlen na.
  5. A' ye suguya sɛgɛsɛgɛlikɛlan sumalen fara aw ka CI pipeline kan . ka mypy ni pyright fila bɛɛ boli aw ka codebase kan , o bɛ inference divergence minɛ joona . Ni misali dɔ tɛmɛna sɛgɛsɛgɛlikɛla dɔ fɛ nka a ma se ka dɔ wɛrɛ kɛ, o ye taamasyɛn ye ko suguya ma jɛya ka ɲɛ.

Ja belebeleba : suguya sɛgɛsɛgɛli i n' a fɔ jɛkulu ka wale

minɛn lankolonw jateminɛ laban ye gɛlɛya belebeleba dɔ ye min bɛ Python ka suguya sigicogo la : gɛlɛya min bɛ nɔgɔya ni lakana cɛ. Python ka hakilina min ye ko "an bɛɛ ye balikuw ye minnu bɛ sɔn" o bɛ baara kɛ ka ɲɛ prototyping ni scripts (sɛbɛnni) la, nka production systems minnu bɛ baara kɛ ni baarakɛla ba caman ye, olu mago bɛ garanti barikamaw la. K’a sɔrɔ suguya sɛgɛsɛgɛlikɛla ŋana naani tɛ bɛn fɛn basigilen dɔ kan i n’a fɔ [] suguya, o b’a jira ko Pitɔn sɛbɛnnikɛlan ekosisɛti bɛ ka kɔgɔ hali bi.

Enjiniyɛri jɛkulu minnu bɛ plateforme gɛlɛnw jɔ — i n’a fɔ i bɛ microservices bolomafaraw ɲɛnabɔ wo, walima sistɛmu jɛlen dɔ ni modulu kɛmɛ caman bɛ ɲɔgɔn na i n’a fɔ Mewayz ka jago OS — laadilikan nafama ye : i kana i jigi da inference kan minɛn lankolonw kama, ka type checker ta k’a labɛn ka ɲɛ, ani ka type annotations minɛ i n’a fɔ sɛbɛnni minnu bɛ kɛ masin-sɛgɛsɛgɛli bɛ se ka kɛ. Miniti duuru minnu bɛ kɛ ka list[Invoice] sɛbɛnni kɛ [] nɔ na, ​​o bɛna i kisi lɛrɛ caman ma ka ɲɛsin fɛnw tiɲɛni ma n’i ka kodebase bɛ sɛgɛsɛgɛli kɛ.

Ni PEP 696 (suguya paramɛtiriw dafalenw) ani PEP 695 (suguya paramɛtiriw sigicogo) bɛ taa a fɛ ka jigin Python bɔko kura kɔnɔ, sɛbɛnni jɛlenw ka ergonomi bɛna to ka ɲɛtaa sɔrɔ. "Annotated" ni "unannotated" Python cɛ danfara bɛna Dɔgɔya. Nka fo ka na se o don ma, minɛn suguya jɛlenw tora ROI kɛcogo caman dɔ ye Python dilannikɛla ka baarakɛminɛnw kɔnɔ — kalan fitinin min bɛ tɔnɔ faralen sara modulu bɛɛ kɔnɔ, boli bɛɛ la, ani sɛnɛfɛnw bilali bɛɛ la.

aw ka jago OS jɔ bi

k' a ta yɛrɛmahɔrɔnya baarakɛlaw la ka se baaradaw ma , Mewayz bɛ fanga di jagokɛla 138.000+ ma ni modulu 207 ye minnu bɛ ɲɔgɔn kan . A daminɛ fu, i ka sɛgɛsɛgɛli kɛ ni i bonyalen don.

Jatebɔsɛbɛn gansan dabɔ →

Ɲininkali minnu bɛ kɛ tuma caman na

mun na sɛbɛnnikɛlanw tɛ se ka bɛn lisi lankolon suguya kan ?

Ni i ye `x = []` sɛbɛn, suguya sɛgɛsɛgɛlikɛla ka kan ka suguya dɔ jateminɛ min tɛ ni hakilina jɛlenw ye. Sɛgɛsɛgɛlikɛla suguya wɛrɛw bɛ baara kɛ ni fɛɛrɛ wɛrɛw ye: dɔw bɛ `list[Any]` (fɛn o fɛn lisɛli) jateminɛ, dɔw bɛ se ka suguya kɛrɛnkɛrɛnnen dɔ jateminɛ nka min tɛ tiɲɛ ye i n’a fɔ `list[None]`. O diɲɛ bɛɛ ka sariyakolo dɛsɛ de y’a to u tɛ bɛn ɲɔgɔn ma. Porozɛ minnu bɛ baara kɛ ni sɛgɛsɛgɛlikɛlan caman ye, o bɛnbaliya bɛ se ka kɛ kungolodimiba ye, ka sɛgɛsɛgɛli kari baarakɛminɛn dɔ kɔnɔ min bɛ tɛmɛ baarakɛminɛn wɛrɛ kɔnɔ.

minɛn lankolonw filiw ɲɛnabɔcogo nɔgɔman ye mun ye ?

Fɛɛrɛ min ka nɔgɔn kosɛbɛ , o ye ka suguya ɲɛfɔli jɛlen di . Sanni `my_list = []`, aw bɛ `my_list: list[str] = []` sɛbɛn walasa ka suguya laɲininen fɔ k'a jɛya. O bɛ daɲɛ fila-fila bɛɛ Bɔ suguya-sɛgɛsɛgɛlikɛla la, ka kɛwalew sabatili sabati baarakɛminɛn suguya caman na i n’a fɔ mypy, Pyright ani Pyre. Nin wale in bɛ fɔ minɛn lankolon daminɛ bɛɛ la walasa ka dantigɛli filiw bali.

ne bɛ minɛn lankolonw minɛ cogo di kalasi ɲɛfɔliw kɔnɔ ?

Nin ye ko ye min bɛ kɛ tuma caman na bawo annotations minnu bɛ kalanso kɔnɔ, olu bɛ baara kɛrɛnkɛrɛnnen de wajibiya. Aw ka kan ka baara kɛ ni `from __future__ import annotations` import ye walima `ClassVar` annotation ni lisi laɲini ye ka kɛ kalasi fɛn ye. Misali la, `klasi MyClass: ne_list: ClassVar[list[str]] = []`. Ni o tɛ, suguya sɛgɛsɛgɛlikɛla bɛ se ka gɛlɛya sɔrɔ ka suguya jateminɛ ka ɲɛ, o bɛ na ni filiw ye.

baarakɛminɛn dɔw bɛ yen minnu bɛ se ka dɛmɛ don ka nin sɛbɛnniko koɲɛw ɲɛnabɔ porozɛbaw kɔnɔ wa ?

Ɔwɔ, suguya sɛgɛsɛgɛlikɛla ŋanaw i n’a fɔ Pyright (min bɛ fanga di Pylance ma VS Code kɔnɔ) olu ka ɲi kɛrɛnkɛrɛnnenya la inference complexes ɲɛnabɔli la. Kodebase belebelebaw kama, plateformes i n’a fɔ Mewayz (min bɛ sɛgɛsɛgɛli modulu 207 di $19/kalo) bɛ se ka suguya sɛgɛsɛgɛli jugumanba di, min bɛ bɛn ɲɔgɔn ma ani ka dɛmɛ don ka ɲɛfɔli kɛcogo waleya i ka kulu bɛɛ kɔnɔ, ka bɛnbaliya nɔgɔya minnu kofɔra barokun kɔnɔ.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime