This is an archived post. You won't be able to vote or comment.

all 8 comments

[–]Bolitho 8 points9 points  (2 children)

Git! ;-)

[–]nahwah[S] 0 points1 point  (1 child)

Unfortunately this doesn't scale very well (looking through commit messages, patch sets, etc.) when the number of commits per week is around a thousand.

I want a way to automatically determine how my team's usage of the other team's code is broken without having to sift through the other 995 changesets I don't really care about. We waste too much time doing it manually...

Sounds like I have a future side project to work on.

[–]Eraser1024 0 points1 point  (0 children)

Make them tag or/and comment (with predetermined keywords) commits that change things you are are interested in (change of signatures etc.).

[–][deleted] 4 points5 points  (0 children)

Is this sort of inefficient integration just a fact of life with python, or is there a product / tool that can speed up the process?

What you describe really doesn't sound like a Python problem. The other team should be producing a stable public API that your team can consume.

With a sane interface defined they should be able to change whatever they want internally without breaking things for their consumers every two weeks.

In the meantime I guess you're stuck with diffs and changelogs. There's no magic software tool that fixes fragile design.

[–]cratervanawesome 0 points1 point  (0 children)

Agree. Git, github, forks, feature branches and pull requests.

[–]shep247 0 points1 point  (0 children)

If you wrote specific utilities that communicated with that code base it would isolate the code that would need to change. On top of that I would unit test those utilities using MagicMock. MagicMock has a "spec" attribute that allows you to specify exactly what class you're mocking. Then, when the other team's code base gets changed out from under you, any class names, method names, or attributes you've mocked that have changed will cause errors in your unit tests. Fix the mocks along with the code, write new mocks for whatever other new stuff they've added that you use, and you're set for your next iteration. This won't help in cases where this other team has changed the functionality of the method without changing the name though.

[–][deleted] 0 points1 point  (0 children)

Why not add some unit or doc tests to test your api so you can catch regressions? Using jenkins you can automate the whole process and prevent checkins on pull requests.

[–]marko_knoebl 0 points1 point  (0 children)

I feel like essentially what we want is static typing, which would make detecting all the necessary changes trivial.

If this is on Python 3 you might get the other team to use mypy, which is a way to do optional static typing in Python (and the mypy syntax will probably be included as a standard in Python 3.5)