From d36c6b22b1a888780279fd63103032e105890044 Mon Sep 17 00:00:00 2001
From: Faruk Hammoud <farukhammoud@gmail.com>
Date: Mon, 6 Apr 2020 10:39:17 +0200
Subject: [PATCH] whl

---
 controllerApp/Net.pde                         |  18 +--
 controllerPackage/controller/__init__.py      |   4 +
 .../__pycache__/__init__.cpython-37.pyc       | Bin 166 -> 340 bytes
 .../__pycache__/controller.cpython-37.pyc     | Bin 2735 -> 2830 bytes
 .../__pycache__/mobile.cpython-37.pyc         | Bin 1524 -> 4558 bytes
 controllerPackage/controller/controller.py    |  29 +++--
 controllerPackage/controller/mobile.py        | 105 +++++++++++++++++-
 controllerPackage/test.py                     |  10 +-
 controllerSite/LICENSE                        |  19 ++++
 controllerSite/README.md                      |   4 +
 .../controller_site.egg-info/PKG-INFO         |  19 ++++
 .../controller_site.egg-info/SOURCES.txt      |   6 +
 .../dependency_links.txt                      |   1 +
 .../controller_site.egg-info/top_level.txt    |   1 +
 .../controller_site-0.0.1-py3-none-any.whl    | Bin 0 -> 2195 bytes
 controllerSite/setup.py                       |  22 ++++
 16 files changed, 211 insertions(+), 27 deletions(-)
 create mode 100644 controllerSite/LICENSE
 create mode 100644 controllerSite/README.md
 create mode 100644 controllerSite/controller_site.egg-info/PKG-INFO
 create mode 100644 controllerSite/controller_site.egg-info/SOURCES.txt
 create mode 100644 controllerSite/controller_site.egg-info/dependency_links.txt
 create mode 100644 controllerSite/controller_site.egg-info/top_level.txt
 create mode 100644 controllerSite/dist/controller_site-0.0.1-py3-none-any.whl
 create mode 100644 controllerSite/setup.py

diff --git a/controllerApp/Net.pde b/controllerApp/Net.pde
index f20e91a..68777d3 100644
--- a/controllerApp/Net.pde
+++ b/controllerApp/Net.pde
@@ -41,20 +41,20 @@ class Net
      jsonParam.put("d", d);
      sendPost();
   }
-  public void sendAccelerometer(float x, float y,float z){
+  public void sendAccelerometer(float ax, float ay,float az){
      jsonParam = new JSONObject();
      jsonParam.put("evnType", "Accelerometer");
-     jsonParam.put("x", y);
-     jsonParam.put("y", x);
-     jsonParam.put("z", z);
+     jsonParam.put("ax", ay);
+     jsonParam.put("ay", ax);
+     jsonParam.put("az", az);
      sendPost();
   }
-  public void sendGyroscope(float x, float y,float z){
+  public void sendGyroscope(float gx, float gy,float gz){
      jsonParam = new JSONObject();
      jsonParam.put("evnType", "Gyroscope");
-     jsonParam.put("x", y);
-     jsonParam.put("y", x);
-     jsonParam.put("z", z);
+     jsonParam.put("gx", gx);
+     jsonParam.put("gy", gy);
+     jsonParam.put("gz", gz);
      sendPost();
   }
   public void sendDoubleTap(float x, float y){
@@ -66,7 +66,7 @@ class Net
   }
   public void sendFlick(float x, float y,float px, float py,float v){
      jsonParam = new JSONObject();
-     jsonParam.put("evnType", "Double Tap");
+     jsonParam.put("evnType", "Flick");
      jsonParam.put("x", y);
      jsonParam.put("y", x);
      jsonParam.put("px", px);
diff --git a/controllerPackage/controller/__init__.py b/controllerPackage/controller/__init__.py
index e69de29..88ecadd 100644
--- a/controllerPackage/controller/__init__.py
+++ b/controllerPackage/controller/__init__.py
@@ -0,0 +1,4 @@
+from controller.controller import Controller as Controller_
+def Controller(*args):
+    c = Controller_()
+    return c
\ No newline at end of file
diff --git a/controllerPackage/controller/__pycache__/__init__.cpython-37.pyc b/controllerPackage/controller/__pycache__/__init__.cpython-37.pyc
index cb3e5e1d5605fed7aa518990e74ec4720e312506..276b01bc680971d39bcbf8ee4716ba2195832032 100644
GIT binary patch
literal 340
zcmZ?b<>g{vU|?W;))iO5z`*br#DQTZ1_lNP1_p*=2?hp+6owSW9EM!RC?-aR6s8pB
z7KSLs6qaBHP1ctn^_q;gxSaFzN{aGxa#D+uK|&x5GJ=tTfx#VQ49KPuhGvFZ#u~<8
z22DmkO~zZ?2u<;tOt)APi_(j4F($8MC}Lw^VEE;qY!wq)oLW>I<Ca)dnjPbkTAW>y
zUl5a=pOPAr47U%78IYKqotTay86TgSmst`YuUAl61ac4v7qftz$H>MA7V*<$juJ%}
pr-xvIrHhyu7$6P;y9z?EGcYjR;;_lhPbtkwwF7yw7-TRHBLI3cP}l$f

delta 97
zcmcb@w2aZ!iI<m)fq{X6_hLsJh<*$rV3?7Cfx&@+fuWd%fq@}~A(%mv(QhR~5l9$8
b{PK66xX4fV7Kcr4eoARhsvSuBGsp-4*Lo1I

diff --git a/controllerPackage/controller/__pycache__/controller.cpython-37.pyc b/controllerPackage/controller/__pycache__/controller.cpython-37.pyc
index 090dd2effdbbff823ae93e605673e6c3e5d79af7..d55901fbc43f7cf94cebcd9427a17d7526ff5a66 100644
GIT binary patch
delta 1437
zcmZ24+9$^6#LLUYz`($e9nux|lzk#!eZ5c$a|%lfV-#}=YYJNnLljF2dkRMjLlkQY
zX9`yfLlj#IcM4AnLlk=oZwg-vLlj2}e~Lg0LlkF<U@(KG@GUOq{JfH){G6QBqFZc<
zhDk=r#v#efAUhZs7(jNhFfcHH_{Cco7#M08I~d{_YM440;u&k0ieyUanNk>=L4wSA
zY?%xl4Dl=_tP9u{GSo8HFlVu+Fr_fJFf=pPvVeIkDXd@~E11WY!Vc!Kfq5J?jN%L_
zoV|=GTq)dOaduSkc7`;@6rL2`7LI1dT8<j#ERGbu6b?<OHYSL-ni*?3YnVG2;yF7Q
z7H}<OU}Q*P2xia}^t;6{S%6t<@?J)19(D!>h9VI0D=>NT6UInJ(aG{Gnv>I+yfxTh
zQeb%q!NI`5aEmuNKQAvexg<Wds3^Zka`G*vQdOLaxl%HVq3UHPm$GV3p358yR;|f+
zizOwoBoSgT$O%PY)7f)Vi;EM}Qxzx6v$zHDF)%Q6Ff3rGVOYorbw8t@CgUx(jKsW@
zoK#K5B9ID@S;eV2X%Mr(#&G7A=9FY6Cl;5eGB7X{Gl3$Jxk_zvBdhG>Z!8h&AO}Nr
zLv$frz?GjD4|Rmr<Wg1>9qwB!$@wX%w|I*)^U`xt<8$+qGILUkKxW=zgK%!KL+Ikk
z8(5XniZ~e<7&N(x1VKS40wP2~gd~UnNfm+8QV}<Z%MT)iK!h-e0J%bw5uy?7503cw
z%)HE!_;`>^u?*N7Y>aG7EQ~yp_1UI)@qlb%jN-~m%uOvWNK8&GE&^Go$x?){4I~i7
zlA4=Y0y7$97{uEkOTf-GoXpGarwY~tau^PkAStuS4eaLidY~M@ki}5MQ^SzO7|c+^
zSi_LTl+9M80HSLcB^iPlY8VzU*Dx+*42GmUMn6rKB5+8Ef&3~CNlZnli6yWw)no#D
z{T5SZ3dDI}hl1RAi!(j7#1|a!mY@jb0tF!hBPb{)YjcE{fkH-;sYn)NumC7bn87B2
zlSdKQI<Qe-0%TqhNRiXz9UQLeAa`K*?kz63rNwTO8`#As+i-ABcHtDSS72aZC}F5!
zYzFz7v4+uxp#+@y85uyK0r9;ilV6pnUuwAm#MuhaY>=9wsL2dYJVhXzi@+%n;_o7m
zFVH+*B+bCU;0f|FNFf6wA0r22)#RO=((Ft{pyDWG@-0sFXep4tIY9&{h7iF}BnJ`$
z8G&RhA`n1j87s(aP%h$N;?m+^<zVLE<Y3`oE&|DEvKC29j^R?*0c$}Jpb)&pVUwGm
UQks)$#|Sb3<T?&U9!3r(0AT19rT_o{

delta 1381
zcmeAZTQADz#LLUYz`(%ZZ`2jHg>52VeZ61`QwnnnV-#}=OA2cXLljF2TMBy%LlkQY
zM+#>PLlj#IR|<CvLlk=oPYQ1fLlj2}UkZN<LlkF<Krn-*&@C?K{JfH){G6QBqFZc<
zhDk=r#>q?|D;O9UI2jliSQr=>m>C!til;F!Fw`)1FvK&IFfL$P$WY5v!<5BbpTd~J
z)WXorSj!CJrZA_lfO#xn9%~94n8ym{vDYw)Go*0zGNy2*aDm0yP{rFB(il^?Q+Qf9
zni*@^YnZZFQg~Bfx|kpiZ)U9JsA1}0h-b}Y=wOKFU`t^LX3!Myn{3FeHTfQ+G!GjC
z149vr_!a0pnUyJ$k#DjCi{|7GCT|T^m=stZLa;M1Fx=uz&d<wBO)iN~Eh@?{5}N#*
zsZ<rGVy=|TVyJqt$y1rzz$!HvZ?U8#mLx(91zBGNHkmy)wYWGjJymM51B+X|7y|=C
z2}25FGb1BI2g3r!8is|8j0|8OF!@yp`<CXEWF{vTmnamaCZ}eWrKTuqG8KUwa*Hh^
zF)t-2Rg<xZmw|x+WLt4+P8!5Eutl7?FwJtH*aAfx0}}^hl^P;`^(L=j7MlE-B|;r!
zB-AK~5eNr!<>$pi-K;!$DzoO~*{s~`?6+8w^HWkMUt(2?y~UoJpOl%CTCB-gBmfFf
zVGtn-A~-+<DA5#w5@``1h${#pgg^wy4oyag9<Y-+;^Q;(GE3s)LA+uSP@<b0#Wux@
z8|=d<uDrzD)Z&7~<kaFKkR6&VMF?9!0#PifxtS#}BSFSPJOeVW2;>&6$rkK>s$fkZ
z2jNf&lG2}?$SFSg5W7OX5;&RHFk~@gvlWSe=oCgthG2#oP;@aaWDJHy*Da>Z6iucg
zP?X-{O)g4JEJ=-rgp4K=#FG**Un87#i!(j7#1|ZXMxbZ{Ihuiyi;;_|N(3BHlgl_f
zEkPPJnTn)9`uRbD!3;4F6!lST5KACtg7kwES`kQ{#pJIXuIeBcVfX4SF1YQ*Hj@)M
z&Feunl`zyWHZ#^RWHF{N+Au(9kdHN){E9&GnoLEY0s-t(JYFl3WME*h2YCvd_89pX
zt0cf)0+%g%C?Vvh$yfwZHQAC&Jz5;(O;B_}QVrbKMbaP%kf}(1MR*ugD1p*(F({dF
zFmWk!uyQbSuyL?(Fc*R3G+B#8Chz7_*8yum5TMj?i^C>2KczG$)s7M5V2~sSBM&17
F695_14#fZf

diff --git a/controllerPackage/controller/__pycache__/mobile.cpython-37.pyc b/controllerPackage/controller/__pycache__/mobile.cpython-37.pyc
index 34e2be9c24f843ecfdad2392e5acabeda68dd515..c7e68533618099ffeb6886ebbd11b1af8b7fa96f 100644
GIT binary patch
literal 4558
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
J#b;3U2>__jz<B@w

delta 669
zcmX@7{Dqs(iI<m)fq{YHyGd7E7V|_tH$FQC28L9ID8>|qD5eztiAhE=!3>%Lx7d91
zlQMHs-IAF>${83KKr|Br1A{XI14FR@0|P@1V+}(*Lk&|6Lp);&LokCTqn{?zEvC$r
zTPzu=IR%=`w^)i(bJB`Hnu<WWS27f_PF~HJ$j$;Xl96q)B$ISKNERdsHdY5@EJGGU
z4Py$UBtte+u|x@D3R5#9BSW4*31bQ~h*iQ^!w90mR<ihkjjs~&EGbsV%P&#LtyCx|
z%1_Ek&8_0g%*j#6NX$#gNma-!QPgAtE4{^9P?VWhqRCVQa>XqjmXySj#3EJ(1_lVh
z#=yXEiw&ZU9pqIGuw(fcxtKU6zhjl1+{vdr`3bMPKFHBUAW2O|uu%~0V1vMB@aE^m
z=cJ~U#21%m7Nqh{UMC<ixrnb>2A{skg8agaf|FJGr|IHT267^IeqMZO0mN|8$&5VW
zlmGKK5ap<p{PH}AKFP`J1k@QhCtnj#tq1wF2$VF6xItmT10r}q1Rsb1dkaB;JXplY
xz`y{)#UQmDOk6A+Y#b~g2$u2FWCYVl!2;F~(t3--CO1E&G$+*#r2jK0fC2Z5eG>ox

diff --git a/controllerPackage/controller/controller.py b/controllerPackage/controller/controller.py
index cf533c8..9a55122 100644
--- a/controllerPackage/controller/controller.py
+++ b/controllerPackage/controller/controller.py
@@ -4,9 +4,16 @@ import json
 
 class Controller:
 
-    def __init__(self,code = 'a1b2c3'):
+    def __init__(self,code = 'a1b2c3',single_mobile = True):
+        
         # Room Code
         self.code = code
+        self.single_mobile = single_mobile
+
+        if single_mobile:
+            self.mobile = Mobile('')
+        else:
+            self.mobiles = {}
 
         # Socket IO Communication Protocol Definition
         sio = socketio.Client()
@@ -29,7 +36,7 @@ class Controller:
         
         @sio.event(namespace='/'+code)
         def multicast(data):
-            print('Multicast received!')
+            #print('Multicast received!')
             self.handle(data)
 
         @sio.on('my message',namespace='/'+code)
@@ -37,10 +44,9 @@ class Controller:
             print('I received a message!')
         
         self.sio = sio
-        self.mobiles = {} # id:MOBILE
+        self.connect()
 
     def connect(self):
-        global code
         self.sio.connect('http://controller.viarezo.fr',namespaces=['/'+self.code])
         self.sio.emit('code', {'code': self.code})
     
@@ -48,10 +54,13 @@ class Controller:
         self.sio.disconnect()
     
     def getMobile(self,id):
-        if id in self.mobiles:
-            return self.mobiles['id']
+        if self.single_mobile:
+            return self.mobile
         else:
-            return self.create_mobile(id)
+            if id in self.mobiles:
+                return self.mobiles[id]
+            else:
+                return self.create_mobile(id)
 
     def handle(self,data):
         mobile = self.getMobile(data['id'])
@@ -61,8 +70,10 @@ class Controller:
         return self.mobiles
 
     def create_mobile(self,id):
-        self.mobiles['id'] = Mobile(id)
-        return self.mobiles['id']
+        self.mobiles[id] = Mobile(id)
+        print("New Mobile connected!")
+        return self.mobiles[id]
+
     
     
 
diff --git a/controllerPackage/controller/mobile.py b/controllerPackage/controller/mobile.py
index ff39ff4..b3f85a2 100644
--- a/controllerPackage/controller/mobile.py
+++ b/controllerPackage/controller/mobile.py
@@ -3,13 +3,108 @@ class Mobile:
     def __init__(self,id,help=False):
         self.id = id
         self.help = help
+        self.gx, self.gy, self.gz = 0, 0, 0
+        self.ax, self.ay, self.az = 0, 0 ,0
+        self.angle = 0
 
     def handle(self,data):
-        if not self.id == data['id']:
-            print('Its not my problem')
-        else:
-            print('ill handle it!')
-            print(data)
+        try:
+            evnType = data['evnType']
+
+            if evnType == 'Tap':
+                x = data['x']
+                y = data['y']
+                self.onTap(x,y)
+
+            elif evnType == 'Long Press':
+                x = data['x']
+                y = data['y']
+                self.onLongPress(x,y)
+
+            elif evnType == 'Rotation':
+                x = data['x']
+                y = data['y']
+                angle = data['angle']
+                self.angle += angle
+                self.onRotation(x,y,angle)
+
+            elif evnType == 'Pinch':
+                x = data['x']
+                y = data['y']
+                d = data['d']
+                self.onPinch(x,y,d)
+
+            elif evnType == 'Gyroscope':
+                gx = data['gx']
+                gy = data['gy']
+                gz = data['gz']
+                self.setGyroscope(gx,gy,gz)
+
+            elif evnType == 'Accelerometer':
+                ax = data['ax']
+                ay = data['ay']
+                az = data['az']
+                self.setAccelerometer(ax,ay,az)
+
+            elif evnType == 'Double Tap':
+                x = data['x']
+                y = data['y']
+                self.onDoubleTap(x,y)
+
+            elif evnType == 'Flick':
+                x = data['x']
+                y = data['y']
+                px = data['px']
+                py = data['py']
+                v = data['v']
+                self.onFlick(x,y,px,py,v)
+
+        except BaseException as e:
+            print(data,e)
+
+    def getGyroscope(self):
+        return self.gx, self.gy, self.gz
+
+    def setGyroscope(self,gx,gy,gz):
+        self.gx, self.gy, self.gz = gx, gy, gz
+    
+    def getAccelerometer(self):
+        return self.ax, self.ay, self.az
+        
+    def setAccelerometer(self,ax,ay,az):
+        self.ax, self.ay, self.az = ax, ay, az
+    
+    def getAngle(self):
+        return self.angle
+    
+    def setAngle(self,angle):
+        self.angle = angle
+
+
+    def onTap(self,x,y):
+        if self.help:
+            print('[TAP DETECTED] You can overwrite onTap(x,y) to handle it.')
+    
+    def onDoubleTap(self,x,y):
+        if self.help:
+            print('[DOUBLE TAP DETECTED] You can overwrite onDoubleTap(x,y) to handle it.')
+    
+    def onFlick(self,x,y,px,py,v):
+        if self.help:
+            print('[FLICK DETECTED] You can overwrite onFlick(x,y,px,py,v) to handle it.')
+    
+    def onLongPress(self,x,y):
+        if self.help:
+            print('[LONGPRESS DETECTED] You can overwrite onLongPress(x,y) to handle it.')
+    
+    def onRotation(self,x,y,angle):
+        if self.help:
+            print('[ROTATION DETECTED] You can overwrite onRotation(x,y,angle) to handle it.')
+    
+    def onPinch(self,x,y,d):
+        if self.help:
+            print('[PINCH DETECTED] You can overwrite onPinch(x,y,d) to handle it.')
+
     def on_left_swipe(self):
         if self.help:
             print('[LEFT SWIPE DETECTED] You can overwrite on_left_swipe to handle it.')
diff --git a/controllerPackage/test.py b/controllerPackage/test.py
index c7045e2..c18a2bb 100644
--- a/controllerPackage/test.py
+++ b/controllerPackage/test.py
@@ -1,8 +1,10 @@
-from controller.controller import Controller
-from time import sleep
+from controller import Controller
 
 c = Controller('a1b2c3')
-c.connect()
-print('luckly..')
+
+while(True):
+    print(c.mobile.getAngle())
+
+
 
 
diff --git a/controllerSite/LICENSE b/controllerSite/LICENSE
new file mode 100644
index 0000000..335ea9d
--- /dev/null
+++ b/controllerSite/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2018 The Python Packaging Authority
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/controllerSite/README.md b/controllerSite/README.md
new file mode 100644
index 0000000..3328c64
--- /dev/null
+++ b/controllerSite/README.md
@@ -0,0 +1,4 @@
+# ControllerSite
+
+Controller is both an Android App and a Python Package that enables you to connect your Python Code to a so-called "Controller".
+[Gitlab Viarezo](https://gitlab.viarezo.fr/2019hammoudf/controller)
diff --git a/controllerSite/controller_site.egg-info/PKG-INFO b/controllerSite/controller_site.egg-info/PKG-INFO
new file mode 100644
index 0000000..fc3c69f
--- /dev/null
+++ b/controllerSite/controller_site.egg-info/PKG-INFO
@@ -0,0 +1,19 @@
+Metadata-Version: 2.1
+Name: controller-site
+Version: 0.0.1
+Summary: Enables connection to ControllerApp
+Home-page: https://gitlab.viarezo.fr/2019hammoudf/controller
+Author: Faruk Hammoud
+Author-email: farukhammoud@student-cs.fr
+License: UNKNOWN
+Description: # ControllerSite
+        
+        Controller is both an Android App and a Python Package that enables you to connect your Python Code to a so-called "Controller".
+        [Gitlab Viarezo](https://gitlab.viarezo.fr/2019hammoudf/controller)
+        
+Platform: UNKNOWN
+Classifier: Programming Language :: Python :: 3
+Classifier: License :: OSI Approved :: MIT License
+Classifier: Operating System :: OS Independent
+Requires-Python: >=3.6
+Description-Content-Type: text/markdown
diff --git a/controllerSite/controller_site.egg-info/SOURCES.txt b/controllerSite/controller_site.egg-info/SOURCES.txt
new file mode 100644
index 0000000..604c093
--- /dev/null
+++ b/controllerSite/controller_site.egg-info/SOURCES.txt
@@ -0,0 +1,6 @@
+README.md
+setup.py
+controller_site.egg-info/PKG-INFO
+controller_site.egg-info/SOURCES.txt
+controller_site.egg-info/dependency_links.txt
+controller_site.egg-info/top_level.txt
\ No newline at end of file
diff --git a/controllerSite/controller_site.egg-info/dependency_links.txt b/controllerSite/controller_site.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/controllerSite/controller_site.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/controllerSite/controller_site.egg-info/top_level.txt b/controllerSite/controller_site.egg-info/top_level.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/controllerSite/controller_site.egg-info/top_level.txt
@@ -0,0 +1 @@
+
diff --git a/controllerSite/dist/controller_site-0.0.1-py3-none-any.whl b/controllerSite/dist/controller_site-0.0.1-py3-none-any.whl
new file mode 100644
index 0000000000000000000000000000000000000000..b94a69a5c783dcf3b8598e964c6c11bc29299392
GIT binary patch
literal 2195
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

literal 0
HcmV?d00001

diff --git a/controllerSite/setup.py b/controllerSite/setup.py
new file mode 100644
index 0000000..5c612f9
--- /dev/null
+++ b/controllerSite/setup.py
@@ -0,0 +1,22 @@
+import setuptools
+
+with open("README.md", "r") as fh:
+    long_description = fh.read()
+
+setuptools.setup(
+    name="controller_site", 
+    version="0.0.1",
+    author="Faruk Hammoud",
+    author_email="farukhammoud@student-cs.fr",
+    description="Enables connection to ControllerApp",
+    long_description=long_description,
+    long_description_content_type="text/markdown",
+    url="https://gitlab.viarezo.fr/2019hammoudf/controller",
+    packages=setuptools.find_packages(),
+    classifiers=[
+        "Programming Language :: Python :: 3",
+        "License :: OSI Approved :: MIT License",
+        "Operating System :: OS Independent",
+    ],
+    python_requires='>=3.6',
+)
\ No newline at end of file
-- 
GitLab