Sorry, I was wrong with the pointing out the correspondence of if
__name__ == '__main__': in python with something like `current_module()
== Main` in Julia.  Or at least wrong suggesting it can be used
similarly.

In Python modules are tied to files and a module has the name of the
file.  So if you do `import matematicas`, python views the whole of the
file as the module matematicas and thus the test __name__ == '__main__'
fails.  Conversely, if you just run the file, python sees it as a script
and the test __name__ == '__main__' passes.

In Julia however you have to specify the module separately inside the
file with `module Matematicas ... end`.  As you wrote it, your test
`if !isinteractive() && current_module() == Main`
is outside that module block and thus `current_module() == Main` will be
true and it gets executed.  However, if you put in inside the module
block it will never get executed!

Bottom line is, I don't think there is an easy way in Julia to duplicate
that dual life of a file in python which will be a script if called
directly and a module if imported.  Have a look at some of the Julia
packages to see how they are organised, e.g.:
https://github.com/johnmyleswhite/Benchmark.jl
and try whether you can live with that.

On Tue, 2014-02-11 at 06:01, ismael.vc1...@gmail.com wrote:
> Hey I'm also getting used to git/github, is this a good bug report, can't I 
> reference the file Matematicas.jl or commit hash in better way when opening 
> issues?
>
> https://github.com/Ismael-VC/Club_TESCI/issues/1
>
> Wrapping the import/using/require/include code inside another enclosing 
> moduleonly works as intended with "include":
>
> ismaelvc@toybox ~/T/C/C/julia_code (master)> cat > include_test.jl
> module IncludeTest
>
> include("Matematicas.jl")
>
> end
>
> ismaelvc@toybox ~/T/C/C/julia_code (master)> julia include_test.jl
> Control TEST!
>
>
>
> ismaelvc@toybox ~/T/C/C/julia_code (master)> cat > import_test.jl 
> module ImportTest
>
> import Matematicas
>
> end
>
> ismaelvc@toybox ~/T/C/C/julia_code (master)> julia import_test.jl
> Test: Main
>
> fgen(4, 3, -1)
> x1 = 0.25
> x2 = -1.0
>
> Control TEST!
>
>
>
> ismaelvc@toybox ~/T/C/C/julia_code (master)> cat > using_test.jl
> module UsingTest
>
> using Matematicas
>
> end
>
> ismaelvc@toybox ~/T/C/C/julia_code (master)> julia using_test.jl
> Test: Main
>
> fgen(4, 3, -1)
> x1 = 0.25
> x2 = -1.0
>
> Control TEST!
>
>
>
> ismaelvc@toybox ~/T/C/C/julia_code (master)> cat > require_test.jl
> module RequireTest
>
> require("Matematicas.jl")
>
> end
> ismaelvc@toybox ~/T/C/C/julia_code (master)> julia require_test.jl
> Test: Main
>
> fgen(4, 3, -1)
> x1 = 0.25
> x2 = -1.0
>
> Control TEST!

Reply via email to