From 25753b292880176e51e057ce734bbe146c017941 Mon Sep 17 00:00:00 2001
From: Lyndon White <oxinabox@ucc.asn.au>
Date: Thu, 24 May 2018 17:30:10 +0800
Subject: [PATCH] =Add ability to import names that are already used in Base

---
 src/generate_ops.jl | 4 +++-
 test/ops.jl         | 8 ++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/generate_ops.jl b/src/generate_ops.jl
index eb123ff9..d71df5c0 100644
--- a/src/generate_ops.jl
+++ b/src/generate_ops.jl
@@ -328,11 +328,13 @@ Returns a reference to a Julia function corresponding to the operation.
 function import_op(name)
     jl_name = opname_to_jlname(name)
     mod = TensorFlow.Ops
-    if !isdefined(mod, jl_name)
+    if jl_name ∉ names(mod, true)
         ops = Dict(get_all_op_list())
         op = ops[name]
         op_desc = to_function(op)
         eval(Ops, op_desc.expr)
+    else
+        warn("Import Skipped: tried to import op $name as $(mod).$(jl_name), but that already exists.")
     end
 
     return getfield(Ops, jl_name)
diff --git a/test/ops.jl b/test/ops.jl
index be36590a..2a2dfd59 100644
--- a/test/ops.jl
+++ b/test/ops.jl
@@ -8,3 +8,11 @@ using Base.Test
     as_string = import_op("AsString")
     @test run(session, as_string(2)) == "2"
 end
+
+
+
+import_op("Atan2") #Must be outside testset as per https://github.com/JuliaLang/julia/issues/27244
+@testset "Importing a name that is used by Base" begin
+    session = Session(Graph())
+    @test run(session, Ops.atan2(Tensor(1.0), Tensor(1.0))) > 0 
+end