#+title: Scope of properties as variables for babel blocks
* Overview

I have the following scenario in mind: =func1= and =func2= are two
functions that can be executed in two modes: =foo= and =bar=. Each
mode yields a different set of results, that have to be discussed,
separately, in two different subtrees.

The goal is to have one subtree where they are executed in one mode
and a second subtree for the other mode.

The functions are defined in a dedicated [[Code][subtree]].

* Bar setting

Now, I want to execute the function in =bar= mode:
#+PROPERTY:  var mode="bar"

#+CALL: func1()

#+RESULTS:
: default

#+CALL: func2()

#+RESULTS:
: default

* Foo setting

In this node I want to execute  the functions in =foo= mode:
#+PROPERTY:  var mode="foo"

#+CALL: func1()

#+RESULTS:
: default

#+CALL: func2()

#+RESULTS:
: default

* Code
#+name: func1
#+begin_src python
return mode
#+end_src

#+RESULTS: func1
: foo

#+name: func2
#+begin_src python
return mode
#+end_src

#+RESULTS: func2
: default-val

* Question:

How can I implement this kind of workflow in a reproducible org mode document?