Skip to content

[Bug] Openbb 4.5.0 cannot import name 'OBBject_EquityInfo' from 'openbb_core.app.provider_interface' #7279

@eduardcmp

Description

@eduardcmp

Describe the bug
I was using openbb 4.3.5 version and everything ran smoothly and when I tried to update version to current 4.5.0, a weird error trying to import OBBject_EquityInfo from openbb_core.app.provider_interface when calling fundamental endpoints from openbb. Is anyone familiar with this object? it doesn't seem to appear at all in the code

To Reproduce
I use the following pyproject.toml, then poetry lock and then i deploy a container with docker that runs the poetry install. I have checked inside the container and the libraries versions are created succesfully: openbb 4.5.0 and openbb-core 1.5.6

I share the two pyprojects, since the one in the service references to another internally created library with openbb as dependency:

[tool.poetry]
name = "prefect-jobs"
version = "0.1.0"
description = ""
authors = [
]
readme = "README.md"
package-mode = false
packages = [{ include = "src" }]

[tool.poetry.dependencies]
python = ">=3.11,<3.13"
brownberg = { path = "libs/brownberg", develop = true }
prefect = "^3.1.15"

[tool.poetry.group.dev.dependencies]
black = "^24.10.0"
mypy = "^1.13.0"
pyright = "^1.1.390"
ruff = "^0.13.0"
ipykernel = "^6.29.5"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

[tool.mypy]
# select folders
packages = ["src"]
python_version = "3.11"
strict = true
warn_unused_ignores = false
explicit_package_bases = true

plugins = ["pydantic.mypy"]

[tool.pydantic-mypy]
init_forbid_extra = true
init_typed = false
warn_required_dynamic_aliases = true
warn_untyped_fields = true

[[tool.mypy.overrides]]
module = ["openbb", "openbb.*"]
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = ["pandas", "pandas.*"]
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = ["brownberg", "brownberg.*"]
ignore_missing_imports = true

[tool.ruff]
line-length = 120
src = ["src/"]
extend-exclude = ["tests/**/*.py", "notbooks/**/*.ipynb"]
force-exclude = true
target-version = "py311"
lint.select = [
    "F",   # pyflakes
    "RUF", # ruff specific rules
    "NPY", # numpy specific rules
    "PD",  # pandas vet
    "D",   # pydocstyle
    "E",   # pycodestyle (errors)
    "W",   # pycodestyle (warnings)
    "N",   # pep8-naming
    "UP",  # pyupgrade
    "B",   # flake8-bugbear
    "ANN", # flake8-annotations
    "S",   # flake8-bandit
    "FBT", # flake8-boolean-trap
    "A",   # flake8-builtin shadowing
    "C4",  # flake8-comprehensions
    "DTZ", # flake8-datetimez (enforce timezone aware datetimes)
    "EM",  # flake8-errmsg
    "PTH", # flake8-pathlib
    "I",   # auto sort imports
    "UP",  # pyupgrade
]
lint.fixable = [
    "I",    # auto sort imports
    "F401", # pyflakes - remove unused imports
    "UP",   # pyupgrade
    "F",    # pyflakes
    "C",    # pycodestyle
    "D",    # pydocstyle
    "W",    # pycodestyle (warnings)
]
lint.ignore = [
    "D100", # Missing docstring in public module
    "D101", # Missing docstring in public class
    "D103", # Missing docstring in public function
    "D104", # Missing docstring in public package
]

[tool.ruff.lint.per-file-ignores]
# Don't be so strict with tests
"tests/**/*" = [
    "S101", # Allow asserts
    "D",    # Don't complain about docstrings in tests
    "A003", # Allow shadowing of builtins
]

[tool.ruff.lint.pydocstyle]
# Use Google-style docstrings.
convention = "google"

[tool.ruff.lint.pep8-naming]
# Allow Pydantic's `@validator` decorator to trigger class method treatment.
classmethod-decorators = ["pydantic.validator", "classmethod"]


[tool.black]
line-length = 120
target-version = ["py311"]
force-exclude = "lib"

And.... our internal library pyproject:

[tool.poetry]
name = "brownberg"
version = "0.1.0"
description = ""
authors = [
]
readme = "README.md"
package-mode = true
packages = [{ include = "brownberg", from = "src" }]

[tool.poetry.dependencies]
python = ">=3.11,<3.13"
numpy = "1.26.4"
loguru = "^0.7.3"
python-dotenv = "^1.0.1"
sqlalchemy = "^2.0.37"
psycopg2 = "^2.9.10"
openbb = "^4.5.0"



[tool.poetry.group.dev.dependencies]
black = "^24.10.0"
mypy = "^1.13.0"
pyright = "^1.1.390"
ruff = "0.7.4"
ipykernel = "^6.29.5"
isort = "^6.0.1"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

[tool.mypy]
# select folders
packages = ["src"]
python_version = "3.11"
strict = true
warn_unused_ignores = false
explicit_package_bases = true

plugins = ["pydantic.mypy"]

[tool.pydantic-mypy]
init_forbid_extra = true
init_typed = false
warn_required_dynamic_aliases = true
warn_untyped_fields = true

[[tool.mypy.overrides]]
module = ["openbb", "openbb.*"]
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = ["pandas", "pandas.*"]
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = ["brownberg", "brownberg.*"]
ignore_missing_imports = true

[tool.ruff]
line-length = 120
src = ["src/"]
extend-exclude = ["tests/**/*.py", "notbooks/**/*.ipynb"]
force-exclude = true
target-version = "py311"
lint.select = [
    "F",   # pyflakes
    "RUF", # ruff specific rules
    "NPY", # numpy specific rules
    "PD",  # pandas vet
    "D",   # pydocstyle
    "E",   # pycodestyle (errors)
    "W",   # pycodestyle (warnings)
    "N",   # pep8-naming
    "UP",  # pyupgrade
    "B",   # flake8-bugbear
    "ANN", # flake8-annotations
    "S",   # flake8-bandit
    "FBT", # flake8-boolean-trap
    "A",   # flake8-builtin shadowing
    "C4",  # flake8-comprehensions
    "DTZ", # flake8-datetimez (enforce timezone aware datetimes)
    "EM",  # flake8-errmsg
    "PTH", # flake8-pathlib
    "I",   # auto sort imports
    "UP",  # pyupgrade
]
lint.fixable = [
    "I",    # auto sort imports
    "F401", # pyflakes - remove unused imports
    "UP",   # pyupgrade
    "F",    # pyflakes
    "C",    # pycodestyle
    "D",    # pydocstyle
    "W",    # pycodestyle (warnings)
]
lint.ignore = [
    "D100", # Missing docstring in public module
    "D101", # Missing docstring in public class
    "D103", # Missing docstring in public function
    "D104", # Missing docstring in public package
]

[tool.ruff.lint.per-file-ignores]
# Don't be so strict with tests
"tests/**/*" = [
    "S101", # Allow asserts
    "D",    # Don't complain about docstrings in tests
    "A003", # Allow shadowing of builtins
]

[tool.ruff.lint.pydocstyle]
# Use Google-style docstrings.
convention = "google"

[tool.ruff.lint.pep8-naming]
# Allow Pydantic's `@validator` decorator to trigger class method treatment.
classmethod-decorators = ["pydantic.validator", "classmethod"]


[tool.black]
line-length = 120
target-version = ["py311"]
force-exclude = "lib"
```

**Desktop (please complete the following information):**

- OS: Ubuntu
- Python version 3.12

**Additional context**
Add any other information that you think could be useful for us.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions