ytterb 0.2.155.223257 → 0.2.156.224221

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8345403c4693b512828e7ea0d46d7b8662c782be
4
- data.tar.gz: f61716a339556c467c1f8e5dfc8b46cc28c77cd2
3
+ metadata.gz: 7ddfec0f363a0299e160e9ba19aadeafe8c78815
4
+ data.tar.gz: 7e7f2e4317f2bd060a5a0f1df8a5fbf833996d4d
5
5
  SHA512:
6
- metadata.gz: 1817d2691f6501ab0f49cf57a36f5353f74ced167a8cfdd93da0cd0c9c5672a7de947a83b0ceb150eca6e73ed02cbdf1d34df34e89fc11c439f0338624ae42cb
7
- data.tar.gz: 1d6020a59ee7a5f4e07f0ba2f2c7951bde648ef83653d390dbe6be8d81a9b8dbb28c28a5fcf5eb61769ba0af854d0d0926c4b420814461c666d4c326da2fdbcc
6
+ metadata.gz: 9685d129dda69a06efeaadb3fbc136a53eeb7880db1b181b77b6e589891787fecb9edc90874b5bc16ab87220778c5d02244e24736584c0da0b276d810c7a9d4c
7
+ data.tar.gz: bd7448be6c64d5964f392fd54ecfd2507689c42f29a20efe9cae38d809147e07d29563517e1d2d677a0be5ed4be497239f87bd616ba66c7ec863f472df4cac83
data/Rakefile CHANGED
@@ -35,12 +35,14 @@ RSpec::Core::RakeTask.new
35
35
  task :test => :spec
36
36
  task :default => :spec
37
37
 
38
+ desc "builds the stock cache"
38
39
  task :build_stock_cache do
39
40
  require_relative 'lib/ytterb'
40
41
  Ytterb::StockSymbol::CacheBuilder.new
41
42
  end
42
43
 
44
+ desc "generate stock data freshness report"
43
45
  task :generate_freshness_report do
44
46
  require_relative 'lib/ytterb'
45
- raise "not implemented yet"
47
+ Ytterb::StockSymbol::Report.new(:type => :freshness).generate
46
48
  end
@@ -4,15 +4,22 @@ require_relative 'stock'
4
4
  module Ytterb
5
5
  module StockSymbol
6
6
  class MarketLoader
7
- def initialize
7
+ def initialize(options={})
8
8
  @stock_symbols = []
9
9
  path = Util::Settings.new.get_raw_symbol_list_data_dir
10
+ i=1
10
11
  Dir.entries(path).select {|f| !File.directory?(f) and /companylist_[a-zA-Z]+\.csv/ =~ f }.each do |file_to_process|
11
12
  market = /companylist_(?<market>[a-zA-Z]+)\.csv/.match(file_to_process)[:market]
12
13
  Stock.builder_from_csv(File.join(path,file_to_process),market) do |stock_symbol|
14
+ if options[:with_feedback]
15
+ print "."
16
+ print "#{i}\n" if (i%80==0)
17
+ i+=1
18
+ end
13
19
  @stock_symbols << stock_symbol
14
20
  end
15
21
  end
22
+ print "\n" if options[:with_feedback]
16
23
  end
17
24
 
18
25
  def industries
@@ -1,10 +1,26 @@
1
1
  require_relative '../util'
2
2
  require_relative '../yql'
3
+ require_relative '_req'
3
4
 
4
5
  module Ytterb
5
6
  module StockSymbol
6
7
  class Report
8
+
9
+ def initialize(options={})
10
+ if options[:type]
11
+ case options[:type]
12
+ when :freshness
13
+ @report = Freshness.new
14
+ else
15
+ raise "unknown report type #{options[:type]}"
16
+ end
17
+ end
18
+ end
7
19
 
20
+ def generate
21
+ @report.process
22
+ puts @report.output
23
+ end
8
24
  end
9
25
  end
10
26
  end
@@ -1,10 +1,28 @@
1
+ require 'date'
2
+
1
3
  require_relative '../../util'
2
4
  require_relative '../../yql'
5
+ require_relative 'report_base'
6
+
3
7
 
4
8
  module Ytterb
5
9
  module StockSymbol
6
- class Freshness
10
+ class Freshness < ReportBase
11
+ def process
12
+ @freshness = {}
13
+ @sml.stock_symbols.each do |smbl|
14
+ latest = smbl.history.keys.collect {|x| Date.parse(x)}.sort.last.to_s
15
+ @freshness[latest] ||= []
16
+ @freshness[latest] << smbl
17
+ end
18
+ end
7
19
 
20
+ def output
21
+ output = "Freshness report\n" <<
22
+ "----------------\n"
23
+ @freshness.keys.sort.reverse.each {|k| output += "'#{k}' => #{@freshness[k].size} \n" }
24
+ output
25
+ end
8
26
  end
9
27
  end
10
28
  end
@@ -0,0 +1,21 @@
1
+ require_relative '../../util'
2
+ require_relative '../../yql'
3
+
4
+ module Ytterb
5
+ module StockSymbol
6
+ class ReportBase
7
+ def initialize
8
+ @sml = MarketLoader.new(:with_feedback => true)
9
+ @settings = Util::Settings.new
10
+ end
11
+
12
+ def process
13
+ raise "not implemented"
14
+ end
15
+
16
+ def output
17
+ raise "not implemented"
18
+ end
19
+ end
20
+ end
21
+ end
@@ -46,7 +46,7 @@ module Ytterb
46
46
 
47
47
  def load
48
48
  symbol_history_file = self.class.get_settings.get_symbol_store_file(self.symbol)
49
- @history = Util::DataPersistHelper.load(curr_file) rescue nil
49
+ @history = Util::DataPersistHelper.load(symbol_history_file) rescue nil
50
50
  end
51
51
 
52
52
  def save
@@ -61,18 +61,22 @@ module Ytterb
61
61
  end
62
62
 
63
63
  def fetch_history(start_date = nil, end_date = nil)
64
- start_date ||= self.class.get_settings[:sync_from]
65
64
  @history||={}
66
- @history["items"]||={}
67
- start_date = @history[:max_sync_date] if @history and @history[:max_sync_date]
68
- @history[:max_sync_date] = Date.parse(Time.at(0).to_s).to_s
69
-
65
+ start_date = @history.keys.collect {|x| Date.parse(x)}.sort.last
66
+ start_date = start_date.to_s if start_date
67
+ start_date ||= self.class.get_settings[:sync_from]
68
+
70
69
  self.class.get_yql_client.get_symbol_historical(@options[:symbol], start_date, end_date).each do |line|
71
- @history["items"][line["Date"]] = line
72
- @history[:max_sync_date] = line["Date"] if Date.parse(line["Date"]) > Date.parse(@history[:max_sync_date])
70
+ @history[line["Date"]] = line
73
71
  end
74
72
  save
75
73
  end
74
+
75
+ def history
76
+ return {} unless @history
77
+ @history
78
+ end
79
+
76
80
  end
77
81
  end
78
82
  end # Ytterb
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ytterb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.155.223257
4
+ version: 0.2.156.224221
5
5
  platform: ruby
6
6
  authors:
7
7
  - thext
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-05 00:00:00.000000000 Z
11
+ date: 2014-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -107,6 +107,7 @@ files:
107
107
  - lib/ytterb/stock_symbol/market_loader.rb
108
108
  - lib/ytterb/stock_symbol/report.rb
109
109
  - lib/ytterb/stock_symbol/report_filters/freshness.rb
110
+ - lib/ytterb/stock_symbol/report_filters/report_base.rb
110
111
  - lib/ytterb/stock_symbol/stock.rb
111
112
  - lib/ytterb/util.rb
112
113
  - lib/ytterb/util/_req.rb