diff --git a/AUTHORS.rst b/AUTHORS.rst
index 7bd1fec1..7d7615b9 100644
--- a/AUTHORS.rst
+++ b/AUTHORS.rst
@@ -106,3 +106,5 @@ Contributors
 - Sourav Singh(@souravsingh)
 
 - Matt Chung (@itsmemattchung)
+
+- Chris Thompson (@notyetsecure)
diff --git a/github3/issues/milestone.py b/github3/issues/milestone.py
index e55b9e74..55d86bd1 100644
--- a/github3/issues/milestone.py
+++ b/github3/issues/milestone.py
@@ -26,7 +26,9 @@ class Milestone(GitHubCore):
         self.description = mile.get('description')
         #: :class:`User <github3.users.User>` object representing the creator
         #: of the milestone.
-        self.creator = User(mile.get('creator'), self)
+        self.creator = None
+        if mile.get('creator'):
+            self.creator = User(mile.get('creator'), self)
         #: Number of issues associated with this milestone which are still
         #: open.
         self.open_issues = mile.get('open_issues')

Null Milestone creator causing Repository.issue() to crash
When trying to get an issue that has a Milestone without a creator, github3.py crashes.

I think the fix is simple -- add a guard check before trying to create the User for the milestone.creator (like what is done for getting the milestone from an issue -- it first checks if the milestone truth-y before acting on it).

I'm working on a PR with a regression test and a patch, which I should have up shortly.

Here's a simple test case to reproduce the exception:

```
import github3
repo = github3.repository("Code4HR", "localart")
milestone = repo.milestone(2)
```

Here's the traceback from iPython (with Python 3.5.0):
```
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-50-4132b3c2312f> in <module>()
----> 1 r.milestone(2)

python3.5/site-packages/github3/repos/repo.py in milestone(self, number)
   1664                                   base_url=self._api)
   1665             json = self._json(self._get(url), 200)
-> 1666         return Milestone(json, self) if json else None
   1667
   1668     @requires_auth

python3.5/site-packages/github3/issues/milestone.py in __init__(self, mile, session)
     28         #: :class:`User <github3.users.User>` object representing the creator
     29         #: of the milestone.
---> 30         self.creator = User(mile.get('creator'), self._session)
     31         #: Number of issues associated with this milestone which are still
     32         #: open.

python3.5/site-packages/github3/users.py in __init__(self, user, session)
    121
    122     def __init__(self, user, session=None):
--> 123         super(User, self).__init__(user, session)
    124         if not self.type:
    125             self.type = 'User'

python3.5/site-packages/github3/models.py in __init__(self, acct, session)
    312         #: Tells you what type of account this is
    313         self.type = None
--> 314         if acct.get('type'):
    315             self.type = acct.get('type')
    316         self._api = acct.get('url', '')

AttributeError: 'NoneType' object has no attribute 'get'
```
diff --git a/tests/test_issues.py b/tests/test_issues.py
index c36e3267..cdfa422b 100644
--- a/tests/test_issues.py
+++ b/tests/test_issues.py
@@ -121,6 +121,12 @@ class TestMilestone(BaseCase):
                              '2013-12-31T23:59:59Z')
         self.mock_assertions()
 
+    def test_issue_465(self):
+        json = self.m.as_dict().copy()
+        json['creator'] = None
+        m = Milestone(json)
+        assert m.creator is None
+
 
 class TestIssue(BaseCase):
     def __init__(self, methodName='runTest'):

pip install -e .[test]
parse_log_pytest
requirements.txt
pytest pytest-cov pytest-xdist pytest-mock pytest-asyncio
apt-get update apt-get install -y gcc
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
betamax==0.9.0
betamax-matchers==0.4.0
certifi==2025.1.31
charset-normalizer==3.4.1
coverage==7.8.0
exceptiongroup==1.2.2
execnet==2.1.1
-e git+https://github.com/sigmavirus24/github3.py.git@dfbab2eb984045dc8f260dc81adf70f86d3c3e37#egg=github3.py
idna==3.10
iniconfig==2.1.0
packaging==24.2
pluggy==1.5.0
pytest==8.3.5
pytest-asyncio==0.26.0
pytest-cov==6.0.0
pytest-mock==3.14.0
pytest-xdist==3.6.1
requests==2.32.3
requests-toolbelt==1.0.0
tomli==2.2.1
typing_extensions==4.13.0
uritemplate==4.1.1
uritemplate.py==3.0.2
urllib3==2.3.0

name: github3.py
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - betamax==0.9.0
      - betamax-matchers==0.4.0
      - certifi==2025.1.31
      - charset-normalizer==3.4.1
      - coverage==7.8.0
      - exceptiongroup==1.2.2
      - execnet==2.1.1
      - idna==3.10
      - iniconfig==2.1.0
      - packaging==24.2
      - pluggy==1.5.0
      - pytest==8.3.5
      - pytest-asyncio==0.26.0
      - pytest-cov==6.0.0
      - pytest-mock==3.14.0
      - pytest-xdist==3.6.1
      - requests==2.32.3
      - requests-toolbelt==1.0.0
      - tomli==2.2.1
      - typing-extensions==4.13.0
      - uritemplate==4.1.1
      - uritemplate-py==3.0.2
      - urllib3==2.3.0
prefix: /opt/conda/envs/github3.py

tests/test_issues.py::TestMilestone::test_issue_465
tests/test_issues.py::TestLabel::test_delete tests/test_issues.py::TestLabel::test_equality tests/test_issues.py::TestLabel::test_repr tests/test_issues.py::TestLabel::test_str tests/test_issues.py::TestLabel::test_update tests/test_issues.py::TestMilestone::test_delete tests/test_issues.py::TestMilestone::test_due_on tests/test_issues.py::TestMilestone::test_id tests/test_issues.py::TestMilestone::test_repr tests/test_issues.py::TestMilestone::test_str tests/test_issues.py::TestMilestone::test_update tests/test_issues.py::TestIssue::test_add_labels tests/test_issues.py::TestIssue::test_assign tests/test_issues.py::TestIssue::test_close tests/test_issues.py::TestIssue::test_comment tests/test_issues.py::TestIssue::test_create_comment tests/test_issues.py::TestIssue::test_edit tests/test_issues.py::TestIssue::test_enterprise tests/test_issues.py::TestIssue::test_equality tests/test_issues.py::TestIssue::test_is_closed tests/test_issues.py::TestIssue::test_issue_137 tests/test_issues.py::TestIssue::test_remove_all_labels tests/test_issues.py::TestIssue::test_remove_label tests/test_issues.py::TestIssue::test_reopen tests/test_issues.py::TestIssue::test_replace_labels tests/test_issues.py::TestIssue::test_repr tests/test_issues.py::TestIssueEvent::test_equality tests/test_issues.py::TestIssueEvent::test_repr
github3/issues/milestone.py AUTHORS.rst
github3/issues/milestone.py AUTHORS.rst