remote-run-everything 2.0.6__tar.gz → 2.0.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. {remote_run_everything-2.0.6/remote_run_everything.egg-info → remote_run_everything-2.0.7}/PKG-INFO +1 -1
  2. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/pyproject.toml +4 -1
  3. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/__init__.py +1 -0
  4. remote_run_everything-2.0.7/remote_run_everything/deploy/by_sftp.py +75 -0
  5. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7/remote_run_everything.egg-info}/PKG-INFO +1 -1
  6. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything.egg-info/SOURCES.txt +1 -0
  7. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/LICENSE +0 -0
  8. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/MANIFEST.in +0 -0
  9. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/README.md +0 -0
  10. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/db/__init__.py +0 -0
  11. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/db/backup.py +0 -0
  12. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/db/crud_sqlalchemy.py +0 -0
  13. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/db/crude_duck.py +0 -0
  14. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/db/kv_store.py +0 -0
  15. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/deploy/__init__.py +0 -0
  16. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/deploy/by_http.py +0 -0
  17. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/deploy/by_http_tool.py +0 -0
  18. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/deploy/record_mod.py +0 -0
  19. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/nosql/__init__.py +0 -0
  20. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/nosql/no_sql.py +0 -0
  21. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/nosql/no_sql_mysql.py +0 -0
  22. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/nosql/no_sql_pg.py +0 -0
  23. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/nosql/no_sql_tool.py +0 -0
  24. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/tools/__init__.py +0 -0
  25. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/tools/common.py +0 -0
  26. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/tools/common1.py +0 -0
  27. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/tools/decorators.py +0 -0
  28. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/tools/sqlacodegen_go_struct.py +0 -0
  29. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/vsconf/conf_txt.py +0 -0
  30. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything/vsconf/core.py +0 -0
  31. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything.egg-info/dependency_links.txt +0 -0
  32. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/remote_run_everything.egg-info/top_level.txt +0 -0
  33. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/setup.cfg +0 -0
  34. {remote_run_everything-2.0.6 → remote_run_everything-2.0.7}/test/test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: remote_run_everything
3
- Version: 2.0.6
3
+ Version: 2.0.7
4
4
  Summary: Deploy Tools
5
5
  Author-email: Wang Qi <wangmarkqi@gmail.com>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "remote_run_everything"
3
- version = "2.0.6"
3
+ version = "2.0.7"
4
4
  authors = [
5
5
  { name="Wang Qi", email="wangmarkqi@gmail.com" },
6
6
  ]
@@ -18,3 +18,6 @@ license-files = ["LICEN[CS]E*"]
18
18
  Homepage = 'https://github.com/wangmarkqi/remote_run_everything'
19
19
  Issues = "https://github.com/wangmarkqi/remote_run_everything/issues"
20
20
 
21
+ [build-system]
22
+ requires = ["setuptools>=40.8.0", "wheel","sqlalchemy","arrow","duckdb","requests","paramiko"]
23
+ build-backend = "setuptools.build_meta"
@@ -1,4 +1,5 @@
1
1
  from remote_run_everything.deploy.by_http import ByHttp
2
+ from remote_run_everything.deploy.by_sftp import BySftp
2
3
 
3
4
  from remote_run_everything.db.crude_duck import CrudeDuck
4
5
  from remote_run_everything.db.crud_sqlalchemy import Crud
@@ -0,0 +1,75 @@
1
+ import os.path
2
+ from remote_run_everything.db.crud_sqlalchemy import Crud
3
+ from remote_run_everything.deploy.record_mod import Up, Down
4
+ from remote_run_everything.db.crude_duck import CrudeDuck
5
+ from remote_run_everything.deploy.by_http_tool import ByHttpTool
6
+ import paramiko
7
+ from pathlib import Path
8
+
9
+ class BySftp:
10
+ def __init__(self, host,port,user,pwd, local, remote, dbpath):
11
+ self.host=host
12
+ self.cli=self.sftp_cli(host,port,user,pwd)
13
+ self.local = local
14
+ self.remote = remote
15
+ self.dbpath = dbpath
16
+ self.t = ByHttpTool()
17
+ def sftp_cli(self,host,port,user,pwd):
18
+ ssh = paramiko.SSHClient()
19
+ ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
20
+ transport = paramiko.Transport(host, port)
21
+ transport.connect(None, user, pwd)
22
+ cli= paramiko.SFTPClient.from_transport(transport)
23
+ return cli
24
+
25
+ def up(self, disallow_keys=None):
26
+ c = Crud()
27
+ eg = c.sqlite_engine(self.dbpath)
28
+ c.create_table(eg, Up)
29
+ con = CrudeDuck().install_sql_ext(self.dbpath)
30
+ mod = Up
31
+ loc_files = self.t.all_local_path(self.local, disallow_keys)
32
+ add_l = []
33
+ for dic in loc_files:
34
+ path = dic['path']
35
+ t = dic['time']
36
+ sql = f"select * from up where path='{path}' and time='{t}' and host='{self.host}' "
37
+ res = con.sql(sql).fetchone()
38
+ if res is not None: continue
39
+
40
+ rpath = self.t.loc2remote(path, self.local, self.remote)
41
+ rpath=rpath.replace("\\","/")
42
+ lpath=path.replace("\\","/")
43
+ res=self.upload_file(rpath, lpath)
44
+ print("up==", path,res)
45
+ if res=="ok":
46
+ sql = f"delete from up where path='{path}' and host='{self.host}'"
47
+ con.execute(sql).commit()
48
+ dic['host'] = self.host
49
+ add_l.append(dic)
50
+ con.commit()
51
+ c.insert_many(eg, mod, add_l)
52
+
53
+ def mkdirs(self,fpath):
54
+ dpath = os.path.dirname(fpath)
55
+ l=dpath.split('/')
56
+ if len(l)==0:return
57
+ if l[0]=="":l[0]="/"
58
+ for i in range(len(l)+1):
59
+ if i<=1:continue
60
+ ll=l[:i]
61
+ path=os.path.join(*ll)
62
+ try:
63
+ # default mod 777
64
+ path=path.replace('\\','/')
65
+ self.cli.mkdir(path)
66
+ except Exception as e:
67
+ pass
68
+
69
+ def upload_file(self, rpath, lpath):
70
+ self.mkdirs(rpath)
71
+ try:
72
+ self.cli.put(lpath, rpath)
73
+ return "ok"
74
+ except:
75
+ return "fail"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: remote_run_everything
3
- Version: 2.0.6
3
+ Version: 2.0.7
4
4
  Summary: Deploy Tools
5
5
  Author-email: Wang Qi <wangmarkqi@gmail.com>
6
6
  License-Expression: MIT
@@ -15,6 +15,7 @@ remote_run_everything/db/kv_store.py
15
15
  remote_run_everything/deploy/__init__.py
16
16
  remote_run_everything/deploy/by_http.py
17
17
  remote_run_everything/deploy/by_http_tool.py
18
+ remote_run_everything/deploy/by_sftp.py
18
19
  remote_run_everything/deploy/record_mod.py
19
20
  remote_run_everything/nosql/__init__.py
20
21
  remote_run_everything/nosql/no_sql.py