ytterb 0.2.155.223257 → 0.2.156.224221

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
  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