yfinance 1.0.10 → 1.0.11
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 +4 -4
- data/lib/yfinance.rb +12 -5
- data/test/yfinance_test.rb +9 -7
- data/yfinance.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 246dc6eddd72d55071b137e94a5adc17850be66c
|
4
|
+
data.tar.gz: 13f32b0307fa2bdfd2404c9e2db65bb15afd01d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7e3ed3d417f8b921f8d71945533d73d31b0d6b02d4ced8b5ef24856d5cb147dbfcba4cc662627b3aaa9ffa6023931730dc998be97f44b8b9b9c02ffb450aa28
|
7
|
+
data.tar.gz: 367305c56a9a76add28e559bcfe0dc4869b3e0dea91501bd9ab43afeb3591cbb7d9b6e5317004ab13b48b2be1923f3d7b2e3b69ad507ff059ca37d944ba90cf4
|
data/lib/yfinance.rb
CHANGED
@@ -101,6 +101,9 @@ class Yfinance
|
|
101
101
|
:stock_exchange => "x",
|
102
102
|
:dividend_yield => "y"
|
103
103
|
}
|
104
|
+
|
105
|
+
# these options do not mess up the CSV parser by including ',' in the data fields
|
106
|
+
SAVE_OPTIONS = [:symbol, :name, :average_daily_volume, :dividend_per_share, :earnings_per_share, :eps_estimate_current_year, :eps_estimate_next_year, :eps_estimate_next_quarter, :low_52_weeks, :high_52_weeks, :market_capitalization, :ebitda, :moving_average_50_day, :moving_average_200_day, :ex_dividend_date, :peg_ratio, :price_eps_estimate_current_year, :shares_owned, :volume, :stock_exchange, :dividend_yield, :change, :previous_close, :last_trade_trade]
|
104
107
|
|
105
108
|
HISTORICAL_MODES = {
|
106
109
|
:daily => "d",
|
@@ -126,7 +129,7 @@ class Yfinance
|
|
126
129
|
options[:raw] ||= true
|
127
130
|
options[:period] ||= :daily
|
128
131
|
symbols_array.each do |symbol|
|
129
|
-
symbol = symbol.rstrip
|
132
|
+
symbol = symbol.rstrip.upcase
|
130
133
|
url = "http://ichart.finance.yahoo.com/table.csv?s=#{URI.escape(symbol)}&d=#{end_date.month-1}&e=#{end_date.day}&f=#{end_date.year}&g=#{HISTORICAL_MODES[options[:period]]}&a=#{start_date.month-1}&b=#{start_date.day}&c=#{start_date.year}&ignore=.csv"
|
131
134
|
@hydra.queue(make_request(url, symbol, options, callback))
|
132
135
|
end
|
@@ -147,6 +150,7 @@ class Yfinance
|
|
147
150
|
|
148
151
|
def quotes(symbols_array, columns_array = [:symbol, :last_trade_price, :last_trade_date, :change, :previous_close], options = {})
|
149
152
|
options[:raw] ||= true
|
153
|
+
symbols_array = symbols_array.map(&:upcase)
|
150
154
|
ret = Hash[symbols_array.each_slice(1).to_a]
|
151
155
|
symb_str = symbols_array.join("+")
|
152
156
|
columns_array.unshift(:symbol)
|
@@ -158,9 +162,13 @@ class Yfinance
|
|
158
162
|
result = CSV.parse(response.body, headers: columns_array)
|
159
163
|
result.each do |row|
|
160
164
|
h = row.to_hash
|
161
|
-
|
162
|
-
|
165
|
+
if h[:name] == h[:symbol]
|
166
|
+
ret[h[:symbol]] = nil
|
167
|
+
else
|
168
|
+
ret[h[:symbol]] = h
|
169
|
+
end
|
163
170
|
end
|
171
|
+
return ret
|
164
172
|
rescue
|
165
173
|
return {error: @error_message}
|
166
174
|
end
|
@@ -170,8 +178,7 @@ class Yfinance
|
|
170
178
|
end
|
171
179
|
|
172
180
|
def quotes_all_info(symbols_array)
|
173
|
-
|
174
|
-
quotes(symbols_array, columns_array)
|
181
|
+
quotes(symbols_array, SAVE_OPTIONS)
|
175
182
|
end
|
176
183
|
|
177
184
|
private
|
data/test/yfinance_test.rb
CHANGED
@@ -21,28 +21,30 @@ class YfinanceTest < Minitest::Test
|
|
21
21
|
|
22
22
|
def test_it_work_for_an_invalid_symbol
|
23
23
|
yf = Yfinance.new
|
24
|
-
res = yf.
|
24
|
+
res = yf.quotes_all_info(["TWTR", "MADASDFASD", "AAPL"])
|
25
25
|
assert_equal res.length, 3
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
def test_it_works_requesting_all_data_for_valid_symbols
|
29
29
|
yf = Yfinance.new
|
30
30
|
res = yf.quotes_all_info(["MSFT", "TWTR", "TEP.L"])
|
31
|
-
|
32
|
-
assert_equal res.length, 3
|
31
|
+
assert_equal 3, res.length
|
33
32
|
assert_equal "MSFT", res["MSFT"][:symbol]
|
33
|
+
assert_equal "TWTR", res["TWTR"][:symbol]
|
34
|
+
assert_equal "TEP.L", res["TEP.L"][:symbol]
|
34
35
|
end
|
35
|
-
|
36
|
+
|
36
37
|
def test_it_works_requesting_all_data_for_one_invalid_symbol
|
37
38
|
yf = Yfinance.new
|
38
39
|
res = yf.quotes_all_info(["asdf"])
|
39
|
-
|
40
|
+
assert_nil res["ASDF"]
|
40
41
|
end
|
41
42
|
|
42
43
|
def test_it_returns_an_error_for_a_mix_of_valid_and_invalid__symbols
|
43
44
|
yf = Yfinance.new
|
44
45
|
res = yf.quotes_all_info(["AAPL", "bcxza", "MSFT"])
|
45
|
-
assert_equal
|
46
|
+
assert_equal 3, res.length
|
47
|
+
assert_nil res["BCXZA"]
|
46
48
|
end
|
47
49
|
#
|
48
50
|
def test_historical_data_works
|
data/yfinance.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'yfinance'
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "yfinance"
|
8
|
-
spec.version = "1.0.
|
8
|
+
spec.version = "1.0.11"
|
9
9
|
spec.authors = ["Alexander Potrykus"]
|
10
10
|
spec.email = ["alexander@risklog.io"]
|
11
11
|
spec.summary = %q{Fetches Yahoo! Finance data using parallel HTTP requests.}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yfinance
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Potrykus
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|