Wednesday, August 22, 2012

Setuptools' ``include_package_data`` option does not work

MANIFEST.in not honoured during install phase

The python package setup procedure appears to be a mess, you have setuptools, distutils, and distribute (distutils2?). All I set out to do was to fix the installation setup.py in django-simplemenu package which was omitting the non-python module plain locale directory but instead got myself involved a 3 hour roller coaster; I am sharing my findings in hopes of helping you, so if you are reading this do +1 this.

Including sub directories and non python files as part of package

There are two ways: MANIFEST.in file and package_data setup.py option. The latter is Pythonic but doesn’t do recursive includes - so you would have to list every sub directory - and can not include files in the root top most folder; sure once could write a python function to do this but why the complexity? MANIFEST.in with its file/directory pattern matching and with the setup.py's ``include_package_data`` option fits the bill:

``include_package_data``
    If set to ``True``, this tells ``setuptools`` to automatically include any
    data files it finds inside your package directories, that are either under
    CVS or Subversion control, or which are specified by your ``MANIFEST.in``
    file.  For more information, see the section below on `Including Data
    Files`_.

The problem is that does not work, files specified in MAIFEST.in weren't being copied during install. After searching and trial an error the solution was to use distribute (or distools) instead of the old setuptools package. So if you are having issues import distuitls rather then setuptools.

My django-simplemenu setup.py

from setuptools import setup, find_packages 
   # your system should use distribute which is successor to setuptools 
   # and distutils, http://stackoverflow.com/questions/6344076/differences-
   # between-distribute-distutils-and-setuptools
   # 'distribute' imports itself as 'setuptools'
package = __import__('simplemenu')

setup(name='django-simplemenu',
    install_requires=['distribute'], # let's require the enhanced setuptools
    version=package.get_version(),
    url='http://github.com/danielsokolowski/django-simplemenu',
    license='BSD',
    description=package.__doc__.strip(),
    author='Alex Vasi , Justin Steward , Daniel Sokolowski ',
    author_email='unemelpmis-ognajd@danols.com',
    include_package_data=True, # this will use MANIFEST.in during install where we specify additional files
    packages=find_packages(),
    # Below is not needed as we are utilizing MANIFEST.in 
    #package_data={'simplemenu': ['locale/en/LC_MESSAGES/*', 
    #                             'locale/ru/LC_MESSAGES/*']
    #              },
    scripts=[],
    requires=[],
    )

My django-simplemenu MANIFEST.in

include LICENSE
include README.rst
recursive-include simplemenu *.py
recursive-include simplemenu/locale *
prune simplemenu/migrations

Tuesday, August 21, 2012

Verify Google+ Local Pages

But old style Google Places pages are still out of luck

Early this month Google introduced functionality to verify the new Google+ Local pages - not the old style Google Places which will be eventually migrated - but the new Google+ pages that must be created under the Local Business or Place category.

The process is simple consists of having a Post Card with a unique pin mailed to your businesse's address. Once that is accomplished your brand page will look something like Sleepless Goat Café Google+ Local Page and more importantingly it will be unified accross Google's Search, Google Maps, and Google+.

Business utilizing the former Google Places will be eventually transitioned to Google+ Local. For more information please see the oficial FAQ and discussion threads here and here

Google Places Administration Page

For those of you that asked below is a screen shot of the old style administration page for Google Places that will eventually be phased out. If you have one of those you can access it by clicking 'Get Started' button located at http://www.google.com/places/ page.

Wednesday, August 15, 2012

Linphone and VoiceMail Issues

Echo Limiter Prevents FreeSwitch Voicemail Functionality

If you experiencing issues while trying to leave a Voicemail due to 'Your recording was below acceptable levels' or similar errors try turning off the recommended 'Echo Limiter' in Linphone's settings.

I experienced this problem on the latest version of Linphone for Android when calling my FreeSwitch setup. Testing from a land line and with other soft phones worked as expected, changing 'record-silence-threshold' and 'record-silence-hits' FreeSwitch's mod_voicemail settings had not effect, and hence through the process of elimination the culprit was determined to be the 'Echo Limiter' setting.

Saving you hours and hair; so do +1 this.

Monday, August 6, 2012

SPA3012 Dial Tone Length Duration

Change or Increase the Length of Dial Tone

I have the Cisco SPA3102 and when attempting to setup a conference I found the default 10 second dial tone duration was not long enough - the fast busy would kick in before I finished searching through the phone directory.

To change the duration follow the below instructions:

  • Login into the VOIP box
  • Select 'Advanced' mode
  • Select 'Voice' tab
  • Select 'Regional' sub tab
  • Under 'Call Progress Tones' modify the 'Dial Tone' default entry's 10 second delay to whatever duration you wish.