Skip to content

Latest commit

 

History

History
59 lines (39 loc) · 1.81 KB

python-concepts.md

File metadata and controls

59 lines (39 loc) · 1.81 KB

Python Concepts

The Airbyte CDK makes use of various not-so-obvious Python concepts. You might want to revisit these concepts as you implement your connector:

You'll want a strong understanding of these as the central API concepts require extending and using them.

You'll often see this referred to as **kwargs in the code.

Note that there are two ways of defining properties: statically and dynamically.

Statically

class Employee(ABC):
    @property
    @abstractmethod
    def job_title():
        """ returns this employee's job title"""

class Pilot(Employee):
    job_title = "pilot"

Notice how statically defining properties in this manner looks the same as defining variables. You can then reference this property as follows:

pilot = Pilot()
print(pilot.job_title) # pilot

Dynamically

You can also run arbitrary code to get the value of a property. For example:

class Employee(ABC):
    @property
    @abstractmethod
    def job_title():
        """ returns this employee's job title"""

class Pilot(Employee):
    def job_title():
        # You can run any arbitrary code and return its result
        return "pilot"

Generators are basically iterators over arbitrary source data. They are handy because their syntax is extremely concise and feel just like any other list or collection when working with them in code.

If you see yield anywhere in the code -- that's a generator at work.