mtcli 2.4.0__tar.gz → 2.6.0__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 (68) hide show
  1. {mtcli-2.4.0 → mtcli-2.6.0}/PKG-INFO +1 -1
  2. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/__init__.py +0 -2
  3. mtcli-2.6.0/mtcli/commands/conf.py +49 -0
  4. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/conf.py +0 -42
  5. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/mt.py +13 -12
  6. mtcli-2.6.0/mtcli/plugin.py +9 -0
  7. mtcli-2.6.0/mtcli/plugins/volume_medio/tests/__init__.py +0 -0
  8. {mtcli-2.4.0 → mtcli-2.6.0}/pyproject.toml +2 -1
  9. {mtcli-2.4.0 → mtcli-2.6.0}/LICENSE +0 -0
  10. {mtcli-2.4.0 → mtcli-2.6.0}/README.md +0 -0
  11. {mtcli-2.4.0/mtcli/plugins → mtcli-2.6.0/mtcli/commands}/__init__.py +0 -0
  12. {mtcli-2.4.0/mtcli → mtcli-2.6.0/mtcli/commands}/bars.py +0 -0
  13. {mtcli-2.4.0/mtcli → mtcli-2.6.0/mtcli/commands}/logs.py +0 -0
  14. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/conecta.py +0 -0
  15. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/data/__init__.py +0 -0
  16. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/data/base.py +0 -0
  17. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/data/csv.py +0 -0
  18. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/data/mt5.py +0 -0
  19. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/logger.py +0 -0
  20. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/models/__init__.py +0 -0
  21. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/models/model_bar.py +0 -0
  22. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/models/model_bars.py +0 -0
  23. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/models/model_chart.py +0 -0
  24. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/models/model_conf.py +0 -0
  25. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/models/model_consecutive_bars.py +0 -0
  26. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/models/model_rates.py +0 -0
  27. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/models/model_signals.py +0 -0
  28. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/models/model_unconsecutive_bar.py +0 -0
  29. {mtcli-2.4.0/mtcli/plugins/media_movel/tests → mtcli-2.6.0/mtcli/plugins}/__init__.py +0 -0
  30. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/agressao/__init__.py +0 -0
  31. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/agressao/command.py +0 -0
  32. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/agressao/conf.py +0 -0
  33. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/agressao/models/__init__.py +0 -0
  34. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/agressao/models/model_agressao.py +0 -0
  35. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/agressao/views/__init__.py +0 -0
  36. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/agressao/views/view_agressao.py +0 -0
  37. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/media_movel/__init__.py +0 -0
  38. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/media_movel/command.py +0 -0
  39. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/media_movel/conf.py +0 -0
  40. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/media_movel/models/__init__.py +0 -0
  41. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/media_movel/models/model_media_movel.py +0 -0
  42. {mtcli-2.4.0/mtcli/plugins/range_medio → mtcli-2.6.0/mtcli/plugins/media_movel}/tests/__init__.py +0 -0
  43. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/media_movel/tests/test_mm.py +0 -0
  44. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/media_movel/tests/test_model_media_movel.py +0 -0
  45. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/range_medio/__init__.py +0 -0
  46. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/range_medio/command.py +0 -0
  47. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/range_medio/conf.py +0 -0
  48. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/range_medio/models/__init__.py +0 -0
  49. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/range_medio/models/model_average_range.py +0 -0
  50. {mtcli-2.4.0/mtcli/plugins/volume_medio → mtcli-2.6.0/mtcli/plugins/range_medio}/tests/__init__.py +0 -0
  51. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/range_medio/tests/test_rm.py +0 -0
  52. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/volume_medio/__init__.py +0 -0
  53. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/volume_medio/command.py +0 -0
  54. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/volume_medio/conf.py +0 -0
  55. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/volume_medio/models/__init__.py +0 -0
  56. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/volume_medio/models/model_average_volume.py +0 -0
  57. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/plugins/volume_medio/tests/test_vm.py +0 -0
  58. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/views/__init__.py +0 -0
  59. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/views/view_close.py +0 -0
  60. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/views/view_full.py +0 -0
  61. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/views/view_high.py +0 -0
  62. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/views/view_low.py +0 -0
  63. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/views/view_min.py +0 -0
  64. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/views/view_open.py +0 -0
  65. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/views/view_ranges.py +0 -0
  66. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/views/view_rates.py +0 -0
  67. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/views/view_vars.py +0 -0
  68. {mtcli-2.4.0 → mtcli-2.6.0}/mtcli/views/view_volumes.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: mtcli
3
- Version: 2.4.0
3
+ Version: 2.6.0
4
4
  Summary: Aplicativo CLI para exibir gráficos do MetaTrader 5 em texto acessível ao leitor de telas
5
5
  License: GPL-3.0
6
6
  Keywords: MetaTrader 5,trading,CLI
@@ -1,3 +1 @@
1
1
  """Aplicativo de linha de comando para exibir graficos do MetaTrader 5 em texto."""
2
-
3
- from . import bars, conf, data, logger, models, views
@@ -0,0 +1,49 @@
1
+ """Gerencia configurações registradas no mtcli.ini."""
2
+
3
+ import os
4
+ import click
5
+ import MetaTrader5 as mt5
6
+ from mtcli.conecta import conectar, shutdown
7
+ from mtcli.models.model_conf import ConfModel
8
+
9
+
10
+ @click.command()
11
+ @click.option("--list", "list_", is_flag=True, help="Lista todas as configurações.")
12
+ @click.option("--set", "set_", nargs=2, help="Define o valor de uma configuração.")
13
+ @click.option("--get", help="Exibe o valor de uma configuração.")
14
+ @click.option("--reset", is_flag=True, help="Redefine as configurações padrão.")
15
+ def conf(list_, set_, get, reset):
16
+ """Gerencia configurações registradas no mtcli.ini."""
17
+ conf = ConfModel("mtcli.ini")
18
+ config = conf.carregar()
19
+
20
+ if list_:
21
+ for key in config["DEFAULT"]:
22
+ click.echo(f"{key} = {config['DEFAULT'][key]}")
23
+
24
+ elif set_:
25
+ chave, valor = set_
26
+ config["DEFAULT"][chave] = valor
27
+ conf.salvar(config)
28
+ click.echo(f"Configuração '{chave}' definida como '{valor}'.")
29
+
30
+ elif get:
31
+ valor = config["DEFAULT"].get(get)
32
+ if valor is not None:
33
+ click.echo(f"{get} = {valor}")
34
+ else:
35
+ click.echo(f"Configuração '{get}' não encontrada.")
36
+
37
+ elif reset:
38
+ config["DEFAULT"].clear()
39
+ conf.salvar(config)
40
+ click.echo("Configurações redefinidas.")
41
+
42
+ else:
43
+ click.echo(
44
+ "Nenhuma opção fornecida. Use --help para ver as opções disponíveis."
45
+ )
46
+
47
+
48
+ if __name__ == "__main__":
49
+ conf()
@@ -102,45 +102,3 @@ timeframes = [
102
102
  "m2",
103
103
  "m1",
104
104
  ]
105
-
106
-
107
- @click.command()
108
- @click.option("--list", "list_", is_flag=True, help="Lista todas as configurações.")
109
- @click.option("--set", "set_", nargs=2, help="Define o valor de uma configuração.")
110
- @click.option("--get", help="Exibe o valor de uma configuração.")
111
- @click.option("--reset", is_flag=True, help="Redefine as configurações padrão.")
112
- def conf(list_, set_, get, reset):
113
- """Gerencia configurações registradas no mtcli.ini."""
114
- conf = ConfModel("mtcli.ini")
115
- config = conf.carregar()
116
-
117
- if list_:
118
- for key in config["DEFAULT"]:
119
- click.echo(f"{key} = {config['DEFAULT'][key]}")
120
-
121
- elif set_:
122
- chave, valor = set_
123
- config["DEFAULT"][chave] = valor
124
- conf.salvar(config)
125
- click.echo(f"Configuração '{chave}' definida como '{valor}'.")
126
-
127
- elif get:
128
- valor = config["DEFAULT"].get(get)
129
- if valor is not None:
130
- click.echo(f"{get} = {valor}")
131
- else:
132
- click.echo(f"Configuração '{get}' não encontrada.")
133
-
134
- elif reset:
135
- config["DEFAULT"].clear()
136
- conf.salvar(config)
137
- click.echo("Configurações redefinidas.")
138
-
139
- else:
140
- click.echo(
141
- "Nenhuma opção fornecida. Use --help para ver as opções disponíveis."
142
- )
143
-
144
-
145
- if __name__ == "__main__":
146
- conf()
@@ -2,11 +2,6 @@
2
2
 
3
3
  import click
4
4
 
5
- from mtcli.bars import bars
6
- from mtcli.conf import conf
7
- from mtcli.logs import logs
8
-
9
-
10
5
  try:
11
6
  from importlib.metadata import entry_points
12
7
  except ImportError:
@@ -20,11 +15,6 @@ def mt():
20
15
  pass
21
16
 
22
17
 
23
- mt.add_command(bars, name="bars")
24
- mt.add_command(conf, name="conf")
25
- mt.add_command(logs, name="logs")
26
-
27
-
28
18
  def load_plugins():
29
19
  eps = entry_points()
30
20
  plugins = (
@@ -32,9 +22,20 @@ def load_plugins():
32
22
  if hasattr(eps, "select")
33
23
  else eps.get("mtcli.plugins", [])
34
24
  )
25
+
35
26
  for ep in plugins:
36
- cmd = ep.load()
37
- mt.add_command(cmd)
27
+ plugin = ep.load()
28
+
29
+ # Caso seja uma função register(cli)
30
+ if callable(plugin) and not isinstance(plugin, click.Command):
31
+ plugin(mt) # chama register(cli)
32
+ # Caso seja um comando Click diretamente
33
+ elif isinstance(plugin, click.Command):
34
+ mt.add_command(plugin)
35
+ else:
36
+ raise TypeError(
37
+ f"Plugin {ep.name} inválido: não é um comando nem função register."
38
+ )
38
39
 
39
40
 
40
41
  load_plugins()
@@ -0,0 +1,9 @@
1
+ from mtcli.commands.bars import bars
2
+ from mtcli.commands.conf import conf
3
+ from mtcli.commands.logs import logs
4
+
5
+
6
+ def register(cli):
7
+ cli.add_command(bars)
8
+ cli.add_command(conf)
9
+ cli.add_command(logs)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mtcli"
3
- version = "2.4.0"
3
+ version = "2.6.0"
4
4
  description = "Aplicativo CLI para exibir gráficos do MetaTrader 5 em texto acessível ao leitor de telas"
5
5
  authors = [
6
6
  {name = "Valmir França da Silva",email = "vfranca3@gmail.com"}
@@ -24,6 +24,7 @@ issues = "https://github.com/vfranca/mtcli/issues"
24
24
  mt = "mtcli.mt:mt"
25
25
 
26
26
  [project.entry-points."mtcli.plugins"]
27
+ mtcli = "mtcli.plugin:register"
27
28
  media_movel = "mtcli.plugins.media_movel:mm"
28
29
  range_medio = "mtcli.plugins.range_medio:rm"
29
30
  volume_medio = "mtcli.plugins.volume_medio:vm"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes