Deep Dive๏ƒ

For general users of the framework, who are mainly concerned with learning how to use Ivy, then the Design section is the best place to start ๐Ÿ™‚

This deep dive section is more targeted at people who would like to dive deeper into how Ivy actually works under the hood ๐Ÿ”ง

Going through the sections outlined below will get you right into the weeds of the framework ๐ŸŒฑ, and hopefully give you a better understanding of what is actually going on behind the scenes ๐ŸŽฌ

Itโ€™s best to go through the sub-sections from start to finish, but you can also dive in at any stage! Weโ€™re excited for you to get involved! ๐Ÿฆพ

(a) Navigating the Code ๐Ÿงญ
A quick tour through the codebase

(b) Function Types ๐Ÿงฎ
Primary, compositional, mixed and nestable functions

(c) Superset Behaviour โŠƒ
Ivy goes for the superset when unifying the backend functions

(d) Backend Setting โš™
How the backend is set, and what this means for each function type๏ธ

(e) Arrays ๐Ÿ”ข
Different types of arrays, and how theyโ€™re handled

(f) Containers ๐Ÿ—‚
What the ivy.Container does

(g) Data Types ๐Ÿ’พ
How functions infer the correct data type

(h) Devices ๐Ÿ“ฑ
How functions infer the correct device

(i) Inplace Updates ๐ŸŽฏ
How the out argument is used to specify the output target

(j) Function Wrapping ๐ŸŽ
How functions are dynamically wrapped at runtime

(k) Formatting ๐Ÿ“‹
How the code is automatically formatted

(l) Function Arguments ๐Ÿ“‘
How to add the correct function arguments

(m) Docstrings ๐Ÿ“„
How to properly write docstrings

(n) Docstring Examples ๐Ÿ’ฏ
How to add useful examples to the docstrings

(o) Array API Tests ๐Ÿค
How weโ€™re borrowing the test suite from the Array API Standard

(p) Ivy Tests ๐Ÿงช
How to add new tests for each Ivy function

(q) Ivy Frontends โžก
How to implement frontend functions

(r) Ivy Frontend Tests ๐Ÿงช
How to add new tests for each frontend function

(s) Exception Handling โš 
How to handle exceptions and assertions in a function

Ivy Tests running on the Repository