If I run
python setup.py sdist, delete some files from MANIFEST.in, and then run the command again, the created sdist does not reflect the changes to MANIFEST.in.
I believe this is because sdist leaves behind the egg-info directory it creates in the project directory.
If this is the root cause, I think running sdist using Distribute should clean up after itself and delete the egg-info directory it created. This is what distutils does at the end of its
run() method, for example: it deletes the base project directory it creates in the project directory that it used to create the tar archive:
if not self.keep_temp: dir_util.remove_tree(base_dir, dry_run=self.dry_run)
I also noticed that, if the egg-info directory is present in the project directory when running
python setup.py sdist, the SOURCES.txt file in the egg-info directory doesn't get updated if you delete a file from MANIFEST.in. This is another reason the issue above manifests itself (no pun intended).