* definitely not juan walking me through everything
* trying to pretty it
* start doing same axis with hold
* actually do the sameaxis correctly
* Better docstring
* Fix mypy
* mypy3
* pylint fixes
* Add message about candle
* might work, might now
* Update stocks_controller.py
* Update plotly_helper.py
* Update plotly_helper.py
* Make fmp view legends nice
* Update helper_funcs.py
* Add custom legends for when hold on
* bigger font
* add colors to new axes
* add custom title, remove location
* Start guide.
* Update plot-holds.md
Add figures
* More words
* Update plot-holds.md
* Finish guide
* tests
* Sneak in test updates for release
* guess not sneak test
---------
Co-authored-by: teh_coderer <me@tehcoderer.com>
* adding BaseModel
* initial version of the system model
* creating setup functions and removing constants from config_terminal
* removing log_supress const
* fix test
* merge
* system handler
* fix import
* centralized configs setup
* repr to use the BaseModel
* updating i18n dict location
* ignoring warning on wrong type-var
* ruff
* Update openbb_terminal/core/models/system_model.py
Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com>
* Update openbb_terminal/core/models/system_model.py
Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com>
* import literal
* loading env files before the plot backend is called
* fix tests/openbb_terminal/test_terminal_helper.py
* tests need to have i18n initialized
* fix seeking_alpha tests
---------
Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com>
* remove refs to featureflags
* test refs to obbff
* test refs to obbff
* ruff
* fix unittest
---------
Co-authored-by: James Maslek <jmaslek11@gmail.com>
* small bug
* small bug on routines list
* guest as default
* limit logout to users2
* simpler this way
* add logout
* move logout to account & add env var
* put authentication under env var
* fix tests
* remove login
* remove openbb vars on login
* ruff
* revert .toml
* Delete Icon
* Update .env
* fix sdk guest not loading keys
* ruff
* remove press enter & --login
* ruff
* move env load
* load env
* move dot env loading to terminal.py
* fix user sdk login mixing .env with user
* now it works
* fix reset
* fix tests
* ruff
* Login on the SDK using the OpenBB Personal Access Token (#4206)
* openbb key on keys menu
* adding sdk endpoints
* adding login via token to the sdk
* base url
* rename to personal access token
* added docstrings and examples
* openbb is special
* removing extra break line
* making keys working with the personal access token
* resolve conflicting tests
* Revert "resolve conflicting tests"
This reverts commit 2fca2c0ec3.
* using custom requests
* tests
* tests
* tests
* using process_session_response instead
* rewriting some tests
* Fix sdk guest not loading keys (#4207)
* fix sdk guest not loading keys
* ruff
* remove comment
* tests
---------
Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com>
Co-authored-by: Diogo Sousa <montezdesousa@gmail.com>
Co-authored-by: James Maslek <jmaslek11@gmail.com>
* test record mode vcr none
* remove yes from tests yml
* specify modules to reload
* try disable check api
* UPdate spec file
* Small stocks bug
* avoid reloading in test mode
* will this work?
* skip session tests
* try with env var as well
* mock sdk reload
* pylint
* bump poetry on python 3.8
* adapt to python 3.8
* adapt to python 3.8 remaining tests
* Tests : update cassettes
* Fix linting
* Makes login conditions simpler
* Tests : txt
---------
Co-authored-by: James Maslek <jmaslek11@gmail.com>
Co-authored-by: Chavithra <chavithra@gmail.com>
Co-authored-by: Henrique Joaquim <h.joaquim@campus.fct.unl.pt>
* Add intrinio load functions into stocks and options. First try at options sdk with intrinio
* Add a new eodchain function + add intrinio model test
* Unit tests for intrinio options
* dont add eodchain yet -- wait for other PR
* Make null handling better + add intrinio sdk to reqs
* mock dates
* update test
* fix ruff
* black and gitignore
* Clean up and make options load class
* Clean up clean up
* Fix intrinio stock load
* Get requirements even
* sort intrinio chain and fix
* Dont rename the candle input argument
* Fix bug #4060
* Historical option prices
* Add grhist from intrinio and isort
* Fix things for presentation
* Fix tradier chain printing
* YahooFInance chain cleanup
* standardize nasdaq
* Format intrinio
* Cleanup SDK
* Fix tests
* mypy
* Clean up trail map and edit docs
* Fix mapping of info on sdk
* Add intrinio to deps
* Add a rich progress bar to expirations :)
* controller test
* Silly error + tests
* Required arg
* bad assert statememts
* Mutable default
* Keys and switch another tqdm
* BizIns Tests
* tests
* Last Test
* import order
* pylint
* no login, go to prompt
* add logout and whoami
* clear before prompt
* black
* these are unecessary
* error
* improve login prompt message
* login does not follow the controller pattern, so will name it differently
* nop
* move logout and change to results
* change return obj
* ruff
* pyupgrade
* remove user from statics
* message
* fetch configs at start
* remove unecessary func
* unecessary dataclass
* change user vars
* change login flow
* remote logout should not be used
* simplify
* fix double exit logout bug
* wrong exception
* apply keys
* change controller
* mypy
* save if no internet
* pylint
* logout everywhere
* breaking changes: move to local/hub models
* unused import
* fix logout bug
* whoami in guest mode
* add todo
* small bug guest allowed
* limit flair length
* fix bug on user pull
* logout working
* handle no connection
* logout user when logout
* remove keys push
* split logger funcs
* commant apply configs for now
* account to session
* rename user
* clear sounds better
* breaking changes: splitting guest from logged users
* pull imports up
* delete session model
* move logout func
* add ability to save and apply keys from remote
* no sensitive keys
* add support for feature flags
* unecessary print
* allow settings from differnt modules
* change setff to static
* change way to set ff
* fix bug in applying configs
* simplify obbff application
* bug on setting configs
* allow text ff
* obbff in settings
* add upload to cfg_plot 1
* data sources + backend
* this solves circular import?
* move create_session to model
* rever logs changes, not needed for now
* sync optionally
* outline account controller interface
* don't sync when guest
* block guest on installer
* or not and
* start routines
* fix bug on ff, settings
* is installer
* implementing chavi suggestions
* fix colors on installer prompt
* Logging login (#4046)
* basic logging for the login
* removing unused import
* hacking the logs custom filter to not filter the email
* black
* cooping with the new changes
* removing redundant method
* ruff
* ruff
* mypy
* SDK login (#4051)
* sdk login
* adding to the trail map
* minor fix
* improve sdk expirience
* adapting to new changes
* add docstrings
* block guest from account
* change guest msg
* change guest messages
* add sync on/off
* display onoff
* missing paragraph
* fix glitch on logout
* add sys clear
* filtering password
* filtering the email from user
* avoid writing to multiple log files if a user logs out
* fix bug, guest allowed in installer without connection
* log user on the sdk
* split login from lauch
* add clear and change messages on account
* docstrings
* start pull cmd
* change account menu description
* Fix login bug and decouple some logic (#4056)
* fix bug, guest allowed in installer without connection
* split login from lauch
* improvements on the sdk login
---------
Co-authored-by: hjoaquim <h.joaquim@campus.fct.unl.pt>
* sync fix
* change account controller description
* ruff
* add help on account cmds
* update clear prompt
* fix email not in jwt
* remove jwt from requiremnts
* pull command output
* remove character
* pull cmd when no data
* add space below whoami
* fix log filenotfound exception
* changed arg name
* delete .hist on logout
* add asteriscs to password
* pylint
* uncomment rich config
* show only diffs on pull
* black#
* warn when no changes#
* pull msg was switched
* apply diff only
* breaking?: strbool change
* reduce some code
* add timeout to hub requests
* black
* add remote logout
* success msg only if success
* remove colors in prompt
* update docstrings
* keep timeout outside funcs
* update clear
* clear and patch
* delete session
* routine upload
* move .his file to .openbb folder
* change apply configs
* refactor logout
* remove mixed portfolio changes
* fix bug in lock file
* fix bug pwidth, pheight are floats
* fix sources command & add choices
* refactor timezone setting
* userdata
* fix flair
* need to cast paths
* cast on diff
* fix flair default
* save session test
* get session
* data
* test remove
* test remove with assert
* add bad test cases
* add exception cases to unittests
* test remove cli hist file
* black
* test apply configs
* test apply with sync flag
* test create session, session model
* login tests, session model
* some tests for the hub_model
* test logout user
* black
* test clear vars, reload
* test create session
* update user-json to user
* update user class
* add user tests
* tests sdk session
* tests for hub_model
* start account controller tsts
* unused import
* tests account controller: clear, pull
* tests for session_controller
* logout success bugfix
* add integration test for account
* black
* move routine related commands to other PR
* test for the user input
* completed tests for session controller
* convert to hist to str)
* fix import errors
* ruff
* ruff tests
* fix qa
* add help to settings cmds
* ruff
* fix pull keys bug
* point to dev
* account model tests
* black
* ruff
* fix for empty feature settings
* ruff
* don't display config msg if wrong token
* general msgs
* remove print
* ruff
* fix sources not updated real time
* missing return doc
* add guest if no email
* Routine remote storage (#4143)
* add upload routine command
* remove prints
* point to local again
* add commands
* add delete
* add download command and upload 409
* list comprehension
* add download & save plus upload fixe
* add user uuid folder
* add list command
* ruff
* en.yml detail
* provide choices to delete & download
* add choices to upload
* change menu text
* starting adding unit tests
* bad english
* Update test_print_help.txt
* genearl msgs
* remove print
* add docstrings
* add unit tests to account controller
* change parser
* fix routine upload test
* add to be implemented tests hub
* add to be implemented tests local
* add total pages to title
* split list into model and view
* add docstring
* print msg if character
* add local model tests
* hub tests routines
* fix test
* point to dev and glob
* fix small bug on upload
* missing return
* log decorators missing
* black
* ruff
* change prompt display
* rewrite test
* rewrite expected
* rewrite call
* try passing git action
* change .yml everywhere
---------
Co-authored-by: Henrique Joaquim <h.joaquim@campus.fct.unl.pt>
Co-authored-by: James Maslek <jmaslek11@gmail.com>
* I missed some sheet_name ones :)
* Move quote to main menu and combine yahoo finance commands
* Update stocks for quote
* First update to move yfinance away from main functionality
* Small updates
* Update tests to reflect changes
* Fix some little things
* Update docs a little too
* Remove the Due Diligence menu
* Update tests for new change
* Update fa and stocks with new text and move some stuff around
* Bye bye dd
* Pls work
* work..
* work..
* work..
* Work..|
* Add tests back in
* Remove tests
* Fix fix fix
* Remove tests to fix conflicts
* Improve the `stocks/search` command (#4084)
* Improve search command
* Make it more intuitive
* Fix tests
* Update the docs
* Ok done
* Ok done 2
* Ok done 3
* Git update tests that failed
* Update commands with --sheet-name that didn't work (#4088)
* Update commands with --sheet-name that didn't work
* Fix test
* oops
* Adds auto completion to `news` (#4089)
* Fix plot look when using eval and add query to choices (#3881)
* convert index to datetime and update choices
* uncomment economy integration test
* fix treasury concat bug
* fix datasets concat on duplciates
* Lock ruff version so that new lints dont break our CI (#3905)
* Lock ruff version so that new lints dont break our CI
* Bumped pre-commit ruff version
* returning always a dataframe
* Revert "returning always a dataframe"
This reverts commit d5dbf3132f.
* quick fix to auto complete args
---------
Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com>
Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com>
Co-authored-by: James Maslek <jmaslek11@gmail.com>
* Hotfix/Windows-CLI (#4087)
* init
* Update windows10_build.yml
* Update windows10_build.yml
* Update windows10_build.yml
* Update windows10_build.yml
* Update windows10_build.yml
* Update windows10_build.yml
* oops
---------
Co-authored-by: James Maslek <jmaslek11@gmail.com>
* Adds end date to `forex/load` (#4077)
* Fix plot look when using eval and add query to choices (#3881)
* convert index to datetime and update choices
* uncomment economy integration test
* fix treasury concat bug
* fix datasets concat on duplciates
* Lock ruff version so that new lints dont break our CI (#3905)
* Lock ruff version so that new lints dont break our CI
* Bumped pre-commit ruff version
* returning always a dataframe
* Revert "returning always a dataframe"
This reverts commit d5dbf3132f.
* adding end date to the forex load
* added some tests
* added example
* always show msg
* rewriting test
* updating tests
* updating tests
* Redo load tests
---------
Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com>
Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com>
Co-authored-by: James Maslek <jmaslek11@gmail.com>
* Update tests to reflect changes
* work..
* Remove tests
* Fix fix fix
* Remove tests
* Update the whole test folder
* Small updates
* Revert change
* Update eodhd to reflect it requires a paid plan and update tests
* Fix all the tests
* Update tests
* Update integration tests
* Removing tests so no whining happens
* ADD ALL THE TESTS
* Fix linting
* gitignore. thanks jer
* Add back dd and redirect to fa
* Update to just display a message
* Update OpenBB SDK commands
* Fixing issues with exporting
* Fix ruff messing up
* Fix tests
* Fix the tests by disabling isort to run on tests folder
---------
Co-authored-by: Jeroen Bouma <jeroenbouma@Jeroens-MacBook-Pro.local>
Co-authored-by: James Maslek <jmaslek11@gmail.com>
Co-authored-by: Henrique Joaquim <h.joaquim@campus.fct.unl.pt>
Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com>
Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com>
Co-authored-by: teh_coderer <me@tehcoderer.com>
* bump
* Initial function write
* Delete this line from yaml
* Changed all the main things - Need help on tests
* pylint errors
* Tests v0
* Tests v1
* Tests v2
---------
Co-authored-by: andrewkenreich <andrew.kenreich@gmail.com>
* added console prints
* little refactor for degiro company news
* fixed message always showing even on login fail
* initial test with the api logs
* changes log_settings location in order to use it on the sdk; also, modified the actual settings logging to a json.dumps - in order to get a well formed json str
* added logger to the api
* adding decorator to the function as it's copied
* added arguments to the logging
* remove the double log_start_end decorator
* added func_name_override
* Revert "added console prints"
This reverts commit 61d8224e97.
* Revert "little refactor for degiro company news"
This reverts commit ca5239fa9e.
* Revert "fixed message always showing even on login fail"
This reverts commit 05793bff8b.
* added typing ignore
* fixed litting
* added logging of theme and keys
* added virtual path to the logging
* fix flake8
* fixing mypy
* removed predict from the settings
* changed the way we get the keys - after the keys controller pr was merged
* dict escaped to json str
* moved the settings logging for a different file
* added different logging for keys, configs and feature flags
* fixing typo
* removed locals - using directly the args and kwargs gives us the same
* fixed black
* solving conflicts
* fix linting
* removing unused import
Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com>
* adding shroom
* added more shroom functions
* temp commit
* temp commit
* updated to use helper
* added tvl
* added shroom to keys
* tests
* updated to match didier fixes
* little fix in the example
* adding tests with Mr.Donato
* fixing decorator for models
* fixed tests for model w Mr.Donato Mr.Delahunty and Mr.Sousa
* feat: added shroom to keys
* added integration test
* re run tests
* fixing pylint
Co-authored-by: DidierRLopes <dro.lopes@campus.fct.unl.pt>
Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com>
Co-authored-by: hjoaquim <h.joaquim@campus.fct.unl.pt>
Co-authored-by: @montezdesousa
* merge API factory
* add helpers, stocks, crypto, forex
* minor forex changes
* include forex api paths
* add 2 missing forex funcs
* portfolio brokers refactor
* display help on api func call
* add econometrics virtual paths to api
* add api unit test
* fixed report for the new api
* minor portfolio refactorings
* added gdapps
* anchor_yield path
* some more crypto path fixes
* small change
* fixed wrong param
* minor fixes
* wip - inital commit for forex report
* add bw as a model, we'll get better solution afterwards
* added ema with dummy model as it adds great functionality to the report
* minor fixes
* wip - added functions to forex report
* add feedparser news path
* add new virtual paths to api
* adding commands to equity report
* revert to old paths, new ones were breaking
* Add in very basic ETF report
* Add candle chart to ETF report
* add etf load
* allow use of candle without data
* add raw to candle
* added forex report
* ongoing equity report
* equity report change
* fix some portfolio bugs and add docstrings
* include portfolio paths and coin class
* add crypto paths
* change event dates to str
* starting economy report
* window for limit
* equity report and refactor newsapi
* add helper to api
* update on economy report
* equity report
* update economy report
* refactor some docstrings
* change maturities helper
* refactor newsapi
* refactor futures command
* add some sauce to ycrv plot
* black
* update report
* refactor alphavantage
* refactor wsj
* update economy report
* ycrv tenor
* map avaiable_indices
* map economy helpers
* fix econdb docstring
* add plots on economy report
* minor fixes
* wip - crypto report
* update economy report
* added same default args as view
* added view to explicity use chart=True when suing the api
* adjustments - removed rich tables to use only df
* final version economy report
* change report name
* equity report for review
* linting
* add etf symbols endpoint
* incorporate feedback economy report
* fix reports launch by adding tag to economy report
* fix equity bug
* remove analyst name
* fix
* fix news
* make links hyperlinks for equity
* click links
* fixed arg name
* improved news
* small improves
* Fix light terminal stylesheet that would prevent using it in notebooks (#2473)
* improved report
* run reports in installer
* fix#2209
* minor ycrv refactoring
* refactor portfolio/holdv virtual path
* refactor benchmark trades
* fix events args
* adapt economy report to changes
* fix portfolio controller bug
* holdv refactor
* refactor perf command
* start portfolio report
* remove perf view
* refactor holp
* add textwrap3 to poetry (doesn't solve the error)
* fix equity after merge
* add some rolling commands
* fix equity after save button
* improved crypto report, plus minor fixes
* minor fixes on the reports
* add maxdd and distr
* refactor qa
* var command
* refactor qa expected shortfall
* add es command
* add es command
* fix qa percentile bug
* fix economy rendering
* refactor qa omega
* add om command
* add summary command
* add dret command
* add mret command
* add yret command
* add metrics
* add allocs to report
* remove bro and po commands, add later
* fixed some tests
* adjustments to crypto report
* Fix docstring for VSCode
Added a note about installing Jupyter PowerToys extension for optimal API usage in Jupyter VSCode, in the API_README.md.
* minor adjustment
* remove nft calendar model virtual paths
* Add in Portfolio report
* fix external axes portfolio view
* Update portfolio report with rolling plots
* Details for ETF and Portfolio
* fix economy report
* change analyst to openbb
* floppy
* fixed unmatched axis in reports
* Speed up tests
* fix file and load on po
* get_news output
* add some po paths
* Add integration tests for Reports menu
* refactor maxsharpe
* open maxsharpe
* open minrisk
* open maxutil
* open maxret
* Added fixes
* black
* remove useless views
* Fixed small issue
* refactor ef
* open ef api
* portfolio optimization report
* Added fixes
* unblock api loading
* add more endpoints
* update po report
* unblock api loading
* update po report
* expose herc
* expose property endpoint
* Added fixes
* More api fixes
* flake8
* Fixed some mypy
* news api model
* flake8
* mypy fix
* mypy
* black
* pylint
* fix tests
* markdown
* markdown
* Added fixes
* fix economy report
* merge
* fix economy report
* remove empty notebook
* expose nco
* remove jupyter notebook
* expose plot endpoint
* remove po report, just used for tests
* api v paths plot
* remove api_old
* change loading msg
* fresh reports fix
* remove papermill from requirements
* Hide output (text and charts) that is produced during report execution
* minor fix in equity
* comment out api and fix style
* update poetry
* poetry fix
* fix poetry and requirements
* pylint disable
Co-authored-by: montezdesousa <montezdesousa@gmail.com>
Co-authored-by: hjoaquim <h.joaquim@campus.fct.unl.pt>
Co-authored-by: minhhoang1023 <40023817+minhhoang1023@users.noreply.github.com>
Co-authored-by: JerBouma <jer.bouma@gmail.com>
Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com>
Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com>
Co-authored-by: Diogo Sousa <diogosousa@Diogos-MBP.lan>
Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com>
Co-authored-by: northern-64bit <75195383+northern-64bit@users.noreply.github.com>
Co-authored-by: colin99d <colin99delahunty@gmail.com>
Co-authored-by: Minh Hoang <nminh.hoang1023@gmail.com>
* add log path
* add test to check if log file is in correct dir
* env path
* black
* mypy fix
* add styles folder and styles from repo
* add timezone as env variable
* fix changes with main
* fix test
* flake8
* fix linting
* fix linting
* changes
* custom changes
* add custom_imports outside terminal
* black
* black terminal
* fix test
* fix merge and remove styles/user
* some stylistic changes and remove move_files
* flake8
* merge main
* merge move and make into paths_helper
Co-authored-by: minhhoang1023 <40023817+minhhoang1023@users.noreply.github.com>
* add log path
* add test to check if log file is in correct dir
* env path
* black
* mypy fix
* add styles folder and styles from repo
* add timezone as env variable
* fix changes with main
* fix test
* flake8
* fix linting
* fix linting
* fix issue with light mpl stylesheet
* change timezone variable name
* change names
* change names
* names
* simplify paths.py
* change some names
* fix error in logic
* remove 3.11 from testing for now
* add log path
* add test to check if log file is in correct dir
* env path
* black
* mypy fix
* linting
* add make_paths and change references
* terminal change
* change constants to paths
* change names
* black
* mypy
* mypy
* pylint else
* add make paths
* remove custom user dir name
Co-authored-by: Chavithra <chavithra@gmail.com>
* Add new premium source https://eodhistoricaldata.com/r/?ref=869U7F4J
* Added eod dependency to requirements.txt
* Added eod dependency to requirements.txt via poetry and fixed typo
* fixed some display bugs for stock info
* Implemented stock/load for eodhd, use keys / eodhd demo for key.
* Commit before Pull -Implemented stock/load for eodhd, use keys / eodhd demo for key.
* Committing files so I can merge
* Committing files so I can merge
* Committing files so I can merge
* Committing files so I can merge
* Committing files so I can merge
* Committing files so I can merge
* Committing files so I can merge
* Merge
* Fixed dependencies
* Committing files so I can merge
* Committing Stock_Helper with pylint: disable=R091
* Downgraded charset normalizer
* Fixed issues with keys
* Committing fixes to eodhd
* Committing fixes to eodhd remove eod library
Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com>
Co-authored-by: colin99d <colin99delahunty@gmail.com>
* Adds yield curves
* Adds yield curves for several countries
* Adds yield curves for several countries
* Adds yield curves for several countries
* Adds yield curves for several countries
* Adds yield curves for several countries
* ycrv plots by default
* Limits source choices and renames raw columns
* Fix test
* Fix test
* lint
Co-authored-by: Jeroen Bouma <jer.bouma@gmail.com>
Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com>
Co-authored-by: didierlopes.eth <dro.lopes@campus.fct.unl.pt>
Co-authored-by: James Maslek <jmaslek11@gmail.com>
* quick econ fix
* black
* keys and feature flags
* terminal name 👀
* some more replacements
* some more replacements
* edit pyproject
* gst -> openbb
* add example portfolios back to git
* Update api from gst
* sorry. skipping some tests
* another round of names
* another round of test edits
* Missed some .gst refs and update timezone
* water mark stuff
* Fixing Names in terminal.spec and name of GTFF_DEFAULTS to OBBFF_DEFAULTS
* fix more GST to OpenBB Terminal
* Logging : merge conflicts with main
* Revert wrong files
Co-authored-by: Andrew <andrew.kenreich@gmail.com>
Co-authored-by: DidierRLopes <dro.lopes@campus.fct.unl.pt>
Co-authored-by: Chavithra PARANA <chavithra@gmail.com>