[GNC] Stomped with interface between GNC (v4.18) and F::Q (v1.61_02)

Kalpesh Patel kalpesh.patel at usa.net
Wed May 8 12:05:34 EDT 2024


Hi GNC User community -

 

I am developing a second F::Q module of my own. The first one works fine but
second one seems to NOT want to work no matter what. I am in middle of
debugging it and it has stomped me why not so hoping someone might be able
to help me zero in where I am falling sort on the flow for it. I am working
with F::Q v1.61_02 and GNC v4.14 (4.14+(2023-03-25) build) running on
Windows 11. (Note: I don't believe any interface change has taken place in
GNC v5.x that would cause this but correct me here if I am wrong.).

 

Invoking GNC with debug shows that return value is #f, which means something
went wrong (run_executor is the "label" for my module and other modules work
fine from the debug output):

 

11:19:24 DEBUG <gnc.scm> handling-request: (currency INR USD)

* 11:19:24 DEBUG <gnc.scm> results: ((INR (symbol . INR) (gnc:time-no-zone .
2024-05-08 11:19:11) (last . 3/250) (currency . USD)))

* 11:20:38 DEBUG <gnc.scm> ALPHAVANTAGE_API_KEY=NOTAREALAPIKEY

* 11:20:39 DEBUG <gnc.scm> handling-request: (tsp C S L2030 I)

* 11:20:43 DEBUG <gnc.scm> results: ((C (symbol . C) (gnc:time-no-zone .
2024-05-07 12:00:00) (last . 812423/10000) (currency . USD)) (S (symbol . S)
(gnc:time-no-zone . 2024-05-07 12:00:00) (last . 4009/50) (currency . USD))
(L2030 (symbol . L2030) (gnc:time-no-zone . 2024-05-07 12:00:00) (last .
237163/5000) (currency . USD)) (I (symbol . I) (gnc:time-no-zone .
2024-05-07 12:00:00) (last . 42507/1000) (currency . USD)))

* 11:20:43 DEBUG <gnc.scm> handling-request: (run_executor BK)

* 11:20:43 DEBUG <gnc.scm> results: (#f)

* 11:20:43 DEBUG <gnc.scm> handling-request: (yahoojson ^NYA)

* 11:20:44 DEBUG <gnc.scm> results: ((^NYA (symbol . ^NYA) (gnc:time-no-zone
. 2024-05-08 12:00:00) (last . 2247813/125) (currency . USD)))

 

Following is debug run from command line of gnc-fq-dump (which provides all
necessary fields for quote to be valid as it does not show '** This stock
quote cannot be used by GnuCash!' message):

 

C:\Users\kalpesh>perl "c:\Program Files (x86)\gnucash\bin\gnc-fq-dump" -v
run_executor BK

{snip}

### [Wed May  8 11:34:40 2024]   %info : {

###                                        'BKISIN' => '-',

###                                        'BKcurrency' => 'USD',

###                                        'BKdate' => '05/08/2024',

###                                        'BKisodate' => '2024-05-08',

###                                        'BKmethod' => 'run_executor',

###                                        'BKprice' => '57.64500045776367',

###                                        'BKsuccess' => '1',

###                                        'BKsymbol' => 'BK',

###                                        'BKtimezone' => 'EDT'

###                                      }

Finance::Quote fields Gnucash uses:

    symbol: BK                   <=== required

      date: 05/08/2024           <=== recommended

  currency: USD                  <=== required

      last:                      <=\

       nav:                      <=== one of these

     price: 57.64500045776367    <=/

  timezone: EDT                  <=== optional

 

All fields returned by Finance::Quote for stock BK

 

stock           field  value

-----           -----  -----

BK               ISIN: -

BK           currency: USD

BK               date: 05/08/2024

BK            isodate: 2024-05-08

BK             method: run_executor

BK              price: 57.64500045776367

BK            success: 1

BK             symbol: BK

BK           timezone: EDT

 

 

C:\Users\kalpesh>

 

When running same command via YahooJSON following is the output which works
fine (I see that it does have more information returned back):

 

C:\Users\kalpesh>perl "c:\Program Files (x86)\gnucash\bin\gnc-fq-dump" -v
yahoojson BK 

{snip}

Finance::Quote fields Gnucash uses:

    symbol: BK                   <=== required

      date: 05/08/2024           <=== recommended

  currency: USD                  <=== required

      last: 57.605               <=\

       nav:                      <=== one of these

     price:                      <=/

  timezone:                      <=== optional

 

All fields returned by Finance::Quote for stock BK

 

stock           field  value

-----           -----  -----

BK              close: 57.4

BK           currency: USD

BK               date: 05/08/2024

BK          div_yield: 2.8397212

BK                eps: 3.99

BK           exchange: NYSE

BK               high: 57.75

BK            isodate: 2024-05-08

BK               last: 57.605

BK                low: 57.12

BK             method: yahoo_json

BK               name: BK (The Bank of New York Mellon Cor)

BK               open: 57.23

BK                 pe: 14.437344

BK            success: 1

BK             symbol: BK

BK               type: EQUITY

BK             volume: 730814

BK         year_range:        39.65 - 58.28

 

 

C:\Users\kalpesh>

 

Given that, why would GNC not accept the pricing? Does it have to be in a
particular order what is returned back, or is there anything else that GNC
wants but is not present in the returned quote from my module? Only
difference I see is that my module returns "price" parameter while YahooJSON
returns "last" but gnc-fq-dump states that either is acceptable for GNC
(just for kicks-&-giggles I set my module to return last instead of price
and removed timezone but it made no difference, ie., GNC still did not take
it as valid pricing). I prefer to limit number of returned elements to be
very minimal for speed reasons but still entails valid pricing. Any insight
will be greatly appreciated.

 

 

 



More information about the gnucash-user mailing list