sqa 0.0.13 → 0.0.14

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8dd371b757bcc5da8e913681a06666715cbe88ca11f582df64d68ef305391d28
4
- data.tar.gz: 8b1851af5e7875266acbd3fb35a7ba108fdb267d7490eb19984819bba5f15538
3
+ metadata.gz: 41df647860d7465185b8f069d1fb51edcb540d4114cfd56c898e3373426e0bb8
4
+ data.tar.gz: 130b1023a4530a645ea90bf323c16dd4fb22a887222e073209b8edbfeeb6731f
5
5
  SHA512:
6
- metadata.gz: ab803635e2f85e71bebacab6be10cc345f6050a890c730a658741d4a3ae4530490be33fc692a3ced0e843e473cc5613644dc5a0c0d0bfd3a43d5c0d2b4d41510
7
- data.tar.gz: 7ee788d760d4020efb41baa3f5bc894cc4824d0308144b68f8c352bed03a01ce2049547bace95636264fab1c7b58ab12f97c99209433e2b32719db575017d25c
6
+ metadata.gz: b28c7bf4231e3ced4046e83f5afd256a0dc155500493b8d2c3cee43695e8ef203534a0642dc4028830f3d068653d6a9016a785b3343611a18209cb1cfb6f4694
7
+ data.tar.gz: 20ee19fe13781e473953ed4fcae73ce8e687ce1808fc74fa02d834364b7b02df14c7dab4cc0390efbae0f48328d71f27aab96318fad28052588d7b623abf4fe3
@@ -0,0 +1 @@
1
+ 524fd82ea9501f1b1b1a3bf3e0f1a500e675d3f4664d342b8b377995f310c1e40a597f61d8e0bf8d2fa8dd83202f7a415b517df371dbf370c25f59fb0fb42d96
@@ -0,0 +1 @@
1
+ c5eea4fb74e6ab7b7b1715a81598585ec540a3eb1e9b902ca339ff0a2ba9cc7624ae3f43e00b5fbbad1d3d510ed938e8f91154c0bee2e14d6503564b1b0ccfb1
data/lib/sqa/stock.rb CHANGED
@@ -1,6 +1,16 @@
1
1
  # lib/sqa/stock.rb
2
2
 
3
+ require 'active_support/core_ext/string' # for String#underscore
4
+ require 'hashie' # for Hashie::Mash
5
+
6
+
7
+ # SMELL: SQA::Stock is now pretty coupled to the Alpha Vantage
8
+ # API service. Should that stuff be extracted into a
9
+ # separate class and injected by the requiring program?
10
+
3
11
  class SQA::Stock
12
+ CONNECTION = Faraday.new(url: "https://www.alphavantage.co")
13
+
4
14
  attr_accessor :company_name
5
15
  attr_accessor :df # The DataFrane
6
16
  attr_accessor :ticker
@@ -51,4 +61,72 @@ class SQA::Stock
51
61
  def to_s
52
62
  "#{ticker} with #{@df.size} data points from #{@df.timestamp.first} to #{@df.timestamp.last}"
53
63
  end
64
+
65
+ # TODO: Turn this into a class Stock::Overview
66
+ # which is a sub-class of Hashie::Dash
67
+ def overview
68
+ return @overview unless @overview.nil?
69
+
70
+ temp = JSON.parse(
71
+ CONNECTION.get("/query?function=OVERVIEW&symbol=#{@ticker.upcase}&apikey=#{Nenv.av_api_key}")
72
+ .to_hash[:body]
73
+ )
74
+
75
+ # TODO: CamelCase hash keys look common in Alpha Vantage
76
+ # JSON; look at making a special Hashie-based class
77
+ # to convert the keys to normal Ruby standards.
78
+
79
+ temp2 = {}
80
+
81
+ string_values = %w[ address asset_type cik country currency description dividend_date ex_dividend_date exchange fiscal_year_end industry latest_quarter name sector symbol ]
82
+
83
+ temp.keys.each do |k|
84
+ new_k = k.underscore
85
+ temp2[new_k] = string_values.include?(new_k) ? temp[k] : temp[k].to_f
86
+ end
87
+
88
+ @overview = Hashie::Mash.new temp2
89
+ end
90
+
91
+
92
+ #############################################
93
+ ## Class Methods
94
+
95
+ class << self
96
+ @@top = nil
97
+
98
+ # Top Gainers, Losers and Most Active for most
99
+ # recent closed trading day.
100
+ #
101
+ def top
102
+ return @@top unless @@top.nil?
103
+
104
+ mash = Hashie::Mash.new(
105
+ JSON.parse(
106
+ CONNECTION.get(
107
+ "/query?function=TOP_GAINERS_LOSERS&apikey=#{Nenv.av_api_key}"
108
+ ).to_hash[:body]
109
+ )
110
+ )
111
+
112
+ keys = mash.top_gainers.first.keys
113
+
114
+ %w[top_gainers top_losers most_actively_traded].each do |collection|
115
+ mash.send(collection).each do |e|
116
+ keys.each do |k|
117
+ case k
118
+ when 'ticker'
119
+ # Leave it as a String
120
+ when 'volume'
121
+ e[k] = e[k].to_i
122
+ else
123
+ e[k] = e[k].to_f
124
+ end
125
+ end
126
+ end
127
+ end
128
+
129
+ @@top = mash
130
+ end
131
+ end
54
132
  end
data/lib/sqa/version.rb CHANGED
@@ -4,7 +4,7 @@ require 'sem_version'
4
4
  require 'sem_version/core_ext'
5
5
 
6
6
  module SQA
7
- VERSION = "0.0.13"
7
+ VERSION = "0.0.14"
8
8
 
9
9
  class << self
10
10
  def version
data/lib/sqa.rb CHANGED
@@ -3,6 +3,7 @@
3
3
 
4
4
  require 'active_support'
5
5
  require 'active_support/core_ext/string'
6
+ require 'amazing_print'
6
7
  require 'daru'
7
8
  require 'date'
8
9
  require 'descriptive_statistics'
@@ -22,6 +23,9 @@ module SQA
22
23
  class << self
23
24
  @@config = nil
24
25
 
26
+ # Initializes the SQA modules
27
+ # returns the configuration
28
+ #
25
29
  def init(argv=ARGV)
26
30
  if argv.is_a? String
27
31
  argv = argv.split()
@@ -44,13 +48,7 @@ module SQA
44
48
  Daru.lazy_update = config.lazy_update
45
49
  Daru.plotting_library = config.plotting_library
46
50
 
47
- if config.debug? || config.verbose?
48
- debug_me{[
49
- :config
50
- ]}
51
- end
52
-
53
- nil
51
+ config
54
52
  end
55
53
 
56
54
  def debug?() = @@config.debug?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dewayne VanHoozer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-22 00:00:00.000000000 Z
11
+ date: 2023-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -281,6 +281,8 @@ files:
281
281
  - checksums/sqa-0.0.10.gem.sha512
282
282
  - checksums/sqa-0.0.11.gem.sha512
283
283
  - checksums/sqa-0.0.12.gem.sha512
284
+ - checksums/sqa-0.0.13.gem.sha512
285
+ - checksums/sqa-0.0.14.gem.sha512
284
286
  - checksums/sqa-0.0.2.gem.sha512
285
287
  - checksums/sqa-0.0.3.gem.sha512
286
288
  - checksums/sqa-0.0.4.gem.sha512