Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Merge conflict in Python

import sys
from myfibo import fibo

if len(sys.argv) != 2:
    exit(f"Usage: {sys.argv[0]} DIV")

div = int(sys.argv[1])

for n in range(100):
    fib = fibo(n)
    if fib % div == 0:
        print(f"fibo({n}) == {fib} can be divided by {div}")

def fibo(n):
    if n == 1:
        return 0
    if n == 2:
        return 1
    fibs = [0, 1]
    for _ in range(2, n):
        fibs.append(fibs[-1] + fibs[-2])

    return fibs[-1]

# One developer changes the `

At this point one person decides to change the fibo() function to return the first n items of the series and another person adds a new program multiplying the first n fibo numbers using the old signature.

import sys
from myfibo import fibo

def multiply_fibo(n):
    result = 1
    for k in range(2, n):
        result *= fibo(k)
    return result

if __name__ == "__main__":
    if len(sys.argv) != 2:
        exit(f"Usage: {sys.argv[0]} N")

    n = int(sys.argv[1])
    print(f"Working on {n}")

    print(multiply_fibo(n))


from myfibo import fibo

def test_fibo():
    assert fibo(10) == 34
from fibo_multiply import multiply_fibo

def test_multiply_fibo():
    assert multiply_fibo(7) == 30