# How do I actually use package extensions?

**URL:** <https://discourse.julialang.org/t/how-do-i-actually-use-package-extensions/98930>\
**Category:** General Usage\
**Created:** [May 16, 2023, 12:56pm UTC](https://discourse.julialang.org/t/how-do-i-actually-use-package-extensions/98930 "2023-05-16T12:56:59Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Larbino1](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/larbino1/32/37831_2.png) [@Larbino1](https://discourse.julialang.org/u/Larbino1)\
**Post date:** [May 16, 2023, 12:56pm UTC](https://discourse.julialang.org/t/how-do-i-actually-use-package-extensions/98930/1 "2023-05-16T12:56:59Z")

</div>

Say I wish to use ForwardDiffs static arrays extension.

I can do:  
using ForwardDiff, StaticArrays

How do I actually access methods from the extension? Because  
ForwardDiff.ForwardDiffStaticArraysExt  
gives me:  
ERROR: UndefVarError: `ForwardDiffStaticArraysExt` not defined

---

<div class="post-metadata">

**Author:** ![jishnub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jishnub/32/33620_2.png) [@jishnub](https://discourse.julialang.org/u/jishnub)\
**Post date:** [May 16, 2023, 1:02pm UTC](https://discourse.julialang.org/t/how-do-i-actually-use-package-extensions/98930/2 "2023-05-16T13:02:06Z")

</div>

What are you trying to do, in this case? For users of the packages, as opposed to developers, one doesn’t need to care about the extension modules at all. The public API of the two packages are all that a user should interact with.

---

<div class="post-metadata">

**Author:** ![Larbino1](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/larbino1/32/37831_2.png) [@Larbino1](https://discourse.julialang.org/u/Larbino1)\
**Post date:** [May 16, 2023, 1:03pm UTC](https://discourse.julialang.org/t/how-do-i-actually-use-package-extensions/98930/3 "2023-05-16T13:03:30Z")

</div>

Say I wish to use a function from the extension that isn’t exported, is there a way to do that?

---

<div class="post-metadata">

**Author:** ![jishnub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jishnub/32/33620_2.png) [@jishnub](https://discourse.julialang.org/u/jishnub)\
**Post date:** [May 16, 2023, 1:04pm UTC](https://discourse.julialang.org/t/how-do-i-actually-use-package-extensions/98930/4 "2023-05-16T13:04:24Z")

</div>

I think `Base.get_extension` should get you the extension module

---

<div class="post-metadata">

**Author:** ![Larbino1](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/larbino1/32/37831_2.png) [@Larbino1](https://discourse.julialang.org/u/Larbino1)\
**Post date:** [May 16, 2023, 1:06pm UTC](https://discourse.julialang.org/t/how-do-i-actually-use-package-extensions/98930/5 "2023-05-16T13:06:43Z")

</div>

Thank you so much, this is very helpful!

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [May 16, 2023, 1:40pm UTC](https://discourse.julialang.org/t/how-do-i-actually-use-package-extensions/98930/6 "2023-05-16T13:40:52Z")

</div>

> [@Larbino1](#):
>
> Say I wish to use a function from the extension that isn’t exported, is there a way to do that?

This is very much not recommended.

---

<div class="post-metadata">

**Author:** ![Larbino1](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/larbino1/32/37831_2.png) [@Larbino1](https://discourse.julialang.org/u/Larbino1)\
**Post date:** [May 16, 2023, 1:54pm UTC](https://discourse.julialang.org/t/how-do-i-actually-use-package-extensions/98930/7 "2023-05-16T13:54:33Z")

</div>

I understand, but the alternative is to duplicate the function, which already does exactly what I need, in my own code.

With normal modules (not extensions), Julia allows us to use non-exported methods “at your own risk”.

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [May 16, 2023, 5:35pm UTC](https://discourse.julialang.org/t/how-do-i-actually-use-package-extensions/98930/8 "2023-05-16T17:35:12Z")

</div>

Yeah that’s fine under the understanding that what you’re doing here is very much at your own risk.
